Project1

标题: 如何让变量显示的不再是数字而是一个文字或者词语 [打印本页]

作者: 一瞬间的幻觉    时间: 2011-1-24 03:34
标题: 如何让变量显示的不再是数字而是一个文字或者词语
本帖最后由 一瞬间的幻觉 于 2011-1-30 02:08 编辑

这个和我的问题很类似,但是他的是XP的,而且我的更加复杂
http://rpg.blue/forum.php?mod=vi ... =%E5%8F%98%E9%87%8F

但我的问题不是这个,我的是:

本来句子中的变量代入是数字的,比如说  史莱姆等级\v[1]LV
当该变量增加10,那么显示出的句子便是 史莱姆等级10LV

但是如果我要表达的变量并不限于阿拉伯数字,那又该如何呢,
例如:\v[1]史莱姆,当这个变量id1=1的时候输出的文字为“”,当变量=2的时候,输出的文字为“
也就是说随着变量的改变,句子会变成这样:史莱姆---史莱姆

我不知道应该改哪段脚本,怎么定义变量id=1在1的时候是“小”,2的时候是“大”。。。以此类推

谢谢,貌似有点难,要是能解决就好了
作者: fux2    时间: 2011-1-24 09:10
回复 一瞬间的幻觉 的帖子

case 什么的比较好用,数组也可以
case例子
  1.   def convert_special_characters
  2.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  3.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  4.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  5.     @text.gsub!(/\\G/)              { "\x02" }
  6.     @text.gsub!(/\\\./)             { "\x03" }
  7.     @text.gsub!(/\\\|/)             { "\x04" }
  8.     @text.gsub!(/\\!/)              { "\x05" }
  9.     @text.gsub!(/\\>/)              { "\x06" }
  10.     @text.gsub!(/\\</)              { "\x07" }
  11.     @text.gsub!(/\\\^/)             { "\x08" }
  12.     @text.gsub!(/\\\\/)             { "\\" }
  13.   end
复制代码
修改为
  1.   def convert_special_characters
  2.     @text.gsub!(/\\V\[([0-9]+)\]/i) { fux2($game_variables[$1.to_i]) }
  3.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  4.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  5.     @text.gsub!(/\\G/)              { "\x02" }
  6.     @text.gsub!(/\\\./)             { "\x03" }
  7.     @text.gsub!(/\\\|/)             { "\x04" }
  8.     @text.gsub!(/\\!/)              { "\x05" }
  9.     @text.gsub!(/\\>/)              { "\x06" }
  10.     @text.gsub!(/\\</)              { "\x07" }
  11.     @text.gsub!(/\\\^/)             { "\x08" }
  12.     @text.gsub!(/\\\\/)             { "\\" }
  13.   end
  14.   
  15.   def fux2(str)
  16.     case str
  17.     when 0..5
  18.       return "小"
  19.     when 6..10
  20.       return "中"
  21.     when 11..15
  22.       return "大"
  23.     when 16..20
  24.       return "巨"
  25.     end
  26.   end
复制代码
于是数组的例子就是
  1.   def convert_special_characters
  2.     @text.gsub!(/\\V\[([0-9]+)\]/i) { fux2($game_variables[$1.to_i]) }
  3.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  4.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  5.     @text.gsub!(/\\G/)              { "\x02" }
  6.     @text.gsub!(/\\\./)             { "\x03" }
  7.     @text.gsub!(/\\\|/)             { "\x04" }
  8.     @text.gsub!(/\\!/)              { "\x05" }
  9.     @text.gsub!(/\\>/)              { "\x06" }
  10.     @text.gsub!(/\\</)              { "\x07" }
  11.     @text.gsub!(/\\\^/)             { "\x08" }
  12.     @text.gsub!(/\\\\/)             { "\\" }
  13.   end
  14.   
  15.   def fux2(str)
  16.     fux2 = [[0,5,"小"],[6,10,"中"],[11,15,"大"],[16,20,"巨"]]
  17.     fux2.each do |i|
  18.       if str >= i[0] && str <= i[1]
  19.         return i[2]
  20.       end
  21.     end
  22.   end
复制代码
注意,以上的方法都没有考虑数值超出范围的情况,不过对于作者,应该不会故意去草畜范围的吧.
作者: 夕阳武士    时间: 2011-1-24 11:19
这里http://rpg.blue/thread-162573-1-3.html冰舞用了使变量带入物品名称。
作者: 黄亦天    时间: 2011-1-24 12:00
本帖最后由 黄亦天 于 2011-1-24 12:15 编辑

回复 一瞬间的幻觉 的帖子

最简单的就是
$game_variables[编号] = "字符"
在对话中输入:\v[编号]时,显示的就是 字符 二字
注意要用半角引号…… 全角引号“”经常被我误用,导致各种错误……

附加三张图片:(有别的东西乱入请无视)
事件内的写法:

对话中的效果:

F9调试窗口里的惨状:


作者: 越前リョーマ    时间: 2011-1-24 13:07
你们不要忽视默认功能啊,文章显示里可以显示角色的名字,比如编号5的名字为小,编号6为大,也可以都是使用同一个,根据情况临时把那个名字改掉……




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