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

Project1

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

[已经解决] 如何用一个脚本读取全体角色的任意属性

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
跳转到指定楼层
1
发表于 2015-2-22 13:16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 布冷.逆天 于 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 行

我找到错误原因了,可是改起来好麻烦!求缩写

Lv5.捕梦者

梦石
0
星屑
33488
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2015-2-22 13:23:22 | 只看该作者
$game_actors 是数组,不能直接获取 hp ,需指定某个角色ID
$game_actors[角色ID].hp

点评

map 怎么用?  发表于 2015-2-22 13:40
如果 $game_actors 是数组,事情就会简单很多了,一个 map 就搞定……  发表于 2015-2-22 13:27
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
3
 楼主| 发表于 2015-2-22 13:24:23 | 只看该作者
芯☆淡茹水 发表于 2015-2-22 13:23
$game_actors 是数组,不能直接获取 hp ,需指定某个角色ID
$game_actors[角色ID].hp

这个我也知道,我是想读取全体角色各自的hp
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
4
 楼主| 发表于 2015-2-22 13:27:20 | 只看该作者
我想,我要创建一个脚本了!正好可以练练手,呵呵!
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2015-2-22 13:28:46 | 只看该作者
本帖最后由 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:40
$game_actors 如果没有访问他的 [] 方法,他是不会往 @date 里添加 $data_actors 的  发表于 2015-2-22 13:40

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 我是来打酱油的

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33488
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

6
发表于 2015-2-22 13:30:53 | 只看该作者
$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:31

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 打个酱油

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
7
 楼主| 发表于 2015-2-22 13:34:43 | 只看该作者
taroxd 发表于 2015-2-22 13:28
$game_party.actors.map { |a| a.hp }

弱弱的问一下,后面能加<吗?

点评

嗯好吧,本来就没有混入。不过 <=> 还是有实现的  发表于 2015-2-22 13:40
原来 Ruby1.8 的数组连 Comparable 都没有混入……  发表于 2015-2-22 13:39
可以是可以,不过比较的对象也得是数组呢。说起来你想要的到底是什么我都不清楚  发表于 2015-2-22 13:36
这是一个数组啊  发表于 2015-2-22 13:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
8
 楼主| 发表于 2015-2-22 13:35:09 | 只看该作者
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 行
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 2015-2-22 13:38:22 | 只看该作者
本帖最后由 taroxd 于 2015-2-22 13:40 编辑
布冷.逆天 发表于 2015-2-22 13:35
弱弱的问一下,后面能加


怎么把全体角色的 hp 和一个数字比?
和数组比较可以用 <=>

点评

正是如此,所以我才想起创一个类,一个一个筛选!  发表于 2015-2-22 13:43
你都不知道你选的哪个角色,我怎么会知道……  发表于 2015-2-22 13:41
如果角色的hp<=300,给ta加血! 看似简单,其实我还加了角色选择,并且还是事件型的,所以不知道是选哪个角色!  发表于 2015-2-22 13:40
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2015-2-13
帖子
126
10
 楼主| 发表于 2015-2-22 13:42:05 | 只看该作者
我理了一下顺序,应该是这样的:
先判断玩家选的角色,然后判断ta的血量,就怎么简单!

点评

XP问题不要问我,我没有XP  发表于 2015-2-22 14:37
刚取消了,交个朋友,qq:1417912437,以后有不懂的我就直接找你这位高手了,省去了大把时间!  发表于 2015-2-22 14:31
没装XP不能看。还有,你的链接无法下载  发表于 2015-2-22 14:27
下载地址:[url]http://pan.baidu.com/s/1i39YjoL[url]  发表于 2015-2-22 14:17
没XP不能看  发表于 2015-2-22 14:03
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 08:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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