Project1

标题: 如何给价格加一位小数 [打印本页]

作者: 89444640    时间: 2018-5-18 08:50
标题: 如何给价格加一位小数
本帖最后由 89444640 于 2018-5-20 23:52 编辑

我设定物价时候是05年,一直有个遗留问题没法解决。
最低价格是元,但是,元下面还有角和分,分这个,因为已经通货膨胀成这样了,可以四舍五入舍掉,但是角,还是不能省
虽然是现在通货膨胀的厉害,但是如果物价没有角,最低是元,各种蔬菜几个也是不靠谱了。

买过菜的都知道,05年白菜最便宜时候几分钱,说几角钱已经很贵了。
为了合理考虑还是改一下物价吧,

物价设定时候,还按照RMXP默认的设置就可以,显示售价的时候变成100.0元,售价为0和不可销售的物品售价为0 不要显示为.0或者0.0

我估计会有很多地方要改,而且很可能和sailcat的售价突破上限的脚本有一定的冲突,希望哪位能抽时间帮我改一下,谢谢。

当前使用的脚本如下,直接在下面的工程中整合即可。

售价加小数点.rar (578.46 KB, 下载次数: 155)

自我备份,目前修正好的脚本文件
Scripts.rar (328.25 KB, 下载次数: 129)

作者: 灯笼菜刀王    时间: 2018-5-18 10:25
本帖最后由 灯笼菜刀王 于 2018-5-18 10:42 编辑

你的队友都是日本人(日本妖?),你就把它当日元不就好了.......

--------------------------------

暂时想到,四种做法

1,钱包贬值法,不改动$game_party.gold,让它保持整数数据,就是让单位变成角或者分(贬值10倍or100倍=。=),然后从显示上增加小数点来达到视觉效果。
这种做法优点, 没改变原本的脚本结构,所以基本不会有冲突。
缺点就是,需要预先想好要在哪里显示,然后分别加工小数点出来,所以没考虑仔细很容易出现显示性BUG(比如用变量代入金钱,就要记得除100再来说“元”),同时增加了填数据库的麻烦(通货膨胀了=。=)

2,第二种货币法,和以前流行的“金银铜币”差不多,整个“零钱包”出来放角分币...
优点,新建立的数据,保证不会有冲突
缺点,利用率低下,要用脚本来使用,还要增加个转换的手续(算法),对于像我这样的能免则免星人来说,用这种系统就是自找麻烦.....

3,真实货币制
直接让$game_party.gold 变浮点数,改动一切相关算法
优点,不用重新修改你以前做好的数据库
缺点,各种奇葩问题比肩接踵.... 比如可能会出现 厘,豪 等..., 而且因为整数和浮点数在脚本里是两个分类,所以用“真实数据”的话,可能会有引起不少判定方面的问题,比如 1.0 == 1 这样的判定可是false的~~

4,欺诈法, 游戏里根本不存在角分,只是价格上这样标而已,要么全部都是.00。 要么小数后面的数字随便添,然后结算的时候老板给你抹零=。=
优点,你省事
缺点,我费事
作者: 89444640    时间: 2018-5-18 10:51
本帖最后由 89444640 于 2018-5-18 10:53 编辑
灯笼菜刀王 发表于 2018-5-18 10:25
你的队友都是日本人(妖怪?),你就把它当日元不就好了.......

------------------------------ ...


这个小数点运算方面居然会出麻烦……我以为就是类似于这样写个描述
当售价等于10元时候,显示为1.0
当出售的时候,物价为0的道具显示为0
编程要是能这么编的话,得多爽- -b

方法0,用日元算的话,初期剧情在华夏古国的北境地区,用日元算简直……ZZ上都该给我给扣现行反革命的帽子了。回头拉我出去批斗怎么办……

方法1,最初是本来想用角来算的,但是说起来无比不符合客观规律,您好,您的青铜剑售价是3000角,或者3000毛……太别扭了。
然后就全体增值了,但是牵扯到很便宜的东西就特别不对劲。

