Project1

标题: 【VIP悬赏】关于这套战斗换人脚本的问题 [打印本页]

作者: 无忧谷主幻    时间: 2015-3-28 23:02
标题: 【VIP悬赏】关于这套战斗换人脚本的问题
本帖最后由 无忧谷主幻 于 2015-3-29 10:29 编辑

工程: 大雄的剑之物语——奇迹的纹章.zip (3.05 MB, 下载次数: 80)

1,队员最多只能显示4名,多余的角色无法显示,应该如何才能翻页?

2,作用为单体的物品只能给第一个人使用,该怎样解决?

3,如何即使在一个队员死后,也不会自动弹出更换队员的窗口?

4,如何更改队列?
作者: orzzgg    时间: 2015-3-28 23:02
本帖最后由 orzzgg 于 2015-3-29 15:07 编辑

(四个要求已全部回答)
附上Scripts文件 Scripts.rxdata (193.82 KB, 下载次数: 72)

要求一:

1、Window_MenuStatus New! 进行以下修改:

(1)initialize方法里的
  1. self.contents = Bitmap.new(width - 32, height - 32)
复制代码
改为
  1. self.contents = Bitmap.new(width - 32, $game_party.actors.size * 80)
复制代码
(2)update_cursor_rect整个方法改为
  1.   def update_cursor_rect
  2.     if @index <= -2
  3.       self.cursor_rect.empty
  4.       self.oy = 0
  5.     elsif @index == -1
  6.       self.cursor_rect.set(0, 0, self.width - 32, @item_max * 80)
  7.       self.oy = 0
  8.     else
  9.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  10.       if @index > 3
  11.         self.oy = (@index-3)*80
  12.         self.cursor_rect.y -= self.oy
  13.       else
  14.         self.oy = 0
  15.       end
  16.     end
  17.   end
复制代码
2、Window_MenuEquip New! 进行以下修改

(1)initialize方法里的
  1. self.contents = Bitmap.new(width - 32, height - 32)
复制代码
改为
  1. self.contents = Bitmap.new(width - 32, $game_party.actors.size * 80)
复制代码
(2)update_cursor_rect整个方法改为
  1.   def update_cursor_rect
  2.     if @index < 0
  3.       self.cursor_rect.empty
  4.       self.oy = 0
  5.     else
  6.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  7.       if @index > 3
  8.         self.oy = (@index-3)*80
  9.         self.cursor_rect.y -= self.oy
  10.       else
  11.         self.oy = 0
  12.       end
  13.     end
  14.   end
复制代码
要求二:

复杂物品分类轩辕菜单整合版 进行以下修改

(1)Scene_Item里的update方法第一行插入
  1. @status_window.update
复制代码
(2)Scene_Item里的update_itemlist方法296行左右
  1. @itemlist_window.index = 0
复制代码
改为
  1. @itemlist_window.index = -1
复制代码
(3)Window_ItemList里的initialize方法
  1. self.index = 0
复制代码
改为
  1. self.index = -1
复制代码
# 其实(2)(3)不改也可以,只不过改了以后看着更爽- -

要求三:

战斗换人 进行以下修改:
把update_phase4_step6(约456行)整个方法删掉。

要求四:

在Main前插入以下脚本
  1. #==============================================================================
  2. # ■ 仿轩辕剑式的菜单简单换人脚本 BY orzzgg
  3. #==============================================================================
  4. # ■ Scene_Menu
  5. #------------------------------------------------------------------------------
  6. #  处理菜单画面的类。
  7. #==============================================================================

  8. class Scene_Menu
  9.   
  10.   alias orzzgg_update_status update_status
  11.   def update_status
  12.    
  13.     if Input.trigger?(Input::B)
  14.       @change_actor1 = nil
  15.       @change_actor2 = nil
  16.     end
  17.    
  18.     if Input.trigger?(Input::RIGHT)
  19.       if @change_actor1.nil?
  20.         @change_actor1 = $game_party.actors[@status_window.index].clone
  21.         @change_id1 = @status_window.index
  22.         Audio.se_play("Audio/SE/"+"001-System01",80,100)
  23.       else
  24.         @change_actor2 = $game_party.actors[@status_window.index].clone
  25.         @change_id2 = @status_window.index
  26.         $game_party.actors[@change_id1] = @change_actor2.clone
  27.         $game_party.actors[@change_id2] = @change_actor1.clone
  28.         @change_actor1 = nil
  29.         @change_actor2 = nil
  30.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  31.         @status_window.refresh
  32.         @status_window1.refresh
  33.         $game_player.refresh
  34.       end
  35.       return
  36.     end
  37.    
  38.     orzzgg_update_status
  39.   end
  40. end
