85 lines
3.8 KiB
Plaintext
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);
|
|
}
|
|
}
|
|
}
|
|
}
|