赞 | 0 |
VIP | -1 |
好人卡 | 0 |
积分 | 1 |
经验 | 125905 |
最后登录 | 2013-11-3 |
在线时间 | 1 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 1 小时
- 注册时间
- 2005-10-22
- 帖子
- 519
|
写完了才发现答非所问了…… - -bbb
如果是武器给装备者附加状态的话
默认脚本中的Scene_Equip
找到下面这段(如果用了自动装备脚本,同样找到如下这段)
if Input.trigger?(Input::C)
# 演奏装备 SE
$game_system.se_play($data_system.equip_se)
# 获取物品窗口现在选择的装备数据
item = @item_window.item
# 变更装备
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
在上面那行的后面可以写上
case @right_window.index
when 0
if item.id == 1
@actor.add_state(8,true)
else
@actor.remove_state(8,true)
end
end
其中
item.id == 1 表示装备的如果是1号武器的话。
那么@actor.add_state(8,true) ===>装备者附加18号状态,且强制附加。
else
@actor.remove_state(8,true)
表示如果卸下该装备或者换别的装备,则强制解除8号状态。
强制附加/解除是自动状态所用的。所以效果与自动状态相近……
其实也可以用一直执行的公共事件来写,只不过麻烦一点,效率低一些。
如果还想用装备来转职,可以多加一个分歧。
when 1...4
if item.id == 13
$game_temp.common_event_id = 45
# 切换到地图画面
$scene = Scene_Map.new
@actor.class_id = 10
end
合起来写就是
case @right_window.index
when 0
if item.id == 1
@actor.add_state(8,true)
else
@actor.remove_state(8,true)
end
when 1...4
if item.id == 13
$game_temp.common_event_id = 45
# 切换到地图画面
$scene = Scene_Map.new
@actor.class_id = 10
end
end
其中
item.id == 13 表示装备的如果是13号防具的话。
$game_temp.common_event_id = 45 表示 预约调用第45号公共事件,事件内可以加入“恭喜您,RP+100,达到转为18X职业的要求”之类的文字或者图片。
@actor.class_id = 10 表示 将装备者的职业转变为编号为10的职业。
需要注意的是
1、修改前就装备上的特定道具,只有在修改后重新装备才会有效果。
2、装备特定设定的装备后,会返回地图(因为是预约调用,只有在地图才会刷新和执行公共事件,所以才有了$scene = Scene_Map.new)
3、被设定的装备将永久拥有此种效果。
4、询问是否装备,这个比较困难。因为执行的时候,会先把剩下的语句执行完,切换到地图时,再去执行公共事件,预约调用是无视顺序的。(其实个人认为是RGSS内部机制作怪……公共事件只能在Map和Battle的实例里面刷新……)因此在公共事件内用选项和开关来调节是否改变职业几乎无法做到。
不过公共事件内的提示就需要动一些脑筋了,在条件分歧上要判断一下角色的装备。
大致如此……不保证100%没有错误……{/lh}
突然又想到一个思路,囧
可以写一个一直刷新的公共事件。
让装备带有某种自动状态。
如果队伍中有人带有这种状态的话,就询问是否OOXX
(枚举部分可以用事件内脚本来写,便于实现非特定化目标)
(大致写了一下,发现还是略有难度……就不贴出来了 - -bbb) 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|