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

Project1

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

[有事请教] 有没有办法让物品买得越多越贵

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1861
在线时间
121 小时
注册时间
2019-11-28
帖子
2
跳转到指定楼层
1
发表于 2020-7-31 15:14:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
比如一个力量药水第一次买50,第二次买100,第三次买200……以此类推,有办法实现吗?要不然这种强化物品太贵的话不划算,太便宜的话靠这个堆属性会破坏游戏性。

Lv3.寻梦者

梦石
0
星屑
1861
在线时间
121 小时
注册时间
2019-11-28
帖子
2
5
 楼主| 发表于 2020-7-31 20:23:03 | 只看该作者
芯☆淡茹水 发表于 2020-7-31 18:59
以前 pia 过一个差不多的功能,构思很简单,以为没人会用这样的。

这个插件估计有 大改过商店界面 的不适 ...

谢谢,我试一下
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33621
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2020-7-31 18:59:19 | 只看该作者
以前 pia 过一个差不多的功能,构思很简单,以为没人会用这样的。

这个插件估计有 大改过商店界面 的不适用,可能无法记录到购买的个数或无法设置物品当前价格。

JAVASCRIPT 代码复制
  1. //=================================================================================================
  2. // ItemPrice.js
  3. //=================================================================================================
  4. /*:
  5. * @plugindesc 物品价格自定义计算。
  6. * @author 芯☆淡茹水
  7. * @help
  8. *
  9. * 1, 插件命令: 清除所有记录的物品购买个数 => ClearPurchasedNum
  10. *
  11. * 2, 算式变量简写: item => 当前物品。
  12. *                  p => 该物品数据库设置的价格。
  13. *                  n => 该物品总计购买的个数。
  14. *                  v => 游戏变量。(写法为 v[n] 的方式)
  15. *
  16. * 3,可在物品备注里单独给这个物品写算式计算其价格,格式为:
  17. *    <PriceFormula>
  18. *    算式 ...
  19. *    .
  20. *    .
  21. *    .
  22. *    </PriceFormula>
  23. *
  24. *
  25. * @param formula0
  26. * @text 道具价格算式。
  27. * @desc 道具价格算式。(p :数据库设置的初始价格; n :购买次数; v :游戏变量)
  28. * @default p + n * 50
  29. *
  30. * @param formula1
  31. * @text 武器价格算式。
  32. * @desc 武器价格算式。(p :数据库设置的初始价格; n :购买次数; v :游戏变量)
  33. * @default
  34. *
  35. * @param formula2
  36. * @text 防具价格算式。
  37. * @desc 防具价格算式。(p :数据库设置的初始价格; n :购买次数; v :游戏变量)
  38. * @default
  39. */
  40. //=================================================================================================
  41. ;var XdRsData = XdRsData || {};
  42. XdRsData.ip = XdRsData.ip || {};
  43. XdRsData.ip.param = PluginManager.parameters('XdRs_ItemPrice');
  44. //=================================================================================================
  45. XdRsData.ip.setupItemPrice = function(item) {
  46.     if (!this.isGameItem(item)) return;
  47.     var type = this.getItemType(item);
  48.     var formula = this.getItemNoteFormula(item) || this.param['formula'+type];
  49.     if (formula) {
  50.         if (!item.basePrice) item.basePrice = item.price;
  51.         var p = item.basePrice;
  52.         var n = $gameSystem.purchasedNum(item);
  53.         var v = $gameVariables._data;
  54.         try {item.price = eval(formula);}
  55.         catch(e) {
  56.             item.price = p;
  57.             var typeName = ['道具','武器','防具'][type];
  58.             var msg = typeName+'价格算式书写错误! ' + typeName + 'id: '+item.id;
  59.             console.error(msg);
  60.         }
  61.     }
  62. };
  63. XdRsData.ip.isGameItem = function(item) {
  64.     return DataManager.isItem(item) ||
  65.     DataManager.isWeapon(item) ||
  66.     DataManager.isArmor(item);
  67. };
  68. XdRsData.ip.getItemType = function(item) {
  69.     if (DataManager.isItem(item))   return 0;
  70.     if (DataManager.isWeapon(item)) return 1;
  71.     if (DataManager.isArmor(item))  return 2;
  72.     return null;
  73. };
  74. XdRsData.ip.getItemNoteFormula = function(item) {
  75.     if (!this.isGameItem(item) || !(/<PriceFormula>/.test(item.note))) return null;
  76.     return item.note.match(/<PriceFormula>([\S\s]*)<\/PriceFormula>/) ? RegExp.$1 : null;
  77. };
  78. //=================================================================================================
  79. XdRsData.ip.Game_System_initialize = Game_System.prototype.initialize;
  80. Game_System.prototype.initialize = function() {
  81.     XdRsData.ip.Game_System_initialize.call(this);
  82.     this.clearPurchasedNum();
  83. };
  84. Game_System.prototype.clearPurchasedNum = function() {
  85.     this._purchasedNumData = [[],[],[]];
  86. };
  87. Game_System.prototype.purchasedNum = function(item) {
  88.     var type = XdRsData.ip.getItemType(item);
  89.     return type !== null ? this._purchasedNumData[type][item.id] || 0 : 0;
  90. };
  91. Game_System.prototype.addPurchasedNum = function(item, num) {
  92.     var type = XdRsData.ip.getItemType(item);
  93.     if (type !== null) {
  94.         this._purchasedNumData[type][item.id] = this.purchasedNum(item) + num;
  95.         XdRsData.ip.setupItemPrice(item);
  96.     }
  97. };
  98. //=================================================================================================
  99. XdRsData.ip.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  100. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  101.     XdRsData.ip.Game_Interpreter_pluginCommand.call(this, command, args);
  102.     command === 'ClearPurchasedNum' && $gameSystem.clearPurchasedNum();
  103. };
  104. //=================================================================================================
  105. XdRsData.ip.Scene_Shop_prepare = Scene_Shop.prototype.prepare;
  106. Scene_Shop.prototype.prepare = function(goods, purchaseOnly) {
  107.     XdRsData.ip.Scene_Shop_prepare.call(this, goods, purchaseOnly);
  108.     for (var i=0;i<goods.length;++i) {
  109.         if (goods[i][0] === 0) XdRsData.ip.setupItemPrice($dataItems[goods[i][1]]);
  110.         if (goods[i][0] === 1) XdRsData.ip.setupItemPrice($dataWeapons[goods[i][1]]);
  111.         if (goods[i][0] === 2) XdRsData.ip.setupItemPrice($dataArmors[goods[i][1]]);
  112.     }
  113. };
  114. XdRsData.ip.Scene_Shop_doBuy = Scene_Shop.prototype.doBuy;
  115. Scene_Shop.prototype.doBuy = function(number) {
  116.     XdRsData.ip.Scene_Shop_doBuy.call(this, number);
  117.     $gameSystem.addPurchasedNum(this._item, number);
  118. };
  119. //=================================================================================================
  120. // end
  121. //=================================================================================================


物品价格自定义计算.rar (1.52 KB, 下载次数: 41)

点评

这样算有逻辑上的错误,默认商店买东西,并非是一个一个的买。但可以将就用,或者用作 变量控制物品涨价 等功能。  发表于 2020-7-31 19:27
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 2 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19501
在线时间
2333 小时
注册时间
2015-7-4
帖子
940
3
发表于 2020-7-31 16:36:36 | 只看该作者
这个想法好,应该修改一下商店计算方法就可以了,晚上看看,说不定我的游戏也能用。
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
750
在线时间
133 小时
注册时间
2020-7-18
帖子
75
2
发表于 2020-7-31 15:55:48 | 只看该作者
建一个变量,每买一次+1,然后价格根据变量计算
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 06:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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