Project1
标题: 求插件改进 [打印本页]
作者: chen12311 时间: 2025-2-25 16:40
标题: 求插件改进
本帖最后由 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
代码写的太史了
发现另一个问题,就是双持武器时会发生堆叠报错
-
双持时堆叠错误.png
(6.78 KB, 下载次数: 22)
作者: 魔法丶小肉包 时间: 2025-2-25 16:40
把两段都稍微给你改了一下优化了一下代码,按照原顺序完全覆盖你的那两段,但是你得测试一下看看有没有解决问题,我没有做战斗加状态等相关测试,测试完之后反馈给我
第一段
module NUI
Weapon=/<提升[::] (\d+),(\d+)>/
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|
next unless i.item_param_plus
plus[i.item_param_plus[0]] = i.item_param_plus[1] * 0.01
end
plus
end
def param_rate(param_id)
return super unless @equip_switch || dual_wield?
features_pi(FEATURE_PARAM, param_id) + weapons_param_plus[param_id]
end
end
module NUI
Weapon=/<提升[::] (\d+),(\d+)>/
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|
next unless i.item_param_plus
plus[i.item_param_plus[0]] = i.item_param_plus[1] * 0.01
end
plus
end
def param_rate(param_id)
return super unless @equip_switch || dual_wield?
features_pi(FEATURE_PARAM, param_id) + weapons_param_plus[param_id]
end
end
第二段
class Game_BattlerBase
attr_accessor :equip_switch
end
class Game_Actor
alias equip_slots_change equip_slots
def equip_slots
return equip_slots_change unless @equip_switch
return [0,1,2,3,4,4,4,4] if dual_wield?
return [0,0,2,3,4,4,4,4]#装备槽
end
end
class Window_Selectable
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
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
@actor.equip_switch = !@actor.equip_switch
@actor.change_equip(1, nil)
@slot_window.refresh
@item_window.refresh
@status_window.refresh
end
end
class Game_BattlerBase
attr_accessor :equip_switch
end
class Game_Actor
alias equip_slots_change equip_slots
def equip_slots
return equip_slots_change unless @equip_switch
return [0,1,2,3,4,4,4,4] if dual_wield?
return [0,0,2,3,4,4,4,4]#装备槽
end
end
class Window_Selectable
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
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
@actor.equip_switch = !@actor.equip_switch
@actor.change_equip(1, nil)
@slot_window.refresh
@item_window.refresh
@status_window.refresh
end
end
作者: chen12311 时间: 2025-2-26 15:01
战斗测试过程中,原本双持武器的演员用ctrl键转为单手时数值并没有降低回原来的数值,其他的都没有问题了
作者: 间桐樱 时间: 2025-2-26 15:07
帮不了忙,但咱觉得双持加攻击伤害,不如加一次攻击次数,毕竟双持等于两次攻击
作者: chen12311 时间: 2025-2-26 15:20
我稍微修改过后没问题了,感谢大佬帮忙优化的代码,没想到还有这种方式
- module NUI
- Weapon=/<提升[::] (\d+),(\d+)>/
- 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|
- next unless i.item_param_plus
- plus[i.item_param_plus[0]] = i.item_param_plus[1] * 0.01
- end
- plus
- end
- def param_rate(param_id)
- return super unless (@equip_switch && !dual_wield?) || (!@equip_switch && dual_wield?)
- features_pi(FEATURE_PARAM, param_id) + weapons_param_plus[param_id]
- end
- end
复制代码
作者: 间桐樱 时间: 2025-2-28 10:47
本帖最后由 间桐樱 于 2025-3-1 12:43 编辑
没事了大佬,我也在用这个切换武器的脚本,原本想知道双持怎么能追加一次攻击伤害,跟双持反手攻击的动画统一一下,结果刚反应过来是共用一个atk
作者: soulsaga 时间: 2025-2-28 23:05
双持攻击力UP了然后你要打两次..你真的知道双持什么意思吗?
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |