Project1

标题: 如果队员未满4个则直接加入,如满则询问要替换哪一个? [打印本页]

作者: 影子骑士    时间: 2011-4-13 15:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2011-4-13 15:50
有一個東西叫角色倉庫——在首頁上——當然或者并不完全合你心意,但是近來求寫腳本的大多都悲劇了~
作者: 影子骑士    时间: 2011-4-13 17:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 英顺的马甲    时间: 2011-4-13 18:13
本帖最后由 英顺的马甲 于 2011-4-13 18:20 编辑

是不是这样?
  1. class Game_Party
  2. def add_actor(actor_id)
  3.     actor = $game_actors[actor_id]
  4.     if @actors.size < 4 and not @actors.include?(actor)
  5.       @actors.push(actor)
  6.       $game_player.refresh
  7.     else not @actors.include?(actor)
  8.       a = []
  9.       @actors.each{|s|a.push(s.name)}
  10.       cmd_win = Window_Command.new(160,a)
  11.       cmd_win.x = 320 - cmd_win.width/2
  12.       cmd_win.y = 240 - cmd_win.height/2
  13.       hlp_win = Window_Base.new(cmd_win.x,cmd_win.y-64,160,64)
  14.       hlp_win.contents = Bitmap.new(128,32)
  15.       hlp_win.contents.draw_text(0,0,128,32,"要将谁替换掉?")
  16.       loop do
  17.         Graphics.update
  18.         Input.update
  19.         cmd_win.update
  20.         if Input.trigger?(Input::C)
  21.           $game_system.se_play($data_system.decision_se)
  22.           @actors.delete(@actors[cmd_win.index])
  23.           @actors.push(actor)
  24.           $game_player.refresh
  25.           break
  26.         end
  27.       end
  28.       cmd_win.dispose
  29.       hlp_win.dispose
  30.     end
  31.   end
  32. end
复制代码

作者: 沙漠点灰    时间: 2011-4-13 18:16
本帖最后由 沙漠点灰 于 2011-4-13 18:21 编辑

回复 影子骑士 的帖子
  1. #==============================================================================
  2. # ■ Interpreter (分割定义 8)
  3. #------------------------------------------------------------------------------
  4. #  执行事件命令的解释器。本类在 Game_System 类
  5. # 和 Game_Event 类的内部使用。
  6. #==============================================================================

  7. class Interpreter
  8.   #--------------------------------------------------------------------------
  9.   # ● 角色的替换
  10.   #--------------------------------------------------------------------------
  11.   def command_129
  12.     # 获取角色
  13.     actor = $game_actors[@parameters[0]]
  14.     # 角色有效的情况下
  15.     if actor != nil
  16.       # 操作分支
  17.       if @parameters[1] == 0
  18.         if @parameters[2] == 1
  19.           $game_actors[@parameters[0]].setup(@parameters[0])
  20.         end
  21.         if $game_party.actors.size < 4
  22.           $game_party.add_actor(@parameters[0])
  23.         else
  24.           # 执行替换
  25.           window_h = Window_Help.new
  26.           window_h.set_text("队伍已满,现在准备加入 #{$game_actors[@parameters[0]].name} ,请选择准备替换的人")
  27.           window_c = Window_Command.new(320,$game_party.actors.inject([]){|a,i|a<<i.name})
  28.           window_c.x = 320 / 2
  29.           window_c.y = 250
  30.           loop do
  31.             # 刷新游戏画面
  32.             Graphics.update
  33.             # 刷新输入信息
  34.             Input.update
  35.             # 刷新画面
  36.             window_c.update
  37.             if Input.trigger?(Input::B)
  38.               break
  39.             end
  40.             if Input.trigger?(Input::C)
  41.               $game_party.remove_actor($game_party.actors[window_c.index].id)
  42.               $game_party.add_actor(@parameters[0])
  43.               $game_temp.message_window_showing = true
  44.               $game_temp.message_text = "已经把#{$game_party.actors[window_c.index].name}]换为#{$game_actors[@parameters[0]].name}"
  45.               break
  46.             end
  47.           end
  48.           window_c.dispose
  49.           window_h.dispose
  50.         end
  51.       else
  52.         $game_party.remove_actor(@parameters[0])
  53.       end
  54.     end
  55.     # 继续
  56.     return true
  57.   end
  58. end
