查看: 2232|回复: 5

[已经解决] 怎么在脚本里分别控制每个角色的自动战斗开关

  [复制链接]
梦石
0
星屑
50
在线时间
13 小时
注册时间
2009-4-8
回帖
104
发表于 2009-10-13 05:47:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 yaruna 于 2009-10-13 05:51 编辑

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

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

另外一种方法改是改了.但只能改动一个角色手动,其他全是自动战斗...
我已经无力化了..求高手指点一二...
改怎么样判断才能单独把角色的自动战斗给控制开关....

永遠神剣

梦石
0
星屑
334
在线时间
412 小时
注册时间
2009-8-16
回帖
1765

贵宾

发表于 2009-10-14 00:51:25 | 显示全部楼层
未命名.jpg 泪流满面...居然没有人啊。.或者说是根本就无法改变那个开关..
新的UI 旧的开始
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2009-10-14 01:32:38 | 显示全部楼层
  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;
来设置是否自动战斗。。。。
-.-
回复

使用道具 举报

永遠神剣

梦石
0
星屑
334
在线时间
412 小时
注册时间
2009-8-16
回帖
1765

贵宾

发表于 2009-10-14 03:09:35 | 显示全部楼层
谢谢神思前辈帮忙 - -终于弄好了...我还以为这个问题解决不了了..

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

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

问题太多了..但是答案已经是对的了...
如果前辈没时间或者回答太烦琐 也没关系.
感谢前辈
新的UI 旧的开始
回复

使用道具 举报

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2009-10-14 09:56:49 | 显示全部楼层
默认的呢·是直接获取数据库里的那个选项。。。
想要随时更改的话呢就要将Game_Actor 的 auto_battle 给重定义一下··
把指向数据库的东西改成令一个变量。
attr_writer :auto_battle
等同定义了这么一个方法
def auto_battle=(bool)
  @auto_battle = bool
end

*avgc
-____-防止你将setup重定义过,导致参数个数不对的问题。。。。-___-小小的预防一下而已..
-.-
回复

使用道具 举报

永遠神剣

梦石
0
星屑
334
在线时间
412 小时
注册时间
2009-8-16
回帖
1765

贵宾

发表于 2009-10-14 14:46:49 | 显示全部楼层
本帖最后由 Eienshinken 于 2009-10-15 00:18 编辑

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

yaruna是我 请BZ帮忙认可神思前辈.
新的UI 旧的开始
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部