Merge pull request #1092 from EQEmu/cross_zone_overhaul

Completely overhaul cross zone and world wide methods in quest API.
This commit is contained in:
Chris Miles 2020-07-07 14:15:29 -05:00 committed by GitHub
commit b801f8dfe5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 3906 additions and 718 deletions

View File

@ -187,55 +187,114 @@
#define ServerOP_ReloadRulesWorld 0x4003
#define ServerOP_CameraShake 0x4004
#define ServerOP_QueryServGeneric 0x4005
#define ServerOP_CZSignalClient 0x4006
#define ServerOP_CZSignalClientByName 0x4007
#define ServerOP_CZMessagePlayer 0x4008
#define ServerOP_ReloadWorld 0x4009
#define ServerOP_ReloadLogs 0x4010
#define ServerOP_ReloadPerlExportSettings 0x4011
#define ServerOP_CZSetEntityVariableByClientName 0x4012
#define ServerOP_UCSServerStatusRequest 0x4013
#define ServerOP_UCSServerStatusReply 0x4014
#define ServerOP_HotReloadQuests 0x4015
#define ServerOP_CZSignalGroup 0x4016
#define ServerOP_CZSignalRaid 0x4017
#define ServerOP_CZSignalGuild 0x4018
#define ServerOP_CZMessageGroup 0x4019
#define ServerOP_CZMessageRaid 0x4020
#define ServerOP_CZMessageGuild 0x4021
#define ServerOP_CZSetEntityVariableByGroupID 0x4022
#define ServerOP_CZSetEntityVariableByRaidID 0x4023
#define ServerOP_CZSetEntityVariableByGuildID 0x4024
#define ServerOP_CZTaskAssign 0x4025
#define ServerOP_CZTaskAssignGroup 0x4026
#define ServerOP_CZTaskAssignRaid 0x4027
#define ServerOP_CZTaskAssignGuild 0x4028
#define ServerOP_CZMovePlayer 0x4029
#define ServerOP_CZMoveGroup 0x4030
#define ServerOP_CZMoveRaid 0x4031
#define ServerOP_CZMoveGuild 0x4032
#define ServerOP_ReloadWorld 0x4006
#define ServerOP_ReloadLogs 0x4007
#define ServerOP_ReloadPerlExportSettings 0x4008
#define ServerOP_UCSServerStatusRequest 0x4009
#define ServerOP_UCSServerStatusReply 0x4010
#define ServerOP_HotReloadQuests 0x4011
#define ServerOP_CZCastSpellPlayer 0x4500
#define ServerOP_CZCastSpellGroup 0x4501
#define ServerOP_CZCastSpellRaid 0x4502
#define ServerOP_CZCastSpellGuild 0x4503
#define ServerOP_CZMarqueePlayer 0x4504
#define ServerOP_CZMarqueeGroup 0x4505
#define ServerOP_CZMarqueeRaid 0x4506
#define ServerOP_CZMarqueeGuild 0x4507
#define ServerOP_CZMessagePlayer 0x4508
#define ServerOP_CZMessageGroup 0x4509
#define ServerOP_CZMessageRaid 0x4510
#define ServerOP_CZMessageGuild 0x4511
#define ServerOP_CZMovePlayer 0x4512
#define ServerOP_CZMoveGroup 0x4513
#define ServerOP_CZMoveRaid 0x4514
#define ServerOP_CZMoveGuild 0x4515
#define ServerOP_CZMoveInstancePlayer 0x4516
#define ServerOP_CZMoveInstanceGroup 0x4517
#define ServerOP_CZMoveInstanceRaid 0x4518
#define ServerOP_CZMoveInstanceGuild 0x4519
#define ServerOP_CZRemoveSpellPlayer 0x4520
#define ServerOP_CZRemoveSpellGroup 0x4521
#define ServerOP_CZRemoveSpellRaid 0x4522
#define ServerOP_CZRemoveSpellGuild 0x4523
#define ServerOP_CZSetEntityVariableByClientName 0x4524
#define ServerOP_CZSetEntityVariableByNPCTypeID 0x4525
#define ServerOP_CZSetEntityVariableByGroupID 0x4526
#define ServerOP_CZSetEntityVariableByRaidID 0x4527
#define ServerOP_CZSetEntityVariableByGuildID 0x4528
#define ServerOP_CZSignalClient 0x4529
#define ServerOP_CZSignalClientByName 0x4530
#define ServerOP_CZSignalNPC 0x4531
#define ServerOP_CZSignalGroup 0x4532
#define ServerOP_CZSignalRaid 0x4533
#define ServerOP_CZSignalGuild 0x4534
#define ServerOP_CZTaskActivityResetPlayer 0x4535
#define ServerOP_CZTaskActivityResetGroup 0x4536
#define ServerOP_CZTaskActivityResetRaid 0x4537
#define ServerOP_CZTaskActivityResetGuild 0x4538
#define ServerOP_CZTaskActivityUpdatePlayer 0x4539
#define ServerOP_CZTaskActivityUpdateGroup 0x4540
#define ServerOP_CZTaskActivityUpdateRaid 0x4541
#define ServerOP_CZTaskActivityUpdateGuild 0x4542
#define ServerOP_CZTaskAssignPlayer 0x4543
#define ServerOP_CZTaskAssignGroup 0x4544
#define ServerOP_CZTaskAssignRaid 0x4545
#define ServerOP_CZTaskAssignGuild 0x4546
#define ServerOP_CZTaskDisablePlayer 0x4547
#define ServerOP_CZTaskDisableGroup 0x4548
#define ServerOP_CZTaskDisableRaid 0x4549
#define ServerOP_CZTaskDisableGuild 0x4550
#define ServerOP_CZTaskEnablePlayer 0x4551
#define ServerOP_CZTaskEnableGroup 0x4552
#define ServerOP_CZTaskEnableRaid 0x4553
#define ServerOP_CZTaskEnableGuild 0x4554
#define ServerOP_CZTaskFailPlayer 0x4555
#define ServerOP_CZTaskFailGroup 0x4556
#define ServerOP_CZTaskFailRaid 0x4557
#define ServerOP_CZTaskFailGuild 0x4558
#define ServerOP_CZTaskRemovePlayer 0x4559
#define ServerOP_CZTaskRemoveGroup 0x4560
#define ServerOP_CZTaskRemoveRaid 0x4561
#define ServerOP_CZTaskRemoveGuild 0x4562
#define ServerOP_WWAssignTask 0x4750
#define ServerOP_WWCastSpell 0x4751
#define ServerOP_WWCompleteActivity 0x4752
#define ServerOP_WWDisableTask 0x4753
#define ServerOP_WWEnableTask 0x4754
#define ServerOP_WWFailTask 0x4755
#define ServerOP_WWMarquee 0x4756
#define ServerOP_WWMessage 0x4757
#define ServerOP_WWMove 0x4758
#define ServerOP_WWMoveInstance 0x4759
#define ServerOP_WWRemoveSpell 0x4760
#define ServerOP_WWRemoveTask 0x4761
#define ServerOP_WWResetActivity 0x4762
#define ServerOP_WWSetEntityVariableClient 0x4763
#define ServerOP_WWSetEntityVariableNPC 0x4764
#define ServerOP_WWSignalClient 0x4765
#define ServerOP_WWSignalNPC 0x4766
#define ServerOP_WWUpdateActivity 0x4767
/**
* QueryServer
*/
#define ServerOP_QSPlayerLogTrades 0x5010
#define ServerOP_QSPlayerLogHandins 0x5011
#define ServerOP_QSPlayerLogNPCKills 0x5012
#define ServerOP_QSPlayerLogDeletes 0x5013
#define ServerOP_QSPlayerLogMoves 0x5014
#define ServerOP_QSPlayerLogMerchantTransactions 0x5015
#define ServerOP_QSSendQuery 0x5016
#define ServerOP_CZSignalNPC 0x5017
#define ServerOP_CZSetEntityVariableByNPCTypeID 0x5018
#define ServerOP_WWMarquee 0x5019
#define ServerOP_QSPlayerDropItem 0x5020
#define ServerOP_QSPlayerLogTrades 0x5000
#define ServerOP_QSPlayerLogHandins 0x5001
#define ServerOP_QSPlayerLogNPCKills 0x5002
#define ServerOP_QSPlayerLogDeletes 0x5003
#define ServerOP_QSPlayerLogMoves 0x5004
#define ServerOP_QSPlayerLogMerchantTransactions 0x5005
#define ServerOP_QSSendQuery 0x5006
#define ServerOP_QSPlayerDropItem 0x5007
/* Query Serv Generic Packet Flag/Type Enumeration */
enum { QSG_LFGuild = 0 };
enum { QSG_LFGuild_PlayerMatches = 0, QSG_LFGuild_UpdatePlayerInfo, QSG_LFGuild_RequestPlayerInfo, QSG_LFGuild_UpdateGuildInfo, QSG_LFGuild_GuildMatches,
QSG_LFGuild_RequestGuildInfo };
#define ServerOP_Speech 0x4513
#define ServerOP_Speech 0x5500
enum {
UserToWorldStatusWorldUnavail = 0,
@ -338,7 +397,7 @@ struct ServerZoneIncomingClient_Struct {
uint32 accid;
int16 admin;
uint32 charid;
uint32 lsid;
uint32 lsid;
bool tellsoff;
char charname[64];
char lskey[30];
@ -479,34 +538,34 @@ struct ServerKickPlayer_Struct {
};
struct ServerLSInfo_Struct {
char name[201]; // name the worldserver wants
char name[201]; // name the worldserver wants
char address[250]; // DNS address of the server
char account[31]; // account name for the worldserver
char password[31]; // password for the name
char protocolversion[25]; // Major protocol version number
char serverversion[64]; // minor server software version number
uint8 servertype; // 0=world, 1=chat, 2=login, 3=MeshLogin
uint8 servertype; // 0=world, 1=chat, 2=login, 3=MeshLogin
};
struct ServerNewLSInfo_Struct {
char server_long_name[201]; // name the worldserver wants
char server_short_name[50]; // shortname the worldserver wants
char server_long_name[201]; // name the worldserver wants
char server_short_name[50]; // shortname the worldserver wants
char remote_ip_address[125]; // DNS address of the server
char local_ip_address[125]; // DNS address of the server
char account_name[31]; // account name for the worldserver
char account_password[31]; // password for the name
char protocol_version[25]; // Major protocol version number
char server_version[64]; // minor server software version number
uint8 server_process_type; // 0=world, 1=chat, 2=login, 3=MeshLogin
uint8 server_process_type; // 0=world, 1=chat, 2=login, 3=MeshLogin
};
struct ServerLSAccountUpdate_Struct { // for updating info on login server
char worldaccount[31]; // account name for the worldserver
char worldpassword[31]; // password for the name
uint32 useraccountid; // player account ID
uint32 useraccountid; // player account ID
char useraccount[31]; // player account name
char userpassword[51]; // player account password
char user_email[101]; // player account email address
char user_email[101]; // player account email address
};
struct ServerLSStatus_Struct {
@ -601,7 +660,7 @@ struct ServerConnectInfo {
char address[250];
char local_address[250];
uint16 port;
uint32 process_id;
uint32 process_id;
};
struct ServerGMGoto_Struct {
@ -729,7 +788,7 @@ struct UsertoWorldRequest_Struct {
struct UsertoWorldResponseLegacy_Struct {
uint32 lsaccountid;
uint32 worldid;
int8 response; // -3) World Full, -2) Banned, -1) Suspended, 0) Denied, 1) Allowed
int8 response; // -3) World Full, -2) Banned, -1) Suspended, 0) Denied, 1) Allowed
uint32 FromID;
uint32 ToID;
};
@ -737,10 +796,10 @@ struct UsertoWorldResponseLegacy_Struct {
struct UsertoWorldResponse_Struct {
uint32 lsaccountid;
uint32 worldid;
int8 response; // -3) World Full, -2) Banned, -1) Suspended, 0) Denied, 1) Allowed
int8 response; // -3) World Full, -2) Banned, -1) Suspended, 0) Denied, 1) Allowed
uint32 FromID;
uint32 ToID;
char login[64];
char login[64];
};
// generic struct to be used for alot of simple zone->world questions
@ -890,7 +949,7 @@ struct ServerOP_Consent_Struct {
uint8 permission;
uint32 zone_id;
uint16 instance_id;
uint8 consent_type; // 0 = normal, 1 = group, 2 = raid, 3 = guild
uint8 consent_type; // 0 = normal, 1 = group, 2 = raid, 3 = guild
uint32 consent_id;
};
@ -1178,64 +1237,6 @@ struct Server_Speech_Struct {
char message[0];
};
struct CZTaskAssign_Struct {
uint16 npc_entity_id;
int character_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignGroup_Struct {
uint16 npc_entity_id;
int group_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignRaid_Struct {
uint16 npc_entity_id;
int raid_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignGuild_Struct {
uint16 npc_entity_id;
int guild_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZClientSignal_Struct {
int charid;
uint32 data;
};
struct CZGroupSignal_Struct {
int group_id;
uint32 data;
};
struct CZRaidSignal_Struct {
int raid_id;
uint32 data;
};
struct CZGuildSignal_Struct {
int guild_id;
uint32 data;
};
struct CZNPCSignal_Struct {
uint32 npctype_id;
uint32 data;
};
struct CZClientSignalByName_Struct {
char Name[64];
uint32 data;
};
struct QSTradeItems_Struct {
uint32 from_id;
uint16 from_slot;
@ -1251,13 +1252,13 @@ struct QSTradeItems_Struct {
};
struct QSPlayerLogTrade_Struct {
uint32 char1_id;
uint32 char1_id;
MoneyUpdate_Struct char1_money;
uint16 char1_count;
uint32 char2_id;
uint16 char1_count;
uint32 char2_id;
MoneyUpdate_Struct char2_money;
uint16 char2_count;
uint16 _detail_count;
uint16 char2_count;
uint16 _detail_count;
QSTradeItems_Struct items[0];
};
@ -1295,14 +1296,14 @@ struct QSHandinItems_Struct {
};
struct QSPlayerLogHandin_Struct {
uint32 quest_id;
uint32 char_id;
uint32 quest_id;
uint32 char_id;
MoneyUpdate_Struct char_money;
uint16 char_count;
uint32 npc_id;
uint16 char_count;
uint32 npc_id;
MoneyUpdate_Struct npc_money;
uint16 npc_count;
uint16 _detail_count;
uint16 npc_count;
uint16 _detail_count;
QSHandinItems_Struct items[0];
};
@ -1333,9 +1334,9 @@ struct QSDeleteItems_Struct {
};
struct QSPlayerLogDelete_Struct {
uint32 char_id;
uint16 stack_size; // '0' indicates full stack or non-stackable item move
uint16 char_count;
uint32 char_id;
uint16 stack_size; // '0' indicates full stack or non-stackable item move
uint16 char_count;
QSDeleteItems_Struct items[0];
};
@ -1373,13 +1374,13 @@ struct QSTransactionItems_Struct {
};
struct QSMerchantLogTransaction_Struct {
uint32 zone_id;
uint32 merchant_id;
uint32 zone_id;
uint32 merchant_id;
MoneyUpdate_Struct merchant_money;
uint16 merchant_count;
uint32 char_id;
uint16 merchant_count;
uint32 char_id;
MoneyUpdate_Struct char_money;
uint16 char_count;
uint16 char_count;
QSTransactionItems_Struct items[0];
};
@ -1387,28 +1388,78 @@ struct QSGeneralQuery_Struct {
char QueryString[0];
};
struct CZMessagePlayer_Struct {
uint32 Type;
char CharName[64];
char Message[512];
struct CZCastSpellPlayer_Struct {
int character_id;
uint32 spell_id;
};
struct CZMessageGroup_Struct {
uint32 Type;
int GroupID;
char Message[512];
struct CZCastSpellGroup_Struct {
int group_id;
uint32 spell_id;
};
struct CZMessageRaid_Struct {
uint32 Type;
int RaidID;
char Message[512];
struct CZCastSpellRaid_Struct {
int raid_id;
uint32 spell_id;
};
struct CZMessageGuild_Struct {
uint32 Type;
int GuildID;
char Message[512];
struct CZCastSpellGuild_Struct {
int guild_id;
uint32 spell_id;
};
struct CZClientSignal_Struct {
int character_id;
uint32 signal;
};
struct CZGroupSignal_Struct {
int group_id;
uint32 signal;
};
struct CZRaidSignal_Struct {
int raid_id;
uint32 signal;
};
struct CZGuildSignal_Struct {
int guild_id;
uint32 signal;
};
struct CZNPCSignal_Struct {
uint32 npctype_id;
uint32 signal;
};
struct CZClientSignalByName_Struct {
char character_name[64];
uint32 signal;
};
struct CZCompleteActivityPlayer_Struct {
int character_id;
uint32 task_id;
int activity_id;
};
struct CZCompleteActivityGroup_Struct {
int group_id;
uint32 task_id;
int activity_id;
};
struct CZCompleteActivityRaid_Struct {
int raid_id;
uint32 task_id;
int activity_id;
};
struct CZCompleteActivityGuild_Struct {
int guild_id;
uint32 task_id;
int activity_id;
};
struct CZMovePlayer_Struct {
@ -1416,6 +1467,70 @@ struct CZMovePlayer_Struct {
char zone_short_name[32];
};
struct CZMarqueePlayer_Struct {
int character_id;
uint32 type;
uint32 priority;
uint32 fade_in;
uint32 fade_out;
uint32 duration;
char message[512];
};
struct CZMarqueeGroup_Struct {
int group_id;
uint32 type;
uint32 priority;
uint32 fade_in;
uint32 fade_out;
uint32 duration;
char message[512];
};
struct CZMarqueeRaid_Struct {
int raid_id;
uint32 type;
uint32 priority;
uint32 fade_in;
uint32 fade_out;
uint32 duration;
char message[512];
};
struct CZMarqueeGuild_Struct {
int guild_id;
uint32 type;
uint32 priority;
uint32 fade_in;
uint32 fade_out;
uint32 duration;
char message[512];
};
struct CZMessagePlayer_Struct {
uint32 type;
char character_name[64];
char message[512];
};
struct CZMessageGroup_Struct {
uint32 type;
int group_id;
char message[512];
};
struct CZMessageRaid_Struct {
uint32 type;
int raid_id;
char message[512];
};
struct CZMessageGuild_Struct {
uint32 type;
int guild_id;
char message[512];
};
struct CZMoveGroup_Struct {
int group_id;
char zone_short_name[32];
@ -1431,43 +1546,393 @@ struct CZMoveGuild_Struct {
char zone_short_name[32];
};
struct WWMarquee_Struct {
uint32 Type;
uint32 Priority;
uint32 FadeIn;
uint32 FadeOut;
uint32 Duration;
char Message[512];
struct CZMoveInstancePlayer_Struct {
int character_id;
uint16 instance_id;
};
struct CZMoveInstanceGroup_Struct {
int group_id;
uint16 instance_id;
};
struct CZMoveInstanceRaid_Struct {
int raid_id;
uint16 instance_id;
};
struct CZMoveInstanceGuild_Struct {
int guild_id;
uint16 instance_id;
};
struct CZRemoveSpellPlayer_Struct {
int character_id;
uint32 spell_id;
};
struct CZRemoveSpellGroup_Struct {
int group_id;
uint32 spell_id;
};
struct CZRemoveSpellRaid_Struct {
int raid_id;
uint32 spell_id;
};
struct CZRemoveSpellGuild_Struct {
int guild_id;
uint32 spell_id;
};
struct CZRemoveTaskPlayer_Struct {
int character_id;
uint32 task_id;
};
struct CZRemoveTaskGroup_Struct {
int group_id;
uint32 task_id;
};
struct CZRemoveTaskRaid_Struct {
int raid_id;
uint32 task_id;
};
struct CZRemoveTaskGuild_Struct {
int guild_id;
uint32 task_id;
};
struct CZResetActivityPlayer_Struct {
int character_id;
uint32 task_id;
int activity_id;
};
struct CZResetActivityGroup_Struct {
int group_id;
uint32 task_id;
int activity_id;
};
struct CZResetActivityRaid_Struct {
int raid_id;
uint32 task_id;
int activity_id;
};
struct CZResetActivityGuild_Struct {
int guild_id;
uint32 task_id;
int activity_id;
};
struct CZSetEntVarByNPCTypeID_Struct {
uint32 npctype_id;
char id[256];
char m_var[256];
char variable_name[256];
char variable_value[256];
};
struct CZSetEntVarByClientName_Struct {
char CharName[64];
char id[256];
char m_var[256];
char character_name[64];
char variable_name[256];
char variable_value[256];
};
struct CZSetEntVarByGroupID_Struct {
int group_id;
char id[256];
char m_var[256];
char variable_name[256];
char variable_value[256];
};
struct CZSetEntVarByRaidID_Struct {
int raid_id;
char id[256];
char m_var[256];
char variable_name[256];
char variable_value[256];
};
struct CZSetEntVarByGuildID_Struct {
int guild_id;
char id[256];
char m_var[256];
char variable_name[256];
char variable_value[256];
};
struct CZTaskActivityResetPlayer_Struct {
int character_id;
uint32 task_id;
int activity_id;
};
struct CZTaskActivityResetGroup_Struct {
int group_id;
uint32 task_id;
int activity_id;
};
struct CZTaskActivityResetRaid_Struct {
int raid_id;
uint32 task_id;
int activity_id;
};
struct CZTaskActivityResetGuild_Struct {
int guild_id;
uint32 task_id;
int activity_id;
};
struct CZTaskActivityUpdatePlayer_Struct {
int character_id;
uint32 task_id;
int activity_id;
int activity_count;
};
struct CZTaskActivityUpdateGroup_Struct {
int group_id;
uint32 task_id;
int activity_id;
int activity_count;
};
struct CZTaskActivityUpdateRaid_Struct {
int raid_id;
uint32 task_id;
int activity_id;
int activity_count;
};
struct CZTaskActivityUpdateGuild_Struct {
int guild_id;
uint32 task_id;
int activity_id;
int activity_count;
};
struct CZTaskAssignPlayer_Struct {
uint16 npc_entity_id;
int character_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignGroup_Struct {
uint16 npc_entity_id;
int group_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignRaid_Struct {
uint16 npc_entity_id;
int raid_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskAssignGuild_Struct {
uint16 npc_entity_id;
int guild_id;
uint32 task_id;
bool enforce_level_requirement;
};
struct CZTaskDisablePlayer_Struct {
int character_id;
uint32 task_id;
};
struct CZTaskDisableGroup_Struct {
int group_id;
uint32 task_id;
};
struct CZTaskDisableRaid_Struct {
int raid_id;
uint32 task_id;
};
struct CZTaskDisableGuild_Struct {
int guild_id;
uint32 task_id;
};
struct CZTaskEnablePlayer_Struct {
int character_id;
uint32 task_id;
};
struct CZTaskEnableGroup_Struct {
int group_id;
uint32 task_id;
};
struct CZTaskEnableRaid_Struct {
int raid_id;
uint32 task_id;
};
struct CZTaskEnableGuild_Struct {
int guild_id;
uint32 task_id;
};
struct CZTaskFailPlayer_Struct {
int character_id;
uint32 task_id;
};
struct CZTaskFailGroup_Struct {
int group_id;
uint32 task_id;
};
struct CZTaskFailRaid_Struct {
int raid_id;
uint32 task_id;
};
struct CZTaskFailGuild_Struct {
int guild_id;
uint32 task_id;
};
struct CZTaskRemovePlayer_Struct {
uint16 npc_entity_id;
int character_id;
uint32 task_id;
};
struct CZTaskRemoveGroup_Struct {
uint16 npc_entity_id;
int group_id;
uint32 task_id;
};
struct CZTaskRemoveRaid_Struct {
uint16 npc_entity_id;
int raid_id;
uint32 task_id;
};
struct CZTaskRemoveGuild_Struct {
uint16 npc_entity_id;
int guild_id;
uint32 task_id;
};
struct WWAssignTask_Struct {
uint16 npc_entity_id;
uint32 task_id;
bool enforce_level_requirement;
uint8 min_status;
uint8 max_status;
};
struct WWCastSpell_Struct {
uint32 spell_id;
uint8 min_status;
uint8 max_status;
};
struct WWDisableTask_Struct {
uint32 task_id;
uint8 min_status;
uint8 max_status;
};
struct WWEnableTask_Struct {
uint32 task_id;
uint8 min_status;
uint8 max_status;
};
struct WWFailTask_Struct {
uint32 task_id;
uint8 min_status;
uint8 max_status;
};
struct WWMarquee_Struct {
uint32 type;
uint32 priority;
uint32 fade_in;
uint32 fade_out;
uint32 duration;
char message[512];
uint8 min_status;
uint8 max_status;
};
struct WWMessage_Struct {
uint32 type;
char message[512];
uint8 min_status;
uint8 max_status;
};
struct WWMove_Struct {
char zone_short_name[32];
uint8 min_status;
uint8 max_status;
};
struct WWMoveInstance_Struct {
uint16 instance_id;
uint8 min_status;
uint8 max_status;
};
struct WWRemoveSpell_Struct {
uint32 spell_id;
uint8 min_status;
uint8 max_status;
};
struct WWRemoveTask_Struct {
uint32 task_id;
uint8 min_status;
uint8 max_status;
};
struct WWResetActivity_Struct {
uint32 task_id;
int activity_id;
uint8 min_status;
uint8 max_status;
};
struct WWSetEntVarClient_Struct {
char variable_name[256];
char variable_value[256];
uint8 min_status;
uint8 max_status;
};
struct WWSetEntVarNPC_Struct {
char variable_name[256];
char variable_value[256];
};
struct WWSignalClient_Struct {
uint32 signal;
uint8 min_status;
uint8 max_status;
};
struct WWSignalNPC_Struct {
uint32 signal;
};
struct WWUpdateActivity_Struct {
uint32 task_id;
int activity_id;
int activity_count;
uint8 min_status;
uint8 max_status;
};
struct ReloadWorld_Struct {

View File

@ -830,8 +830,8 @@ void ConsoleSignalCharByName(
sizeof(CZClientSignalByName_Struct) + message_len
);
CZClientSignalByName_Struct *CZSC = (CZClientSignalByName_Struct *) pack->pBuffer;
strn0cpy(CZSC->Name, (char *) args[0].c_str(), 64);
CZSC->data = atoi(args[1].c_str());
strn0cpy(CZSC->character_name, (char *) args[0].c_str(), 64);
CZSC->signal = atoi(args[1].c_str());
zoneserver_list.SendPacket(pack);
safe_delete(pack);
}
@ -936,4 +936,4 @@ void RegisterConsoleFunctions(std::unique_ptr<EQ::Net::ConsoleServer>& console)
console->RegisterCall("zonestatus", 50, "zonestatus", std::bind(ConsoleZoneStatus, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));console->RegisterCall("ping", 50, "ping", std::bind(ConsoleNull, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
console->RegisterCall("quit", 50, "quit", std::bind(ConsoleQuit, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
console->RegisterCall("exit", 50, "exit", std::bind(ConsoleQuit, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
}
}

View File

@ -1236,30 +1236,86 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
QSLink.SendPacket(pack);
break;
}
case ServerOP_CZSignalClientByName:
case ServerOP_CZCastSpellPlayer:
case ServerOP_CZCastSpellGroup:
case ServerOP_CZCastSpellRaid:
case ServerOP_CZCastSpellGuild:
case ServerOP_CZMarqueePlayer:
case ServerOP_CZMarqueeGroup:
case ServerOP_CZMarqueeRaid:
case ServerOP_CZMarqueeGuild:
case ServerOP_CZMessagePlayer:
case ServerOP_CZMessageGroup:
case ServerOP_CZMessageRaid:
case ServerOP_CZMessageGuild:
case ServerOP_CZSignalNPC:
case ServerOP_CZSetEntityVariableByNPCTypeID:
case ServerOP_CZSignalClient:
case ServerOP_CZSignalGroup:
case ServerOP_CZSignalRaid:
case ServerOP_CZSignalGuild:
case ServerOP_CZSetEntityVariableByClientName:
case ServerOP_CZSetEntityVariableByGroupID:
case ServerOP_CZSetEntityVariableByRaidID:
case ServerOP_CZSetEntityVariableByGuildID:
case ServerOP_CZTaskAssign:
case ServerOP_CZTaskAssignGroup:
case ServerOP_CZTaskAssignRaid:
case ServerOP_CZTaskAssignGuild:
case ServerOP_CZMovePlayer:
case ServerOP_CZMoveGroup:
case ServerOP_CZMoveRaid:
case ServerOP_CZMoveGuild:
case ServerOP_CZMoveInstancePlayer:
case ServerOP_CZMoveInstanceGroup:
case ServerOP_CZMoveInstanceRaid:
case ServerOP_CZMoveInstanceGuild:
case ServerOP_CZRemoveSpellPlayer:
case ServerOP_CZRemoveSpellGroup:
case ServerOP_CZRemoveSpellRaid:
case ServerOP_CZRemoveSpellGuild:
case ServerOP_CZSetEntityVariableByClientName:
case ServerOP_CZSetEntityVariableByNPCTypeID:
case ServerOP_CZSetEntityVariableByGroupID:
case ServerOP_CZSetEntityVariableByRaidID:
case ServerOP_CZSetEntityVariableByGuildID:
case ServerOP_CZSignalNPC:
case ServerOP_CZSignalClient:
case ServerOP_CZSignalClientByName:
case ServerOP_CZSignalGroup:
case ServerOP_CZSignalRaid:
case ServerOP_CZSignalGuild:
case ServerOP_CZTaskActivityResetPlayer:
case ServerOP_CZTaskActivityResetGroup:
case ServerOP_CZTaskActivityResetRaid:
case ServerOP_CZTaskActivityResetGuild:
case ServerOP_CZTaskActivityUpdatePlayer:
case ServerOP_CZTaskActivityUpdateGroup:
case ServerOP_CZTaskActivityUpdateRaid:
case ServerOP_CZTaskActivityUpdateGuild:
case ServerOP_CZTaskAssignPlayer:
case ServerOP_CZTaskAssignGroup:
case ServerOP_CZTaskAssignRaid:
case ServerOP_CZTaskAssignGuild:
case ServerOP_CZTaskDisablePlayer:
case ServerOP_CZTaskDisableGroup:
case ServerOP_CZTaskDisableRaid:
case ServerOP_CZTaskDisableGuild:
case ServerOP_CZTaskEnablePlayer:
case ServerOP_CZTaskEnableGroup:
case ServerOP_CZTaskEnableRaid:
case ServerOP_CZTaskEnableGuild:
case ServerOP_CZTaskFailPlayer:
case ServerOP_CZTaskFailGroup:
case ServerOP_CZTaskFailRaid:
case ServerOP_CZTaskFailGuild:
case ServerOP_CZTaskRemovePlayer:
case ServerOP_CZTaskRemoveGroup:
case ServerOP_CZTaskRemoveRaid:
case ServerOP_CZTaskRemoveGuild:
case ServerOP_WWAssignTask:
case ServerOP_WWCastSpell:
case ServerOP_WWDisableTask:
case ServerOP_WWEnableTask:
case ServerOP_WWFailTask:
case ServerOP_WWMarquee:
case ServerOP_WWMessage:
case ServerOP_WWMove:
case ServerOP_WWMoveInstance:
case ServerOP_WWRemoveSpell:
case ServerOP_WWRemoveTask:
case ServerOP_WWResetActivity:
case ServerOP_WWSetEntityVariableClient:
case ServerOP_WWSetEntityVariableNPC:
case ServerOP_WWSignalClient:
case ServerOP_WWSignalNPC:
case ServerOP_WWUpdateActivity:
case ServerOP_DepopAllPlayersCorpses:
case ServerOP_DepopPlayerCorpse:
case ServerOP_ReloadTitles:

View File

@ -1012,6 +1012,7 @@ public:
inline bool IsTaskActivityActive(int TaskID, int ActivityID) { return (taskstate ? taskstate->IsTaskActivityActive(TaskID, ActivityID) : false); }
inline ActivityState GetTaskActivityState(TaskType type, int index, int ActivityID) { return (taskstate ? taskstate->GetTaskActivityState(type, index, ActivityID) : ActivityHidden); }
inline void UpdateTaskActivity(int TaskID, int ActivityID, int Count, bool ignore_quest_update = false) { if (taskstate) taskstate->UpdateTaskActivity(this, TaskID, ActivityID, Count, ignore_quest_update); }
inline void RemoveTaskByTaskID(uint32 task_id) { if (taskstate) taskstate->RemoveTaskByTaskID(this, task_id); }
inline void ResetTaskActivity(int TaskID, int ActivityID) { if(taskstate) taskstate->ResetTaskActivity(this, TaskID, ActivityID); }
inline void UpdateTasksOnKill(int NPCTypeID) { if(taskstate) taskstate->UpdateTasksOnKill(this, NPCTypeID); }
inline void UpdateTasksForItem(ActivityType Type, int ItemID, int Count=1) { if(taskstate) taskstate->UpdateTasksForItem(this, Type, ItemID, Count); }

File diff suppressed because it is too large Load Diff

View File

@ -1054,28 +1054,88 @@ void lua_cross_zone_assign_task_by_guild_id(int guild_id, uint32 task_id, bool e
quest_manager.CrossZoneAssignTaskByGuildID(guild_id, task_id, enforce_level_requirement);
}
void lua_cross_zone_signal_client_by_char_id(uint32 player_id, int signal) {
quest_manager.CrossZoneSignalPlayerByCharID(player_id, signal);
void lua_cross_zone_cast_spell_by_char_id(int character_id, uint32 spell_id) {
quest_manager.CrossZoneCastSpellByCharID(character_id, spell_id);
}
void lua_cross_zone_signal_client_by_group_id(uint32 group_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGroupID(group_id, signal);
void lua_cross_zone_cast_spell_by_group_id(int group_id, uint32 spell_id) {
quest_manager.CrossZoneCastSpellByGroupID(group_id, spell_id);
}
void lua_cross_zone_signal_client_by_raid_id(uint32 raid_id, int signal) {
quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, signal);
void lua_cross_zone_cast_spell_by_raid_id(int raid_id, uint32 spell_id) {
quest_manager.CrossZoneCastSpellByRaidID(raid_id, spell_id);
}
void lua_cross_zone_signal_client_by_guild_id(uint32 guild_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, signal);
void lua_cross_zone_cast_spell_by_guild_id(int guild_id, uint32 spell_id) {
quest_manager.CrossZoneCastSpellByGuildID(guild_id, spell_id);
}
void lua_cross_zone_signal_client_by_name(const char *player, int signal) {
quest_manager.CrossZoneSignalPlayerByName(player, signal);
void lua_cross_zone_disable_task_by_char_id(int character_id, uint32 task_id) {
quest_manager.CrossZoneDisableTaskByCharID(character_id, task_id);
}
void lua_cross_zone_message_player_by_name(uint32 type, const char *player, const char *message) {
quest_manager.CrossZoneMessagePlayerByName(type, player, message);
void lua_cross_zone_disable_task_by_group_id(int group_id, uint32 task_id) {
quest_manager.CrossZoneDisableTaskByGroupID(group_id, task_id);
}
void lua_cross_zone_disable_task_by_raid_id(int raid_id, uint32 task_id) {
quest_manager.CrossZoneDisableTaskByRaidID(raid_id, task_id);
}
void lua_cross_zone_disable_task_by_guild_id(int guild_id, uint32 task_id) {
quest_manager.CrossZoneDisableTaskByGuildID(guild_id, task_id);
}
void lua_cross_zone_enable_task_by_char_id(int character_id, uint32 task_id) {
quest_manager.CrossZoneEnableTaskByCharID(character_id, task_id);
}
void lua_cross_zone_enable_task_by_group_id(int group_id, uint32 task_id) {
quest_manager.CrossZoneEnableTaskByGroupID(group_id, task_id);
}
void lua_cross_zone_enable_task_by_raid_id(int raid_id, uint32 task_id) {
quest_manager.CrossZoneEnableTaskByRaidID(raid_id, task_id);
}
void lua_cross_zone_enable_task_by_guild_id(int guild_id, uint32 task_id) {
quest_manager.CrossZoneEnableTaskByGuildID(guild_id, task_id);
}
void lua_cross_zone_fail_task_by_char_id(int character_id, uint32 task_id) {
quest_manager.CrossZoneFailTaskByCharID(character_id, task_id);
}
void lua_cross_zone_fail_task_by_group_id(int group_id, uint32 task_id) {
quest_manager.CrossZoneFailTaskByGroupID(group_id, task_id);
}
void lua_cross_zone_fail_task_by_raid_id(int raid_id, uint32 task_id) {
quest_manager.CrossZoneFailTaskByRaidID(raid_id, task_id);
}
void lua_cross_zone_fail_task_by_guild_id(int guild_id, uint32 task_id) {
quest_manager.CrossZoneFailTaskByGuildID(guild_id, task_id);
}
void lua_cross_zone_marquee_by_char_id(int character_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
quest_manager.CrossZoneMarqueeByCharID(character_id, type, priority, fade_in, fade_out, duration, message);
}
void lua_cross_zone_marquee_by_group_id(int group_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
quest_manager.CrossZoneMarqueeByGroupID(group_id, type, priority, fade_in, fade_out, duration, message);
}
void lua_cross_zone_marquee_by_raid_id(int raid_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
quest_manager.CrossZoneMarqueeByRaidID(raid_id, type, priority, fade_in, fade_out, duration, message);
}
void lua_cross_zone_marquee_by_guild_id(int guild_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
quest_manager.CrossZoneMarqueeByGuildID(guild_id, type, priority, fade_in, fade_out, duration, message);
}
void lua_cross_zone_message_player_by_name(uint32 type, const char *character_name, const char *message) {
quest_manager.CrossZoneMessagePlayerByName(type, character_name, message);
}
void lua_cross_zone_message_player_by_group_id(uint32 type, int group_id, const char *message) {
@ -1106,24 +1166,216 @@ void lua_cross_zone_move_player_by_guild_id(int guild_id, const char *zone_short
quest_manager.CrossZoneMovePlayerByGuildID(guild_id, zone_short_name);
}
void lua_cross_zone_set_entity_variable_by_client_name(const char *player, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByClientName(player, id, m_var);
void lua_cross_zone_move_instance_by_char_id(int character_id, uint16 instance_id) {
quest_manager.CrossZoneMoveInstanceByCharID(character_id, instance_id);
}
void lua_cross_zone_set_entity_variable_by_group_id(int group_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, id, m_var);
void lua_cross_zone_move_instance_by_group_id(int group_id, uint16 instance_id) {
quest_manager.CrossZoneMoveInstanceByGroupID(group_id, instance_id);
}
void lua_cross_zone_set_entity_variable_by_raid_id(int raid_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, id, m_var);
void lua_cross_zone_move_instance_by_raid_id(int raid_id, uint16 instance_id) {
quest_manager.CrossZoneMoveInstanceByRaidID(raid_id, instance_id);
}
void lua_cross_zone_set_entity_variable_by_guild_id(int guild_id, const char *id, const char *m_var) {
quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, id, m_var);
void lua_cross_zone_move_instance_by_guild_id(int guild_id, uint16 instance_id) {
quest_manager.CrossZoneMoveInstanceByGuildID(guild_id, instance_id);
}
void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fadein, uint32 fadeout, uint32 duration, const char *message) {
quest_manager.WorldWideMarquee(type, priority, fadein, fadeout, duration, message);
void lua_cross_zone_remove_spell_by_char_id(int character_id, uint32 spell_id) {
quest_manager.CrossZoneRemoveSpellByCharID(character_id, spell_id);
}
void lua_cross_zone_remove_spell_by_group_id(int group_id, uint32 spell_id) {
quest_manager.CrossZoneRemoveSpellByGroupID(group_id, spell_id);
}
void lua_cross_zone_remove_spell_by_raid_id(int raid_id, uint32 spell_id) {
quest_manager.CrossZoneRemoveSpellByRaidID(raid_id, spell_id);
}
void lua_cross_zone_remove_spell_by_guild_id(int guild_id, uint32 spell_id) {
quest_manager.CrossZoneRemoveSpellByGuildID(guild_id, spell_id);
}
void lua_cross_zone_remove_task_by_char_id(int character_id, uint32 task_id) {
quest_manager.CrossZoneRemoveTaskByCharID(character_id, task_id);
}
void lua_cross_zone_remove_task_by_group_id(int group_id, uint32 task_id) {
quest_manager.CrossZoneRemoveTaskByGroupID(group_id, task_id);
}
void lua_cross_zone_remove_task_by_raid_id(int raid_id, uint32 task_id) {
quest_manager.CrossZoneRemoveTaskByRaidID(raid_id, task_id);
}
void lua_cross_zone_remove_task_by_guild_id(int guild_id, uint32 task_id) {
quest_manager.CrossZoneRemoveTaskByGuildID(guild_id, task_id);
}
void lua_cross_zone_reset_activity_by_char_id(int character_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneResetActivityByCharID(character_id, task_id, activity_id);
}
void lua_cross_zone_reset_activity_by_group_id(int group_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneResetActivityByGroupID(group_id, task_id, activity_id);
}
void lua_cross_zone_reset_activity_by_raid_id(int raid_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneResetActivityByRaidID(raid_id, task_id, activity_id);
}
void lua_cross_zone_reset_activity_by_guild_id(int guild_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneResetActivityByGuildID(guild_id, task_id, activity_id);
}
void lua_cross_zone_set_entity_variable_by_client_name(const char *character_name, const char *variable_name, const char *variable_value) {
quest_manager.CrossZoneSetEntityVariableByClientName(character_name, variable_name, variable_value);
}
void lua_cross_zone_set_entity_variable_by_group_id(int group_id, const char *variable_name, const char *variable_value) {
quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, variable_name, variable_value);
}
void lua_cross_zone_set_entity_variable_by_raid_id(int raid_id, const char *variable_name, const char *variable_value) {
quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, variable_name, variable_value);
}
void lua_cross_zone_set_entity_variable_by_guild_id(int guild_id, const char *variable_name, const char *variable_value) {
quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, variable_name, variable_value);
}
void lua_cross_zone_signal_client_by_char_id(uint32 character_id, int signal) {
quest_manager.CrossZoneSignalPlayerByCharID(character_id, signal);
}
void lua_cross_zone_signal_client_by_group_id(uint32 group_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGroupID(group_id, signal);
}
void lua_cross_zone_signal_client_by_raid_id(uint32 raid_id, int signal) {
quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, signal);
}
void lua_cross_zone_signal_client_by_guild_id(uint32 guild_id, int signal) {
quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, signal);
}
void lua_cross_zone_signal_client_by_name(const char *character_name, int signal) {
quest_manager.CrossZoneSignalPlayerByName(character_name, signal);
}
void lua_cross_zone_signal_npc_by_npctype_id(uint32 npctype_id, int signal) {
quest_manager.CrossZoneSignalNPCByNPCTypeID(npctype_id, signal);
}
void lua_cross_zone_update_activity_by_char_id(int character_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneUpdateActivityByCharID(character_id, task_id, activity_id);
}
void lua_cross_zone_update_activity_by_char_id(int character_id, uint32 task_id, int activity_id, int activity_count) {
quest_manager.CrossZoneUpdateActivityByCharID(character_id, task_id, activity_id, activity_count);
}
void lua_cross_zone_update_activity_by_group_id(int group_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneUpdateActivityByGroupID(group_id, task_id, activity_id);
}
void lua_cross_zone_update_activity_by_group_id(int group_id, uint32 task_id, int activity_id, int activity_count) {
quest_manager.CrossZoneUpdateActivityByGroupID(group_id, task_id, activity_id, activity_count);
}
void lua_cross_zone_update_activity_by_raid_id(int raid_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneUpdateActivityByRaidID(raid_id, task_id, activity_id);
}
void lua_cross_zone_update_activity_by_raid_id(int raid_id, uint32 task_id, int activity_id, int activity_count) {
quest_manager.CrossZoneUpdateActivityByRaidID(raid_id, task_id, activity_id, activity_count);
}
void lua_cross_zone_update_activity_by_guild_id(int guild_id, uint32 task_id, int activity_id) {
quest_manager.CrossZoneUpdateActivityByGuildID(guild_id, task_id, activity_id);
}
void lua_cross_zone_update_activity_by_guild_id(int guild_id, uint32 task_id, int activity_id, int activity_count) {
quest_manager.CrossZoneUpdateActivityByGuildID(guild_id, task_id, activity_id, activity_count);
}
void lua_world_wide_assign_task(uint32 task_id) {
quest_manager.WorldWideAssignTask(task_id);
}
void lua_world_wide_assign_task(uint32 task_id, bool enforce_level_requirement) {
quest_manager.WorldWideAssignTask(task_id, enforce_level_requirement);
}
void lua_world_wide_cast_spell(uint32 spell_id) {
quest_manager.WorldWideCastSpell(spell_id);
}
void lua_world_wide_disable_task(uint32 task_id) {
quest_manager.WorldWideDisableTask(task_id);
}
void lua_world_wide_enable_task(uint32 task_id) {
quest_manager.WorldWideEnableTask(task_id);
}
void lua_world_wide_fail_task(uint32 task_id) {
quest_manager.WorldWideFailTask(task_id);
}
void lua_world_wide_marquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
quest_manager.WorldWideMarquee(type, priority, fade_in, fade_out, duration, message);
}
void lua_world_wide_message(uint32 type, const char *message) {
quest_manager.WorldWideMessage(type, message);
}
void lua_world_wide_move(const char *zone_short_name) {
quest_manager.WorldWideMove(zone_short_name);
}
void lua_world_wide_move_instance(uint16 instance_id) {
quest_manager.WorldWideMoveInstance(instance_id);
}
void lua_world_wide_remove_spell(uint32 spell_id) {
quest_manager.WorldWideRemoveSpell(spell_id);
}
void lua_world_wide_remove_task(uint32 task_id) {
quest_manager.WorldWideRemoveTask(task_id);
}
void lua_world_wide_reset_activity(uint32 task_id, int activity_id) {
quest_manager.WorldWideResetActivity(task_id, activity_id);
}
void lua_world_wide_set_entity_variable_client(const char *variable_name, const char *variable_value) {
quest_manager.WorldWideSetEntityVariableClient(variable_name, variable_value);
}
void lua_world_wide_set_entity_variable_npc(const char *variable_name, const char *variable_value) {
quest_manager.WorldWideSetEntityVariableNPC(variable_name, variable_value);
}
void lua_world_wide_signal_client(uint32 signal) {
quest_manager.WorldWideSignalClient(signal);
}
void lua_world_wide_signal_npc(uint32 signal) {
quest_manager.WorldWideSignalNPC(signal);
}
void lua_world_wide_update_activity(uint32 task_id, int activity_id) {
quest_manager.WorldWideUpdateActivity(task_id, activity_id);
}
void lua_world_wide_update_activity(uint32 task_id, int activity_id, int activity_count) {
quest_manager.WorldWideUpdateActivity(task_id, activity_id, activity_count);
}
luabind::adl::object lua_get_qglobals(lua_State *L, Lua_NPC npc, Lua_Client client) {
@ -1942,11 +2194,26 @@ luabind::scope lua_register_general() {
luabind::def("cross_zone_assign_task_by_raid_id", (void(*)(int,uint32,bool))&lua_cross_zone_assign_task_by_raid_id),
luabind::def("cross_zone_assign_task_by_guild_id", (void(*)(int,uint32))&lua_cross_zone_assign_task_by_guild_id),
luabind::def("cross_zone_assign_task_by_guild_id", (void(*)(int,uint32,bool))&lua_cross_zone_assign_task_by_guild_id),
luabind::def("cross_zone_signal_client_by_char_id", &lua_cross_zone_signal_client_by_char_id),
luabind::def("cross_zone_signal_client_by_group_id", &lua_cross_zone_signal_client_by_group_id),
luabind::def("cross_zone_signal_client_by_raid_id", &lua_cross_zone_signal_client_by_raid_id),
luabind::def("cross_zone_signal_client_by_guild_id", &lua_cross_zone_signal_client_by_guild_id),
luabind::def("cross_zone_signal_client_by_name", &lua_cross_zone_signal_client_by_name),
luabind::def("cross_zone_cast_spell_by_char_id", &lua_cross_zone_cast_spell_by_char_id),
luabind::def("cross_zone_cast_spell_by_group_id", &lua_cross_zone_cast_spell_by_group_id),
luabind::def("cross_zone_cast_spell_by_raid_id", &lua_cross_zone_cast_spell_by_raid_id),
luabind::def("cross_zone_cast_spell_by_guild_id", &lua_cross_zone_cast_spell_by_guild_id),
luabind::def("cross_zone_disable_task_by_char_id", &lua_cross_zone_disable_task_by_char_id),
luabind::def("cross_zone_disable_task_by_group_id", &lua_cross_zone_disable_task_by_group_id),
luabind::def("cross_zone_disable_task_by_raid_id", &lua_cross_zone_disable_task_by_raid_id),
luabind::def("cross_zone_disable_task_by_guild_id", &lua_cross_zone_disable_task_by_guild_id),
luabind::def("cross_zone_enable_task_by_char_id", &lua_cross_zone_enable_task_by_char_id),
luabind::def("cross_zone_enable_task_by_group_id", &lua_cross_zone_enable_task_by_group_id),
luabind::def("cross_zone_enable_task_by_raid_id", &lua_cross_zone_enable_task_by_raid_id),
luabind::def("cross_zone_enable_task_by_guild_id", &lua_cross_zone_enable_task_by_guild_id),
luabind::def("cross_zone_fail_task_by_char_id", &lua_cross_zone_fail_task_by_char_id),
luabind::def("cross_zone_fail_task_by_group_id", &lua_cross_zone_fail_task_by_group_id),
luabind::def("cross_zone_fail_task_by_raid_id", &lua_cross_zone_fail_task_by_raid_id),
luabind::def("cross_zone_fail_task_by_guild_id", &lua_cross_zone_fail_task_by_guild_id),
luabind::def("cross_zone_marquee_by_char_id", &lua_cross_zone_marquee_by_char_id),
luabind::def("cross_zone_marquee_by_group_id", &lua_cross_zone_marquee_by_group_id),
luabind::def("cross_zone_marquee_by_raid_id", &lua_cross_zone_marquee_by_raid_id),
luabind::def("cross_zone_marquee_by_guild_id", &lua_cross_zone_marquee_by_guild_id),
luabind::def("cross_zone_message_player_by_name", &lua_cross_zone_message_player_by_name),
luabind::def("cross_zone_message_player_by_group_id", &lua_cross_zone_message_player_by_group_id),
luabind::def("cross_zone_message_player_by_raid_id", &lua_cross_zone_message_player_by_raid_id),
@ -1955,11 +2222,59 @@ luabind::scope lua_register_general() {
luabind::def("cross_zone_move_player_by_group_id", &lua_cross_zone_move_player_by_group_id),
luabind::def("cross_zone_move_player_by_raid_id", &lua_cross_zone_move_player_by_raid_id),
luabind::def("cross_zone_move_player_by_guild_id", &lua_cross_zone_move_player_by_guild_id),
luabind::def("cross_zone_move_instance_by_char_id", &lua_cross_zone_move_instance_by_char_id),
luabind::def("cross_zone_move_instance_by_group_id", &lua_cross_zone_move_instance_by_group_id),
luabind::def("cross_zone_move_instance_by_raid_id", &lua_cross_zone_move_instance_by_raid_id),
luabind::def("cross_zone_move_instance_by_guild_id", &lua_cross_zone_move_instance_by_guild_id),
luabind::def("cross_zone_remove_spell_by_char_id", &lua_cross_zone_remove_spell_by_char_id),
luabind::def("cross_zone_remove_spell_by_group_id", &lua_cross_zone_remove_spell_by_group_id),
luabind::def("cross_zone_remove_spell_by_raid_id", &lua_cross_zone_remove_spell_by_raid_id),
luabind::def("cross_zone_remove_spell_by_guild_id", &lua_cross_zone_remove_spell_by_guild_id),
luabind::def("cross_zone_remove_task_by_char_id", &lua_cross_zone_remove_task_by_char_id),
luabind::def("cross_zone_remove_task_by_group_id", &lua_cross_zone_remove_task_by_group_id),
luabind::def("cross_zone_remove_task_by_raid_id", &lua_cross_zone_remove_task_by_raid_id),
luabind::def("cross_zone_remove_task_by_guild_id", &lua_cross_zone_remove_task_by_guild_id),
luabind::def("cross_zone_reset_activity_by_char_id", &lua_cross_zone_reset_activity_by_char_id),
luabind::def("cross_zone_reset_activity_by_group_id", &lua_cross_zone_reset_activity_by_group_id),
luabind::def("cross_zone_reset_activity_by_raid_id", &lua_cross_zone_reset_activity_by_raid_id),
luabind::def("cross_zone_reset_activity_by_guild_id", &lua_cross_zone_reset_activity_by_guild_id),
luabind::def("cross_zone_set_entity_variable_by_client_name", &lua_cross_zone_set_entity_variable_by_client_name),
luabind::def("cross_zone_set_entity_variable_by_group_id", &lua_cross_zone_set_entity_variable_by_group_id),
luabind::def("cross_zone_set_entity_variable_by_raid_id", &lua_cross_zone_set_entity_variable_by_raid_id),
luabind::def("cross_zone_set_entity_variable_by_guild_id", &lua_cross_zone_set_entity_variable_by_guild_id),
luabind::def("cross_zone_signal_client_by_char_id", &lua_cross_zone_signal_client_by_char_id),
luabind::def("cross_zone_signal_client_by_group_id", &lua_cross_zone_signal_client_by_group_id),
luabind::def("cross_zone_signal_client_by_raid_id", &lua_cross_zone_signal_client_by_raid_id),
luabind::def("cross_zone_signal_client_by_guild_id", &lua_cross_zone_signal_client_by_guild_id),
luabind::def("cross_zone_signal_client_by_name", &lua_cross_zone_signal_client_by_name),
luabind::def("cross_zone_signal_npc_by_npctype_id", &lua_cross_zone_signal_npc_by_npctype_id),
luabind::def("cross_zone_update_activity_by_char_id", (void(*)(int,uint32,int))&lua_cross_zone_update_activity_by_char_id),
luabind::def("cross_zone_update_activity_by_char_id", (void(*)(int,uint32,int,int))&lua_cross_zone_update_activity_by_char_id),
luabind::def("cross_zone_update_activity_by_group_id", (void(*)(int,uint32,int))&lua_cross_zone_update_activity_by_group_id),
luabind::def("cross_zone_update_activity_by_group_id", (void(*)(int,uint32,int,int))&lua_cross_zone_update_activity_by_group_id),
luabind::def("cross_zone_update_activity_by_raid_id", (void(*)(int,uint32,int))&lua_cross_zone_update_activity_by_raid_id),
luabind::def("cross_zone_update_activity_by_raid_id", (void(*)(int,uint32,int,int))&lua_cross_zone_update_activity_by_raid_id),
luabind::def("cross_zone_update_activity_by_guild_id", (void(*)(int,uint32,int))&lua_cross_zone_update_activity_by_guild_id),
luabind::def("cross_zone_update_activity_by_guild_id", (void(*)(int,uint32,int,int))&lua_cross_zone_update_activity_by_guild_id),
luabind::def("world_wide_assign_task", (void(*)(uint32))&lua_world_wide_assign_task),
luabind::def("world_wide_assign_task", (void(*)(uint32,bool))&lua_world_wide_assign_task),
luabind::def("world_wide_cast_spell", &lua_world_wide_cast_spell),
luabind::def("world_wide_disable_task", &lua_world_wide_disable_task),
luabind::def("world_wide_enable_task", &lua_world_wide_enable_task),
luabind::def("world_wide_fail_task", &lua_world_wide_fail_task),
luabind::def("world_wide_marquee", &lua_world_wide_marquee),
luabind::def("world_wide_message", &lua_world_wide_message),
luabind::def("world_wide_move", &lua_world_wide_move),
luabind::def("world_wide_move_instance", &lua_world_wide_move_instance),
luabind::def("world_wide_remove_spell", &lua_world_wide_remove_spell),
luabind::def("world_wide_remove_task", &lua_world_wide_remove_task),
luabind::def("world_wide_reset_activity", &lua_world_wide_reset_activity),
luabind::def("world_wide_set_entity_variable_client", &lua_world_wide_set_entity_variable_client),
luabind::def("world_wide_set_entity_variable_npc", &lua_world_wide_set_entity_variable_npc),
luabind::def("world_wide_signal_client", &lua_world_wide_signal_client),
luabind::def("world_wide_signal_npc", &lua_world_wide_signal_npc),
luabind::def("world_wide_update_activity", (void(*)(uint32,int))&lua_world_wide_update_activity),
luabind::def("world_wide_update_activity", (void(*)(uint32,int,int))&lua_world_wide_update_activity),
luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_NPC,Lua_Client))&lua_get_qglobals),
luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_Client))&lua_get_qglobals),
luabind::def("get_qglobals", (luabind::adl::object(*)(lua_State*,Lua_NPC))&lua_get_qglobals),

View File

@ -1629,7 +1629,7 @@ int QuestManager::InsertQuestGlobal(int charid, int npcid, int zoneid, const cha
/* Create new qglobal data and update zone processes */
pack = new ServerPacket(ServerOP_QGlobalUpdate, sizeof(ServerQGlobalUpdate_Struct));
ServerQGlobalUpdate_Struct *qgu = (ServerQGlobalUpdate_Struct*)pack->pBuffer;
ServerQGlobalUpdate_Struct *qgu = (ServerQGlobalUpdate_Struct*) pack->pBuffer;
qgu->npc_id = npcid;
qgu->char_id = charid;
qgu->zone_id = zoneid;
@ -2745,7 +2745,7 @@ void QuestManager::UpdateSpawnTimer(uint32 id, uint32 newTime)
//Spawn wasn't in this zone...
//Tell the other zones to update their spawn time for this spawn point
auto pack = new ServerPacket(ServerOP_UpdateSpawn, sizeof(UpdateSpawnTimer_Struct));
UpdateSpawnTimer_Struct *ust = (UpdateSpawnTimer_Struct*)pack->pBuffer;
UpdateSpawnTimer_Struct *ust = (UpdateSpawnTimer_Struct*) pack->pBuffer;
ust->id = id;
ust->duration = newTime;
worldserver.SendPacket(pack);
@ -2865,7 +2865,7 @@ void QuestManager::UpdateInstanceTimer(uint16 instance_id, uint32 new_duration)
if (results.Success()) {
auto pack = new ServerPacket(ServerOP_InstanceUpdateTime, sizeof(ServerInstanceUpdateTime_Struct));
ServerInstanceUpdateTime_Struct *ut = (ServerInstanceUpdateTime_Struct*)pack->pBuffer;
ServerInstanceUpdateTime_Struct *ut = (ServerInstanceUpdateTime_Struct*) pack->pBuffer;
ut->instance_id = instance_id;
ut->new_duration = new_duration;
worldserver.SendPacket(pack);
@ -3273,9 +3273,9 @@ const char* QuestManager::GetZoneLongName(const char *zone) {
void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement) {
QuestManagerCurrentQuestVars();
if (RuleB(TaskSystem, EnableTaskSystem) && initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskAssign, sizeof(CZTaskAssign_Struct));
CZTaskAssign_Struct* CZTA = (CZTaskAssign_Struct*)pack->pBuffer;
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskAssignPlayer, sizeof(CZTaskAssignPlayer_Struct));
CZTaskAssignPlayer_Struct* CZTA = (CZTaskAssignPlayer_Struct*) pack->pBuffer;
CZTA->npc_entity_id = owner->GetID();
CZTA->character_id = character_id;
CZTA->task_id = task_id;
@ -3287,9 +3287,9 @@ void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id,
void QuestManager::CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement) {
QuestManagerCurrentQuestVars();
if (RuleB(TaskSystem, EnableTaskSystem) && initiator && owner) {
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskAssignGroup, sizeof(CZTaskAssignGroup_Struct));
CZTaskAssignGroup_Struct* CZTA = (CZTaskAssignGroup_Struct*)pack->pBuffer;
CZTaskAssignGroup_Struct* CZTA = (CZTaskAssignGroup_Struct*) pack->pBuffer;
CZTA->npc_entity_id = owner->GetID();
CZTA->group_id = group_id;
CZTA->task_id = task_id;
@ -3301,7 +3301,7 @@ void QuestManager::CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bo
void QuestManager::CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement) {
QuestManagerCurrentQuestVars();
if (RuleB(TaskSystem, EnableTaskSystem) && initiator && owner) {
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskAssignRaid, sizeof(CZTaskAssignRaid_Struct));
CZTaskAssignRaid_Struct* CZTA = (CZTaskAssignRaid_Struct*) pack->pBuffer;
CZTA->npc_entity_id = owner->GetID();
@ -3315,7 +3315,7 @@ void QuestManager::CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool
void QuestManager::CrossZoneAssignTaskByGuildID(int guild_id, uint32 task_id, bool enforce_level_requirement) {
QuestManagerCurrentQuestVars();
if (RuleB(TaskSystem, EnableTaskSystem) && initiator && owner) {
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskAssignGuild, sizeof(CZTaskAssignGuild_Struct));
CZTaskAssignGuild_Struct* CZTA = (CZTaskAssignGuild_Struct*) pack->pBuffer;
CZTA->npc_entity_id = owner->GetID();
@ -3327,108 +3327,256 @@ void QuestManager::CrossZoneAssignTaskByGuildID(int guild_id, uint32 task_id, bo
}
}
void QuestManager::CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalNPC, sizeof(CZNPCSignal_Struct));
CZNPCSignal_Struct* CZSN = (CZNPCSignal_Struct*)pack->pBuffer;
CZSN->npctype_id = npctype_id;
CZSN->data = data;
void QuestManager::CrossZoneCastSpellByCharID(int character_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZCastSpellPlayer, sizeof(CZCastSpellPlayer_Struct));
CZCastSpellPlayer_Struct* CZCS = (CZCastSpellPlayer_Struct*) pack->pBuffer;
CZCS->character_id = character_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByCharID(int charid, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalClient, sizeof(CZClientSignal_Struct));
CZClientSignal_Struct* CZSC = (CZClientSignal_Struct*) pack->pBuffer;
CZSC->charid = charid;
CZSC->data = data;
void QuestManager::CrossZoneCastSpellByGroupID(int group_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZCastSpellGroup, sizeof(CZCastSpellGroup_Struct));
CZCastSpellGroup_Struct* CZCS = (CZCastSpellGroup_Struct*) pack->pBuffer;
CZCS->group_id = group_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByGroupID(int group_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalGroup, sizeof(CZGroupSignal_Struct));
CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*) pack->pBuffer;
CZGS->group_id = group_id;
CZGS->data = data;
void QuestManager::CrossZoneCastSpellByRaidID(int raid_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZCastSpellRaid, sizeof(CZCastSpellRaid_Struct));
CZCastSpellRaid_Struct* CZCS = (CZCastSpellRaid_Struct*) pack->pBuffer;
CZCS->raid_id = raid_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByRaidID(int raid_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalRaid, sizeof(CZRaidSignal_Struct));
CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*) pack->pBuffer;
CZRS->raid_id = raid_id;
CZRS->data = data;
void QuestManager::CrossZoneCastSpellByGuildID(int guild_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZCastSpellGuild, sizeof(CZCastSpellGuild_Struct));
CZCastSpellGuild_Struct* CZCS = (CZCastSpellGuild_Struct*) pack->pBuffer;
CZCS->guild_id = guild_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByGuildID(int guild_id, uint32 data){
auto pack = new ServerPacket(ServerOP_CZSignalGuild, sizeof(CZGuildSignal_Struct));
CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*) pack->pBuffer;
CZGS->guild_id = guild_id;
CZGS->data = data;
void QuestManager::CrossZoneDisableTaskByCharID(int character_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskDisablePlayer, sizeof(CZTaskDisablePlayer_Struct));
CZTaskDisablePlayer_Struct* CZTD = (CZTaskDisablePlayer_Struct*) pack->pBuffer;
CZTD->character_id = character_id;
CZTD->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByName(const char *CharName, uint32 data){
uint32 message_len = strlen(CharName) + 1;
auto pack = new ServerPacket(ServerOP_CZSignalClientByName, sizeof(CZClientSignalByName_Struct) + message_len);
CZClientSignalByName_Struct* CZSC = (CZClientSignalByName_Struct*) pack->pBuffer;
strn0cpy(CZSC->Name, CharName, 64);
CZSC->data = data;
void QuestManager::CrossZoneDisableTaskByGroupID(int group_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskDisableGroup, sizeof(CZTaskDisableGroup_Struct));
CZTaskDisableGroup_Struct* CZTD = (CZTaskDisableGroup_Struct*) pack->pBuffer;
CZTD->group_id = group_id;
CZTD->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByName(uint32 Type, const char *CharName, const char *Message){
uint32 message_len = strlen(CharName) + 1;
uint32 message_len2 = strlen(Message) + 1;
auto pack =
new ServerPacket(ServerOP_CZMessagePlayer, sizeof(CZMessagePlayer_Struct) + message_len + message_len2);
void QuestManager::CrossZoneDisableTaskByRaidID(int raid_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskDisableRaid, sizeof(CZTaskDisableRaid_Struct));
CZTaskDisableRaid_Struct* CZTD = (CZTaskDisableRaid_Struct*) pack->pBuffer;
CZTD->raid_id = raid_id;
CZTD->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneDisableTaskByGuildID(int guild_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskDisableGuild, sizeof(CZTaskDisableGuild_Struct));
CZTaskDisableGuild_Struct* CZTD = (CZTaskDisableGuild_Struct*) pack->pBuffer;
CZTD->guild_id = guild_id;
CZTD->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneEnableTaskByCharID(int character_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskEnablePlayer, sizeof(CZTaskEnablePlayer_Struct));
CZTaskEnablePlayer_Struct* CZTE = (CZTaskEnablePlayer_Struct*) pack->pBuffer;
CZTE->character_id = character_id;
CZTE->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneEnableTaskByGroupID(int group_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskEnableGroup, sizeof(CZTaskEnableGroup_Struct));
CZTaskEnableGroup_Struct* CZTE = (CZTaskEnableGroup_Struct*) pack->pBuffer;
CZTE->group_id = group_id;
CZTE->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneEnableTaskByRaidID(int raid_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskEnableRaid, sizeof(CZTaskEnableRaid_Struct));
CZTaskEnableRaid_Struct* CZTE = (CZTaskEnableRaid_Struct*) pack->pBuffer;
CZTE->raid_id = raid_id;
CZTE->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneEnableTaskByGuildID(int guild_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskEnableGuild, sizeof(CZTaskEnableGuild_Struct));
CZTaskEnableGuild_Struct* CZTE = (CZTaskEnableGuild_Struct*) pack->pBuffer;
CZTE->guild_id = guild_id;
CZTE->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneFailTaskByCharID(int character_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskFailPlayer, sizeof(CZTaskFailPlayer_Struct));
CZTaskFailPlayer_Struct* CZTF = (CZTaskFailPlayer_Struct*) pack->pBuffer;
CZTF->character_id = character_id;
CZTF->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneFailTaskByGroupID(int group_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskFailGroup, sizeof(CZTaskFailGroup_Struct));
CZTaskFailGroup_Struct* CZTF = (CZTaskFailGroup_Struct*) pack->pBuffer;
CZTF->group_id = group_id;
CZTF->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneFailTaskByRaidID(int raid_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskFailRaid, sizeof(CZTaskFailRaid_Struct));
CZTaskFailRaid_Struct* CZTF = (CZTaskFailRaid_Struct*) pack->pBuffer;
CZTF->raid_id = raid_id;
CZTF->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneFailTaskByGuildID(int guild_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskFailGuild, sizeof(CZTaskFailGuild_Struct));
CZTaskFailGuild_Struct* CZTF = (CZTaskFailGuild_Struct*) pack->pBuffer;
CZTF->guild_id = guild_id;
CZTF->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMarqueeByCharID(int character_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMarqueePlayer, sizeof(CZMarqueePlayer_Struct) + message_len);
CZMarqueePlayer_Struct* CZMS = (CZMarqueePlayer_Struct*) pack->pBuffer;
CZMS->character_id = character_id;
CZMS->type = type;
CZMS->priority = priority;
CZMS->fade_in = fade_in;
CZMS->fade_out = fade_out;
CZMS->duration = duration;
strn0cpy(CZMS->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMarqueeByGroupID(int group_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMarqueeGroup, sizeof(CZMarqueeGroup_Struct) + message_len);
CZMarqueeGroup_Struct* CZMS = (CZMarqueeGroup_Struct*) pack->pBuffer;
CZMS->group_id = group_id;
CZMS->type = type;
CZMS->priority = priority;
CZMS->fade_in = fade_in;
CZMS->fade_out = fade_out;
CZMS->duration = duration;
strn0cpy(CZMS->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMarqueeByRaidID(int raid_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMarqueeRaid, sizeof(CZMarqueeRaid_Struct) + message_len);
CZMarqueeRaid_Struct* CZMS = (CZMarqueeRaid_Struct*) pack->pBuffer;
CZMS->raid_id = raid_id;
CZMS->type = type;
CZMS->priority = priority;
CZMS->fade_in = fade_in;
CZMS->fade_out = fade_out;
CZMS->duration = duration;
strn0cpy(CZMS->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMarqueeByGuildID(int guild_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMarqueeGuild, sizeof(CZMarqueeGuild_Struct) + message_len);
CZMarqueeGuild_Struct* CZMS = (CZMarqueeGuild_Struct*) pack->pBuffer;
CZMS->guild_id = guild_id;
CZMS->type = type;
CZMS->priority = priority;
CZMS->fade_in = fade_in;
CZMS->fade_out = fade_out;
CZMS->duration = duration;
strn0cpy(CZMS->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByName(uint32 type, const char *character_name, const char *message) {
uint32 message_len = strlen(character_name) + 1;
uint32 message_len2 = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessagePlayer, sizeof(CZMessagePlayer_Struct) + message_len + message_len2);
CZMessagePlayer_Struct* CZSC = (CZMessagePlayer_Struct*) pack->pBuffer;
CZSC->Type = Type;
strn0cpy(CZSC->CharName, CharName, 64);
strn0cpy(CZSC->Message, Message, 512);
CZSC->type = type;
strn0cpy(CZSC->character_name, character_name, 64);
strn0cpy(CZSC->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByGroupID(uint32 Type, int GroupID, const char *Message){
uint32 message_len = strlen(Message) + 1;
void QuestManager::CrossZoneMessagePlayerByGroupID(uint32 type, int group_id, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageGroup, sizeof(CZMessageGroup_Struct) + message_len);
CZMessageGroup_Struct* CZGM = (CZMessageGroup_Struct*) pack->pBuffer;
CZGM->Type = Type;
CZGM->GroupID = GroupID;
strn0cpy(CZGM->Message, Message, 512);
CZGM->type = type;
CZGM->group_id = group_id;
strn0cpy(CZGM->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByRaidID(uint32 Type, int RaidID, const char *Message){
uint32 message_len = strlen(Message) + 1;
void QuestManager::CrossZoneMessagePlayerByRaidID(uint32 type, int raid_id, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageRaid, sizeof(CZMessageRaid_Struct) + message_len);
CZMessageRaid_Struct* CZRM = (CZMessageRaid_Struct*) pack->pBuffer;
CZRM->Type = Type;
CZRM->RaidID = RaidID;
strn0cpy(CZRM->Message, Message, 512);
CZRM->type = type;
CZRM->raid_id = raid_id;
strn0cpy(CZRM->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMessagePlayerByGuildID(uint32 Type, int GuildID, const char *Message){
uint32 message_len = strlen(Message) + 1;
void QuestManager::CrossZoneMessagePlayerByGuildID(uint32 type, int guild_id, const char *message) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_CZMessageGuild, sizeof(CZMessageGuild_Struct) + message_len);
CZMessageGuild_Struct* CZGM = (CZMessageGuild_Struct*) pack->pBuffer;
CZGM->Type = Type;
CZGM->GuildID = GuildID;
strn0cpy(CZGM->Message, Message, 512);
CZGM->type = type;
CZGM->guild_id = guild_id;
strn0cpy(CZGM->message, message, 512);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMovePlayerByCharID(int character_id, const char *zone_short_name){
void QuestManager::CrossZoneMovePlayerByCharID(int character_id, const char *zone_short_name) {
uint32 message_len = strlen(zone_short_name) + 1;
auto pack = new ServerPacket(ServerOP_CZMovePlayer, sizeof(CZMovePlayer_Struct) + message_len);
CZMovePlayer_Struct* CZGM = (CZMovePlayer_Struct*) pack->pBuffer;
@ -3438,7 +3586,7 @@ void QuestManager::CrossZoneMovePlayerByCharID(int character_id, const char *zon
safe_delete(pack);
}
void QuestManager::CrossZoneMovePlayerByGroupID(int group_id, const char *zone_short_name){
void QuestManager::CrossZoneMovePlayerByGroupID(int group_id, const char *zone_short_name) {
uint32 message_len = strlen(zone_short_name) + 1;
auto pack = new ServerPacket(ServerOP_CZMoveGroup, sizeof(CZMoveGroup_Struct) + message_len);
CZMoveGroup_Struct* CZGM = (CZMoveGroup_Struct*) pack->pBuffer;
@ -3448,7 +3596,7 @@ void QuestManager::CrossZoneMovePlayerByGroupID(int group_id, const char *zone_s
safe_delete(pack);
}
void QuestManager::CrossZoneMovePlayerByRaidID(int raid_id, const char *zone_short_name){
void QuestManager::CrossZoneMovePlayerByRaidID(int raid_id, const char *zone_short_name) {
uint32 message_len = strlen(zone_short_name) + 1;
auto pack = new ServerPacket(ServerOP_CZMoveRaid, sizeof(CZMoveRaid_Struct) + message_len);
CZMoveRaid_Struct* CZRM = (CZMoveRaid_Struct*) pack->pBuffer;
@ -3458,7 +3606,7 @@ void QuestManager::CrossZoneMovePlayerByRaidID(int raid_id, const char *zone_sho
safe_delete(pack);
}
void QuestManager::CrossZoneMovePlayerByGuildID(int guild_id, const char *zone_short_name){
void QuestManager::CrossZoneMovePlayerByGuildID(int guild_id, const char *zone_short_name) {
uint32 message_len = strlen(zone_short_name) + 1;
auto pack = new ServerPacket(ServerOP_CZMoveGuild, sizeof(CZMoveGuild_Struct) + message_len);
CZMoveGuild_Struct* CZGM = (CZMoveGuild_Struct*) pack->pBuffer;
@ -3468,79 +3616,523 @@ void QuestManager::CrossZoneMovePlayerByGuildID(int guild_id, const char *zone_s
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByClientName(const char *CharName, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
uint32 message_len3 = strlen(CharName) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByClientName,
sizeof(CZSetEntVarByClientName_Struct) + message_len + message_len2 + message_len3);
CZSetEntVarByClientName_Struct* CZ = (CZSetEntVarByClientName_Struct*)pack->pBuffer;
strn0cpy(CZ->CharName, CharName, 64);
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
void QuestManager::CrossZoneMoveInstanceByCharID(int character_id, uint16 instance_id) {
auto pack = new ServerPacket(ServerOP_CZMoveInstancePlayer, sizeof(CZMoveInstancePlayer_Struct));
CZMoveInstancePlayer_Struct* CZMS = (CZMoveInstancePlayer_Struct*) pack->pBuffer;
CZMS->character_id = character_id;
CZMS->instance_id = instance_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByGroupID(int group_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
void QuestManager::CrossZoneMoveInstanceByGroupID(int group_id, uint16 instance_id) {
auto pack = new ServerPacket(ServerOP_CZMoveInstanceGroup, sizeof(CZMoveInstanceGroup_Struct));
CZMoveInstanceGroup_Struct* CZMS = (CZMoveInstanceGroup_Struct*) pack->pBuffer;
CZMS->group_id = group_id;
CZMS->instance_id = instance_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMoveInstanceByRaidID(int raid_id, uint16 instance_id) {
auto pack = new ServerPacket(ServerOP_CZMoveInstanceRaid, sizeof(CZMoveInstanceRaid_Struct));
CZMoveInstanceRaid_Struct* CZMS = (CZMoveInstanceRaid_Struct*) pack->pBuffer;
CZMS->raid_id = raid_id;
CZMS->instance_id = instance_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneMoveInstanceByGuildID(int guild_id, uint16 instance_id) {
auto pack = new ServerPacket(ServerOP_CZMoveInstanceGuild, sizeof(CZMoveInstanceGuild_Struct));
CZMoveInstanceGuild_Struct* CZMS = (CZMoveInstanceGuild_Struct*) pack->pBuffer;
CZMS->guild_id = guild_id;
CZMS->instance_id = instance_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveSpellByCharID(int character_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZRemoveSpellPlayer, sizeof(CZRemoveSpellPlayer_Struct));
CZRemoveSpellPlayer_Struct* CZCS = (CZRemoveSpellPlayer_Struct*) pack->pBuffer;
CZCS->character_id = character_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveSpellByGroupID(int group_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZRemoveSpellGroup, sizeof(CZRemoveSpellGroup_Struct));
CZRemoveSpellGroup_Struct* CZCS = (CZRemoveSpellGroup_Struct*) pack->pBuffer;
CZCS->group_id = group_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveSpellByRaidID(int raid_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZRemoveSpellRaid, sizeof(CZRemoveSpellRaid_Struct));
CZRemoveSpellRaid_Struct* CZCS = (CZRemoveSpellRaid_Struct*) pack->pBuffer;
CZCS->raid_id = raid_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveSpellByGuildID(int guild_id, uint32 spell_id) {
auto pack = new ServerPacket(ServerOP_CZRemoveSpellGuild, sizeof(CZRemoveSpellGuild_Struct));
CZRemoveSpellGuild_Struct* CZCS = (CZRemoveSpellGuild_Struct*) pack->pBuffer;
CZCS->guild_id = guild_id;
CZCS->spell_id = spell_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveTaskByCharID(int character_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskRemovePlayer, sizeof(CZTaskRemovePlayer_Struct));
CZTaskRemovePlayer_Struct* CZCS = (CZTaskRemovePlayer_Struct*) pack->pBuffer;
CZCS->character_id = character_id;
CZCS->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveTaskByGroupID(int group_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskRemoveGroup, sizeof(CZTaskRemoveGroup_Struct));
CZTaskRemoveGroup_Struct* CZCS = (CZTaskRemoveGroup_Struct*) pack->pBuffer;
CZCS->group_id = group_id;
CZCS->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveTaskByRaidID(int raid_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskRemoveRaid, sizeof(CZTaskRemoveRaid_Struct));
CZTaskRemoveRaid_Struct* CZCS = (CZTaskRemoveRaid_Struct*) pack->pBuffer;
CZCS->raid_id = raid_id;
CZCS->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneRemoveTaskByGuildID(int guild_id, uint32 task_id) {
auto pack = new ServerPacket(ServerOP_CZTaskRemoveGuild, sizeof(CZTaskRemoveGuild_Struct));
CZTaskRemoveGuild_Struct* CZCS = (CZTaskRemoveGuild_Struct*) pack->pBuffer;
CZCS->guild_id = guild_id;
CZCS->task_id = task_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneResetActivityByCharID(int character_id, uint32 task_id, int activity_id) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityResetPlayer, sizeof(CZResetActivityPlayer_Struct));
CZResetActivityPlayer_Struct* CZCA = (CZResetActivityPlayer_Struct*) pack->pBuffer;
CZCA->character_id = character_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneResetActivityByGroupID(int group_id, uint32 task_id, int activity_id) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityResetGroup, sizeof(CZResetActivityGroup_Struct));
CZResetActivityGroup_Struct* CZCA = (CZResetActivityGroup_Struct*) pack->pBuffer;
CZCA->group_id = group_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneResetActivityByRaidID(int raid_id, uint32 task_id, int activity_id) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityResetRaid, sizeof(CZResetActivityRaid_Struct));
CZResetActivityRaid_Struct* CZCA = (CZResetActivityRaid_Struct*) pack->pBuffer;
CZCA->raid_id = raid_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneResetActivityByGuildID(int guild_id, uint32 task_id, int activity_id) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityResetGuild, sizeof(CZResetActivityGuild_Struct));
CZResetActivityGuild_Struct* CZCA = (CZResetActivityGuild_Struct*) pack->pBuffer;
CZCA->guild_id = guild_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 signal) {
auto pack = new ServerPacket(ServerOP_CZSignalNPC, sizeof(CZNPCSignal_Struct));
CZNPCSignal_Struct* CZSN = (CZNPCSignal_Struct*) pack->pBuffer;
CZSN->npctype_id = npctype_id;
CZSN->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByCharID(int character_id, uint32 signal) {
auto pack = new ServerPacket(ServerOP_CZSignalClient, sizeof(CZClientSignal_Struct));
CZClientSignal_Struct* CZSC = (CZClientSignal_Struct*) pack->pBuffer;
CZSC->character_id = character_id;
CZSC->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByClientName(const char *character_name, const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
uint32 message_len3 = strlen(character_name) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByClientName, sizeof(CZSetEntVarByClientName_Struct) + message_len + message_len2 + message_len3);
CZSetEntVarByClientName_Struct* CZ = (CZSetEntVarByClientName_Struct*) pack->pBuffer;
strn0cpy(CZ->character_name, character_name, 64);
strn0cpy(CZ->variable_name, variable_name, 256);
strn0cpy(CZ->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByGroupID(int group_id, const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByGroupID, sizeof(CZSetEntVarByGroupID_Struct) + message_len + message_len2);
CZSetEntVarByGroupID_Struct* CZ = (CZSetEntVarByGroupID_Struct*)pack->pBuffer;
CZSetEntVarByGroupID_Struct* CZ = (CZSetEntVarByGroupID_Struct*) pack->pBuffer;
CZ->group_id = group_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
strn0cpy(CZ->variable_name, variable_name, 256);
strn0cpy(CZ->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByRaidID(int raid_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
void QuestManager::CrossZoneSetEntityVariableByRaidID(int raid_id, const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByRaidID, sizeof(CZSetEntVarByRaidID_Struct) + message_len + message_len2);
CZSetEntVarByRaidID_Struct* CZ = (CZSetEntVarByRaidID_Struct*)pack->pBuffer;
CZSetEntVarByRaidID_Struct* CZ = (CZSetEntVarByRaidID_Struct*) pack->pBuffer;
CZ->raid_id = raid_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
strn0cpy(CZ->variable_name, variable_name, 256);
strn0cpy(CZ->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByGuildID(int guild_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
void QuestManager::CrossZoneSetEntityVariableByGuildID(int guild_id, const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByGuildID, sizeof(CZSetEntVarByGuildID_Struct) + message_len + message_len2);
CZSetEntVarByGuildID_Struct* CZ = (CZSetEntVarByGuildID_Struct*)pack->pBuffer;
CZSetEntVarByGuildID_Struct* CZ = (CZSetEntVarByGuildID_Struct*) pack->pBuffer;
CZ->guild_id = guild_id;
strn0cpy(CZ->id, id, 256);
strn0cpy(CZ->m_var, m_var, 256);
strn0cpy(CZ->variable_name, variable_name, 256);
strn0cpy(CZ->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var){
uint32 message_len = strlen(id) + 1;
uint32 message_len2 = strlen(m_var) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByNPCTypeID,
sizeof(CZSetEntVarByNPCTypeID_Struct) + message_len + message_len2);
CZSetEntVarByNPCTypeID_Struct* CZSNBYNID = (CZSetEntVarByNPCTypeID_Struct*)pack->pBuffer;
void QuestManager::CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_CZSetEntityVariableByNPCTypeID, sizeof(CZSetEntVarByNPCTypeID_Struct) + message_len + message_len2);
CZSetEntVarByNPCTypeID_Struct* CZSNBYNID = (CZSetEntVarByNPCTypeID_Struct*) pack->pBuffer;
CZSNBYNID->npctype_id = npctype_id;
strn0cpy(CZSNBYNID->id, id, 256);
strn0cpy(CZSNBYNID->m_var, m_var, 256);
strn0cpy(CZSNBYNID->variable_name, variable_name, 256);
strn0cpy(CZSNBYNID->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideMarquee(uint32 Type, uint32 Priority, uint32 FadeIn, uint32 FadeOut, uint32 Duration, const char *Message) {
uint32 message_len = strlen(Message) + 1;
void QuestManager::CrossZoneSignalPlayerByGroupID(int group_id, uint32 signal) {
auto pack = new ServerPacket(ServerOP_CZSignalGroup, sizeof(CZGroupSignal_Struct));
CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*) pack->pBuffer;
CZGS->group_id = group_id;
CZGS->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByRaidID(int raid_id, uint32 signal) {
auto pack = new ServerPacket(ServerOP_CZSignalRaid, sizeof(CZRaidSignal_Struct));
CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*) pack->pBuffer;
CZRS->raid_id = raid_id;
CZRS->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByGuildID(int guild_id, uint32 signal) {
auto pack = new ServerPacket(ServerOP_CZSignalGuild, sizeof(CZGuildSignal_Struct));
CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*) pack->pBuffer;
CZGS->guild_id = guild_id;
CZGS->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneSignalPlayerByName(const char *character_name, uint32 signal) {
uint32 message_len = strlen(character_name) + 1;
auto pack = new ServerPacket(ServerOP_CZSignalClientByName, sizeof(CZClientSignalByName_Struct) + message_len);
CZClientSignalByName_Struct* CZSC = (CZClientSignalByName_Struct*) pack->pBuffer;
strn0cpy(CZSC->character_name, character_name, 64);
CZSC->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::CrossZoneUpdateActivityByCharID(int character_id, uint32 task_id, int activity_id, int activity_count) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityUpdatePlayer, sizeof(CZTaskActivityUpdatePlayer_Struct));
CZTaskActivityUpdatePlayer_Struct* CZCA = (CZTaskActivityUpdatePlayer_Struct*) pack->pBuffer;
CZCA->character_id = character_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
CZCA->activity_count = activity_count;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneUpdateActivityByGroupID(int group_id, uint32 task_id, int activity_id, int activity_count) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityUpdateGroup, sizeof(CZTaskActivityUpdateGroup_Struct));
CZTaskActivityUpdateGroup_Struct* CZCA = (CZTaskActivityUpdateGroup_Struct*) pack->pBuffer;
CZCA->group_id = group_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
CZCA->activity_count = activity_count;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneUpdateActivityByRaidID(int raid_id, uint32 task_id, int activity_id, int activity_count) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityUpdateRaid, sizeof(CZTaskActivityUpdateRaid_Struct));
CZTaskActivityUpdateRaid_Struct* CZCA = (CZTaskActivityUpdateRaid_Struct*) pack->pBuffer;
CZCA->raid_id = raid_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
CZCA->activity_count = activity_count;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::CrossZoneUpdateActivityByGuildID(int guild_id, uint32 task_id, int activity_id, int activity_count) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_CZTaskActivityUpdateGuild, sizeof(CZTaskActivityUpdateGuild_Struct));
CZTaskActivityUpdateGuild_Struct* CZCA = (CZTaskActivityUpdateGuild_Struct*) pack->pBuffer;
CZCA->guild_id = guild_id;
CZCA->task_id = task_id;
CZCA->activity_id = activity_id;
CZCA->activity_count = activity_count;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_WWAssignTask, sizeof(WWAssignTask_Struct));
WWAssignTask_Struct* WWTA = (WWAssignTask_Struct*) pack->pBuffer;
WWTA->npc_entity_id = owner->GetID();
WWTA->task_id = task_id;
WWTA->enforce_level_requirement = enforce_level_requirement;
WWTA->min_status = min_status;
WWTA->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
}
void QuestManager::WorldWideCastSpell(uint32 spell_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWCastSpell, sizeof(WWCastSpell_Struct));
WWCastSpell_Struct* WWCS = (WWCastSpell_Struct*) pack->pBuffer;
WWCS->spell_id = spell_id;
WWCS->min_status = min_status;
WWCS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideDisableTask(uint32 task_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWDisableTask, sizeof(WWDisableTask_Struct));
WWDisableTask_Struct* WWDT = (WWDisableTask_Struct*) pack->pBuffer;
WWDT->task_id = task_id;
WWDT->min_status = min_status;
WWDT->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideEnableTask(uint32 task_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWEnableTask, sizeof(WWEnableTask_Struct));
WWEnableTask_Struct* WWET = (WWEnableTask_Struct*) pack->pBuffer;
WWET->task_id = task_id;
WWET->min_status = min_status;
WWET->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideFailTask(uint32 task_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWFailTask, sizeof(WWFailTask_Struct));
WWFailTask_Struct* WWFT = (WWFailTask_Struct*) pack->pBuffer;
WWFT->task_id = task_id;
WWFT->min_status = min_status;
WWFT->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideMarquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message, uint8 min_status, uint8 max_status) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_WWMarquee, sizeof(WWMarquee_Struct) + message_len);
WWMarquee_Struct* WWMS = (WWMarquee_Struct*) pack->pBuffer;
WWMS->Type = Type;
WWMS->Priority = Priority;
WWMS->FadeIn = FadeIn;
WWMS->FadeOut = FadeOut;
WWMS->Duration = Duration;
strn0cpy(WWMS->Message, Message, 512);
WWMS->type = type;
WWMS->priority = priority;
WWMS->fade_in = fade_in;
WWMS->fade_out = fade_out;
WWMS->duration = duration;
strn0cpy(WWMS->message, message, 512);
WWMS->min_status = min_status;
WWMS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideMessage(uint32 type, const char *message, uint8 min_status, uint8 max_status) {
uint32 message_len = strlen(message) + 1;
auto pack = new ServerPacket(ServerOP_WWMessage, sizeof(WWMessage_Struct) + message_len);
WWMessage_Struct* WWMS = (WWMessage_Struct*) pack->pBuffer;
WWMS->type = type;
strn0cpy(WWMS->message, message, 512);
WWMS->min_status = min_status;
WWMS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideMove(const char *zone_short_name, uint8 min_status, uint8 max_status) {
uint32 message_len = strlen(zone_short_name) + 1;
auto pack = new ServerPacket(ServerOP_WWMove, sizeof(WWMove_Struct) + message_len);
WWMove_Struct* WWMS = (WWMove_Struct*) pack->pBuffer;;
strn0cpy(WWMS->zone_short_name, zone_short_name, 32);
WWMS->min_status = min_status;
WWMS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideMoveInstance(uint16 instance_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWMoveInstance, sizeof(WWMoveInstance_Struct));
WWMoveInstance_Struct* WWMS = (WWMoveInstance_Struct*) pack->pBuffer;
WWMS->instance_id = instance_id;
WWMS->min_status = min_status;
WWMS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideRemoveSpell(uint32 spell_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWRemoveSpell, sizeof(WWRemoveSpell_Struct));
WWRemoveSpell_Struct* WWRS = (WWRemoveSpell_Struct*) pack->pBuffer;
WWRS->spell_id = spell_id;
WWRS->min_status = min_status;
WWRS->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideRemoveTask(uint32 task_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWRemoveTask, sizeof(WWRemoveTask_Struct));
WWRemoveTask_Struct* WWRT = (WWRemoveTask_Struct*) pack->pBuffer;
WWRT->task_id = task_id;
WWRT->min_status = min_status;
WWRT->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideResetActivity(uint32 task_id, int activity_id, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWResetActivity, sizeof(WWResetActivity_Struct));
WWResetActivity_Struct* WWRA = (WWResetActivity_Struct*) pack->pBuffer;
WWRA->task_id = task_id;
WWRA->activity_id = activity_id;
WWRA->min_status = min_status;
WWRA->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideSetEntityVariableClient(const char *variable_name, const char *variable_value, uint8 min_status, uint8 max_status) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_WWSetEntityVariableClient, sizeof(WWSetEntVarClient_Struct) + message_len + message_len2);
WWSetEntVarClient_Struct* WWSC = (WWSetEntVarClient_Struct*) pack->pBuffer;
strn0cpy(WWSC->variable_name, variable_name, 256);
strn0cpy(WWSC->variable_value, variable_value, 256);
WWSC->min_status = min_status;
WWSC->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideSetEntityVariableNPC(const char *variable_name, const char *variable_value) {
uint32 message_len = strlen(variable_name) + 1;
uint32 message_len2 = strlen(variable_value) + 1;
auto pack = new ServerPacket(ServerOP_WWSetEntityVariableNPC, sizeof(WWSetEntVarNPC_Struct) + message_len + message_len2);
WWSetEntVarNPC_Struct* WWSN = (WWSetEntVarNPC_Struct*) pack->pBuffer;
strn0cpy(WWSN->variable_name, variable_name, 256);
strn0cpy(WWSN->variable_value, variable_value, 256);
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideSignalClient(uint32 signal, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWSignalClient, sizeof(WWSignalClient_Struct));
WWSignalClient_Struct* WWSC = (WWSignalClient_Struct*) pack->pBuffer;
WWSC->signal = signal;
WWSC->min_status = min_status;
WWSC->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideSignalNPC(uint32 signal) {
auto pack = new ServerPacket(ServerOP_WWSignalNPC, sizeof(WWSignalNPC_Struct));
WWSignalNPC_Struct* WWSN = (WWSignalNPC_Struct*) pack->pBuffer;
WWSN->signal = signal;
worldserver.SendPacket(pack);
safe_delete(pack);
}
void QuestManager::WorldWideUpdateActivity(uint32 task_id, int activity_id, int activity_count, uint8 min_status, uint8 max_status) {
auto pack = new ServerPacket(ServerOP_WWUpdateActivity, sizeof(WWUpdateActivity_Struct));
WWUpdateActivity_Struct* WWUA = (WWUpdateActivity_Struct*) pack->pBuffer;
WWUA->task_id = task_id;
WWUA->activity_id = activity_id;
WWUA->activity_count = activity_count;
WWUA->min_status = min_status;
WWUA->max_status = max_status;
worldserver.SendPacket(pack);
safe_delete(pack);
}

View File

@ -284,26 +284,82 @@ public:
void CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByGuildID(int guild_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneSignalPlayerByCharID(int charid, uint32 data);
void CrossZoneSignalPlayerByGroupID(int group_id, uint32 data);
void CrossZoneSignalPlayerByRaidID(int raid_id, uint32 data);
void CrossZoneSignalPlayerByGuildID(int guild_id, uint32 data);
void CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 data);
void CrossZoneSignalPlayerByName(const char *CharName, uint32 data);
void CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByClientName(const char *CharName, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByGroupID(int group_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByRaidID(int raid_id, const char *id, const char *m_var);
void CrossZoneSetEntityVariableByGuildID(int guild_id, const char *id, const char *m_var);
void CrossZoneMessagePlayerByName(uint32 Type, const char *CharName, const char *Message);
void CrossZoneMessagePlayerByGroupID(uint32 Type, int GroupID, const char *Message);
void CrossZoneMessagePlayerByRaidID(uint32 Type, int RaidID, const char *Message);
void CrossZoneMessagePlayerByGuildID(uint32 Type, int GuildID, const char *Message);
void CrossZoneCastSpellByCharID(int character_id, uint32 spell_id);
void CrossZoneCastSpellByGroupID(int group_id, uint32 spell_id);
void CrossZoneCastSpellByRaidID(int raid_id, uint32 spell_id);
void CrossZoneCastSpellByGuildID(int guild_id, uint32 spell_id);
void CrossZoneDisableTaskByCharID(int character_id, uint32 task_id);
void CrossZoneDisableTaskByGroupID(int group_id, uint32 task_id);
void CrossZoneDisableTaskByRaidID(int raid_id, uint32 task_id);
void CrossZoneDisableTaskByGuildID(int guild_id, uint32 task_id);
void CrossZoneEnableTaskByCharID(int character_id, uint32 task_id);
void CrossZoneEnableTaskByGroupID(int group_id, uint32 task_id);
void CrossZoneEnableTaskByRaidID(int raid_id, uint32 task_id);
void CrossZoneEnableTaskByGuildID(int guild_id, uint32 task_id);
void CrossZoneFailTaskByCharID(int character_id, uint32 task_id);
void CrossZoneFailTaskByGroupID(int group_id, uint32 task_id);
void CrossZoneFailTaskByRaidID(int raid_id, uint32 task_id);
void CrossZoneFailTaskByGuildID(int guild_id, uint32 task_id);
void CrossZoneMarqueeByCharID(int character_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message);
void CrossZoneMarqueeByGroupID(int group_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message);
void CrossZoneMarqueeByRaidID(int raid_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message);
void CrossZoneMarqueeByGuildID(int guild_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message);
void CrossZoneMessagePlayerByName(uint32 type, const char *character_name, const char *message);
void CrossZoneMessagePlayerByGroupID(uint32 type, int group_id, const char *message);
void CrossZoneMessagePlayerByRaidID(uint32 type, int raid_id, const char *message);
void CrossZoneMessagePlayerByGuildID(uint32 type, int guild_id, const char *message);
void CrossZoneMovePlayerByCharID(int character_id, const char *zone_short_name);
void CrossZoneMovePlayerByGroupID(int group_id, const char *zone_short_name);
void CrossZoneMovePlayerByRaidID(int raid_id, const char *zone_short_name);
void CrossZoneMovePlayerByGuildID(int guild_id, const char *zone_short_name);
void WorldWideMarquee(uint32 Type, uint32 Priority, uint32 FadeIn, uint32 FadeOut, uint32 Duration, const char *Message);
void CrossZoneMoveInstanceByCharID(int character_id, uint16 instance_id);
void CrossZoneMoveInstanceByGroupID(int group_id, uint16 instance_id);
void CrossZoneMoveInstanceByRaidID(int raid_id, uint16 instance_id);
void CrossZoneMoveInstanceByGuildID(int guild_id, uint16 instance_id);
void CrossZoneRemoveSpellByCharID(int character_id, uint32 spell_id);
void CrossZoneRemoveSpellByGroupID(int group_id, uint32 spell_id);
void CrossZoneRemoveSpellByRaidID(int raid_id, uint32 spell_id);
void CrossZoneRemoveSpellByGuildID(int guild_id, uint32 spell_id);
void CrossZoneRemoveTaskByCharID(int character_id, uint32 task_id);
void CrossZoneRemoveTaskByGroupID(int group_id, uint32 task_id);
void CrossZoneRemoveTaskByRaidID(int raid_id, uint32 task_id);
void CrossZoneRemoveTaskByGuildID(int guild_id, uint32 task_id);
void CrossZoneResetActivityByCharID(int character_id, uint32 task_id, int activity_id);
void CrossZoneResetActivityByGroupID(int group_id, uint32 task_id, int activity_id);
void CrossZoneResetActivityByRaidID(int raid_id, uint32 task_id, int activity_id);
void CrossZoneResetActivityByGuildID(int guild_id, uint32 task_id, int activity_id);
void CrossZoneSetEntityVariableByNPCTypeID(uint32 npctype_id, const char *variable_name, const char *variable_value);
void CrossZoneSetEntityVariableByClientName(const char *character_name, const char *variable_name, const char *variable_value);
void CrossZoneSetEntityVariableByGroupID(int group_id, const char *variable_name, const char *variable_value);
void CrossZoneSetEntityVariableByRaidID(int raid_id, const char *variable_name, const char *variable_value);
void CrossZoneSetEntityVariableByGuildID(int guild_id, const char *variable_name, const char *variable_value);
void CrossZoneSignalPlayerByCharID(int charid, uint32 signal);
void CrossZoneSignalPlayerByGroupID(int group_id, uint32 signal);
void CrossZoneSignalPlayerByRaidID(int raid_id, uint32 signal);
void CrossZoneSignalPlayerByGuildID(int guild_id, uint32 signal);
void CrossZoneSignalNPCByNPCTypeID(uint32 npctype_id, uint32 signal);
void CrossZoneSignalPlayerByName(const char *character_name, uint32 signal);
void CrossZoneUpdateActivityByCharID(int character_id, uint32 task_id, int activity_id, int activity_count = 1);
void CrossZoneUpdateActivityByGroupID(int group_id, uint32 task_id, int activity_id, int activity_count = 1);
void CrossZoneUpdateActivityByRaidID(int raid_id, uint32 task_id, int activity_id, int activity_count = 1);
void CrossZoneUpdateActivityByGuildID(int guild_id, uint32 task_id, int activity_id, int activity_count = 1);
void WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement = false, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideCastSpell(uint32 spell_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideDisableTask(uint32 task_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideEnableTask(uint32 task_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideFailTask(uint32 task_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideMarquee(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideMessage(uint32 type, const char *message, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideMove(const char *zone_short_name, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideMoveInstance(uint16 instance_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideRemoveSpell(uint32 spell_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideRemoveTask(uint32 task_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideResetActivity(uint32 task_id, int activity_id, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideSetEntityVariableClient(const char *variable_name, const char *variable_value, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideSetEntityVariableNPC(const char *variable_name, const char *variable_value);
void WorldWideSignalClient(uint32 signal, uint8 min_status = 0, uint8 max_status = 0);
void WorldWideSignalNPC(uint32 signal);
void WorldWideUpdateActivity(uint32 task_id, int activity_id, int activity_count = 1, uint8 min_status = 0, uint8 max_status = 0);
bool EnableRecipe(uint32 recipe_id);
bool DisableRecipe(uint32 recipe_id);
void ClearNPCTypeCache(int npctype_id);

View File

@ -966,6 +966,16 @@ std::string TaskManager::GetTaskName(uint32 task_id)
return std::string();
}
TaskType TaskManager::GetTaskType(uint32 task_id)
{
if (task_id > 0 && task_id < MAXTASKS) {
if (Tasks[task_id] != nullptr) {
return Tasks[task_id]->type;
}
}
return TaskType::Task;
}
int TaskManager::GetTaskMinLevel(int TaskID)
{
if (Tasks[TaskID]->MinLevel)
@ -1981,6 +1991,7 @@ void ClientTaskState::IncrementDoneCount(Client *c, TaskInformation *Task, int T
// Send an update packet for this single activity
taskmanager->SendTaskActivityLong(c, info->TaskID, ActivityID, TaskIndex,
Task->Activity[ActivityID].Optional);
taskmanager->SaveClientState(c, this);
}
}
@ -2238,15 +2249,16 @@ void ClientTaskState::UpdateTaskActivity(Client *c, int TaskID, int ActivityID,
return;
// The Activity is not currently active
if (info->Activity[ActivityID].State != ActivityActive)
if (info->Activity[ActivityID].State == ActivityHidden)
return;
Log(Logs::General, Logs::Tasks, "[UPDATE] Increment done count on UpdateTaskActivity");
Log(Logs::General, Logs::Tasks, "[UPDATE] Increment done count on UpdateTaskActivity %d %d", ActivityID, Count);
IncrementDoneCount(c, Task, ActiveTaskIndex, ActivityID, Count, ignore_quest_update);
}
void ClientTaskState::ResetTaskActivity(Client *c, int TaskID, int ActivityID)
{
Log(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState UpdateTaskActivity(%i, %i, 0).", TaskID, ActivityID);
Log(Logs::General, Logs::Tasks, "[RESET] ClientTaskState ResetTaskActivity(%i, %i).", TaskID, ActivityID);
// Quick sanity check
if (ActivityID < 0 || (ActiveTaskCount == 0 && ActiveTask.TaskID == TASKSLOTEMPTY))
@ -2288,18 +2300,11 @@ void ClientTaskState::ResetTaskActivity(Client *c, int TaskID, int ActivityID)
return;
// The Activity is not currently active
if (info->Activity[ActivityID].State != ActivityActive)
if (info->Activity[ActivityID].State == ActivityHidden)
return;
Log(Logs::General, Logs::Tasks, "[UPDATE] ResetTaskActivityCount");
info->Activity[ActivityID].DoneCount = 0;
info->Activity[ActivityID].Updated = true;
// Send an update packet for this single activity
taskmanager->SendTaskActivityLong(c, info->TaskID, ActivityID, ActiveTaskIndex,
Task->Activity[ActivityID].Optional);
Log(Logs::General, Logs::Tasks, "[RESET] Increment done count on ResetTaskActivity");
IncrementDoneCount(c, Task, ActiveTaskIndex, ActivityID, (info->Activity[ActivityID].DoneCount * -1), false);
}
void ClientTaskState::ShowClientTasks(Client *c)
@ -3199,6 +3204,68 @@ void ClientTaskState::RemoveTask(Client *c, int sequenceNumber, TaskType type)
}
}
void ClientTaskState::RemoveTaskByTaskID(Client *c, uint32 task_id)
{
auto task_type = taskmanager->GetTaskType(task_id);
int character_id = c->CharacterID();
Log(Logs::General, Logs::Tasks, "[UPDATE] RemoveTaskByTaskID: %d", task_id);
std::string query = fmt::format("DELETE FROM character_activities WHERE charid = {} AND taskid = {}", character_id, task_id);
auto results = database.QueryDatabase(query);
if (!results.Success()) {
LogError("[TASKS] Error in CientTaskState::RemoveTaskByTaskID [{}]", results.ErrorMessage().c_str());
return;
}
LogTasks("[UPDATE] RemoveTaskByTaskID: {}", query.c_str());
query = fmt::format("DELETE FROM character_tasks WHERE charid = {} AND taskid = {} AND type = {}", character_id, task_id, (int) task_type);
results = database.QueryDatabase(query);
if (!results.Success()) {
LogError("[TASKS] Error in ClientTaskState::RemoveTaskByTaskID [{}]", results.ErrorMessage().c_str());
}
LogTasks("[UPDATE] RemoveTaskByTaskID: {}", query.c_str());
switch (task_type) {
case TaskType::Task:
{
if (ActiveTask.TaskID == task_id) {
auto outapp = new EQApplicationPacket(OP_CancelTask, sizeof(CancelTask_Struct));
CancelTask_Struct* cts = (CancelTask_Struct*)outapp->pBuffer;
cts->SequenceNumber = 0;
cts->type = static_cast<uint32>(task_type);
LogTasks("[UPDATE] RemoveTaskByTaskID found Task [{}]", task_id);
c->QueuePacket(outapp);
safe_delete(outapp);
ActiveTask.TaskID = TASKSLOTEMPTY;
}
break;
}
case TaskType::Shared:
{
break; // TODO: shared tasks
}
case TaskType::Quest:
{
for (int active_quest = 0; active_quest < MAXACTIVEQUESTS; active_quest++) {
if (ActiveQuests[active_quest].TaskID == task_id) {
auto outapp = new EQApplicationPacket(OP_CancelTask, sizeof(CancelTask_Struct));
CancelTask_Struct* cts = (CancelTask_Struct*)outapp->pBuffer;
cts->SequenceNumber = active_quest;
cts->type = static_cast<uint32>(task_type);
LogTasks("[UPDATE] RemoveTaskByTaskID found Quest [{}] at index [{}]", task_id, active_quest);
ActiveQuests[active_quest].TaskID = TASKSLOTEMPTY;
ActiveTaskCount--;
c->QueuePacket(outapp);
safe_delete(outapp);
}
}
}
default: {
break;
}
}
}
void ClientTaskState::AcceptNewTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement)
{
if (!taskmanager || TaskID < 0 || TaskID >= MAXTASKS) {

View File

@ -217,6 +217,7 @@ public:
void CancelTask(Client *c, int SequenceNumber, TaskType type, bool RemoveFromDB = true);
void CancelAllTasks(Client *c);
void RemoveTask(Client *c, int SequenceNumber, TaskType type);
void RemoveTaskByTaskID(Client *c, uint32 task_id);
bool UpdateTasksByNPC(Client *c, int ActivityType, int NPCTypeID);
void UpdateTasksOnKill(Client *c, int NPCTypeID);
void UpdateTasksForItem(Client *c, ActivityType Type, int ItemID, int Count=1);
@ -300,6 +301,7 @@ public:
int GetTaskMinLevel(int TaskID);
int GetTaskMaxLevel(int TaskID);
std::string GetTaskName(uint32 task_id);
TaskType GetTaskType(uint32 task_id);
void TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, int TaskSetID);
void TaskQuestSetSelector(Client *c, ClientTaskState *state, Mob *mob, int count, int *tasks); // task list provided by QuestManager (perl/lua)
void SendActiveTasksToClient(Client *c, bool TaskComplete=false);

File diff suppressed because it is too large Load Diff