rpg maker xp?RPGmaker下载
- 跳转官网下载下载点击免费下载
大家好,今天给各位分享rpg maker xp的一些知识,其中也会对RPGmaker下载进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
rpgmakerxp那些文件夹都有什么用详细
RMXP中主要用到的就是RGSS文件夹
Graphics:专门用来放图像类的文件
Animations:放动画类的图片,游戏中战斗技能的动画都是这里的
Autotiles:地图类图片(主要是地面)
Battlebacks:战斗时的背景图片
Battlers:战斗时的主角方角色全身像图片
Characters:游戏中的角色行走图
Fogs:游戏中的某些特效图,例如雾、水波等等
Gameovers:顾名思义,死亡时的图片
Icons:游戏中的道具和技能图标
Panoramas:游戏中的远景图
Pictures:专门放在游戏中显示的图片
Tilesets:地图类图片(主要是物品和建筑)
Titles:游戏的开始画面
Transitions:这个应该是进入战斗画面的过场图
Windowskins:游戏的菜单窗口图片
Audio:专门用来放音效类的文件
BGM:游戏的背景音乐
BGS:游戏中需要不断循环的音效,例如风声、雨声等
ME:游戏中较长的音效,例如战斗胜利的音效、旅馆住宿的音效等等
SE:游戏中较短的音效,例如技能音效等
以上
满意的话请采纳我吧
RPG maker XP的脚本,高手进!!
1可能不需要脚本吧?在创建一个事件,设置好图片,然后图片右边有一个移动规则,默认是固定,按右键改回跟随,应该就OK了。
2你要横版的吧,横版战斗超长2000多行发不过来,你加QQ995269394吧我发给你。
3#==============================================================================
#本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#=================以下两个用来调整战斗时的手感问题,可以自己试试。
$敌人选框扩大= 20
$角色选框扩大= 30
#==============================================================================
# API调用
#==============================================================================
$ShowCursor= Win32API.new("user32","ShowCursor",'i','l')
$GetCursorPos= Win32API.new("user32","GetCursorPos",'p','i')
$ScreenToClient= Win32API.new("user32","ScreenToClient",'ip','i')
$GetActiveWindow= Win32API.new("user32","GetActiveWindow", nil,'l')
$Window_HWND=$GetActiveWindow.call
$GetKeyState= Win32API.new("user32","GetKeyState",'i','i')
#$FindWindow= Win32API.new("user32","FindWindow",'pp','i')
#$HookStart= Win32API.new("mouse_hook.dll","HookStart",'i', nil)
#$HookEnd= Win32API.new("mouse_hook.dll","HookEnd", nil, nil)
#$GetMouseStatus= Win32API.new("mouse_hook.dll","GetMouseStatus",'i','i')
#$Window_HWND=$FindWindow.call(nil,'mousetry')
module Mouse
LEFT= 0x01
RIGHT= 0x02
def self.init(sprite= nil)
#$HookStart.call($Window_HWND)
$ShowCursor.call(0)
@show_cursor= false
@mouse_sprite= Sprite.new
@mouse_sprite.z= 99999
@mouse_sprite.bitmap= Bitmap.new('Graphics/Icons/001-Weapon01.png')
#@mouse_sprite.bitmap.fill_rect(Rect.new(0, 0, 32, 32), Color.new(0, 0, 0))
@left_press= false
@right_press= false
@left_trigger= false
@right_trigger= false
@left_repeat= false
@right_repeat= false
@click_lock= false
update
end
def self.exit
@mouse_sprite.bitmap.dispose
@mouse_sprite.dispose
@show_cursor= true
#$HookEnd.call
$ShowCursor.call(1)
end
def self.mouse_debug
return@mouse_debug.bitmap
end
def self.update
left_down=$GetKeyState.call(0x01)
right_down=$GetKeyState.call(0x02)
@click_lock= false
mouse_x, mouse_y= self.get_mouse_pos
if@mouse_sprite!= nil
@mouse_sprite.x= mouse_x
@mouse_sprite.y= mouse_y
end
if left_down[7]== 1
@left_repeat=(not@left_repeat)
@left_trigger=(not@left_press)
@left_press= true
else
@left_press= false
@left_trigger= false
@left_repeat= false
end
if right_down[7]== 1
@right_repeat=(not@right_repeat)
@right_trigger=(not@right_press)
@right_press= true
else
@right_press= false
@right_trigger= false
@right_repeat= false
end
end
def self.get_mouse_pos
point_var= [0, 0].pack('ll')
if$GetCursorPos.call(point_var)!= 0
if$ScreenToClient.call($Window_HWND, point_var)!= 0
x, y= point_var.unpack('ll')
if(x< 0) or(x> 10000) then x= 0 end
if(y< 0) or(y> 10000) then y= 0 end
if x> 640 then x= 640 end
if y> 480 then y= 480 end
return x, y
else
return 0, 0
end
else
return 0, 0
end
end
def self.press?(mouse_code)
if mouse_code== LEFT
if@click_lock
return false
else
return@left_press
end
elsif mouse_code== RIGHT
return@right_press
else
return false
end
end
def self.trigger?(mouse_code)
if mouse_code== LEFT
if@click_lock
return false
else
return@left_trigger
end
elsif mouse_code== RIGHT
return@right_trigger
else
return false
end
end
def self.repeat?(mouse_code)
if mouse_code== LEFT
if@click_lock
return false
else
return@left_repeat
end
elsif mouse_code== RIGHT
return@right_repeat
else
return false
end
end
def self.click_lock?
return@click_lock
end
def self.click_lock
@click_lock= true
end
def self.click_unlock
@click_lock= false
end
end
module Input
if@self_update== nil
@self_update= method('update')
@self_press= method('press?')
@self_trigger= method('trigger?')
@self_repeat= method('repeat?')
end
def self.update
@self_update.call
Mouse.update
end
def self.press?(key_code)
if@self_press.call(key_code)
return true
end
if key_code== C
return Mouse.press?(Mouse::LEFT)
elsif key_code== B
return Mouse.press?(Mouse::RIGHT)
else
return@self_press.call(key_code)
end
end
def self.trigger?(key_code)
if@self_trigger.call(key_code)
return true
end
if key_code== C
return Mouse.trigger?(Mouse::LEFT)
elsif key_code== B
return Mouse.trigger?(Mouse::RIGHT)
else
return@self_trigger.call(key_code)
end
end
def self.repeat?(key_code)
if@self_repeat.call(key_code)
return true
end
if key_code== C
return Mouse.repeat?(Mouse::LEFT)
elsif key_code== B
return Mouse.repeat?(Mouse::RIGHT)
else
return@self_repeat.call(key_code)
end
end
end
class Window_Selectable
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
#self.cursor_rect.empty
self_update
if self.active and@item_max> 0
index_var=@index
tp_index=@index
mouse_x, mouse_y= Mouse.get_mouse_pos
mouse_not_in_rect= true
for i in 0...@item_max
@index= i
update_cursor_rect
top_x= self.cursor_rect.x+ self.x+ 16
top_y= self.cursor_rect.y+ self.y+ 16
bottom_x= top_x+ self.cursor_rect.width
bottom_y= top_y+ self.cursor_rect.height
if(mouse_x> top_x) and(mouse_y> top_y) and
(mouse_x< bottom_x) and(mouse_y< bottom_y)
mouse_not_in_rect= false
if tp_index!=@index
tp_index=@index
$game_system.se_play($data_system.cursor_se)
end
break
end
end
if mouse_not_in_rect
@index= index_var
update_cursor_rect
Mouse.click_lock
else
Mouse.click_unlock
end
end
end
end
class Window_NameInput
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
#self.cursor_rect.empty
self_update
if self.active
index_var=@index
mouse_x, mouse_y= Mouse.get_mouse_pos
mouse_not_in_rect= true
for i in(0...CHARACTER_TABLE.size).to_a.push(180)
@index= i
update_cursor_rect
top_x= self.cursor_rect.x+ self.x+ 16
top_y= self.cursor_rect.y+ self.y+ 16
bottom_x= top_x+ self.cursor_rect.width
bottom_y= top_y+ self.cursor_rect.height
#
if(mouse_x> top_x) and(mouse_y> top_y) and
(mouse_x< bottom_x) and(mouse_y< bottom_y)
mouse_not_in_rect= false
break
end
end
if mouse_not_in_rect
@index= index_var
update_cursor_rect
Mouse.click_lock
else
Mouse.click_unlock
end
end
end
end
class Window_InputNumber
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
#self.cursor_rect.empty
self_update
mouse_x, mouse_y= Mouse.get_mouse_pos
if self.active and@digits_max> 0
index_var=@index
mouse_not_in_rect= true
for i in 0...@digits_max
@index= i
update_cursor_rect
top_x= self.cursor_rect.x+ self.x+ 16
bottom_x= top_x+ self.cursor_rect.width
#
if(mouse_x> top_x) and(mouse_x< bottom_x)
mouse_not_in_rect= false
break
end
end
if mouse_not_in_rect
@index= index_var
update_cursor_rect
Mouse.click_lock
else
Mouse.click_unlock
end
end
if@last_mouse_y== nil
@last_mouse_y= mouse_y
end
check_pos=(@last_mouse_y- mouse_y).abs
if check_pos> 10
$game_system.se_play($data_system.cursor_se)
place= 10**(@digits_max- 1-@index)
n=@number/ place% 10
@number-= n* place
n=(n+ 1)% 10 if mouse_y<@last_mouse_y
n=(n+ 9)% 10 if mouse_y>@last_mouse_y
@number+= n* place
refresh
@last_mouse_y= mouse_y
end
end
end
class Scene_File
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
mouse_x, mouse_y= Mouse.get_mouse_pos
Mouse.click_lock
idx= 0
for i in@savefile_windows
top_x= i.x+ 16
top_y= i.y+ 16
bottom_x= top_x+ i.width
bottom_y= top_y+ i.height
if(mouse_x> top_x) and(mouse_y> top_y) and
(mouse_x< bottom_x) and(mouse_y< bottom_y)
i.selected= true
if@file_index!= idx
@file_index= idx
$game_system.se_play($data_system.cursor_se)
end
Mouse.click_unlock
else
i.selected= false
end
idx+= 1
end
self_update
end
end
class Arrow_Enemy
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
mouse_x, mouse_y= Mouse.get_mouse_pos
idx= 0
for i in$game_troop.enemies do
if i.exist?
top_x= i.screen_x- self.ox
top_y= i.screen_y- self.oy
bottom_x= top_x+ self.src_rect.width
bottom_y= top_y+ self.src_rect.height
if(mouse_x> top_x-$敌人选框扩大) and(mouse_y> top_y-$敌人选框扩大) and
(mouse_x< bottom_x+$敌人选框扩大) and(mouse_y< bottom_y+$敌人选框扩大)
if@index!= idx
$game_system.se_play($data_system.cursor_se)
@index= idx
end
end
end
idx+= 1
end
self_update
end
end
class Arrow_Actor
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
mouse_x, mouse_y= Mouse.get_mouse_pos
idx= 0
for i in$game_party.actors do
if i.exist?
top_x= i.screen_x- self.ox
top_y= i.screen_y- self.oy
bottom_x= top_x+ self.src_rect.width
bottom_y= top_y+ self.src_rect.height
if(mouse_x> top_x-$角色选框扩大) and(mouse_y> top_y-$角色选框扩大) and
(mouse_x< bottom_x+$角色选框扩大) and(mouse_y< bottom_y+$角色选框扩大)
if@index!= idx
$game_system.se_play($data_system.cursor_se)
@index= idx
end
end
end
idx+= 1
end
self_update
end
end
class Game_Player
if@self_alias== nil
alias self_update update
@self_alias= true
end
def update
mouse_x, mouse_y= Mouse.get_mouse_pos
if@last_move_x== nil
@last_move_x= false
end
if Mouse.press?(Mouse::LEFT)
last_moving= moving?
last_direction=@direction
unless moving? or$game_system.map_interpreter.running? or
@move_route_forcing or$game_temp.message_window_showing
last_x=@x
if@last_move_x
@last_move_x= false
elsif mouse_x> screen_x+ 16
move_right
elsif mouse_x< screen_x- 16
move_left
end
last_y=@y
if last_x!=@x
@last_move_x= true
elsif mouse_y> screen_y
move_down
elsif mouse_y< screen_y- 32
move_up
end
if last_y!=@y
@last_move_x= false
elsif not@last_move_x
case last_direction
when 2
turn_down
when 4
turn_left
when 6
turn_right
when 8
turn_up
end
end
end
end
self_update
end
end
Mouse.init
END{ Mouse.exit}
#==============================================================================
#本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
这个试一试。
4真的八方向要八个方向的行走图,假的不用,自己搜索一下吧
5我不知道你什么意思--
补充2:没,有一个脚本可以显示同伴的血量不是数字的,血槽的。字数满了。采纳。
rpg maker xp伤害计算
按F1里边帮助挺全的
公式:
RPGXP默认的战斗系统,采用以下的计算式。
攻击方角色表示为 A,被攻击方角色以 B表示。
第一命中率判定普通攻击
第一命中率= A当前状态下的命中率%
技能攻击
攻击力 F为 1以上(物理攻击)
第一命中率=技能的命中率× A当前状态下的命中率%÷ 100
攻击力 F为 0(物理攻击以外)
第一命中率=技能的命中率
使用物品
第一命中率=物品的命中率
A在正常状态下的命中率为 100。
必杀机率判定普通攻击
必杀率= 4× A的灵巧÷ B的速度
技能攻击
必杀率= 0
使用物品
必杀率= 0
必杀率即奋力一击(通常会使敌方常受到较大的损伤)发生的机率,如果必杀率为 4则表示每 4个回合就出现一次奋力一击。
伤害计算普通攻击
威力= A的攻击力-(B的物理防御÷ 2)
放大率= 20+ A的力量
分散度= 15
威力的最小值:0
技能攻击
技能的威力值为正数
威力=技能的威力
+(A的攻击力×技能的攻击力 F÷ 100)
-(B的物理防御×技能的物理防御 F÷ 200)
-(B的魔法防御×技能的魔法防御 F÷ 200)
威力的最小值:0
技能的威力值为负数
威力=技能的威力
放大率= 20
+(A的力量×技能的力量 F÷ 100)
+(A的灵巧×技能的灵巧 F÷ 100)
+(A的速度×技能的速度 F÷ 100)
+(A的魔力×技能的魔力 F÷ 100)
分散度=技能的分散度
使用物品
HP回复量为负数
威力=- HP回复量
-(B的物理防御×物品的物理防御 F÷ 20)
-(B的魔法防御×物品的魔法防御 F÷ 20)
威力的最小值:0
HP回复量为正数
威力=- HP回复量
放大率= 20
分散度=物品的分散度
伤害=威力×放大率÷ 20×属性修正×必杀修正×防御修正(±分散度%)
属性修正:有攻击属性时,在 B的属性有效度中选择最弱的进行修正,修正值如下。
A:200%,B:150%,C:100%,D:50%,E:0%,F:-100%
另外,攻击属性符合 B防具的防御属性的,伤害减半,修正值为 1/2。
有多个相同防御属性的,减半效果要叠加。
必杀修正:伤害值为正数,奋力一击发动时修正值为 2。
防御修正:伤害值为正数,B防御时修正值为 1/2。
第二命中率判定伤害值为正数
B为正常状态
回避力= 8× B的速度÷ A的灵巧+ B的回避修正
普通攻击
第二命中率= 100-回避力
技能攻击
第二命中率= 100-(回避力×技能的回避 F÷ 100)
使用物品
第二命中率= 100
B附加有「不能回避攻击」状态
第二命中率= 100
伤害值为负数(回复)
第二命中率= 100
逃跑成功率逃跑成功率=50×角色的速度平均值÷敌人的速度平均值
文章分享结束,rpg maker xp和RPGmaker下载的答案你都知道了吗?欢迎再次光临本站哦!