Project1

标题: 如何寫腳本令武器對user加狀態!? [打印本页]

作者: baggiochan    时间: 2007-7-25 07:47
标题: 如何寫腳本令武器對user加狀態!?
如題.
另外如果我有一個armor, 裝備時會問你是否裝備, 是的話裝備者會轉職, 卸下armor後職業不會變回原來的職業, 請問該如何設置? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: baggiochan    时间: 2007-7-25 07:47
标题: 如何寫腳本令武器對user加狀態!?
如題.
另外如果我有一個armor, 裝備時會問你是否裝備, 是的話裝備者會轉職, 卸下armor後職業不會變回原來的職業, 請問該如何設置? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 面粉    时间: 2007-7-25 09:06
写完了才发现答非所问了……  - -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) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1