|
// weaponInitialization(this.user); 挂载到 hook_user_inout_game_world 方法
var CUserCharacInfo_get_charac_job = new NativeFunction(ptr(0x80FDF20), 'int', ['pointer'],
{
"abi": "sysv"
});
function weaponInitialization(user) {
var JOB_CONFIG = [
{
jobId: 10, // 职业id缔造者
slot: 10, // 武器槽位
requiredItemId: 106040042, // 当前的武器ID
newValue: 27600 // 新的武器ID
},
{
jobId: 9, // 职业id黑武士
slot: 10, // 武器槽位
requiredItemId: 27600, // 当前的武器ID
newValue: 35001 // 新的武器ID
}
];
var job = CUserCharacInfo_get_charac_job(user);
var config = null;
for (var i = 0; i < JOB_CONFIG.length; i++) {
if (JOB_CONFIG.jobId == job) {
config = JOB_CONFIG;
break;
}
}
if (!config) return;
var inventory = CUserCharacInfo_getCurCharacInvenW(user);
var equipmentSlot = CInventory_GetInvenRef(
inventory,
INVENTORY_TYPE_BODY,
config.slot
);
var currentItemId = Inven_Item_getKey(equipmentSlot);
if (currentItemId !== config.requiredItemId) return;
// 更新装备属性
equipmentSlot.add(2).writeU32(config.newValue);
// 统一发送更新通知
CUser_SendUpdateItemList(user, 1, 3, config.slot);
CUser_SendNotiPacket(user, 1, 2, 3);
} |
|