查看: 2242|回复: 9

[已经解决] 请问怎么使新加入的队友自动排到队伍最前面

[复制链接]
梦石
0
星屑
50
在线时间
19 小时
注册时间
2013-6-4
回帖
13
发表于 2013-6-15 18:14:06 | 显示全部楼层 |阅读模式

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

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

×
@actors.push(actor_id) 感觉像是由于队友(ID)加入时会排在$data_actors数组的最后面导致的。有没有办法让新加入的队友自动就排到最前面了。打个比方,有个事件主角(队列一号)暂时离队了,之后就加入了第三人。我想要把3号队友直接放在一号队列出怎么办?

点评

不是$data_actors,是$game_party.actors  发表于 2013-6-17 09:01
梦石
0
星屑
50
在线时间
62 小时
注册时间
2013-4-11
回帖
96
发表于 2013-6-15 19:41:13 | 显示全部楼层
麻烦点都让他们离队然后再按顺序加入。不费脑子。。

评分

参与人数 1星屑 +75 收起 理由
怪蜀黍 + 75 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2013-6-17 08:06:08 | 显示全部楼层
自定义了一个新的方法
在事件中调用脚本sk_aa(角色id) 或sk_aa("角色名称")

其中sk_aa("角色名称") 这个用法加入的是最后一个名字与之相同的角色。如果没有这个名字就不会有人加入
sk_aa("薇拉") #加入薇拉
sk_aa("薇999拉") #没有这个人所以什么都不发生
sk_aa(9) #加入9号角色


下面的代码插入到脚本编辑器main前面任意位置
  1. class Game_Party
  2.     def sk_add_actor(id)
  3.       if id.is_a?(Numeric)
  4.         if @actors.size < MAX_MEMBERS and not @actors.include?(id)
  5.           @actors = [id]+@actors
  6.           $game_player.refresh
  7.         end
  8.       elsif id.is_a?(String)
  9.         aid = 0
  10.         ($data_actors.size-1).times{|i|
  11.         aid=i+1 if $game_actors[i+1].name == id
  12.         }
  13.         if @actors.size < MAX_MEMBERS  and aid != 0 and not @actors.include?(aid)
  14.           @actors = [aid]+@actors
  15.           $game_player.refresh
  16.         end
  17.       end
  18.     end
  19.   end
  20. class Game_Interpreter
  21.   def sk_aa(id)
  22.     $game_party.sk_add_actor(id)
  23.   end
  24. end
复制代码

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2013-6-17 08:59:08 | 显示全部楼层
本帖最后由 亿万星辰 于 2013-6-17 09:02 编辑
  1. class Game_Party
  2.   #--------------------------------------------------------------------------
  3.   # ● 队员加入
  4.   #     actor_id : 角色ID
  5.   #     front    : 角色是否加入到队伍排头
  6.   #--------------------------------------------------------------------------
  7.   def add_actor(actor_id, front = false)
  8.     if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
  9.       front ? @actors.unshift(actor_id) : @actors.push(actor_id)
  10.       $game_player.refresh
  11.     end
  12.   end
  13. end
复制代码
其实这样重定义一下就好了,替换都没问题。

需要让新加入的角色到排头的话就用事件里的脚本执行
$game_party.add_actor(角色ID, true)
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
回帖
6325
发表于 2013-6-17 11:40:27 | 显示全部楼层

有装备打造系统吗…………

LZ用我这个事件就好了。
无标题.jpg
加入一个人,然后全部角色离开再加入,中间判断一下某些隐藏角色。
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复

使用道具 举报

梦石
0
星屑
50
在线时间
19 小时
注册时间
2013-6-4
回帖
13
 楼主| 发表于 2013-6-29 16:17:26 | 显示全部楼层
上贺茂润 发表于 2013-6-17 11:40
LZ用我这个事件就好了。

加入一个人,然后全部角色离开再加入,中间判断一下某些隐藏角色。 ...

后来也想到了,经常性更替队友实在麻烦嘛(也想过放公共事件)!当然这是最简单的方法,但不是最简便!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
19 小时
注册时间
2013-6-4
回帖
13
 楼主| 发表于 2013-6-29 16:18:29 | 显示全部楼层
R-零 发表于 2013-6-17 08:06
自定义了一个新的方法
在事件中调用脚本sk_aa(角色id) 或sk_aa("角色名称")

thanks 当做学习了
回复

使用道具 举报

梦石
0
星屑
50
在线时间
19 小时
注册时间
2013-6-4
回帖
13
 楼主| 发表于 2013-6-29 16:30:26 | 显示全部楼层
亿万星辰 发表于 2013-6-17 08:59
其实这样重定义一下就好了,替换都没问题。

需要让新加入的角色到排头的话就用事件里的脚本执行

居然还有unshift这个词可以用啊,翻了下F1居然在最下面,看来还得多仔细看啊
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
51
在线时间
4 小时
注册时间
2013-6-29
回帖
7
发表于 2013-7-1 17:44:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部