function smithing(user, level) {
var inven = CUserCharacInfo_getCurCharacInvenW(user);
var equ = CInventory_GetInvenRef(inven, INVENTORY_TYPE_ITEM, 9);
var itemId = Inven_Item_getKey(equ)
var itemData = CDataManager_find_item(G_CDataManager(), itemId);
var equ_type = itemData.add(141 * 4).readU32();
var characName = api_CUserCharacInfo_getCurCharacName(user);
var equipmentName = api_CItem_GetItemName(itemId);
if (Inven_Item_getKey(equ)) {
if (equ_type == 10) {
var upgrade_level = equ.add(51).readU8();
if (upgrade_level == 7) {
api_CUser_SendNotiPacketMessage(user, "锻造失败:该武器的锻造等级已经为最大限制!", 0);
return;
} else {
equ.add(51).writeU8(level);
CUser_SendUpdateItemList(user, 1, 0, 9);
successTag = true;
console.log("success!!!")
api_CUser_SendNotiPacketMessage(user, "恭喜玩家:" + [characName] + "武器:" + [equipmentName] + "锻7成功!", 0);
return;
}
} else {
api_CUser_SendNotiPacketMessage(user, "锻造失败:该装备不是武器!", 0);
return;
}
}
}
函数首先获取玩家的物品栏信息(inven),然后获取第9个物品栏中的装备(equ)。然后使用该装备的itemId查找物品数据(itemData),并从中获取装备类型(equ_type)。
如果获取到的装备不为空(Inven_Item_getKey(equ)),则判断该装备是否为武器(装备类型为10)。如果是武器,并且它的锻造等级已经达到最高级别(7),则无法进行锻造;否则将其锻造等级修改为7,并发送更新物品栏的请求。
最后,成功进行锻造后会将successTag值设置为true,并向玩家发送”锻造成功“的提醒消息;若出现了错误,则向玩家发送相应的错误提醒消息。其实跟跨界石原理差不多,在pvf中构建一个道具,对应上编号即可,此代码还可进行优化,可以自行研究下!!!!