Project1

标题: 求助关于自定物品价格的问题 [打印本页]

作者: xie7    时间: 2014-6-12 13:22
标题: 求助关于自定物品价格的问题
我想做一个物品随机,价格在原价格基础上正负35%并在对话框里显示出来的脚本,代码如下
RUBY 代码复制
  1. item = $data_items[1 + rand(16)]  #获得随机物品
  2. $game_variables[41] = item.name   #随机物品名
  3. $game_variables[42] = item.price  #随机物品价格
  4. $game_variables[43] = item.id     #随机物品ID
  5. $game_variables[45] = $game_party.item_number(item)  #仓库特定物品数量


但是加上下面一句就出错了
$game_variables[44] = item.price *= (1+rand(-35..35)/100)

说不能转换数值?请问如何修改?
作者: moy    时间: 2014-6-12 13:29
本帖最后由 moy 于 2014-6-12 13:31 编辑

……忽略刚才的话- -不小心看错了
  1. $game_variables[44] = item.price = (item.price * (1+rand(-35..35)/100)).to_i
复制代码

作者: xie7    时间: 2014-6-12 13:44
本帖最后由 xie7 于 2014-6-12 13:49 编辑
moy 发表于 2014-6-12 13:29
……忽略刚才的话- -不小心看错了


非常感谢,哪里有奇怪呀?
难道这个随机的价格,下次读取还会在这个基础上再随机一次?
呃……那如何用完这次随机在最后还原原价呢?

测试了一下,还是提示typeerror错 不能转换range into integer

@moy @喵呜喵5  
作者: 喵呜喵5    时间: 2014-6-12 13:52
本帖最后由 喵呜喵5 于 2014-6-12 13:54 编辑
xie7 发表于 2014-6-12 13:44
非常感谢,哪里有奇怪呀?
难道这个随机的价格,下次读取还会在这个基础上再随机一次?
呃……那如何用完 ...


取随机数的语句换成 rand(71)-35

然后只是需要变量改变的话,直接
$game_variables[44] = 计算公式就好了,不需要再中间再插入一个item.price =

RUBY 代码复制
  1. $game_variables[44] = (item.price * (1+(rand(71)-35)/100.0)).to_i

作者: xie7    时间: 2014-6-12 14:44
多谢大神们的指导~~此帖已结
作者: 喵呜喵5    时间: 2014-6-12 14:53
@moy 自己动手丰衣足食
  1. class Object
  2.   alias m5_20140612_rand rand
  3.   def rand(max)
  4.     return m5_20140612_rand(max) unless max.is_a?(Range)
  5.     min = [max.last,max.first].min
  6.     range = [max.last,max.first].max - min
  7.     m5_20140612_rand(range + ( max.exclude_end? ? 0 : 1)) + min
  8.   end
  9. end
复制代码





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