DP-S_Script/OfficialProject/宠物附魔/宠物附魔.nut

85 lines
3.8 KiB
Plaintext

function _Dps_UpdateCreatureEnchantMysql_(card_id, charac_no, uuid) {
local sql = "select card from `taiwan_cain_2nd`.`creature_items_enchant` where ui_id = " + uuid + ";";
local column_type_list = ["int"];
local SqlObj = MysqlPool.GetInstance().GetConnect();
local result = SqlObj.Select(sql, column_type_list);
local UpdateSql = "update `taiwan_cain_2nd`.`creature_items_enchant` set `card` = " + card_id + " where `ui_id` = " + uuid + ";";
if (result.len() <= 0 || result[0].len() <= 0) {
UpdateSql = "INSERT INTO `taiwan_cain_2nd`.`creature_items_enchant`(`ui_id`, `charac_no`, `card`) VALUES (" + uuid + "," + charac_no + "," + card_id + ");";
}
SqlObj.Exec_Sql(UpdateSql);
MysqlPool.GetInstance().PutConnect(SqlObj);
}
function _Dps_GetCreatureEnchantMysql_(charac_no) {
local sql = "select ui_id,card from `taiwan_cain_2nd`.`creature_items_enchant` where charac_no = " + charac_no + ";";
local column_type_list = ["int", "int"];
local SqlObj = MysqlPool.GetInstance().GetConnect();
local result = SqlObj.Select(sql, column_type_list);
MysqlPool.GetInstance().PutConnect(SqlObj);
return result;
}
function _Dps_PetEnchantment_Main_() {
//初始建表指令
local CreateSql = "CREATE TABLE `taiwan_cain_2nd`.`creature_items_enchant` (`ui_id` int(11) NOT NULL DEFAULT '0',`charac_no` int(11) DEFAULT NULL,`card` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`ui_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
local SqlObj = MysqlPool.GetInstance().GetConnect();
SqlObj.Exec_Sql(CreateSql);
MysqlPool.GetInstance().PutConnect(SqlObj);
//忽略宠物附魔错误
Sq_WriteByteArr(S_Ptr("0x850dede"), array(2, 0x90));
Cb_ExpertOnEnchantByBead_Leave_Func["宠物附魔"] <- function(args) {
if (args[5] > 56) {
local SUser = User(args[1]);
local InvenObj = SUser.GetInven();
local Bead_id = InvenObj.GetSlot(1, args[3]).GetIndex()
local PvfItemObj = PvfItem.GetPvfItemById(InvenObj.GetSlot(1, args[3]).GetIndex())
local Card_Id = Sq_CallFunc(S_Ptr("0x0849F530"), "int", ["pointer"], PvfItemObj.C_Object);
local a7 = args[5] - 57;
local ItemObj = InvenObj.GetSlot(3, a7)
local Item_Id = ItemObj.GetIndex();
NativePointer(ItemObj.C_Object).add(13).writeU32(Card_Id);
if (a7< 140) {
local uuid = NativePointer(ItemObj.C_Object).add(7).readInt();
_Dps_UpdateCreatureEnchantMysql_(Card_Id, SUser.GetCID(), uuid);
}
local Pack = Packet();
Pack.Put_Header(1, 275);
Pack.Put_Byte(1);
Pack.Finalize(true);
SUser.Send(Pack);
Pack.Delete();
SUser.SendUpdateItemList(1, 7, a7);
InvenObj.DeleteItemCount(Bead_id, 1);
SUser.SendUpdateItemList(1, 0, args[3]);
return 0;
}
}
Cb_reach_game_world_Func["宠物附魔"] <- function(SUser) {
local Data = _Dps_GetCreatureEnchantMysql_(SUser.GetCID());
local DMap = {};
foreach(data_obj in Data) {
local uuid = data_obj[0];
local card_id = data_obj[1];
DMap.rawset(uuid, card_id);
}
local InvenObj = SUser.GetInven();
for (local i = 0; i< 141; i++) {
local equ;
if (i == 140) {
equ = InvenObj.GetSlot(0, 22); //获取当前格子的宠物
} else {
equ = InvenObj.GetSlot(3, i);
}
local equ_uuid = NativePointer(equ.C_Object).add(7).readInt();
if (DMap.rawin(equ_uuid)) {
NativePointer(equ.C_Object).add(13).writeU32(DMap[equ_uuid]);
if (i == 140) SUser.SendUpdateItemList(1, 0, 22);
else SUser.SendUpdateItemList(1, 7, i);
}
}
}
}