设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1703|回复: 5
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-6-4
帖子
20
跳转到指定楼层
1
发表于 2014-6-12 13:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想做一个物品随机,价格在原价格基础上正负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)

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

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 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制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-6-4
帖子
20
3
 楼主| 发表于 2014-6-12 13:44:11 | 只看该作者
本帖最后由 xie7 于 2014-6-12 13:49 编辑
moy 发表于 2014-6-12 13:29
……忽略刚才的话- -不小心看错了


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

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

@moy @喵呜喵5  
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21609
在线时间
9412 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

4
发表于 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 =

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

点评

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 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2014-6-4
帖子
20
5
 楼主| 发表于 2014-6-12 14:44:31 | 只看该作者
多谢大神们的指导~~此帖已结
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21609
在线时间
9412 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

6
发表于 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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-12 20:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表