Project1

标题: 如何给加入人物仓库的角色添加一个状态 [打印本页]

作者: 兔毛鹿    时间: 2008-10-23 23:03
标题: 如何给加入人物仓库的角色添加一个状态
如果某角色添加进人物仓库,那么就给他添加34号状态,直到重新加入队伍离开人物仓库,才去除这个状态


无冲突版人物仓库脚本:
http://rpg.blue/web/htm/news437.htm


好像下面这一段就是写角色进出仓库的{/gg}

  1. #--------------------------------------------------------------------------
  2. # ● フレーム更新
  3. #--------------------------------------------------------------------------
  4. def update
  5.    # コマンドウィンドウを更新
  6.    @main_window.update
  7.    if @status_window.visible and @show_index != @main_window.index
  8.      status_window_position
  9.      @status_window.refresh(@main_window.menber)
  10.      @show_index = @main_window.index
  11.    end
  12.    # B ボタンが押された場合
  13.    if Input.trigger?(Input::B)
  14.      if $game_party.actors.size < $game_party.party_min
  15.        # ブザー SE を演奏
  16.        $game_system.se_play($data_system.buzzer_se)
  17.        return
  18.      end
  19.      # キャンセル SE を演奏
  20.      $game_system.se_play($data_system.cancel_se)
  21.      # メニュー画面に切り替え
  22.      $scene = Scene_Map.new
  23.      return
  24.    end
  25.    # C ボタンが押された場合
  26.    if Input.trigger?(Input::C)
  27.      # 選択したアクターが強制加入アクターの場合入れ替え不可
  28.      if $game_party.must_actor_include?(@main_window.menber)
  29.        # ブザー SE を演奏
  30.        $game_system.se_play($data_system.buzzer_se)
  31.        return
  32.      end
  33.      if $game_party.actors.include?(@main_window.menber)
  34.        $game_party.remove_actor(@main_window.menber.id)
  35.        if $game_party.remove_actor
  36.        main_window.menber.id.add_state(33)
  37.      else
  38.        if $game_party.actors.size == $game_party.party_max
  39.          # ブザー SE を演奏
  40.          $game_system.se_play($data_system.buzzer_se)
  41.          return
  42.        end
  43.        $game_party.add_actor(@main_window.menber.id)
  44.       
  45.      end
  46.      # 決定 SE を演奏
  47.      $game_system.se_play($data_system.decision_se)
  48.      @main_window.refresh
  49.      @menber_window.refresh
  50.      return
  51.    end
  52. end
  53. def status_window_position
  54.    if @main_window.cursor_rect.y < 176
  55.      @status_window.y = 288
  56.    else
  57.      @status_window.y = 96
  58.    end
  59. end
  60. end
复制代码
[LINE]1,#dddddd[/LINE]此贴于 2008-10-28 14:59:33 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 天圣的马甲    时间: 2008-10-24 10:28
我似乎在你这里看到了增减状态的语句{/gg}
main_window.menber.id.add_state(33)

main_window.menber应该就是人物仓库的人吧0 0
作者: 兔毛鹿    时间: 2008-10-24 16:26
以下引用天圣的马甲于2008-10-24 2:28:13的发言:

我似乎在你这里看到了增减状态的语句
main_window.menber.id.add_state(33)

main_window.menber应该就是人物仓库的人吧0 0




main_window.menber.id.add_state(33)是我加的,可是写法不对,选定角色一进仓库就出错了,后来改成$game_party.actors[main_window.menber.id].add_state(33),也出错!不知应该怎么写
作者: 天圣的马甲    时间: 2008-10-24 20:11
前面加个@看看?= =感觉似乎是main_window.menber.id未定义出错吧。脚本里用的都是@main_window.menber.id……
作者: 兔毛鹿    时间: 2008-10-24 20:22
我改成 @main_window.menber.id.add_state(98) 结果选好角色入仓库的时候也出错了,是不是这个脚本里还要定义 state 啊?该怎么定义状态呢。。。



作者: 天圣的马甲    时间: 2008-10-24 20:29
Window类里面添加状态肯定会出错- -
不过很想知道你主要的目的是什么……
作者: 兔毛鹿    时间: 2008-10-24 20:47
我希望上一次存进去多少角色,下次再进去存取的话应该还是这些角色,但是这脚本的仓库里显示角色是用开关控制的,而我又用了离队系统,可随时让队伍里的角色离队,新角色又是在游戏中不断添加的,所以用开关法显示仓库角色就不够用了

所以我希望给加入仓库的角色添加一个状态,直到该角色离开仓库,才去除这个状态。
下次再进去存取的话,只要在该脚本里指定仓库中只显示所有带有这个状态的角色就可以了,开关也可以不用了

本来想用那个人物仓库 1.02 ,但是冲突太多了
作者: 兔毛鹿    时间: 2008-10-26 01:50

作者: darkten    时间: 2008-10-27 20:40
脚本我不会改,但是用事件勉强解决应该是可以的...(会比较麻烦,搂主真得找不到答案的话就考虑这个办法吧...)


[LINE]1,#dddddd[/LINE]
在进入离队界面前用事件:
条件分支--〉角色A在同伴中的场合--〉开关001=ON(打个比方:开关A)


然后在退出时,用两次条件分支判断出角色A是否已经被离队

开关A=ON的场合
    角色A在同伴中的场合
        开关A=OFF
    分支结束
分支结束

就这样,如果角色A是使用离队系统离开的话,开关A就会开着。
在进入人物仓库时,在打开角色的开关时,就先用条件分支
   
开关A=ON的场合
    开关A2=ON(开关A2是控制人物仓库里的角色A是否可以加入的开关)
分支结束

注:
角色越多,要判断的就越多,但是设置起来应该比较简单(因为全部都是独立的条件分支)
如果这个离队系统是放在菜单里的话,可以在进入和退出界面时启动公共事件的方法解决(这几句的脚本就你应该会吧?) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 大地的雨    时间: 2008-10-27 21:31
那个脚本用window来记录,所以冲突减少,但相对方便性减低。
用事件添加吧,比较容易理解。




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