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); } } } }