复制代码
插在Main前
额,发现慢了半拍,不过我这个(较ls而言)要好得多
不过要在替换后,紧接着吐槽一句,不然又要开始替换
作者: 英顺的马甲    时间: 2011-4-13 18:34
$game_temp.message_text = "已经把#{$game_party.actors[window_c.index].name}]换为#{$game_actors[@parameters[0]].name}"
作者: 影子骑士    时间: 2011-4-13 19:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 英顺的马甲    时间: 2011-4-13 19:02
本帖最后由 英顺的马甲 于 2011-4-13 19:03 编辑

回复 影子骑士 的帖子

  1. $game_temp.message_window_showing = true
  2. $game_temp.message_text = "已经把#{$game_party.actors[window_c.index].name}]换为#{$game_actors[@parameters[0]].name}"
复制代码
加在“break”上面
作者: 影子骑士    时间: 2011-4-13 19:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 英顺的马甲    时间: 2011-4-13 19:29
本帖最后由 英顺的马甲 于 2011-4-13 19:36 编辑

回复 影子骑士 的帖子

sry,摆了个乌龙if Input.trigger?(Input::C)下面插入

  1. name1 = @actors[cmd_win.index].name
复制代码
然后break上面替换为
  1. hlp_win.visible=cmd_win.visible=false
  2. $game_temp.message_window_showing = true
  3. $game_temp.message_text = "已经把#{name1}]换为#{actor.name}"
复制代码
���
作者: 英顺的马甲    时间: 2011-4-13 19:38
回复 影子骑士 的帖子

最终脚本:
  1. class Game_Party
  2.   def add_actor(actor_id)
  3.     actor = $game_actors[actor_id]
  4.     if @actors.size < 4 and not @actors.include?(actor)
  5.       @actors.push(actor)
  6.       $game_player.refresh
  7.     else not @actors.include?(actor)
  8.       a = []
  9.       @actors.each{|s|a.push(s.name)}
  10.       cmd_win = Window_Command.new(160,a)
  11.       cmd_win.x = 320 - cmd_win.width/2
  12.       cmd_win.y = 240 - cmd_win.height/2
  13.       hlp_win = Window_Base.new(cmd_win.x-80,cmd_win.y-64,320,64)
  14.       hlp_win.contents = Bitmap.new(288,32)
  15.       hlp_win.contents.draw_text(0,0,288,32,"要让#{actor.name}代替谁?")
  16.       loop do
  17.         Graphics.update
  18.         Input.update
  19.         cmd_win.update
  20.         if Input.trigger?(Input::C)
  21.           name1 = @actors[cmd_win.index].name
  22.           $game_system.se_play($data_system.decision_se)
  23.           @actors.delete(@actors[cmd_win.index])
  24.           @actors.push(actor)
  25.           $game_player.refresh
  26.           hlp_win.visible=cmd_win.visible=false
  27.           $game_temp.message_window_showing = true
  28.           $game_temp.message_text = "已经把#{name1}换为#{actor.name}"
  29.           break
  30.         end
  31.       end
  32.       cmd_win.dispose
  33.       hlp_win.dispose
  34.     end
  35.   end
  36. end
复制代码

作者: 影子骑士    时间: 2011-4-13 19:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 影子骑士    时间: 2011-4-13 19:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沙漠点灰    时间: 2011-4-14 17:00
回复 英顺的马甲 的帖子
个人认为加在 Game_Party 的 add_actor 比较方便

的确!不过要考虑到脚本之间的冲突的话,add_actor是很多人下手的目标,修改事件的
解释器冲突可能性很小




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