本帖最后由 chen12311 于 2025-2-26 14:31 编辑
是这样的,想做出双持武器时攻击力提升50%
然后出现了下面的情况
这是双持武器的情况
这是单手拿武器的情况
但是发现战斗时使用强化技能给自己会出现下面的情况(脱武器时的数值为17,脱武器吃了强化技能的数值为34)
这是吃了强化技能脱下武器时单手的情况
这是吃了强化技能脱下武器时双持的情况(实际上数值是正常的更上图一样但是显示是比上面低)
一时之间不知道怎么办,请大佬指点
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
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
这是另一个
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
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
代码写的太史了
发现另一个问题,就是双持武器时会发生堆叠报错