查看: 2072|回复: 5

[已经解决] 求助关于自定物品价格的问题

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

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

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

×
我想做一个物品随机,价格在原价格基础上正负35%并在对话框里显示出来的脚本,代码如下
[pre lang="ruby" line="1"]item = $data_items[1 + rand(16)]  #获得随机物品
$game_variables[41] = item.name   #随机物品名
$game_variables[42] = item.price  #随机物品价格
$game_variables[43] = item.id     #随机物品ID
$game_variables[45] = $game_party.item_number(item)  #仓库特定物品数量[/pre]

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

说不能转换数值?请问如何修改?

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

发表于 2014-6-12 13:29:40 | 显示全部楼层
本帖最后由 moy 于 2014-6-12 13:31 编辑

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

点评

moy
实际上我只记得楼主问过类似的东西,但我忘记具体准备怎么实现的了所以我就没改……  发表于 2014-6-12 14:07
↓哦,才意识到你要干嘛。  发表于 2014-6-12 13:54
不需要变呀,在身上金币里减去这个数字就好啦,不改价格。  发表于 2014-6-12 13:50
↓可是这样,只是变量变成这个随机数,这个物品价格并没变啊?  发表于 2014-6-12 13:48
我觉得楼主的意思只是这样 $game_variables[44] = (item.price * (1+rand(-35..35)/100)).to_i  发表于 2014-6-12 13:44
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-6-4
回帖
15
 楼主| 发表于 2014-6-12 13:44:11 | 显示全部楼层
本帖最后由 xie7 于 2014-6-12 13:49 编辑
moy 发表于 2014-6-12 13:29
……忽略刚才的话- -不小心看错了


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

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

@moy @喵呜喵5  
回复

使用道具 举报

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

开拓者短篇九导演组冠军

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


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

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

[pre lang="ruby" line="1"]$game_variables[44] = (item.price * (1+(rand(71)-35)/100.0)).to_i[/pre]

点评

moy
都是Ruby1.9的错←A←  发表于 2014-6-12 14:26
都是Ruby1.9的错  发表于 2014-6-12 14:17
在Ruby2.0.0之后,rand可以接受range为参数  发表于 2014-6-12 14:17
因为一直用int所以看到你的回复还在想“咦rand居然可以这么用学习了”,然后看到楼主的回复……_(:зゝ∠)_  发表于 2014-6-12 14:16
moy
- -|||因为一直就是用int所以我完全没想过去翻rand的定义,看到的时候还在想(咦,还能这么用吗(然后还是没去看囧。  发表于 2014-6-12 14:11

评分

参与人数 2星屑 +124 收起 理由
taroxd + 100 认可答案
moy + 24 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-6-4
回帖
15
 楼主| 发表于 2014-6-12 14:44:31 | 显示全部楼层
多谢大神们的指导~~此帖已结
回复

使用道具 举报

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

开拓者短篇九导演组冠军

发表于 2014-6-12 14:53:29 | 显示全部楼层
@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
复制代码

评分

参与人数 1星屑 +60 收起 理由
moy + 60 其实我不大用range233

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部