Project1

标题: 怎么在脚本里分别控制每个角色的自动战斗开关 [打印本页]

作者: yaruna    时间: 2009-10-13 05:47
标题: 怎么在脚本里分别控制每个角色的自动战斗开关
本帖最后由 yaruna 于 2009-10-13 05:51 编辑

好吧..我实验了5个小时...试了N种办法.
我失败了...
果然我只是会修改皮毛的脚本...
每个角色状态栏里的自动战斗文字切换已经弄好了.. 左右切换自动战斗的开关..


但是..我无论如何都改不了那个该死的auto_battle
比如我判断用$game_actors[@actor].auto_battle = true
就是改不了他..
其他的比如改$game_actors[@actor].class_id = XXX
又是一切正常..
改动都可以.

另外一种方法改是改了.但只能改动一个角色手动,其他全是自动战斗...
我已经无力化了..求高手指点一二...
改怎么样判断才能单独把角色的自动战斗给控制开关....
作者: Eienshinken    时间: 2009-10-14 00:51
泪流满面...居然没有人啊。.或者说是根本就无法改变那个开关..
作者: 神思    时间: 2009-10-14 01:32
  1. class Game_Actor
  2.   attr_writer :auto_battle
  3.   alias :old_setup :setup
  4.   #--------------------------------------------------------------------------
  5.   # ● 设置
  6.   #--------------------------------------------------------------------------
  7.   def setup(*avgc)
  8.     old_setup(*avgc)
  9.     @auto_battle = $data_actors[@actor_id].auto_battle
  10.   end
  11.   #--------------------------------------------------------------------------
  12.   # ● 获取选项 "自动战斗"
  13.   #--------------------------------------------------------------------------
  14.   def auto_battle
  15.     return @auto_battle
  16.   end
  17. end
复制代码
放到main 前

然后就可以通过
$game_actors[actor_id].auto_battle = true/false;
来设置是否自动战斗。。。。
作者: Eienshinken    时间: 2009-10-14 03:09
谢谢神思前辈帮忙 - -终于弄好了...我还以为这个问题解决不了了..

不知能否告诉我这样改的原应呢..
module RPG的class Actor里面不是attr_accessor :auto_battle的吗
为什么要改成attr_writer :auto_battle ?? attr_writer从未见脚本里使用过..
定义指定属性的写入方法。那个指定属性是指什么东西= =指的是打钩那几个设置吗...

下面的2个方法就勉强懂了..
是不是把原先的直接读取角色数据库设置的方法 改为 获取自动战斗是@auto_battle的真伪..
唯一不明白的是 (*avgc) 是啥意思 汗... 原先的Game_Actor里的方法不是setup(actor_id)的吗...

问题太多了..但是答案已经是对的了...
如果前辈没时间或者回答太烦琐 也没关系.
感谢前辈
作者: 神思    时间: 2009-10-14 09:56
默认的呢·是直接获取数据库里的那个选项。。。
想要随时更改的话呢就要将Game_Actor 的 auto_battle 给重定义一下··
把指向数据库的东西改成令一个变量。
attr_writer :auto_battle
等同定义了这么一个方法
def auto_battle=(bool)
  @auto_battle = bool
end

*avgc
-____-防止你将setup重定义过,导致参数个数不对的问题。。。。-___-小小的预防一下而已..
作者: Eienshinken    时间: 2009-10-14 14:46
本帖最后由 Eienshinken 于 2009-10-15 00:18 编辑

明白了.....
原来是这样...我还不行对面向对象的概念不是太清楚.
这样一说 就明白多了

yaruna是我 请BZ帮忙认可神思前辈.




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