设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3145|回复: 8
打印 上一主题 下一主题

[已经解决] 麻烦看看这个工程!!宠物脚本和战斗换人并存的问题

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2011-9-1 13:02:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 幻耶 于 2011-9-6 09:18 编辑

柳柳的宠物脚本和enghao_lim的战斗中换人脚本并存的问题,请看存档:在战斗中,当A角色(没装备宠物)把B角色(装备了宠物)替换上来,B角色的宠物不起作用,而且也不显示,求解决!:'(

宠物核心脚本+战斗换人.rar

201.37 KB, 下载次数: 605

囡囚囨囚囨図囨囧

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
2
发表于 2011-9-1 14:01:43 | 只看该作者
里面的两个脚本根本没有任何关联,怎么可能显示

点评

所以换人物时就会显示出错,或者宠物被固定显示第一个人的  发表于 2011-9-1 14:57
不,我的意思是说,那两个脚本虽然没冲突,但是宠物脚本没设置换人后宠物也跟着改变嘛!它都定死在第一个人身上  发表于 2011-9-1 14:56
没关联不显示才怪呢,就是有关联才崩的.  发表于 2011-9-1 14:36

博客:我的博客
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2011-9-1 15:33:07 | 只看该作者
本帖最后由 幻耶 于 2011-9-1 15:34 编辑
爆焰 发表于 2011-9-1 14:01
里面的两个脚本根本没有任何关联,怎么可能显示


好吧,我就是想做到换上场的角色如果带有宠物可以一起出来,换下场的角色如果带有宠物可以一起回去。应该怎样做到?


幻耶于2011-9-1 22:22补充以下内容:
猜想换人脚本分成了两个队伍系统,初始化的时候待命的那个队伍没有算上去?


幻耶于2011-9-2 08:21补充以下内容:
可以自顶了吧!
囡囚囨囚囨図囨囧
回复

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
4
发表于 2011-9-2 16:02:35 | 只看该作者
本帖最后由 英顺的马甲 于 2011-9-2 16:04 编辑

将这个脚本插入在两个脚本的下面就行了。
  1. class Sprite_Pet < RPG::Sprite
  2.   def refresh
  3.     if $game_party.actors[@father_id] != nil
  4.       if $game_party.actors[@father_id].pet_id != 0
  5.         @battler = Game_Pet.new($game_party.actors[@father_id].pet_id)
  6.         self.bitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
  7.       else
  8.         @battler = nil
  9.         self.bitmap.clear
  10.       end
  11.     end
  12.   end
  13. end
  14. class Scene_Battle
  15.   def update_phase4_step4
  16.     if @active_battler.current_action.is_change_battler?
  17.       actor1_id = @active_battler.current_action.change_to_battler
  18.       actor2_id = @active_battler.id
  19.       (0...$game_party.actors.size).each do |i|
  20.         if $game_party.actors[i].id == actor2_id
  21.           $game_party.change_actor(i,actor1_id)
  22.           @active_battler = $game_actors[actor1_id]
  23.           @status_window.refresh
  24.         end
  25.       end
  26.       @pet_actor = []
  27.       for ps in $pet_sprites
  28.         ps.refresh
  29.         if ps.battler != nil
  30.           @pet_actor.push(ps.battler)
  31.         end
  32.       end
  33.     end
  34.     for target in @target_battlers
  35.       target.animation_id = @animation2_id
  36.       target.animation_hit = (target.damage != "Miss")
  37.     end
  38.     @wait_count = 8
  39.     @phase4_step = 5
  40.   end
  41. end
复制代码
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
5
 楼主| 发表于 2011-9-2 22:41:59 | 只看该作者
本帖最后由 幻耶 于 2011-9-2 22:44 编辑
英顺的马甲 发表于 2011-9-2 16:02
将这个脚本插入在两个脚本的下面就行了。


很感谢!我还以为这帖没希望了。。宠物跟随的问题解决了,但是在宠物的战斗图上还有些问题:当带有宠物的A角色下场,把不带宠物的B角色替换上来,然后B下场再让A回到战场,会发现A右下角的宠物战斗图不见了。

另外当带有宠物的A角色下场,把不带宠物的B角色替换上来,如果敌人是和宠物一样的怪物,敌人的战斗图会消失,像下图

11.jpg (42.71 KB, 下载次数: 3)

11.jpg
囡囚囨囚囨図囨囧
回复

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
6
发表于 2011-9-2 22:53:23 | 只看该作者
幻耶 发表于 2011-9-2 22:41
很感谢!我还以为这帖没希望了。。宠物跟随的问题解决了,但是在宠物的战斗图上还有些问题:当带有宠物的 ...

抱歉,这是没注意到的默认的悲哀
第九行改成 self.bitmap = Bitmap.new(1,1)
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

