查看: 3327|回复: 4

[已经解决] 如何写判断角色在队伍中位置的脚本?

[复制链接]
梦石
0
星屑
55
在线时间
50 小时
注册时间
2014-12-12
回帖
13
发表于 2015-8-15 14:51:15 | 显示全部楼层 |阅读模式

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

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

×
队伍成员每变动一次就判断一次
如果角色1在位置1 那么变量1就赋值为1
如果在位置4 就赋值为4
如果不在队伍中变量1就为0
其他角色同理
求大神解答 小弟感激不尽TAT

评分

参与人数 1星屑 +35 收起 理由
hys111111 + 35 手动认可答案奖励

查看全部评分

不要迷恋哥,哥只是个传说
梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-8-15 17:30:43 | 显示全部楼层
用条件分歧->脚本 判断:
$game_actors[角色ID].index == ??
?? 可以写 0~3, 0 是第一位, 1 是第二位 ,,,以此类推。
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2015-8-15 22:46:32 | 显示全部楼层
本帖最后由 cinderelmini 于 2015-8-15 22:59 编辑

突然有的思路,试着写了一下,似乎可行,脚本如下:
点击展开/收起
  1. module SOME
  2.   Actor_to_val = {
  3.   1 => 101,
  4.   2 => 102,
  5.   3 => 103,
  6.   4 => 104,
  7.   5 => 105,
  8.   6 => 106,
  9.   7 => 117,
  10.   8 => 128,
  11.   # 依次类推,格式为:
  12.   # 角色ID => 对应的变量ID  ,←最后面记得加上个半角逗号
  13.   }
  14. end


  15. class Interpreter
  16.   def 队伍序列重置
  17.     return if !$game_party.actors || $game_party.actors.size < 1
  18.     SOME::Actor_to_val.each_value{|id| $game_variables[id] = 0}
  19.     for i in 0...$game_party.actors.size
  20.       actor = $game_party.actors[i]
  21.       $game_variables[SOME::Actor_to_val[actor.id]] = i + 1
  22.     end
  23.   end
  24. end
复制代码


在编辑好队伍之后,用事件的【脚本】功能填入“队伍序列重置”
就能给队伍内的角色对应的变量赋予当前队伍位置数字了(默认4人队伍的情况,位置数字为1~4),

角色ID和对应的变量ID也可以在脚本里做扩展和更改。


如果是默认的事件编辑队伍而不是人物仓库之类的切换队伍成员的话,
可以用下面这版:
点击展开/收起
  1. module SOME
  2.   Actor_to_val = {
  3.   1 => 101,
  4.   2 => 102,
  5.   3 => 103,
  6.   4 => 104,
  7.   5 => 105,
  8.   6 => 106,
  9.   7 => 117,
  10.   8 => 128,
  11.   # 依次类推,格式为:
  12.   # 角色ID => 对应的变量ID  ,←最后面记得加上个半角逗号
  13.   }
  14. end


  15. class Game_Player < Game_Character
  16.   alias the_20150815_refresh refresh
  17.   def refresh
  18.     the_20150815_refresh
  19.     队伍序列重置
  20.   end
  21.   
  22.   def 队伍序列重置
  23.     return if !$game_party.actors || $game_party.actors.size < 1
  24.     SOME::Actor_to_val.each_value{|id| $game_variables[id] = 0}
  25.     for i in 0...$game_party.actors.size
  26.       actor = $game_party.actors[i]
  27.       $game_variables[SOME::Actor_to_val[actor.id]] = i + 1
  28.     end
  29.   end
  30. end
复制代码

这样的话每次发生成员变动都会自己刷新这些变量了。

评分

参与人数 1梦石 +1 收起 理由
hys111111 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-8-16 08:00:37 | 显示全部楼层
cinderelmini 发表于 2015-8-15 22:46
突然有的思路,试着写了一下,似乎可行,脚本如下:
点击展开/收起


还不如直接把位置代入指定变量更方便些。
  1. class Interpreter
  2.   def 角色位置代入变量(actor_id, var_id)
  3.     return unless $game_variables  
  4.     num = $game_actors[actor_id].nil? ? 0 :
  5.     ($game_actors[actor_id].index.nil? ? 0 : $game_actors[actor_id].index + 1)
  6.     $game_variables[var_id] = num
  7.   end
  8. end
复制代码
要判断之前,先取得角色位置代入变量,在 事件->脚本 里写:角色位置代入变量(actor_id, var_id)
代入的2个参数:actor_id   要取得位置的角色ID。
                       var_id      取得位置后代入的变量ID。
最后用这个变量来判断。

评分

参与人数 1梦石 +1 收起 理由
hys111111 + 1 认可答案

查看全部评分

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

使用道具 举报

梦石
0
星屑
55
在线时间
50 小时
注册时间
2014-12-12
回帖
13
 楼主| 发表于 2015-8-21 00:56:00 | 显示全部楼层
现在才有机会上论坛 感谢@cinderelmini  和@芯☆淡茹水 两位大神的回复 问题被完美的解决了╮(╯▽╰)╭
@myownroc 可以帮我把两位大神都设置成采纳吗 感激不尽!
不要迷恋哥,哥只是个传说
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部