Core/GOs: Update gameobject_template and SMSG_GAMEOBJECT_QUERY_RESPONSE
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_damage_reduction_aura';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(20911,'spell_gen_damage_reduction_aura'), -- Blessing of Sanctuary
|
||||
(25899,'spell_gen_damage_reduction_aura'), -- Greater Blessing of Sanctuary
|
||||
(63944,'spell_gen_damage_reduction_aura'), -- Renewed Hope
|
||||
(50720,'spell_gen_damage_reduction_aura'); -- Vigilance
|
||||
@@ -0,0 +1,9 @@
|
||||
ALTER TABLE `gameobject_template` ADD `data24` INT(10) NOT NULL DEFAULT '0' AFTER `data23`;
|
||||
ALTER TABLE `gameobject_template` ADD `data25` INT(10) NOT NULL DEFAULT '0' AFTER `data24`;
|
||||
ALTER TABLE `gameobject_template` ADD `data26` INT(10) NOT NULL DEFAULT '0' AFTER `data25`;
|
||||
ALTER TABLE `gameobject_template` ADD `data27` INT(10) NOT NULL DEFAULT '0' AFTER `data26`;
|
||||
ALTER TABLE `gameobject_template` ADD `data28` INT(10) NOT NULL DEFAULT '0' AFTER `data27`;
|
||||
ALTER TABLE `gameobject_template` ADD `data29` INT(10) NOT NULL DEFAULT '0' AFTER `data28`;
|
||||
ALTER TABLE `gameobject_template` ADD `data30` INT(10) NOT NULL DEFAULT '0' AFTER `data29`;
|
||||
ALTER TABLE `gameobject_template` ADD `data31` INT(10) NOT NULL DEFAULT '0' AFTER `data30`;
|
||||
ALTER TABLE `gameobject_template` ADD `unkInt32` INT(10) NOT NULL DEFAULT '0' AFTER `data31`; -- Unk size
|
||||
@@ -51,6 +51,7 @@ struct GameObjectTemplate
|
||||
uint32 flags;
|
||||
float size;
|
||||
uint32 questItems[MAX_GAMEOBJECT_QUEST_ITEMS];
|
||||
int32 unkInt32;
|
||||
union // different GO types have different data field
|
||||
{
|
||||
//0 GAMEOBJECT_TYPE_DOOR
|
||||
|
||||
@@ -6489,8 +6489,10 @@ void ObjectMgr::LoadGameObjectTemplate()
|
||||
QueryResult result = WorldDatabase.Query("SELECT entry, type, displayId, name, IconName, castBarCaption, unk1, faction, flags, size, questItem1, questItem2, questItem3, "
|
||||
// 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
||||
"questItem4, questItem5, questItem6, data0, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10, data11, data12, "
|
||||
// 29 30 31 32 33 34 35 36 37 38 39 40 41
|
||||
"data13, data14, data15, data16, data17, data18, data19, data20, data21, data22, data23, AIName, ScriptName "
|
||||
// 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
||||
"data13, data14, data15, data16, data17, data18, data19, data20, data21, data22, data23, data24, data25, data26, data27, data28, "
|
||||
// 45 46 47 48 49 50
|
||||
"data29, data30, data31, unkInt32, AIName, ScriptName "
|
||||
"FROM gameobject_template");
|
||||
|
||||
if (!result)
|
||||
@@ -6521,17 +6523,14 @@ void ObjectMgr::LoadGameObjectTemplate()
|
||||
got.size = fields[9].GetFloat();
|
||||
|
||||
for (uint8 i = 0; i < MAX_GAMEOBJECT_QUEST_ITEMS; ++i)
|
||||
{
|
||||
got.questItems[i] = fields[10 + i].GetUInt32();
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i)
|
||||
{
|
||||
got.raw.data[i] = fields[16 + i].GetUInt32();
|
||||
}
|
||||
|
||||
got.AIName = fields[40].GetString();
|
||||
got.ScriptId = GetScriptId(fields[41].GetCString());
|
||||
got.unkInt32 = fields[48].GetInt32();
|
||||
got.AIName = fields[49].GetString();
|
||||
got.ScriptId = GetScriptId(fields[50].GetCString());
|
||||
|
||||
// Checks
|
||||
|
||||
|
||||
@@ -1519,7 +1519,7 @@ enum GameobjectTypes
|
||||
};
|
||||
|
||||
#define MAX_GAMEOBJECT_TYPE 36 // sending to client this or greater value can crash client.
|
||||
#define MAX_GAMEOBJECT_DATA 24 // Max number of uint32 vars in gameobject_template data field
|
||||
#define MAX_GAMEOBJECT_DATA 32 // Max number of uint32 vars in gameobject_template data field
|
||||
|
||||
enum GameObjectFlags
|
||||
{
|
||||
|
||||
@@ -169,6 +169,7 @@ void WorldSession::HandleCreatureQueryOpcode(WorldPacket & recv_data)
|
||||
/// Only _static_ data is sent in this packet !!!
|
||||
void WorldSession::HandleGameObjectQueryOpcode(WorldPacket & recv_data)
|
||||
{
|
||||
const int GO_DATA_FIELDS_NUMBER = 32;
|
||||
uint32 entry;
|
||||
recv_data >> entry;
|
||||
uint64 guid;
|
||||
@@ -204,10 +205,11 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPacket & recv_data)
|
||||
data << IconName; // 2.0.3, string. Icon name to use instead of default icon for go's (ex: "Attack" makes sword)
|
||||
data << CastBarCaption; // 2.0.3, string. Text will appear in Cast Bar when using GO (ex: "Collecting")
|
||||
data << info->unk1; // 2.0.3, string
|
||||
data.append(info->raw.data, 24);
|
||||
data.append(info->raw.data, MAX_GAMEOBJECT_DATA);
|
||||
data << float(info->size); // go size
|
||||
for (uint32 i = 0; i < MAX_GAMEOBJECT_QUEST_ITEMS; ++i)
|
||||
data << uint32(info->questItems[i]); // itemId[6], quest drop
|
||||
data << int32(info->unkInt32); // 4.x, unknown
|
||||
SendPacket(&data);
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_GAMEOBJECT_QUERY_RESPONSE");
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(CMSG_QUEST_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_QUEST_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GAMEOBJECT_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGameObjectQueryOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GAMEOBJECT_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GAMEOBJECT_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_CREATURE_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleCreatureQueryOpcode );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_CREATURE_QUERY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoOpcode );
|
||||
@@ -192,7 +192,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(UMSG_UPDATE_GUILD, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_ADDON_X, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_AFK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_BATTLEGROUND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_BATTLEGROUND_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode );
|
||||
@@ -1368,8 +1368,8 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_COMPRESSED_UNKNOWN_1310, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER( SMSG_VERIFY_CONNECTIVITY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER( CMSG_VERIFY_CONNECTIVITY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess );
|
||||
DEFINE_OPCODE_HANDLER( CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_VERIFY_CONNECTIVITY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_VERIFY_CONNECTIVITY_RESPONSE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess );
|
||||
#undef DEFINE_OPCODE_HANDLER
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user