Project1

标题: 聪聪请教...class方法被占用了怎么办... [打印本页]

作者: 正太君    时间: 2015-11-13 11:53
标题: 聪聪请教...class方法被占用了怎么办...
  1. msgbox $game_troop.members[0].class #=>Game_Enemy...
  2. msgbox $game_party.members[0].class #=>不是Game_Actor,而是角色职业信息...
复制代码
请问如何用简便的办法,使得$game_party.members[0]调用一个方法,得到Game_Actor呢?
这里需要判定战斗时两个任意单位是否同时是敌人或同时是队友,也就是判定a.class == b.class,但是遇到了class重名方法咿咿咿...
作者: 正太君    时间: 2015-11-13 12:15
说明一下,聪聪的最终目的不是仅仅判定两个单位是否同为敌人或角色,而是希望有另外一个方法代替class方法,例如新方法klass,使得a.klass == b.klass得以判定...具体怎么样做比较简便?
作者: VIPArcher    时间: 2015-11-13 12:50
本帖最后由 VIPArcher 于 2015-11-13 12:53 编辑
  1. class Game_BattlerBase; alias_method :klass, :class end
复制代码
未测试
$game_party.members[0].klass
作者: 正太君    时间: 2015-11-13 18:04
这样说吧...
方法rand被重新定义了
def rand(x)
  return "聪聪全国第三帅"
end
这个定义现在开始不许动,如何定义方法 rand_new(),使得rand_new(5)的值随机得到0,1,2,3,4,即是恢复rand方法的旧功能...
作者: taroxd    时间: 2015-11-13 18:26
以下方法都没测试
  1. Kernel.instance_method(:class).bind($game_party.members[0]).call
复制代码

  1. module Kernel
  2.   alias __class__ class
  3. end

  4. $game_party.members[0].__class__
复制代码

作者: 精灵使者    时间: 2015-11-13 22:55
这样说吧...
方法rand被重新定义了
def rand(x)
  return "聪聪全国第三帅"
end
这个定义现在开始不许动,如何定义方法 rand_new(),使得rand_new(5)的值随机得到0,1,2,3,4,即是恢复rand方法的旧功能...
  1. alias rand_new rand
  2. def rand(x)
  3.   return "聪聪全国第三帅"
  4. end
复制代码
大概就这样,使用重命名方法
这样就成啦
作者: tan12345    时间: 2015-11-15 15:41
如果只是判定敌友关系的话,没必要这么麻烦,Game_BattlerBase下有个函数叫actor?和enemy?,如果actor,那么actor?返回真,enemy?返回假;同理如果enemy,那么actor?返回假,enemy?返回真




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