rpgmakerxp脚本
Ⅰ RPG Maker xp的脚本有什么用
在主菜单“工具”菜单中选择“脚本编辑器”,出现的那些英文字排列就是脚本。这个是 RPGXP 的关键部分,是掌管游戏实际运行的程序语言。虽然是简单的程序语言,但初学者要学习的话却是得花费大量的时间。首先得了解脚本是如何运作的,推荐先从基础学起。
这个“脚本入门”,是为已经学习 RGPXP 基本使用方法的人编写的。可以不具备计算机程序语言基础知识,但最低要对 RPGXP 的功能有一定程度的了解。
Ⅱ RPGmakerxp脚本错误
No Method Error
Undefined method 'event' for nil:NilClass
没有方法错误
未定义的方法'事件'为零:NilClass
打开脚本编辑器,将Game_Player内内容全部删除,将以下脚本复制进去保存再试试
#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
# 处理主角的类。事件启动的判定、以及地图的滚动等功能。
# 本类的实例请参考 $game_player。
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 恒量
#--------------------------------------------------------------------------
CENTER_X = (320 - 16) * 4 # 画面中央的 X 坐标 * 4
CENTER_Y = (240 - 16) * 4 # 画面中央的 Y 坐标 * 4
#--------------------------------------------------------------------------
# ● 可以通行判定
# x : X 坐标
# y : Y 坐标
# d : 方向 (0,2,4,6,8) ※ 0 = 全方向不能通行的情况判定 (跳跃用)
#--------------------------------------------------------------------------
def passable?(x, y, d)
# 求得新的坐标
new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
# 坐标在地图外的情况下
unless $game_map.valid?(new_x, new_y)
# 不能通行
return false
end
# 调试模式为 ON 并且 按下 CTRL 键的情况下
if $DEBUG and Input.press?(Input::CTRL)
# 可以通行
return true
end
super
end
#--------------------------------------------------------------------------
# ● 像通到画面中央一样的设置地图的显示位置
#--------------------------------------------------------------------------
def center(x, y)
max_x = ($game_map.width - 20) * 128
max_y = ($game_map.height - 15) * 128
$game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
$game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
end
#--------------------------------------------------------------------------
# ● 向指定的位置移动
# x : X 座标
# y : Y 座标
#--------------------------------------------------------------------------
def moveto(x, y)
super
# 自连接
center(x, y)
# 生成遇敌计数
make_encounter_count
end
#--------------------------------------------------------------------------
# ● 增加步数
#--------------------------------------------------------------------------
def increase_steps
super
# 不是强制移动路线的场合
unless @move_route_forcing
# 增加步数
$game_party.increase_steps
# 步数是偶数的情况下
if $game_party.steps % 2 == 0
# 检查连续伤害
$game_party.check_map_slip_damage
end
end
end
#--------------------------------------------------------------------------
# ● 获取遇敌计数
#--------------------------------------------------------------------------
def encounter_count
return @encounter_count
end
#--------------------------------------------------------------------------
# ● 生成遇敌计数
#--------------------------------------------------------------------------
def make_encounter_count
# 两种颜色震动的图像
if $game_map.map_id != 0
n = $game_map.encounter_step
@encounter_count = rand(n) + rand(n) + 1
end
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
# 同伴人数为 0 的情况下
if $game_party.actors.size == 0
# 清除角色的文件名及对像
@character_name = ""
@character_hue = 0
# 分支结束
return
end
# 获取带头的角色
actor = $game_party.actors[0]
# 设置角色的文件名及对像
@character_name = actor.character_name
@character_hue = actor.character_hue
# 初始化不透明度和合成方式子
@opacity = 255
@blend_type = 0
end
#--------------------------------------------------------------------------
# ● 同位置的事件启动判定
#--------------------------------------------------------------------------
def check_event_trigger_here(triggers)
result = false
# 事件执行中的情况下
if $game_system.map_interpreter.running?
return result
end
# 全部事件的循环
for event in $game_map.events.values
# 事件坐标与目标一致的情况下
if event.x == @x and event.y == @y and triggers.include?(event.trigger)
# 跳跃中以外的情况下、启动判定是同位置的事件
if not event.jumping? and event.over_trigger?
event.start
result = true
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● 正面事件的启动判定
#--------------------------------------------------------------------------
def check_event_trigger_there(triggers)
result = false
# 事件执行中的情况下
if $game_system.map_interpreter.running?
return result
end
# 计算正面坐标
new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
# 全部事件的循环
for event in $game_map.events.values
# 事件坐标与目标一致的情况下
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger)
# 跳跃中以外的情况下、启动判定是正面的事件
if not event.jumping? and not event.over_trigger?
event.start
result = true
end
end
end
# 找不到符合条件的事件的情况下
if result == false
# 正面的元件是计数器的情况下
if $game_map.counter?(new_x, new_y)
# 计算 1 元件里侧的坐标
new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
# 全事件的循环
for event in $game_map.events.values
# 事件坐标与目标一致的情况下
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger)
# 跳跃中以外的情况下、启动判定是正面的事件
if not event.jumping? and not event.over_trigger?
event.start
result = true
end
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● 接触事件启动判定
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
result = false
# 事件执行中的情况下
if $game_system.map_interpreter.running?
return result
end
# 全事件的循环
for event in $game_map.events.values
# 事件坐标与目标一致的情况下
if event.x == x and event.y == y and [1,2].include?(event.trigger)
# 跳跃中以外的情况下、启动判定是正面的事件
if not event.jumping? and not event.over_trigger?
event.start
result = true
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● 画面更新
#--------------------------------------------------------------------------
def update
# 本地变量记录移动信息
last_moving = moving?
# 移动中、事件执行中、强制移动路线中、
# 信息窗口一个也不显示的时候
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
# 如果方向键被按下、主角就朝那个方向移动
case Input.dir4
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
end
# 本地变量记忆坐标
last_real_x = @real_x
last_real_y = @real_y
super
# 角色向下移动、画面上的位置在中央下方的情况下
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# 画面向下卷动
$game_map.scroll_down(@real_y - last_real_y)
end
# 角色向左移动、画面上的位置在中央左方的情况下
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# 画面向左卷动
$game_map.scroll_left(last_real_x - @real_x)
end
# 角色向右移动、画面上的位置在中央右方的情况下
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# 画面向右卷动
$game_map.scroll_right(@real_x - last_real_x)
end
# 角色向上移动、画面上的位置在中央上方的情况下
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# 画面向上卷动
$game_map.scroll_up(last_real_y - @real_y)
end
# 不在移动中的情况下
unless moving?
# 上次主角移动中的情况
if last_moving
# 与同位置的事件接触就判定为事件启动
result = check_event_trigger_here([1,2])
# 没有可以启动的事件的情况下
if result == false
# 调试模式为 ON 并且按下 CTRL 键的情况下除外
unless $DEBUG and Input.press?(Input::CTRL)
# 遇敌计数下降
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 判定为同位置以及正面的事件启动
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
Ⅲ RPG Maker VX和RPG Maker XP脚本最大的区别在哪里
RMVX和RMXP在脚本(RGSS)上的区别
Enterbrain官方把RMVX使用的脚本称为RGSS2,原来的RMXP脚本则称为RGSS1。
那么RGSS2和RGSS1相比主要有哪些不同呢?请看官方帮助文件的说法:
1,画面分辨率从 640×480 变成 544×416,刷新率从每秒 40 帧变成了每秒 60 帧,原来XP的‘平滑模式’被废止。
2,新增全屏模式,改成双缓存技术描绘画面。满足推荐配置的情况下,滚动等处理会非常的顺畅。
3,画面长时间不更新会备份脚本,强制终了程序的设定被废除了。即使画面长时间不更新,也能正常处理Windows消息,大多数场合可以用 Alt+F4 关闭RMVX。
4,增加了 Graphics.fadeout、 Graphics.fadein 方法来简单的实现画面的淡入淡出效果。
5,增加了 Graphics.snap_to_bitmap 方法把当前游戏画面转化成位图保存。(用于存盘画面)
6,地图元 (Tilemap) 类为了配合 RPGVX 的标准做了大幅度的变更。
7,位图 (Bitmap) 可以产生模糊、放射性模糊的效果。
8,精灵 (Sprite) 支持波形描画(光栅滚动)的效果。
9,游戏目录下增加了一个Fonts文件夹,里面用来放置游戏中使用的字体文件。可以解决对方系统由于没有安装相应的字体而无法运行游戏的问题。
10,字体 (Font) 显示支持阴影描绘的功能。一些初期值的设定被变更了。
11,视口 (Viewport) 的关联可以在设定后再次进行变更,视口关联的精灵等可以被自动解放。
12,改善了 ME 播放后、恢复播放 BGM 的时机 (Audio.me_play) 。
除了上述以外,还有增加了不少细小的变化。
VX帮助文件中对 RGSS2 新追加,变更的机能都打上了 (RGSS2) 这样的标记。
如果以上文字你看上去还比较爽的话,那么接下来的话可能XP的脚本制作者就要受到一定打击了。
以下文字来自RGSS2脚本素材添加的官方建议
●对脚本素材的用户
*使用网络上发布的脚本素材时候,请在本处增加一个新的页面并粘贴。
(在左边脚本列表框按鼠标右键选择‘插入’)
*其他,请遵从脚本制作者的特别指示(如果有的话)。
*原则上,RMXP的脚本和RMVX的脚本没有互换性!
请先确定是针对RMVX开发的脚本素材后再使用。
●对脚本素材的制作者
开发针对不定用户使用的脚本时,请尽量不要使用再定义,重命名(alias)等方法。建议新开发的脚本只需要添加在本位置就能正常运行。
Ⅳ rpg maker xp怎么用脚本啊
选中main脚本,按inster键,能添加空白脚本页面。然后把需要的脚本复制进去就好。注意脚本之间的冲突哦~~~
Ⅳ RPG MAKER XP脚本怎么用
在MAIN钱鼠标右键插入,但是脚本有很多的冲突,必须要看清楚啊。嗯
Ⅵ RPG MAKER XP 各种脚本
你要上什么脚本啊?
Ⅶ RPGmakerXP脚本错误
这个是脚本冲突,把你自己下下来的战斗脚本删除基本能解决,还不能就通通删除,(自己下下来的脚本)然后再一个一个黏上去测试,看是哪个出问题,出问题那一个就不要用了
Ⅷ RPG Maker XP的脚本怎么用
RM XP使我们大家不懂脚本的也可以制作自己的游戏,是因为它把全部的非剧情部分均用脚本编译好,然后剧情我们可以用事件去编,如插入图片,对话等等,这些其实也是通过脚本实现的,不过RM XP也不能通过事件菜单来实现所有的功能,只能我们自己更改脚本实现个性功能。
www.66rpg.com 这个网站不错 对学习脚本有用