查看: 2094|回复: 3

[已经解决] 脚本盲求助数组相关问题

[复制链接]
梦石
0
星屑
93
在线时间
128 小时
注册时间
2008-5-12
回帖
86
发表于 2015-3-4 23:17:06 | 显示全部楼层 |阅读模式

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

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

×
我希望将几个变量进行从大到小的排序,从而能够得出 最大的值的变量,第二大的值的变量,第三大的值的变量……类似这样。。
比如  变量1=2    变量2= 4     变量3=1       变量4=3  那么希望可以知道类似 变量2,变量1,变量4,变量3 这样的顺序。。。那么我就可以通过事件来控制这些变量,比如“XXX变量 等于 这些变量中排第二的变量的值的话。。。”类似这样的分歧。。。
要实现这样的话貌似要通过数组?或者循环事件也可以??
orz

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-3-4 23:37:23 | 显示全部楼层
事件脚本
  1. v = $game_variables
  2. v[5] = [v[1],v[2],v[3],v[4]].sort.reverse!
复制代码
分支条件-脚本- $game_variables[xx] == $game_variables[5][1]
  #该怎样怎样
否则
  #该怎样怎样
分支结束


未测试

点评

出啥错?事件脚本一行不够写换行要注意……比如在行末加上\就不会有问题了~  发表于 2015-3-5 10:36
非常感谢,不过出错了= =  发表于 2015-3-5 00:18
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-3-5 01:17:17 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-3-5 14:33 编辑
  1. class Game_Interpreter
  2.   def sort_variables(var,result,reverse = true)   
  3.     v = $game_variables
  4.     var.sort!{|a,b| v[a]>v[b] ? 1 : -1}
  5.     var.reverse! if reverse
  6.     result.each_with_index do |id,i|
  7.       v[id] = var[i] || 0
  8.     end
  9.   end
  10. end
复制代码
插入脚本,然后事件指令中输入:
  1. sort_variables([要排序的变量ID],[要接受结果的变量ID],是否从大到小排列)
复制代码
例如
  1. sort_variables([1,2,3],[4,5],true)
复制代码
表示对变量1、2、3排序,最大的那个变量的ID储存在4号变量中,第二大的变量ID储存在5号变量中
  1. sort_variables([1,2,3],[5],false)
复制代码
表示对变量1、2、3排序,最小的那个变量的ID储存在5号变量中

脚本并没有考虑变量大小相同的情况

点评

十分好用,非常感谢!!  发表于 2015-3-5 11:49

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 sort_by! { |i| v[i] }

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2015-3-5 10:23:18 | 显示全部楼层
按照你给的题意:v[1]=2,v[2]=4,v[3]=1,v[4]=3
脚本:v[1]=2;v[2]=4;v[3]=1;v[4]=3
v[5] = [v[1],v[2],v[3],v[4]]
v[5] = v[5].sort!
想要获取这些变量排第1的值的话,就是v[5][0]
想要获取这些变量排第2的值的话,就是v[5][1]
想要获取这些变量排第3的值的话,就是v[5][2]
想要获取这些变量排第4的值的话,就是v[5][3]

点评

非常感谢!虽然楼上的更加贴切!  发表于 2015-3-5 11:50
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部