我跟着导入文件给瞎子普攻添加剑气,我测试了下无效,然后发现有个nut文件虽然成功加载了,但是里面的函数并不会被触发执行,希望有大佬解惑。
这是swordman_load_state.nut里面的代码:
// 1.壓入鬼劍士攻擊狀態nut的Hook文件
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/attack.nut", "swordmanAttack", 8, -1);
这是这个nut里面的代码:
// 1.壓入鬼劍士攻擊狀態nut的Hook文件
printp("\nyaru");
function onSetState_swordmanAttack(obj, state, datas, isResetTimer) {
printp("\nonSetState_swordmanAttack");
if (!obj) return;
}
function onAfterSetState_swordmanAttack(obj, state, datas, isResetTimer) {
printp("\nonAfterSetState_swordmanAttack");
if (!obj) return;
// 這里獲取state?以及substate?,儲存到全局變量中
local _RxS8qXkVJS2rEYWZj2fu1 = obj.sq_GetVectorData(datas, 0);
local K_0MF3eLe5Urn = obj.sq_GetVectorData(datas, 1);
obj.getVar().clear_vector();
obj.getVar().push_vector(_RxS8qXkVJS2rEYWZj2fu1);
obj.getVar().push_vector(K_0MF3eLe5Urn);
// 設置【波動刻印】相關的數據
wavemark_swordmanAttack(obj, state, datas, isResetTimer);
}
function wavemark_swordmanAttack(obj, state, datas, isResetTimer) {
if (!obj) return;
// 判斷,如果沒有掛載上相應的apd 將不予執行后續代碼
if (!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/swordman/appendage/ap_wavemark.nut")) return;
// 這個其實是攻擊次數,是subState?
local datas_0 = obj.sq_GetVectorData(datas, 0);
if (obj.sq_IsMyControlObject()) {
// 傳參準備 給24370靜態obj傳輸相關數據,從機制上有點類似通知設計模式
local damage = obj.sq_GetBonusRateWithPassive(47, 8, 3 + datas_0, 1.0);
sq_BinaryStartWrite();
// 傳參攻擊次數,用于控制劍氣動?索引
sq_BinaryWriteDword(datas_0);
// 傳參攻擊傷害數據 源自于skl
sq_BinaryWriteDword(damage);
// 發送通知 生成靜態obj,依賴靜態obj來控制特效效果
sq_SendCreatePassiveObjectPacket(obj, 24371, 0, 0, 0, 0, obj.getDirection());
}
}
这是swordman_load_state.nut里面的代码:
// 1.壓入鬼劍士攻擊狀態nut的Hook文件
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/attack.nut", "swordmanAttack", 8, -1);
这是这个nut里面的代码:
// 1.壓入鬼劍士攻擊狀態nut的Hook文件
printp("\nyaru");
function onSetState_swordmanAttack(obj, state, datas, isResetTimer) {
printp("\nonSetState_swordmanAttack");
if (!obj) return;
}
function onAfterSetState_swordmanAttack(obj, state, datas, isResetTimer) {
printp("\nonAfterSetState_swordmanAttack");
if (!obj) return;
// 這里獲取state?以及substate?,儲存到全局變量中
local _RxS8qXkVJS2rEYWZj2fu1 = obj.sq_GetVectorData(datas, 0);
local K_0MF3eLe5Urn = obj.sq_GetVectorData(datas, 1);
obj.getVar().clear_vector();
obj.getVar().push_vector(_RxS8qXkVJS2rEYWZj2fu1);
obj.getVar().push_vector(K_0MF3eLe5Urn);
// 設置【波動刻印】相關的數據
wavemark_swordmanAttack(obj, state, datas, isResetTimer);
}
function wavemark_swordmanAttack(obj, state, datas, isResetTimer) {
if (!obj) return;
// 判斷,如果沒有掛載上相應的apd 將不予執行后續代碼
if (!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "character/swordman/appendage/ap_wavemark.nut")) return;
// 這個其實是攻擊次數,是subState?
local datas_0 = obj.sq_GetVectorData(datas, 0);
if (obj.sq_IsMyControlObject()) {
// 傳參準備 給24370靜態obj傳輸相關數據,從機制上有點類似通知設計模式
local damage = obj.sq_GetBonusRateWithPassive(47, 8, 3 + datas_0, 1.0);
sq_BinaryStartWrite();
// 傳參攻擊次數,用于控制劍氣動?索引
sq_BinaryWriteDword(datas_0);
// 傳參攻擊傷害數據 源自于skl
sq_BinaryWriteDword(damage);
// 發送通知 生成靜態obj,依賴靜態obj來控制特效效果
sq_SendCreatePassiveObjectPacket(obj, 24371, 0, 0, 0, 0, obj.getDirection());
}
}