方法2多重货币系统不用想,我这一堆冲突,出来时候我就直接放弃了,没人帮我修根本不敢用。即使使用,也会造成严重的道具设置困难。
我的简单解决方法是,让日元那边掉樱花币,5 10 50 100 500几种,正好前几天买的素材有日元硬币,回头道具店,就是sailcat的那个合成脚本,直接交换成人民币,但是汇率问题,10日元等于大约0.57元,按照一元算就亏大了。按照五毛算,有没有0.5这个价格
白头鹰那边掉“刀乐”XD,北伯利亚掉“炉布”

方法3,
全看程序的了……显示分就免了,太不符合目前物价,要是80年代物价还可以。

方法4
所有低于一元的按照一元计价,如果四舍五入好多东西都免费了,提前实现了共产主义…………


看样子……只能继续通货膨胀了……
作者: soulsaga    时间: 2018-5-18 11:39
本帖最后由 soulsaga 于 2018-5-18 11:56 编辑

哪有这么多事...角和分都不用..用冥币就好了..
那些菜至少十元一个..
作者: 灯笼菜刀王    时间: 2018-5-18 11:59
本帖最后由 灯笼菜刀王 于 2018-5-18 15:02 编辑

改了显示钱的窗口和商店窗口,应该没有其他地方有需要显示钱的了吧。

Scripts.rar (327.81 KB, 下载次数: 146)

顺便,战斗后结算把显示的钱也减少10倍(只是显示的结果少了个0,获得不变,可以让你用“元”做单位)

不过这个不知道有没有被覆盖= =,咱改的是默认结果... 貌似下面有一堆“战斗扩展”有改动到它....

作者: fux2    时间: 2018-5-18 13:46
所有价格x10就行了,在商店的描绘部分把价格再to_f/10得到小数画出来就行。
作者: 灯笼菜刀王    时间: 2018-5-18 14:42
其实,最现实的做法应该是

“一根萝卜3毛,3根便宜算你1块钱”

直接打包销售,避免零钱又能提高客单价,多好~
作者: soulsaga    时间: 2018-5-18 14:45
灯笼菜刀王 发表于 2018-5-18 14:42
其实,最现实的做法应该是

“一根萝卜3毛,3根便宜算你1块钱”

你觉得3个3毛和一块钱是接近的么..
作者: 89444640    时间: 2018-5-18 15:22
本帖最后由 89444640 于 2018-5-19 07:24 编辑


谢谢~
这回靠谱多了,调物价去了……
海参什么的售价也靠谱了,海参五十八块二正好能写出来XD
作者: soulsaga    时间: 2018-5-18 20:03
题外话:
XP那个精灵系统脚本...
勉强可以当做你想要的称号装备功能来用..
作者: 89444640    时间: 2018-5-20 15:28
本帖最后由 89444640 于 2018-5-20 16:11 编辑

继续测试,战斗胜利界面,显示出现了问题。

进行计算以后,一位数的字体被压缩了?
战斗时还是得显示小数点后的数字,有的敌人带毛钱
经验值在菜单中获得的正常,但是战斗胜利的界面显示异常。

补充
继续测试得知,当数值大于两位数时候,显示就相对正常了,经验值依旧多了个 .

是不是跟个位数的运算有关?在一位数的时候,由于会显示成0.X,但是程序默认认为这0.X只占用一个阿拉伯数字的宽度,这个需要在运算出个位数的时候用两个阿拉伯字符的宽度来显示,才可以显示完整。
作者: 灯笼菜刀王    时间: 2018-5-20 16:21
89444640 发表于 2018-5-20 15:28
继续测试,战斗胜利界面,显示出现了问题。

进行计算以后,一位数的字体被压缩了?

Scene_Battle 2(改) 这个脚本里, 第179行

@result_window = Window_BattleResult.new(exp, gold/10, treasures)
换成
@result_window = Window_BattleResult.new(exp, gold, treasures)

窗口增强系统核心V1.5 这个脚本里,第3586行
@gold = gold
换成
@gold = gold.to_f / 10


