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

Project1

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

[有事请教] 求插件改进

[复制链接]

Lv2.观梦者

梦石
0
星屑
283
在线时间
79 小时
注册时间
2024-4-13
帖子
27
跳转到指定楼层
1
发表于 2025-2-25 16:40:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
50星屑
本帖最后由 chen12311 于 2025-2-26 14:31 编辑

是这样的,想做出双持武器时攻击力提升50%
然后出现了下面的情况

这是双持武器的情况

这是单手拿武器的情况
但是发现战斗时使用强化技能给自己会出现下面的情况(脱武器时的数值为17,脱武器吃了强化技能的数值为34)

这是吃了强化技能脱下武器时单手的情况

这是吃了强化技能脱下武器时双持的情况(实际上数值是正常的更上图一样但是显示是比上面低)
一时之间不知道怎么办,请大佬指点
RUBY 代码复制
  1. module NUI
  2.   Weapon=/<提升[::] (\d+),(\d+)>/
  3. end
  4. class Game_Actor < Game_Battler
  5.   alias param_change param
  6.   def param(param_id)
  7.     value = param_base(param_id) + param_plus(param_id)
  8.     if !dual_wield? && @equip_switch
  9.       if !pan
  10.         value *= param_rate(param_id) * param_buff_rate(param_id)
  11.       else
  12.         weapons.each do |i|
  13.           if i.note =~NUI::Weapon
  14.             if param_id==$1.to_i
  15.               value *= (param_rate(param_id)+($2.to_i*0.01)) * param_buff_rate(param_id)
  16.             end
  17.           else
  18.             value *= param_rate(param_id) * param_buff_rate(param_id)
  19.           end
  20.         end
  21.       end
  22.     elsif dual_wield? && !@equip_switch
  23.       if !pan
  24.         value *= param_rate(param_id) * param_buff_rate(param_id)
  25.       else
  26.         weapons.each do |i|
  27.           if i.note =~NUI::Weapon
  28.             if param_id==$1.to_i
  29.               value *= (param_rate(param_id)+($2.to_i*0.01)) * param_buff_rate(param_id)
  30.             end
  31.           else
  32.             value *= param_rate(param_id) * param_buff_rate(param_id)
  33.           end
  34.         end
  35.       end
  36.     else
  37.       value *= param_rate(param_id) * param_buff_rate(param_id)
  38.     end
  39.     [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  40.   end
  41.   def pan
  42.     $game_party.battle_members.each do |num|
  43.       if num.equips[0]== nil
  44.         return false
  45.       end
  46.     end
  47.     return true
  48.   end
  49. end

这是另一个
RUBY 代码复制
  1. class Game_BattlerBase
  2.   attr_accessor :equip_switch
  3.   def switch
  4.     @equip_switch
  5.   end
  6.   def switch_open
  7.     @equip_switch=true
  8.   end
  9.   def switch_closs
  10.     @equip_switch=false
  11.   end
  12. end
  13. class Game_Actor < Game_Battler
  14.  
  15.   #--------------------------------------------------------------------------
  16.   # ● 获取装备栏的数组
  17.   #--------------------------------------------------------------------------
  18.  
  19.   alias equip_slots_change equip_slots
  20.   def equip_slots
  21.     if switch
  22.       return [0,1,2,3,4,4,4,4] if dual_wield?
  23.       return [0,0,2,3,4,4,4,4]#装备槽
  24.     end
  25.     equip_slots_change
  26.   end
  27. end
  28.  
  29. class Window_Selectable < Window_Base
  30.   alias process_handling_change process_handling
  31.   def process_handling
  32.     process_handling_change
  33.     return process_change   if handle?(:change)   && Input.trigger?(:CTRL)
  34.   end
  35.  
  36.   def process_change
  37.     Audio.se_play("Audio/SE/Equip1", 90, 100)
  38.     Input.update
  39.     activate
  40.     call_handler(:change)
  41.   end
  42. end
  43. class Scene_Equip < Scene_MenuBase
  44.   alias create_slot_window_equip_change create_slot_window
  45.   def create_slot_window
  46.     create_slot_window_equip_change
  47.     @slot_window.set_handler(:change, method(:on_item_change))
  48.   end
  49.   def on_item_change
  50.     if !@actor.switch
  51.       @actor.switch_open
  52.       @actor.change_equip(1, nil)
  53.     elsif @actor.switch
  54.       @actor.switch_closs
  55.       @actor.change_equip(1, nil)
  56.     end
  57.     @slot_window.refresh
  58.     @item_window.refresh
  59.     @status_window.refresh
  60.   end
  61. end

代码写的太史了
发现另一个问题,就是双持武器时会发生堆叠报错

双持时堆叠错误.png (6.78 KB, 下载次数: 2)

双持时堆叠错误.png

最佳答案

查看完整内容

把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决问题,我没有做战斗加状态等相关测试,测试完之后反馈给我 第一段 module NUI Weapon=// end class RPG::EquipItem def item_param_plus @note =~ NUI::Weapon ? [$1.to_i,$2.to_i] : nil end end class Game_Actor < Game_Battler def weapons_param_plus plus = Hash.new(0) weapons.each do |i| ...

Lv4.逐梦者

梦石
0
星屑
6065
在线时间
1439 小时
注册时间
2015-7-25
帖子
611

极短25参与开拓者

2
发表于 2025-2-25 16:40:26 | 只看该作者
把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决问题,我没有做战斗加状态等相关测试,测试完之后反馈给我
第一段
RUBY 代码复制
  1. module NUI
  2.   Weapon=/<提升[::] (\d+),(\d+)>/
  3. end
  4. class RPG::EquipItem
  5.   def item_param_plus
  6.     @note =~ NUI::Weapon ? [$1.to_i,$2.to_i] : nil
  7.   end
  8. end
  9. class Game_Actor < Game_Battler
  10.   def weapons_param_plus
  11.     plus = Hash.new(0)
  12.     weapons.each do |i|
  13.       next unless i.item_param_plus
  14.       plus[i.item_param_plus[0]] = i.item_param_plus[1] * 0.01
  15.     end
  16.     plus
  17.   end
  18.   def param_rate(param_id)
  19.     return super unless @equip_switch || dual_wield?
  20.     features_pi(FEATURE_PARAM, param_id) + weapons_param_plus[param_id]
  21.   end
  22. end

第二段
RUBY 代码复制
  1. class Game_BattlerBase
  2.   attr_accessor :equip_switch
  3. end
  4. class Game_Actor
  5.   alias equip_slots_change equip_slots
  6.   def equip_slots
  7.     return equip_slots_change unless @equip_switch
  8.     return [0,1,2,3,4,4,4,4] if dual_wield?
  9.     return [0,0,2,3,4,4,4,4]#装备槽
  10.   end
  11. end
  12. class Window_Selectable
  13.   alias process_handling_change process_handling
  14.   def process_handling
  15.     process_handling_change
  16.     return process_change if handle?(:change) && Input.trigger?(:CTRL)
  17.   end
  18.   def process_change
  19.     Audio.se_play("Audio/SE/Equip1", 90, 100)
  20.     Input.update
  21.     activate
  22.     call_handler(:change)
  23.   end
  24. end
  25. class Scene_Equip
  26.   alias create_slot_window_equip_change create_slot_window
  27.   def create_slot_window
  28.     create_slot_window_equip_change
  29.     @slot_window.set_handler(:change, method(:on_item_change))
  30.   end
  31.   def on_item_change
  32.     @actor.equip_switch = !@actor.equip_switch
  33.     @actor.change_equip(1, nil)
  34.     @slot_window.refresh
  35.     @item_window.refresh
  36.     @status_window.refresh
  37.   end
  38. end
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.31 (但文件尚未上传,请稍等...
同时更新中~
这是属于笨肉包一个人的旅行~(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
旅途的最终目标~ ???(保密~
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
283
在线时间
79 小时
注册时间
2024-4-13
帖子
27
3
 楼主| 发表于 2025-2-26 15:01:48 | 只看该作者
魔法丶小肉包 发表于 2025-2-26 14:41
把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决 ...

战斗测试过程中,原本双持武器的演员用ctrl键转为单手时数值并没有降低回原来的数值,其他的都没有问题了

点评

把战斗中切换的相关脚本发上来  发表于 2025-2-26 15:13
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1772
在线时间
100 小时
注册时间
2017-9-5
帖子
176
4
发表于 2025-2-26 15:07:05 | 只看该作者
帮不了忙,但咱觉得双持加攻击伤害,不如加一次攻击次数,毕竟双持等于两次攻击
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
283
在线时间
79 小时
注册时间
2024-4-13
帖子
27
5
 楼主| 发表于 2025-2-26 15:20:31 | 只看该作者
我稍微修改过后没问题了,感谢大佬帮忙优化的代码,没想到还有这种方式
  1. module NUI
  2.   Weapon=/<提升[::] (\d+),(\d+)>/
  3. end
  4. class RPG::EquipItem
  5.   def item_param_plus
  6.     @note =~ NUI::Weapon ? [$1.to_i,$2.to_i] : nil
  7.   end
  8. end
  9. class Game_Actor < Game_Battler
  10.   def weapons_param_plus
  11.     plus = Hash.new(0)
  12.     weapons.each do |i|
  13.       next unless i.item_param_plus
  14.       plus[i.item_param_plus[0]] = i.item_param_plus[1] * 0.01
  15.     end
  16.     plus
  17.   end
  18.   def param_rate(param_id)
  19.     return super unless (@equip_switch && !dual_wield?) || (!@equip_switch && dual_wield?)
  20.     features_pi(FEATURE_PARAM, param_id) + weapons_param_plus[param_id]
  21.   end
  22. end
复制代码
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1772
在线时间
100 小时
注册时间
2017-9-5
帖子
176
6
发表于 2025-2-28 10:47:20 | 只看该作者
本帖最后由 间桐樱 于 2025-3-1 12:43 编辑
魔法丶小肉包 发表于 2025-2-25 16:40
把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决 ...


没事了大佬,我也在用这个切换武器的脚本,原本想知道双持怎么能追加一次攻击伤害,跟双持反手攻击的动画统一一下,结果刚反应过来是共用一个atk
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36196
在线时间
10725 小时
注册时间
2009-3-15
帖子
4826
7
发表于 2025-2-28 23:05:28 | 只看该作者
间桐樱 发表于 2025-2-28 10:47
肉包佬,能不能赐我一个双持武器下攻击次数+1脚本呀,我也用了这个切换武器的脚本,只不过被我改成限定只 ...

双持攻击力UP了然后你要打两次..你真的知道双持什么意思吗?

点评

啊......伤害是共用一个atk的,算了,还是不改了  发表于 2025-3-1 12:17
主副武器各打一次,不是更难了吗  发表于 2025-3-1 11:57
人傻,没反应过来,之前就想着两把同样的武器了  发表于 2025-3-1 11:56
当然..你要说我双持了速度爆炸的提高能打两下也不是不可以  发表于 2025-3-1 11:43
不是..你装了两把武器就有两把武器的攻击力了...理讹冮来说应该是算主手的武器攻击打一下再算副手武器的攻击打一下  发表于 2025-3-1 11:42
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-2 05:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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