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

Project1

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

2100帮忙改个范例。。关于宠物系统的

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2008-6-17 00:27:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
因为某些需要,我在游戏中设置了随时交换角色的位置,比如在公共事件里有以下脚本:

a = $game_party.actors[1]
$game_party.actors[1] = $game_party.actors[
2]
$game_party.actors[2] = a


但是如果战斗场景中角色装备有宠物,宠物不会随着角色队列的改变而改变,只会停留在原来的位置,而且宠物的图片会消失,直到进入下一场战斗才会刷新,如何在战斗中让宠物能随着主人位置的变化而变化呢?



宠物系统ver1.2
http://rpg.blue/web/htm/news169.htm






还是追加悬赏吧。。。麻烦哪位帮我把这个范例修改成功,只要使用范例中的特技"互换"使2个角色交换位置,然后她们所装备的宠物也跟着各自的主人移动位置就可以了

范例
http://rpg.blue/upload_program/files/huhuanweizhi_94082788.rar

版务信息:本贴由楼主自主结贴~
囡囚囨囚囨図囨囧

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

2
发表于 2008-6-17 02:06:11 | 只看该作者
不能改变是绝对的
@father_id 只是队伍中某个索引对应的角色, 并不是角色本身
1号2号队员换了位置 但是1号索引还是1号, 只是指向2号队员而已
而且你交换队员也并没有炒作@father_id
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2008-6-17 02:11:15 | 只看该作者
真的没有办法解决了么??那个脚本其它冲突都解决了,就剩这个了...

囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
4
 楼主| 发表于 2008-6-17 02:16:52 | 只看该作者
如果实在不行的话,那个宠物图片消失的问题能不能解决?因为队伍角色位置互换之后,角色装备的宠物的图片不见了
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

5
发表于 2008-6-17 02:22:18 | 只看该作者
   Sprite_Pet 里面   没试过
  def initialize(viewport, father_id = 0)
    super(viewport)
    @father_id = 0
    if $game_party.actors[father_id] != nil
      if $game_party.actors[father_id].pet_id != 0
        @battler = Game_Pet.new($game_party.actors[father_id].pet_id)
        @father_id = $game_party.actors[father_id].id
      else
      
  def update
    ... ...
    # 设置活动块的坐标   
    self.x = $game_party.actors.index($game_party.actors[@father_id]) * 160 + 85
    self.y = 400
    self.z = 5
    self.zoom_x = 0.6
    self.zoom_y = 0.6
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
6
 楼主| 发表于 2008-6-17 03:53:57 | 只看该作者
改成上面这样一进入战斗就出错了

387行就是这一行吧:   @battler = Game_Pet.new($game_party.actors[father_id].pet_id)



囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

7
发表于 2008-6-17 04:14:58 | 只看该作者
不是那个错误吧
原脚本长的就那样
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
8
 楼主| 发表于 2008-6-17 04:22:59 | 只看该作者
不改的话没问题啊,这是我改了之后的脚本,或者哪里改错了??


class Sprite_Pet < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # 战斗者
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport : 显示端口;battler  : 战斗者 (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, father_id = 0)
    super(viewport)
   @father_id = 0
   if $game_party.actors[father_id] != nil
     if $game_party.actors[father_id].pet_id != 0
       @battler = Game_Pet.new($game_party.actors[father_id].pet_id)
       @father_id = $game_party.actors[father_id].id
      else
        @battler = nil
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 战斗者为 nil 的情况下
    if @battler == nil
      self.bitmap = nil
      loop_animation(nil)
      return
    end
    if self.battler != nil
      self.bitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
      if @battler.animation_id != 0
        animation = $data_animations[@battler.animation_id]
        animation(animation, @battler.animation_hit)
        @battler.animation_id = 0
      end
      if $game_party.actors[@father_id].pet_id == 0
        self.battler = nil
        collapse
      end
    end
    # 设置活动块的坐标   
    self.x = $game_party.actors.index($game_party.actors[@father_id]) * 160 + 85
    self.y = 400
    self.z = 5
    self.zoom_x = 0.6
    self.zoom_y = 0.6
  end
end
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
9
 楼主| 发表于 2008-6-17 04:27:19 | 只看该作者
PS:我是在前天你指导下完成的那个由主人生死决定宠物行动的脚本基础上改的
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

10
发表于 2008-6-17 04:32:22 | 只看该作者
以下引用幻耶于2008-6-16 20:27:19的发言:

@battler = Game_Pet.new($game_party.actors[father_id].pet_id, father_id)

不过这样的话, 你那个宠物死了会攻击又有问题了{/gg}
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 20:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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