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

Project1

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

[有事请教] 技能消耗金钱怎么做?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1192
在线时间
146 小时
注册时间
2006-2-12
帖子
231
跳转到指定楼层
1
发表于 2025-2-11 19:00:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,之前用了 XdRs SkillConsumeItms 不过那是消耗物品的,想问下有消耗金钱的嘛?

Lv2.观梦者

梦石
0
星屑
688
在线时间
244 小时
注册时间
2023-3-16
帖子
72
2
发表于 2025-2-11 21:23:32 | 只看该作者
不在乎占个公共事件的话技能绑定一个公共事件,两个技能。第一个技能红包雨,常态挂在角色身上,没有消耗。没有伤害,绑定公共事件红包雨判定。第二个技能红包雨(真)名字和图标跟第一个一样,但不要给角色学,做上想要的伤害或者效果。公共事件红包雨判定先判断金币够不够用,不够直接弹个释放失败的对话框,够的话先给角色学习红包雨(真),强制战斗行动:角色释放红包雨(真),角色遗忘红包雨(真),减少金币。实际用的时候角色释放红包雨-启动公共事件红包雨判定-学会红包雨(真)-释放红包雨(真)-遗忘红包雨(真)-减去消耗的金币。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1192
在线时间
146 小时
注册时间
2006-2-12
帖子
231
3
 楼主| 发表于 2025-2-11 22:56:19 | 只看该作者
4887441 发表于 2025-2-11 21:23
不在乎占个公共事件的话技能绑定一个公共事件,两个技能。第一个技能红包雨,常态挂在角色身上,没有消耗。 ...

最后的办法吧能有个插件是最好的,直接写个插件指令……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
688
在线时间
244 小时
注册时间
2023-3-16
帖子
72
4
发表于 2025-2-12 09:34:35 | 只看该作者
douqunbo 发表于 2025-2-11 22:56
最后的办法吧能有个插件是最好的,直接写个插件指令……

一定想要插件的话专门的插件不知到有没有,不过你可以利用消耗物品插件,做个物品金币,然后用一个并行公共事件让金币数量=金币物品数量,然后再用插件来消耗。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
599
在线时间
58 小时
注册时间
2020-6-1
帖子
1
5
发表于 2025-2-12 14:16:27 | 只看该作者
这个功能很简单,基本上复制粘贴修改一下游戏框架的代码就能实现 现写了一个很简单的示例(没啥优化)
JAVASCRIPT 代码复制下载
  1. //============================================================
  2. //  SkillPayCostGold.js
  3. //============================================================
  4.  
  5. var POG_SPCost = POG_SPCost || {};
  6. POG_SPCost.FUNC = POG_SPCost.FUNC || {};
  7.  
  8. /*:
  9.  * @author Pogt
  10.  * @plugindesc 简单的技能消耗金钱插件
  11.  * @target MZ
  12.  * @help
  13.  * ============================================================================
  14.  *  介绍
  15.  * ============================================================================
  16.  * 该插件可用于指定一个技能消耗特定的金钱,如果金钱不足,将无法使用该技能
  17.  * 在技能的备注栏中加入:<GOLD:1>
  18.  * 代表使用该技能需要消耗1个单位的金钱
  19.  * 显示消耗金钱的数字将会以黄色呈现
  20.  *
  21.  * ============================================================================
  22.  *  修改内容
  23.  * ============================================================================
  24.  * 类Game_BattlerBase:
  25.  *  新增方法:
  26.  *      skillGoldCost
  27.  *  重定义:
  28.  *      canPaySkillCost
  29.  *      paySkillCost
  30.  * 类ColorManager:
  31.  *  新增方法:
  32.  *      GoldCostColor
  33.  * 窗口Window_SkillList:
  34.  *  重定义:
  35.  *      drawSkillCost
  36.  */
  37.  
  38. //  提取注释的内容
  39. function matchcomment(comment){
  40.     // 定义正则表达式来匹配 <GOLD:数字>
  41.     const regex = /<GOLD:(\d+)>/;
  42.     // 使用正则表达式匹配并提取数字
  43.     var match = comment.match(regex);
  44.     if (match && match[1]) {
  45.         var GoldValue = match[1];
  46.         return GoldValue;
  47.     }
  48.     return 0;
  49. }
  50.  
  51. //  获取金钱的消耗量
  52. Game_BattlerBase.prototype.skillGoldCost = function(skill) {
  53.     var id = skill.id;
  54.     var cost = matchcomment($dataSkills[id].note);
  55.     return cost;
  56. };
  57.  
  58. // 重定义:能否支付使用技能的消耗
  59. POG_SPCost.FUNC.GBB_canPaySkillCost = Game_BattlerBase.prototype.canPaySkillCost;
  60. Game_BattlerBase.prototype.canPaySkillCost = function(skill) {
  61.     if(!POG_SPCost.FUNC.GBB_canPaySkillCost.call(this,skill)){
  62.         return false;
  63.     }
  64.     if($gameParty._gold < this.skillGoldCost(skill)){
  65.         return false;
  66.     }
  67.     return true;
  68. }
  69.  
  70. POG_SPCost.FUNC.GBB_paySkillCost = Game_BattlerBase.prototype.paySkillCost;
  71. Game_BattlerBase.prototype.paySkillCost = function(skill) {
  72.     POG_SPCost.FUNC.GBB_paySkillCost.call(this,skill);
  73.     $gameParty.loseGold(this.skillGoldCost(skill));
  74. };
  75.  
  76. //  消耗金钱用的颜色
  77. ColorManager.GoldCostColor = function() {
  78.     return this.textColor(6);
  79. };
  80.  
  81. //  重定义:绘画技能消耗量
  82. POG_SPCost.FUNC.WSL_drawSkillCost = Window_SkillList.prototype.drawSkillCost;
  83. Window_SkillList.prototype.drawSkillCost = function(skill, x, y, width) {
  84.     POG_SPCost.FUNC.WSL_drawSkillCost.call(this,skill, x, y, width);
  85.     if(this._actor.skillGoldCost(skill) > 0){
  86.         this.changeTextColor(ColorManager.GoldCostColor());
  87.         this.drawText(this._actor.skillGoldCost(skill), x - 35, y, width, 'right');
  88.     }
  89. };
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1192
在线时间
146 小时
注册时间
2006-2-12
帖子
231
6
 楼主| 发表于 2025-2-12 16:17:40 | 只看该作者
13851402 发表于 2025-2-12 14:16
这个功能很简单,基本上复制粘贴修改一下游戏框架的代码就能实现 现写了一个很简单的示例(没啥优 ...

谢谢,除了显示消耗金币那里跟VisuMZ的战斗插件有点冲突,其他完美,不过按照你的注释我删掉了显示消耗金币,也不影响~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-20 11:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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