幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3482|回复: 2

[转帖] RMXP事件脚本实用小手册

[复制链接]

2

主题

13

帖子

145

积分

③业余

积分
145
QQ
发表于 2007-7-22 16:25:21 | 显示全部楼层 |阅读模式
几天前找到的东东,一起分享一下,略有改动。

1。显示文章
$game_temp.message_text = "你想要的文字"
比如你在事件脚本里打上$game_temp.message_text = "啊啊啊!",那就会出现一个对话框写着“啊啊啊!”。
#小g注:这种方法使用后会一直"啊"个不停,这里提供一个使用循环的方法

当然,也可以全用脚本完成,但~这不是自己给自己找麻烦吗!!


2。更改对话框位置
$game_system.message_position = 数字
这个数字代表的是对话框的显示位置,默认的只有三个位置,但是可以通过在脚本Window_Message里面自行添加新的位置(不是本教程的内容,就不说了。)0代表在上面显示,1代表在中间,2代表在下面。当然也可以是别的数字,不过必须在Window_Message里面定义。
#其实添加新位置就在Window_Message类里
case $game_system.message_position
        when 0 # 上
          self.y = 16
        when 1 # 中
          self.y = 160
        when 2 # 下
          self.y = 304
        end
后面接着添就行了


3。更改对话框透明度
$game_system.message_frame = 数字
这里的数字只能是0或者1,0代表完全不透明,1代表完全不透明。当然这个和对话框的显示位置一样,也可以在脚本Window_Message里面添加新的选项以做出不同的透明度。
#方法同上,只是把if条件句换成case条件句就OK了.

4。等待
@wait_count = 等待帧数
比如@wait_count = 30就是等待30帧。

5。调用公共事件
$game_temp.common_event_id = 公共事件的编号
比如$game_temp.common_event_id = 1就是调用一号公共事件。

6。开关操作
$game_switches[变量编号] = true/false
true代表打开开关,而false则代表关闭开关。
比如$game_switches[1] = true就是打开一号开关。