作者: 89444640    时间: 2018-5-20 17:22
灯笼菜刀王 发表于 2018-5-20 16:21
Scene_Battle 2(改) 这个脚本里, 第179行

@result_window = Window_BattleResult.new(exp, gold/10,  ...

目前显示效果……

很幽默…………

作者: 灯笼菜刀王    时间: 2018-5-20 17:44
本帖最后由 灯笼菜刀王 于 2018-5-20 17:46 编辑
89444640 发表于 2018-5-20 17:22
目前显示效果……

很幽默…………


窗口增强系统核心V1.5 这个脚本里,第3586行
@gold = gold
换成
@gold = gold.to_f

然后上面的 改成 @exp = Integer(exp)

应该就可以了= =

咱收回之前说窗口简单的话,用你这个系统的话,咱根本就动不了任何窗口.........
UI还是要自己写才能为所欲为~~
作者: 灯笼菜刀王    时间: 2018-5-20 18:57
你这个伤害公式也不好改啊... 用个最直接的栗子

技能伤害公式是  skill_effect  这个方法里定义的.

然后你试试到你的脚本山里全局搜索下这个词.....  一整页都塞不下= =... 它到底是经历了多少轮回的被反复折腾啊... 阿弥陀佛
作者: 89444640    时间: 2018-5-20 21:23
灯笼菜刀王 发表于 2018-5-20 18:57
你这个伤害公式也不好改啊... 用个最直接的栗子

技能伤害公式是  skill_effect  这个方法里定义 ...

果然是很多,似乎都得留着……能不能让他们就听一个脚本指挥,别分别定义了。

作者: 灯笼菜刀王    时间: 2018-5-20 23:47
补丁: 如果需要战斗后获得钱是0元就不显示的话
把   窗口增强系统核心V1.5  这个脚本 的 3601行
draw_currency_value(@gold, Vocab.gold, 20 + cx, 0, cg)
换成 下面的
draw_currency_value(@gold, Vocab.gold, 20 + cx, 0, cg) if @gold != 0

毕竟,显示获得 0.0元 看起来很傻......
作者: soulsaga    时间: 2018-5-21 10:35
本帖最后由 soulsaga 于 2018-5-21 14:24 编辑

RUBY 代码复制
  1. class Game_Battler
  2. #--------------------------------------------------------------------------
  3.   # ● 特技动作
  4.   #--------------------------------------------------------------------------
  5.   def perform_skill(user, skill)
  6.     # 命中判定
  7.     if judge_skill_hit(user, skill)
  8.       # 计算伤害
  9.       calculate_skill_damage(user, skill)
  10.       power = skill.power + user.atk * skill.atk_f / 100
  11.       if power > 0
  12.         power -= self.pdef * skill.pdef_f / 200
  13.         power -= self.mdef * skill.mdef_f / 200
  14.         power = [power, 0].max
  15.       end
  16.       # 计算倍率
  17.       rate = 20
  18.       rate += (user.str * skill.str_f / 100)
  19.       rate += (user.dex * skill.dex_f / 100)
  20.       rate += (user.agi * skill.agi_f / 100)
  21.       rate += (user.int * skill.int_f / 100)
  22.       # 计算基本伤害
  23.       self.damage = power * rate / 20
  24.       # 属性修正
  25.       self.damage *= elements_correct(skill.element_set)
  26.       self.damage /= 100
  27.       # 伤害符号正确的情况下
  28.       if self.damage > 0
  29.         # 防御修正
  30.         if self.guarding?
  31.           self.damage /= 2
  32.         end
  33.       end
  34.       # 分散
  35.       if skill.variance > 0 and self.damage.abs > 0
  36.         amp = [self.damage.abs * skill.variance / 100, 1].max
  37.         self.damage += rand(amp+1) + rand(amp+1) - amp
  38.       end
  39.       @damage = self.damage
  40.       # 应用击中效果
  41.       apply_hit(user, skill)
  42.     else
  43.       # 应用未击中效果
  44.       apply_miss(user, skill)
  45.     end
  46.   end
  47. end
  48. end


这些应该就是修改伤害公式的地方吧..分得这么散..实在头大..
作者: 89444640    时间: 2018-5-21 16:35
本帖最后由 89444640 于 2018-5-21 16:53 编辑

就是说说而已,我比较想做的是Act+ftg融合,需要实际测试才能知道效果,明显做不出来,就算弄得出来,就算素材够用,就算有程序给写,后期的调节也得调死我。
队友全了的情况下,四人战,
普通rpg模式同默认模式
联合攻击模式,只能一回合选择一个角色进攻其他角色为辅助,
选择主攻队员,自己手动操作,队友支援技能自己设,攻击上中下三段,逆向,破防,击飞,指令投,从平砍连起,平砍4连+杀技 队友援助攻击攻击类型如果敌人抵抗高断连,敌人不能抵抗,+必杀技 队友援护 +必杀技 队友援护 +满足条件超必杀技 满足条件+奥义或者合体奥义。
前面的攻击打单体,后面超必杀技 和秘奥义根绝角色,可攻击全体

敌人可能某几种项属性抵抗高,可能会防御上中下三段的某段起手攻击,如果用抵抗高的必杀技起手会断连遭到反击,这时可以让队友协助补招,但是次回合只能回归普通rpg回合模式

同理敌人,强敌几率发动连击,自己根据敌人习惯手动战防蹲防 ,躲避(躲避指令投),躲避成功或者防御成功,可发动一次反击,反击可连一次角色的其他技能,但是连接技能如果敌人正好抵抗会强制给你把伤害打回来。
退一步,做出来我素材也只能主角的补一下受创勉强够用,其他角色的素材绝对不够用。

补充说明,相当于,平时rpg战斗积累低下的连击槽,连击槽增长速度受到好感度和装备影响,满了可以发动联合攻击对敌人重创,给敌人两次重创,第三次可以连击完成后发动合体奥义,或者直接发动。

根据剧情队友的好感度,战斗中选择的第一次连击队友,决定最后合体奥义的出手队员,剧情好感度没弄够的人不发动,兼顾了支线任务。

此系统命名为
尤莉弄他玛西~ 百合之魂 XD

其实就是个变相怒气槽而已,普通RPG模式足以模式灭杂鱼获取经验和金钱强化角色,联合攻击专灭区域强敌,如果杂鱼100HP,区域强敌就是10000HP。


作者: 灯笼菜刀王    时间: 2018-5-21 18:57
本帖最后由 灯笼菜刀王 于 2018-5-21 19:02 编辑
89444640 发表于 2018-5-21 16:35
就是说说而已,我比较想做的是Act+ftg融合,需要实际测试才能知道效果,明显做不出来,就算弄得出来,就算 ...


其实两种战斗模式并不是好主意, 商业游戏里也鲜少看过有N种战斗系统的吧, 并不是人家想不到,而是纯属吃力不讨好~

不讨论玩家对两种战斗的反应和接受, 就说制作方面的问题.

拿咱来说,咱现在用的战斗系统是ZTBS, 这个系统并没有影响到原本的战斗模式, 等于同时使用两种战斗模式是完全可能的.

实际上 咱原本也是预想, RPG模式的战斗用来作为"竞技场"之类的用途~

不过,实际操作起来发现, 问题很多, 首先是公式问题, 咱为战棋模式设定的公式不能用于普通战斗, 因为有引用了射程, 朝向等事件属性, 所以等于还要另外搞一套公式出来... 等于再调一次平衡,而且还要两头兼顾, 麻烦度不是X2, 而是 ² ........

其次技能也有很多不适合的,移动系的先不提, 兵种对应的地形优势等也不提,  "再动" 这个技能两种模式的做法就完全不同了....如果要区分技能用途什么的, 再来一次 ²

最后UI, 动画什么的这些也是基本要配套~~

所以,咱果断放弃, scene battle 1-4, 删~~


作者: soulsaga    时间: 2018-5-21 21:20
那个异常我辛苦研究总算修好了..消息给你.




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