7
发表于 2011-9-2 23:44:09 | 只看该作者
其实可以用bitmap.clear。
不过将第六行改为
self.bitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue).clone
就没这个问题了。
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
8
 楼主| 发表于 2011-9-3 07:44:30 | 只看该作者
英顺的马甲 发表于 2011-9-2 22:53
抱歉,这是没注意到的默认的悲哀
第九行改成 self.bitmap = Bitmap.new(1,1)

再次感谢,解决大问题了,最后请教一下:带宠的A角色下场换成B角色之后,A带的宠物有时候还会攻击敌人一下,能不能做到B角色一上场,A的宠物就停止行动?
囡囚囨囚囨図囨囧
回复

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
9
发表于 2011-9-5 18:36:28 | 只看该作者
幻耶 发表于 2011-9-3 07:44
再次感谢,解决大问题了,最后请教一下:带宠的A角色下场换成B角色之后,A带的宠物有时候还会攻击敌人一 ...

解决了死亡后不会换宠物BUG
  1. class Sprite_Pet < RPG::Sprite
  2.   def refresh
  3.     if $game_party.actors[@father_id] != nil
  4.       if $game_party.actors[@father_id].pet_id != 0
  5.         @battler = Game_Pet.new($game_party.actors[@father_id].pet_id)
  6.         self.bitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
  7.       else
  8.         self.bitmap = nil
  9.         @battler = nil
  10.       end
  11.       self.appear
  12.     end
  13.   end
  14. end
  15. class Scene_Battle
  16.   def update_phase4_step4
  17.     if @active_battler.current_action.is_change_battler?
  18.       actor1_id = @active_battler.current_action.change_to_battler
  19.       actor2_id = @active_battler.id
  20.       (0...$game_party.actors.size).each do |i|
  21.         if $game_party.actors[i].id == actor2_id
  22.           $game_party.change_actor(i,actor1_id)
  23.           @active_battler = $game_actors[actor1_id]
  24.           @status_window.refresh
  25.         end
  26.       end
  27.       @pet_actor = []
  28.       for ps in $pet_sprites
  29.         ps.refresh
  30.         if ps.battler != nil
  31.           @pet_actor.push(ps.battler)
  32.         end
  33.       end
  34.     end
  35.     for target in @target_battlers
  36.       target.animation_id = @animation2_id
  37.       target.animation_hit = (target.damage != "Miss")
  38.     end
  39.     @wait_count = 8
  40.     @phase4_step = 5
  41.   end
  42.   def update_phase4_step6
  43.     @target_battlers.each do |target|
  44.       if target.is_a?(Game_Actor) and target.dead? and
  45.          !$game_party.other_actors.all?{|actor|actor.dead?}
  46.         @actor_window = Window_Actor.new
  47.         @actor_window.index = 0
  48.         @actor_window.active = true
  49.         @actor_window.help_window = @help_window
  50.         actor_id = -1
  51.         loop do
  52.           Graphics.update
  53.           Input.update
  54.           @actor_window.update
  55.           if Input.trigger?(Input::C)
  56.             actor = $game_actors[@actor_window.actor_id]
  57.             if actor.dead? or
  58.                (@changed_battler_id.include?(actor.id) and
  59.                 target.current_action.change_to_battler != actor.id) or
  60.                $game_party.actors.include?(actor)
  61.               $game_system.se_play($data_system.buzzer_se)
  62.             else
  63.               actor_id = actor.id
  64.             end
  65.           end
  66.           break if actor_id >= 0
  67.         end
  68.         @actor_window.visible = false
  69.         @actor_window.dispose
  70.         @actor_window = nil
  71.         @help_window.visible = false
  72.         (0...$game_party.actors.size).each do |i|
  73.           if $game_party.actors[i].id == target.id
  74.             $game_party.change_actor(i,actor_id)
  75.             @status_window.refresh
  76.           end
  77.         end
  78.         @pet_actor = []
  79.         for ps in $pet_sprites
  80.           ps.refresh
  81.           if ps.battler != nil
  82.             @pet_actor.push(ps.battler)
  83.           end
  84.         end
  85.       end
  86.     end
  87.     $game_temp.forcing_battler = nil
  88.     if @common_event_id > 0
  89.       common_event = $data_common_events[@common_event_id]
  90.       $game_system.battle_interpreter.setup(common_event.list, 0)
  91.     end
  92.     @phase4_step = 1
  93.   end
  94. end
  95. class Spriteset_Battle
  96.   def effect?
  97.     for sprite in @enemy_sprites + @actor_sprites + $pet_sprites
  98.       return true if sprite.effect?
  99.     end
  100.     return false
  101.   end
  102. end
复制代码

点评

完美解决,谢谢  发表于 2011-9-6 10:00
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-26 11:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表