7。变量操作
变量操作和别的操作相比有所不同,因为变量可以代入很多东西~
$game_variables[变量编号] = 变量数值
这个变量数值可以是很多东西,可以是:
$game_variables[1] = 16(直接代入数字,这个代表一号变量的数值为16。)
$game_variables[1] = $game_variables[2](一号变量等于#不是等于是代入!二号变量的数值)
$game_variables[1] = rand(60)(一号变量等于0到59的随机数)
$game_variables[1] = $game_actors[1].hp(一号变量等于#代入一号角色的HP)
$game_variables[1] = $game_actors[1].sp(一号变量等于#代入一号角色的SP)
$game_variables[1] = $game_party.item_number(1)(一号变量等于#代入一号道具的数量)
等等等。。。 #在此提醒一下新手 = 与 ==不一样~~总之,只要是一切可以用数字表示的东西,都可以代入变量,甚至是计算!比如:$game_variables[1] = $game_variables[2] + 18就代表一号变量的值是二号变量的值加上18。
以下是一些在事件的变量操作中可以用数字表示的东西!也适用于事件脚本!
$game_actors[角色编号].hp        指定编号的角色的HP
$game_actors[角色编号].sp        指定编号的角色的SP
$game_actors[角色编号].maxhp     指定编号的角色的最大HP
$game_actors[角色编号].maxsp     指定编号的角色的最大SP
$game_actors[角色编号].exp       指定编号的角色的经验值
$game_actors[角色编号].level     指定编号的角色的等级
$game_actors[角色编号].class_id  指定编号的角色的职业编号
$game_actors[角色编号].weapon_id 指定编号的角色的武器编号
$game_actors[角色编号].armor1_id 指定编号的角色的盾牌编号
$game_actors[角色编号].armor2_id 指定编号的角色的头部防具编号
$game_actors[角色编号].armor3_id 指定编号的角色的身体防具编号
$game_actors[角色编号].armor4_id 指定编号的角色的装饰品编号
$game_actors[角色编号].str       指定编号的角色的力量
$game_actors[角色编号].dex      指定编号的角色的灵巧
$game_actors[角色编号].int      指定编号的角色的魔力
$game_actors[角色编号].atk      指定编号的角色的攻击力
$game_actors[角色编号].pdef      指定编号的角色的物理防御
$game_actors[角色编号].mdef      指定编号的角色的魔法防御
$game_actors[角色编号].eva      指定编号的角色的回避修正
$game_troop.enemies[敌人编号].hp 指定编号的敌人的HP,角色的一些资料可以同样用在敌人身上(哪些才能用应该看得出吧= =|||),比如sp,str,dex等等。
$game_player.x                   角色的地图x坐标
$game_player.y                   角色的地图y坐标
$game_player.direction           角色的朝向下/左/右/上分别是2/4/6/8
$game_player.screen_x            角色的屏幕x坐标
$game_player.screen_y            角色的屏幕y坐标
$game_player.terrain_tag         角色的地形标志 #指脚下的
$game_map.map_id                 当前地图的ID
$game_map.events[事件编号].x     指定编号的事件的地图x坐标,所有和$game_player相关的东西其实都可以换成和地图的某个事件相关,只要把$game_player换成$game_map.events[事件编号]就可以了,如果需要的是本事件,则在事件编号处直接写上@event_id。
$game_party.actors.size          同伴人数
$game_party.steps                步数
$game_party.gold                 所持金钱
Graphics.frame_count / Graphics.frame_rate 游戏总时间(秒)
$game_system.timer / Graphics.frame_rate   计时器时间(秒)
$game_system.save_count          存档次数
大概就是这些了。。。嘻嘻嘻。其实还有很多,但是没全部写出来,大家自己去发掘吧!记住!BT者无所不能。。。什么?错了错了,应该是所有用数字能表示的东西都可以代入变量!
#还有很多,祥见最后

8。计时器操作
要操作计时器,必须先用
$game_system.timer = 计时器的时间(秒)* Graphics.frame_rate
来设定计时器的时间,然后使用$game_system.timer_working = true来启用计时器。如果要关闭计时器,则使用$game_system.timer_working = false。

9。增减金钱
$game_party.gain_gold(金钱数量)
或者是$game_party.gold += 金钱数量
两者都可以使用,意义是一样的。比如$game_party.gain_gold(100)和$game_party.gold += 100是一样的。

10。增减物品
$game_party.gain_item(物品编号,增加数量)
或者$game_party.item_number(物品编号) += 数量
$game_party.lose_item(物品编号,减少数量)
或者$game_party.item_number(物品编号) -= 数量
比如$game_party.gain_item(1,2)就是一号物品增加两个,$game_party.lose_item(3,1)就是三号物品减少一个。

11。增减武器
和增减物品道理相同,只是把所有的item换成了weapon(=_=|||),操作方法和原理都相同。
$game_party.gain_weapon(武器编号,增加数量)
或者$game_party.weapon_number(武器编号) += 数量
$game_party.lose_weapon(武器编号,减少数量)
或者$game_party.weapon_number(武器编号) -= 数量
比如$game_party.gain_weapon(1,2)就是一号武器增加两个,$game_party.lose_weapon(3,1)就是三号武器减少一个。

12。增减防具
和增减物品道理相同,只是把所有的item换成了armor(Orz无限),操作方法和原理都相同。
$game_party.gain_armor(防具编号,增加数量)
或者$game_party.armor_number(防具编号) += 数量
$game_party.lose_armor(防具编号,减少数量)
或者$game_party.armor_number(防具编号) -= 数量
比如$game_party.gain_armor(1,2)就是一号防具增加两个,$game_party.lose_armor(3,1)就是三号防具减少一个。

13。替换队员
用$game_party.add_actor(角色编号)加入队员,用$game_party.remove_actor(角色编号)让队员离队。如果需要初始化队员,就用$game_party[角色编号].setup(角色编号)。比如
$game_party.add_actor(1)
$game_party[1].setup(1)
就是在队伍中加入一号角色并且初始化。

14。更改窗口皮肤
$game_system.windowskin_name = "窗口皮肤文件的名称"
比如$game_system.windowskin_name = "01"就是把当前的窗口皮肤文件换成一个叫做01的窗口皮肤文件,所有窗口皮肤文件都是放在Windowskins文件夹里面的。

15。更改禁止存档
$game_system.save_disabled = true/false
true代表禁止存档,false代表可以存档。

16。更改禁止菜单
$game_system.menu_disabled = true/false
true代表禁止呼出菜单,false代表可以呼出菜单。

17。更改禁止遇敌
$game_system.encounter_disabled = true/false
true代表禁止遇敌,false代表可以遇敌。

18。设置事件位置
$game_map.events[事件编号].moveto(地图x坐标,地图y坐标)
比如$game_map.events[3].moveto(5,6)就是把3号事件移到地图的5,6坐标的位置上。

19。画面卷动
$game_map.start_scroll(卷动方向,卷动距离,卷动速度)
数字2/4/6/8代表方向下/左/右/上,距离自定(别卷出地图了),卷动速度为1到6,当然要更大的数也可以,不过可能太快了,没什么意义= =|||。。。比如$game_map.start_scroll(4,5,3)
就表示画面以慢速(3是慢速)向左(4)卷动5格。

20。显示动画
显示在角色身上就使用$game_player.animation_id = 动画编号,比如
$game_player.animation_id = 3就是在角色身上显示三号动画。那如何在事件上显示动画呢?这个之前已经讲过了$game_player和事件的某种邪恶关系,如果记不住了,请回前面查找(邪恶)。。。

21。角色透明
$game_player.transparent = true/false
true代表角色透明,false代表角色不透明。

22。等待移动结束
@move_route_waiting = true

23。更改画面色调
$game_screen.start_tone_change(Tone.new(红色调,绿色调,蓝色调,灰度),时间)
比如$game_screen.start_tone_change(Tone.new(0,0,0,255),20)就是在20帧的时间内将画面色调渐变为灰色(做那种黑白场景用的)。

24。画面闪烁
$game_screen.start_flash(Color.new(红色调,绿色调,蓝色调,强度),时间)
比如$game_screen.start_flash(Color.new(255,255,0,255),2)就是持续2帧的黄色闪烁。

25。画面震动
$game_screen.start_shake(震动强度,震动速度,震动时间)
强度和速度为1到9,当然也可以更大!
比如$game_screen.start_shake(9,9,20)就是以9的强度9的速度震动画面20帧。

26。显示图片
$game_screen.pictures[图片编号].show("图片名字", 原点, 画面x坐标, 画面y坐标, x轴放大率, y轴放大率, 不透明度, 显示方式)
这个稍微复杂些,分开来讲会比较好~~~
图片名字就是要显示的图片的名字。
原点就是显示图片的原点位置,0代表左上,1代表中心。
画面的x坐标和y坐标就是图片原点的画面的x坐标和y坐标。
x轴放大率和y轴放大率就是以原点为中心的x方向和y方向放大率,100为正常大小。
不透明度就是图片的不透明度,为0到255。
显示方式其实就是图片的合成方式,0是正常,1是加法,2是减法。
比如$game_screen.pictures[1].show("BunnyGod", 1, 320, 240, 100, 100, 255, 0)
就是在画面中心显示一张正常大小,完全不透明,显示方式为正常,编号为1的叫做BunnyGod的图片。

27。移动图片
$game_screen.pictures[图片编号].move(移动时间, 原点, 画面x坐标, 画面y坐标, x轴放大率, y轴放大率, 不透明度, 显示方式)
原理和显示图片一样,由于图片已经显示,所以原本的图片名字也变成了移动时间。
比如$game_screen.pictures[1].move(20, 0, 0, 0, 100, 100, 0, 0)
就是在20帧内移动编号为1的图片并让其渐渐消失(注意:图片的移动都是渐变式的,不仅是位置,图片的大小和透明度也会跟着一起渐渐变化,就是用来做淡出和淡入图片用的。)。

28。旋转图片
$game_screen.pictures[图片编号].rotate(旋转速度)
这个旋转速度是由什么来决定的呢?到底代表着什么?其实这个代表的就是图片在每1帧内的旋转角度,而不是“速度”,由于旋转角度大了,自然速度看起来就快。这个值可以是负数,用来决定旋转的方向。正数是顺时针转,负数是逆时针转。
比如$game_screen.pictures[1].rotate(18)就是让一号图片以每帧18度的速度旋转。


29。图片消失
$game_screen.pictures[图片编号].erase
比如$game_screen.pictures[1].erase就是让编号为1的图片消失。

30。准备渐变
Graphics.freeze
[fly]Cation G[/fly]
回复

使用道具 举报

2

主题

13

帖子

145

积分

③业余

积分
145
QQ
 楼主| 发表于 2007-7-22 16:38:45 | 显示全部楼层
31。执行渐变
Graphics.transition(时间, "Graphics/Transitions/渐变图形名称")
比如Graphics.transition(20, "Graphics/Transitions/01")就是在20帧内用渐变图形“01”的图案渐变。

32。播放BGM
Audio.bgm_play("Audio/BGM/音乐文件名", 音量, 频率)
比如Audio.bgm_play("Audio/BGM/Orz", 100, 100)就是让名为Orz的音乐文件以背景音乐形式放出来。

33。播放BGS
Audio.bgs_play("Audio/BGS/音乐文件名", 音量, 频率)
原理和播放BGM相同,只是所有的bgm被改成了bgs。

34。播放SE
Audio.se_play("Audio/SE/音乐文件名", 音量, 频率)
原理和播放BGM相同,只是所有的bgm被改成了se。

33。播放ME
Audio.me_play("Audio/ME/音乐文件名", 音量, 频率)
原理和播放BGM相同,只是所有的bgm被改成了me。

34。记忆BGM/BGS
$game_system.bgm_memorize
$game_system.bgs_memorize
有没有发现这两个其实很类似?一个是记忆BGM,一个是记忆BGS,其实是可以分开来用的~~~

35。还原BGM/BGS
$game_system.bgm_restore
$game_system.bgs_restore
这个和记忆方法一样,也可以分开来用。

36。停止SE
Audio.se_stop

37。天候设置
$game_screen.weather(类型, 强度, 时间)
类型0是没有,1是雨,2是风,3是雪,强度为1到9。
比如$game_screen.weather(1, 9, 10)就是在10帧的时间里将天气变为暴雨。

38。增减角色的HP,SP等能力相关数值
$game_actor[角色编号].hp += 数值
这个就是让特定角色的生命值增加你想要的数值(-=就是减少),同理也可以运用在sp,exp,str等等数值上。
比如$game_actor[2].level += 5就是让二号角色的等级加5。但是有一点,如果使用这个指令来减少HP的话,即使角色的HP减到0也不会死!这点和事件比起来就差了。

39。完全回复
$game_actors[角色编号].recover_all
比如$game_actors[1].recover_all就是让一号角色完全恢复。

40。增减特技
用$game_actors[角色编号].learn_skill(特技编号)习得特技
用$game_actors[角色编号].forget_skill(特技编号)遗忘特技
我想懂英文的一下就看出了learn和forget这两个词的意思了吧。。。比如
$game_actors[3].learn_skill(32)
就是三号角色学会了32号特技。

41。变更装备
$game_actors[角色编号].equip(装备类型, 要替换的装备的编号)
装备类型0代表武器,1代表盾,2代表头部防具,3代表身体防具,4代表装饰品。比如$game_actors[4].equip(0, 2)就是四号角色的武器换为2号武器。要注意的是,和事件效果一样,如果本身就不拥有那个装备的话,是不可能装备上的。如果要卸下装备,就把要替换的装备的编号填0。

42。变更角色图形
$game_actors[角色编号].set_graphic("行走图图片", 行走图色调, "战斗图图片", 战斗图色调)
$game_player.refresh
比如$game_actors[1].set_graphic("BunnyGod-01", 0, "BunnyGod-01", 0)
就是一号角色的行走图为普通色调的BunnyGod-01,战斗图也是普通色调的BunnyGod-01。后面这个$game_player.refresh是为了立刻刷新主角的形象,不然在指令执行后是不会立刻变化的。注意,行走图和战斗图可能重复名字,但是两者是不同的东西!行走图是放在Characters文件夹之下的而战斗图则是放在Battlers文件夹之下的!

43。战斗中断
$game_temp.battle_abort = true

44。呼叫菜单画面
$game_temp.menu_calling = true

45。呼叫存档画面
$game_temp.save_calling = true

46。游戏结束
$game_temp.gameover = true

47。返回标题画面
$game_temp.to_title = true

48。暂时消除事件
$game_map.events[事件编号].erase
比如$game_map.events[1].erase就是暂时消除1号事件。

49。更改地图设置
$game_map.panorama_name = "全景图形的名字"
$game_map.panorama_hue = 数字(0-255)
$game_map.fog_name = "雾图形的名字"
$game_map.fog_hue = 数字(0-255)
$game_map.fog_opacity = 数字(0-255)
$game_map.fog_blend_type = 数字(0普通,1加法,2减法)
$game_map.fog_zoom = 数字
$game_map.fog_sx = 数字
$game_map.fog_sy = 数字
$game_map.battleback_name = "战斗背景图片名"
$game_temp.battleback_name = "战斗背景图片名"
实现事件指令中更改地图的三个属性:全景图形,雾图形,战斗背景。
比如$game_map.panorama_name = "001"
$game_map.panorama_hue = 0
就是将当前地图的全景图形改成文件名为001,正常色调的全景图形,全景图形文件都放在Panoramas文件夹里。
$game_map.fog_name = "002"
$game_map.fog_hue = 0
$game_map.fog_opacity = 128
$game_map.fog_blend_type = 0
$game_map.fog_zoom = 100
$game_map.fog_sx = 0
$game_map.fog_sy = 0
就是将当前地图的雾图形改成文件名为002,正常色调,半透明,合成方式为普通,正常大小,原点为(0,0)的雾图形,雾图形文件都放在Fogs文件夹里。
$game_map.battleback_name = "003"
$game_temp.battleback_name = "003"
就是将当前地图的战斗背景文件改成文件名为003,正常色调的战斗背景,战斗背景文件都放在Battlebacks文件夹里。也许大家会觉得这里很奇怪,为什么$game_map.battleback_name和$game_temp.battleback_name都要改,有什么区别吗?当然有区别,因为$game_map.battleback_name就是修改了地图属性,但是如果是在战斗中直接调用事件脚本,仅仅写这一行是不够的,因为战斗背景是读取$game_temp.battleback_name的,在每次战斗开始的时候都会自动让这个$game_temp.battleback_name = $game_map.battleback_name,但是在战斗中途就不会,所以必须手动修改$game_temp.battleback_name以达到立刻变幻战斗背景的效果。当然如果并非在战斗中调用,$game_map.battleback_name = "003"一行就足够了。这些和记忆BGM/BGS一样,也是可以分开来用的~~~

50。更改雾的色调
$game_map.start_fog_tone_change(Tone.new(红色调,绿色调,蓝色调,灰度),时间)
比如$game_map.start_fog_tone_change(Tone.new(255,0,0,0),20)就是在20帧的时间内把雾的色调渐变成红色。

51。更改雾的不透明度
$game_map.start_fog_opacity_change(不透明度, 时间)
比如$game_map.start_fog_opacity_change(50, 10)就是在10帧的时间内把雾的不透明度变为50。

附录:
1---有关Actors (人物) 数据   
代码: $data_actors[id].
id   ID,数字,人物编号
name 人物名字
class_id  职业ID
initial_level  初始等级
exp_basis 基本经验
character_name 角色文件名
character_hue 角色色相
battler_name 战斗者文件名
battler_hue  战斗者色相
weapon_id 武器ID
weapon_fix 武器固定
armor1_id  盾牌ID
armor2_id 头ID
armor3_id 身体防具ID
armor4_id 装饰品ID

2---有关Actors 的 Current 属性   
代码:  $game_actors[id].
maxhp  血最大量
maxsp  魔最大量
level 等级
exp 经验
str  力量
dex 灵巧
agi 速度
int 魔力
atk  攻击
pdef 物理防御
mdef 魔法防御
eva   回避修正


3 有关Armor (装备)
代码: $data_armors[id].
id  ID号
name  名字
icon_name 图标的名字
kind 种类
auto_state_id 自动状态ID
price  价格
pdef 物理防御
mdef 魔法防御
eva 回避修正
str_plus  增加的力量
dex_plus 增加的灵巧
agi_plus  增加的速度
int_plus  增加的魔力
guard_element_set[id] 属性防御

4 各种classes      
代码: $data_classes[id]
position 角色位置(前卫,中卫,后卫)
weapon_set 可装备武器
armor_set 可装备防具
state_ranks 状态有效度
element_rank 属性有效度
learnings[level,skill_id] 习得技能

5 有关公共事件         
代码: $data_common_events[id].
name 名字
trigger 获取目标
switch_id  开关ID

6 有关敌人     
代码: $data_enemies[id].
name 名
maxhp 最高HP
maxsp 最高SP
str 力量
dex 灵巧
agi 速度
int 魔力
atk 攻击
pdef 物理防御
mdef 魔法防御
animation1_id 普通攻击攻击方动画ID
animation2_id 普通攻击对象方动画ID
exp 经验
gold 金钱
item_id 物品ID
weapon_id 武器ID
armor_id 装备ID
treasure_prob 宝物出现率
battler_name 战斗者文件名
battler_hue  战斗者色相

7 有关物品  
代码: $data_items[id].
name 名
occasion 可以使用的时机
icon_name 图标文件名
description 描述
price 价格
common_event_id 公共事件ID
scope 使用的范围
consumable  消耗

8 有关技能  
代码: $data_skills[id].
icon_name 图标文件名
description 描述
scope 特技或是物品的范围
occasion 可以使用的时机
animation1_id 普通攻击攻击方动画ID
animation2_id 普通攻击对象方动画ID
common_event_id 公共事件ID
sp_cost  消费的SP
power 威力
atk_f 关联的攻击
eva_f 关联的回避
str_f 关联的力量
dex_f 关联的灵巧
agi_f 关联的速度
int_f 关联的魔力
hit 攻击
pdef_f 关联的物防
mdef_f 关联的魔防
variance 分散
element_set[id]

9 有关状态   
代码; $data_states[id].
animation_id 动画ID
restriction 限制
nonresistance 不可抵抗
zero_hp HP为0
cant_get_exp 不能获得经验
cant_evade 无法回避
slip_damage 连续伤害
rating 比例
hit_rate 命中率
eva 回避修正
battle_only 战斗后解除
hold_turn 自然解除
shock_release_prob 状态攻击解除
auto_release_prob 状态自动解除
plus_state_set[id] 状态变化为+
minus_state_set[id] 状态变化为-
guard_element_set[id] 防具防御属性
[fly]Cation G[/fly]
回复 支持 反对

使用道具 举报

122

主题

4962

帖子

74

积分

超级版主

Rank: 8Rank: 8

积分
74

声命组银赏

QQ
发表于 2007-7-22 16:58:49 | 显示全部楼层
本文原作者为 盗帅冬瓜 
最先发表便是于本论坛-_-
转贴请注明原作者姓名及出处
自己改动的部分请附上另外标记
谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-5-12 17:57 , Processed in 0.013308 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表