Project1

标题: 脚本盲求助数组相关问题 [打印本页]

作者: ace69    时间: 2015-3-4 23:17
标题: 脚本盲求助数组相关问题
我希望将几个变量进行从大到小的排序,从而能够得出 最大的值的变量,第二大的值的变量,第三大的值的变量……类似这样。。
比如  变量1=2    变量2= 4     变量3=1       变量4=3  那么希望可以知道类似 变量2,变量1,变量4,变量3 这样的顺序。。。那么我就可以通过事件来控制这些变量,比如“XXX变量 等于 这些变量中排第二的变量的值的话。。。”类似这样的分歧。。。
要实现这样的话貌似要通过数组?或者循环事件也可以??
orz
作者: VIPArcher    时间: 2015-3-4 23:37
事件脚本
  1. v = $game_variables
  2. v[5] = [v[1],v[2],v[3],v[4]].sort.reverse!
复制代码
分支条件-脚本- $game_variables[xx] == $game_variables[5][1]
  #该怎样怎样
否则
  #该怎样怎样
分支结束


未测试
作者: 喵呜喵5    时间: 2015-3-5 01: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号变量中

脚本并没有考虑变量大小相同的情况
作者: tan12345    时间: 2015-3-5 10:23
按照你给的题意: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]




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