复制代码
用法:在菜单的“状态”栏里,分别在两个角色上按下“→”键就可以交换两个角色
作者: 英顺的马甲    时间: 2015-3-29 02:06
1. 菜单脚本不兼容
2. 需待鉴定
3. 没看懂你的要求
4. 一,用列队脚本,二,用事件让角色离开后再加入
作者: 无忧谷主幻    时间: 2015-3-29 14:52
本帖最后由 无忧谷主幻 于 2015-3-29 14:59 编辑
orzzgg 发表于 2015-3-29 11:59
(四个要求已全部回答)
附上Scripts文件


多谢,大部分问题已经解决,不过却发现2个新问题
1,当战斗人员全部死亡却存在待机人员的场合,游戏会无限循环下去

2,在状态栏中更换完领队后,在地图上显示的还是原领队(只有在新角色加入时才会更新)

作者: orzzgg    时间: 2015-3-29 14:54
本帖最后由 orzzgg 于 2015-3-29 15:36 编辑
无忧谷主幻 发表于 2015-3-29 14:52
多谢,大部分问题已经解决,不过却发现一个新问题
即:当战斗人员全部死亡却存在待机人员的场合,游戏会 ...


1、需要呼出换人画面则进行以下修改:
在战斗换人 中删掉
  1.     # 同伴中无人 HP 在 0 以上
  2.     for actor in @actors2
  3.       if actor.hp > 0
  4.         return false
  5.       end
  6.     end
复制代码
战斗换人 再加上update_phase4_step6方法,并把
  1. if target.is_a?(Game_Actor) and target.dead? and
  2.          !$game_party.other_actors.all?{|actor|actor.dead?}
复制代码
改为
  1. if target.is_a?(Game_Actor) and target.dead? and
  2.          !$game_party.other_actors.all?{|actor|actor.dead?} and $game_party.all_dead?
复制代码
2、抱歉没有注意到这个问题,修改方案如下:
在我的换人脚本33行左右
  1. @status_window1.refresh
复制代码
后再加上一行
  1. $game_player.refresh
复制代码

作者: 无忧谷主幻    时间: 2015-3-29 20:08
本帖最后由 无忧谷主幻 于 2015-3-29 20:10 编辑
orzzgg 发表于 2015-3-29 14:54
1、需要呼出换人画面则进行以下修改:
在战斗换人 中删掉战斗换人 再加上update_phase4_step6方法,并把 ...


如果只删
RUBY 代码复制
  1. # 同伴中无人 HP 在 0 以上
  2.     for actor in @actors2
  3.       if actor.hp > 0
  4.         return false
  5.       end
  6.     end
则是出战角色全部死亡时,游戏结束吧



另外update_phase4_step6的方法说的是什么?至于

我并没有找到
RUBY 代码复制
  1. if target.is_a?(Game_Actor) and target.dead? and
  2.          !$game_party.other_actors.all?{|actor|actor.dead?}

这段脚本,难道刚刚已经删除了? 大雄的剑之物语——奇迹的纹章.zip (3.06 MB, 下载次数: 70)


作者: orzzgg    时间: 2015-3-29 20:47
无忧谷主幻 发表于 2015-3-29 20:08
如果只删    # 同伴中无人 HP 在 0 以上
    for actor in @actors2
      if actor.hp > 0

不会直接结束的,因为update_phase4_step6方法会先判断。
update_phase4_step6在最初(1L)的工程里有,在 战斗换人 的最下面,只是3L的修改中删掉了。




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