| 赞 | 2 |
| VIP | |
| 好人卡 | |
| 积分 | 7 |
| 经验 | |
| 最后登录 | 2026-8-21 |
| 在线时间 | 124 小时 |
- 梦石
- 0
- 星屑
- 719
- 在线时间
- 124 小时
- 注册时间
- 2024-4-13
- 回帖
- 25
|
悬赏50星屑已解决
本帖最后由 chen12311 于 2025-2-26 14:31 编辑
是这样的,想做出双持武器时攻击力提升50%
然后出现了下面的情况
这是双持武器的情况
这是单手拿武器的情况
但是发现战斗时使用强化技能给自己会出现下面的情况(脱武器时的数值为17,脱武器吃了强化技能的数值为34)
这是吃了强化技能脱下武器时单手的情况
这是吃了强化技能脱下武器时双持的情况(实际上数值是正常的更上图一样但是显示是比上面低)
一时之间不知道怎么办,请大佬指点
[pre lang="ruby" line="1"]module NUI
Weapon=/<提升[::] (\d+),(\d+)>/
end
class Game_Actor < Game_Battler
alias param_change param
def param(param_id)
value = param_base(param_id) + param_plus(param_id)
if !dual_wield? && @equip_switch
if !pan
value *= param_rate(param_id) * param_buff_rate(param_id)
else
weapons.each do |i|
if i.note =~NUI::Weapon
if param_id==$1.to_i
value *= (param_rate(param_id)+($2.to_i*0.01)) * param_buff_rate(param_id)
end
else
value *= param_rate(param_id) * param_buff_rate(param_id)
end
end
end
elsif dual_wield? && !@equip_switch
if !pan
value *= param_rate(param_id) * param_buff_rate(param_id)
else
weapons.each do |i|
if i.note =~NUI::Weapon
if param_id==$1.to_i
value *= (param_rate(param_id)+($2.to_i*0.01)) * param_buff_rate(param_id)
end
else
value *= param_rate(param_id) * param_buff_rate(param_id)
end
end
end
else
value *= param_rate(param_id) * param_buff_rate(param_id)
end
[[value, param_max(param_id)].min, param_min(param_id)].max.to_i
end
def pan
$game_party.battle_members.each do |num|
if num.equips[0]== nil
return false
end
end
return true
end
end[/pre]
这是另一个
[pre lang="ruby" line="1"]class Game_BattlerBase
attr_accessor :equip_switch
def switch
@equip_switch
end
def switch_open
@equip_switch=true
end
def switch_closs
@equip_switch=false
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 获取装备栏的数组
#--------------------------------------------------------------------------
alias equip_slots_change equip_slots
def equip_slots
if switch
return [0,1,2,3,4,4,4,4] if dual_wield?
return [0,0,2,3,4,4,4,4]#装备槽
end
equip_slots_change
end
end
class Window_Selectable < Window_Base
alias process_handling_change process_handling
def process_handling
process_handling_change
return process_change if handle?(:change) && Input.trigger?(:CTRL)
end
def process_change
Audio.se_play("Audio/SE/Equip1", 90, 100)
Input.update
activate
call_handler(:change)
end
end
class Scene_Equip < Scene_MenuBase
alias create_slot_window_equip_change create_slot_window
def create_slot_window
create_slot_window_equip_change
@slot_window.set_handler(:change, method(:on_item_change))
end
def on_item_change
if !@actor.switch
@actor.switch_open
@actor.change_equip(1, nil)
elsif @actor.switch
@actor.switch_closs
@actor.change_equip(1, nil)
end
@slot_window.refresh
@item_window.refresh
@status_window.refresh
end
end[/pre]
代码写的太史了
发现另一个问题,就是双持武器时会发生堆叠报错 |
-
最佳答案
查看完整内容
把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决问题,我没有做战斗加状态等相关测试,测试完之后反馈给我
第一段
[pre lang="ruby"]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)
weapo ...
|