Project1

标题: 如何用一个脚本读取全体角色的任意属性 [打印本页]

作者: 布冷.逆天    时间: 2015-2-22 13:16
标题: 如何用一个脚本读取全体角色的任意属性
本帖最后由 布冷.逆天 于 2015-2-22 13:23 编辑

如题,像读取生命:$game_actors[actor_id].hp<=300
错误类型 :
        变量未定义
错误信息 :
        (eval):1:in `command_111'undefined local variable or method `actor_id' for #<Interpreter:0x25e4800>
错误可能发生的相关位置 :
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : eval
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : execute_command
        Interpreter 1 : 第 199 行 : update
        Interpreter 1 : 第 113 行 : loop
        Interpreter 1 : 第 204 行 : update
        Scene_Map : 第 54 行 : gold_yz_update
        Scene_Map : 第 49 行 : loop
        Scene_Map : 第 69 行 : gold_yz_update
        显示金钱 : 第 54 行 : update
        Scene_Map : 第 25 行 : gold_yz_main
        Scene_Map : 第 19 行 : loop
        Scene_Map : 第 30 行 : gold_yz_main
        显示金钱 : 第 46 行 : main
        错误报告 : 第 37 行 : run
        错误报告 : 第 151 行

$game_actors.hp<=300
错误类型 :
        方法未定义
错误信息 :
        (eval):1:in `command_111'undefined method `hp' for #<Game_Actors:0x6f4ede8>
错误可能发生的相关位置 :
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : eval
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : execute_command
        Interpreter 1 : 第 199 行 : update
        Interpreter 1 : 第 113 行 : loop
        Interpreter 1 : 第 204 行 : update
        Scene_Map : 第 54 行 : gold_yz_update
        Scene_Map : 第 49 行 : loop
        Scene_Map : 第 69 行 : gold_yz_update
        显示金钱 : 第 54 行 : update
        Scene_Map : 第 25 行 : gold_yz_main
        Scene_Map : 第 19 行 : loop
        Scene_Map : 第 30 行 : gold_yz_main
        显示金钱 : 第 46 行 : main
        错误报告 : 第 37 行 : run
        错误报告 : 第 151 行

我找到错误原因了,可是改起来好麻烦!求缩写
作者: 芯☆淡茹水    时间: 2015-2-22 13:23
$game_actors 是数组,不能直接获取 hp ,需指定某个角色ID
$game_actors[角色ID].hp
作者: 布冷.逆天    时间: 2015-2-22 13:24
芯☆淡茹水 发表于 2015-2-22 13:23
$game_actors 是数组,不能直接获取 hp ,需指定某个角色ID
$game_actors[角色ID].hp

这个我也知道,我是想读取全体角色各自的hp
作者: 布冷.逆天    时间: 2015-2-22 13:27
我想,我要创建一个脚本了!正好可以练练手,呵呵!
作者: taroxd    时间: 2015-2-22 13:28
本帖最后由 taroxd 于 2015-2-22 13:35 编辑
布冷.逆天 发表于 2015-2-22 13:24
这个我也知道,我是想读取全体角色各自的hp


如果是队伍中的全体角色:
RUBY 代码复制
  1. $game_party.actors.map { |a| a.hp }


如果是已经初始化的全部角色:
RUBY 代码复制
  1. # 不想去给 Game_Actors 定义接口了,就这么凑合着看吧
  2. actors = $game_actors.instance_variable_get(:@data)
  3. result = {}
  4. actors.each_with_index do |actor, id|
  5.   result[id] = actor.hp if actor
  6. end
  7.  
  8. p result

作者: 芯☆淡茹水    时间: 2015-2-22 13:30
$game_actors 是整个数据库角色的集合,要查看全体hp,只能一个一个查看
  1. for i in 1...$data_actors.size
  2.   p $game_actors[i].hp
  3. end
  4. # 这样就是从1号ID角色HP依次显示到最后一位。
复制代码

作者: 布冷.逆天    时间: 2015-2-22 13:34
taroxd 发表于 2015-2-22 13:28
$game_party.actors.map { |a| a.hp }

弱弱的问一下,后面能加<吗?
作者: 布冷.逆天    时间: 2015-2-22 13:35
taroxd 发表于 2015-2-22 13:28
$game_party.actors.map { |a| a.hp }


弱弱的问一下,后面能加<吗?
错误类型 :
        方法未定义
错误信息 :
        (eval):1:in `command_111'undefined method `<=' for [741]:Array
错误可能发生的相关位置 :
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : eval
        Interpreter 3 : 第 264 行 : command_111
        Interpreter 2 : 第 41 行 : execute_command
        Interpreter 1 : 第 199 行 : update
        Interpreter 1 : 第 113 行 : loop
        Interpreter 1 : 第 204 行 : update
        Scene_Map : 第 54 行 : gold_yz_update
        Scene_Map : 第 49 行 : loop
        Scene_Map : 第 69 行 : gold_yz_update
        显示金钱 : 第 54 行 : update
        Scene_Map : 第 25 行 : gold_yz_main
        Scene_Map : 第 19 行 : loop
        Scene_Map : 第 30 行 : gold_yz_main
        显示金钱 : 第 46 行 : main
        错误报告 : 第 37 行 : run
        错误报告 : 第 151 行
作者: taroxd    时间: 2015-2-22 13:38
本帖最后由 taroxd 于 2015-2-22 13:40 编辑
布冷.逆天 发表于 2015-2-22 13:35
弱弱的问一下,后面能加


怎么把全体角色的 hp 和一个数字比?
和数组比较可以用 <=>
作者: 布冷.逆天    时间: 2015-2-22 13:42
我理了一下顺序,应该是这样的:
先判断玩家选的角色,然后判断ta的血量,就怎么简单!
作者: 芯☆淡茹水    时间: 2015-2-22 14:10
问题没叙述清楚。角色加血是在战斗中?还是在地图上的 ARPG
作者: 布冷.逆天    时间: 2015-2-22 14:26
芯☆淡茹水 发表于 2015-2-22 14:10
问题没叙述清楚。角色加血是在战斗中?还是在地图上的 ARPG

谢谢了,我已经解决了。脚本是:
$game_party.actors[0].hp<=1000
系统可以自动判断血量了,再次谢谢




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