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

Project1

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

[已经解决] 如何在Scene外部引用active_battler?

[复制链接]

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
跳转到指定楼层
1
发表于 2010-10-23 08:46:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 saturnfjh 于 2010-10-25 16:31 编辑

在战斗中执行一个脚本,需要在game_unit中获取当前的行动者,应该怎么引用才不至于总是提示nil?

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2010-10-23 09:09:49 | 只看该作者
把active_battler变成全局变量.

点评

咱对VX的熟悉程度算百分之二  发表于 2010-10-28 15:21
在Scene_Battle开放@active_battler的attr_reader权限后$scene.active_battler大概是这样…?  发表于 2010-10-23 22:04
moy
紫大都搞不定,那我肯定也搞不定啦~咱是XP党的说,对VX的熟悉程度绝对不到紫大的百分之一~~  发表于 2010-10-23 19:50
话说那天下午问了紫大。。也没搞定。。  发表于 2010-10-23 19:35
moy
attr_accessor :active_battler 怎么用自行找找类似的东西怎么放的吧~ 全局搜索前面的attr之类的就好,或者去看F1  发表于 2010-10-23 17:26
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
3
 楼主| 发表于 2010-10-24 14:48:05 | 只看该作者
自顶……求解……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
4
发表于 2010-10-24 15:02:59 | 只看该作者
= =你确定使用时是在战斗中吗?这个变量只有在战斗中才有意义
  1. class Scene_Battle < Scene_Base
  2.   attr_accessor :active_battler
  3. end
  4. class Game_Unit
  5.   def active_battler
  6.     return false unless $scene.is_a?(Scene_Battle)
  7.     return $scene.active_battler
  8.   end
  9. end

复制代码

点评

= =random_target是给Enemy用的  发表于 2010-10-24 15:42
是这样,我在写仇恨脚本,在目标 random_target 的时候想获取当前行动目标以便查找仇恨列表要怎么写?  发表于 2010-10-24 15:38
Scene_Battle内部active_battler也不是时刻都有值的,像选择战斗/逃跑时它就是nil  发表于 2010-10-24 15:27
p $scene.is_a(Scene_Battle) 结果是 true p $scene.active_battler 结果是 nil..  发表于 2010-10-24 15:19
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
5
 楼主| 发表于 2010-10-24 15:55:05 | 只看该作者
本帖最后由 saturnfjh 于 2010-10-24 15:56 编辑

回复 小幽的马甲 的帖子


    系统又抽了……

话说是给enemy和auto_battle_actor用呀,在确定目标的时候查找自身的仇恨列表的说。。

点评

查找自身……?直接self不就好了= =  发表于 2010-10-24 16:22
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
6
 楼主| 发表于 2010-10-24 16:48:26 | 只看该作者
回复 小幽的马甲 的帖子

不行啊……在random_target里面用self返回的是Game_Troop..怎么获取单个的active enemy
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
7
发表于 2010-10-24 18:48:10 | 只看该作者
回复 saturnfjh 的帖子

回复 saturnfjh 的帖子

Game_Unit确实是Troop的父类,抱歉我想当然了{:nm_1:}
  突然明白是怎么回事了 ……我和LZ都忽略了一点,当Battler为敌人或者自动战斗的队友时,@active_battler是指【正在实施行动】的Battler。也就是说,@active_battler为某个Battler时,要么那个Battler是自己能够控制的队员在决定行动,要么是敌人或者自动战斗队友在放动画蹦字,而在他们决定行动时active_battler为nil。
以敌人为例,敌人决定行动是在$game_troop.make_actions,所以考虑在make_actions里调用用make_action的时候增加一个参数就好
   

点评

OY,暂时解决问题~THX~辛苦了  发表于 2010-10-25 16:30
似乎没有啊……我第一次写脚本(其实也是刚开始学写脚本),好多东西都是摸摸索索。。要不您帮我看看呗……  发表于 2010-10-24 20:14
额,话说target是 ACTOR和ENEMY会有什么区别。。我是target为actor的时候(enemy 还没测试)报错- -  发表于 2010-10-24 20:04

评分

参与人数 1星屑 +1000 收起 理由
八云紫 + 1000 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
8
 楼主| 发表于 2010-10-24 19:43:12 | 只看该作者
回复 小幽的马甲 的帖子

噢噢~明白了,只要在make_action哪里传递一个index就行了~
还有decide_random_target中有这么一段:
        if target == nil
      clear
    else
      @target_index = target.index
    end

看不太懂什么意思。。 @target_index = target.index 为什么会报“wrong number argument”错误?是什么地方参数不一致才会引起这样的错误?

点评

全局搜索def index  发表于 2010-10-24 20:31
Actor#index不需要参数,你是不是重新定义了  发表于 2010-10-24 20:08
= =你的target是Actor还是Enemy?  发表于 2010-10-24 19:51
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-4 03:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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