diff --git a/common/servertalk.h b/common/servertalk.h index a487c84ca..69403ff38 100644 --- a/common/servertalk.h +++ b/common/servertalk.h @@ -188,55 +188,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, @@ -339,7 +398,7 @@ struct ServerZoneIncomingClient_Struct { uint32 accid; int16 admin; uint32 charid; - uint32 lsid; + uint32 lsid; bool tellsoff; char charname[64]; char lskey[30]; @@ -480,34 +539,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 { @@ -602,7 +661,7 @@ struct ServerConnectInfo { char address[250]; char local_address[250]; uint16 port; - uint32 process_id; + uint32 process_id; }; struct ServerGMGoto_Struct { @@ -730,7 +789,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; }; @@ -738,10 +797,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 @@ -891,7 +950,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; }; @@ -1179,64 +1238,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; @@ -1252,13 +1253,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]; }; @@ -1296,14 +1297,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]; }; @@ -1334,9 +1335,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]; }; @@ -1374,13 +1375,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]; }; @@ -1388,28 +1389,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 { @@ -1417,6 +1468,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]; @@ -1432,43 +1547,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 { diff --git a/world/console.cpp b/world/console.cpp index b3f36c923..26132efea 100644 --- a/world/console.cpp +++ b/world/console.cpp @@ -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& 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)); -} \ No newline at end of file +} diff --git a/world/zoneserver.cpp b/world/zoneserver.cpp index 74a17d43a..011258765 100644 --- a/world/zoneserver.cpp +++ b/world/zoneserver.cpp @@ -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: diff --git a/zone/client.h b/zone/client.h index 76c02b517..dc5064f6b 100644 --- a/zone/client.h +++ b/zone/client.h @@ -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); } diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index 338e5a1a1..ae5a79f10 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -3753,8 +3753,7 @@ XS(XS__crosszoneassigntaskbycharid) { if (items == 3) { enforce_level_requirement = (bool) SvTRUE(ST(2)); - } - + } quest_manager.CrossZoneAssignTaskByCharID(character_id, task_id, enforce_level_requirement); } @@ -3774,7 +3773,6 @@ XS(XS__crosszoneassigntaskbygroupid) { if (items == 3) { enforce_level_requirement = (bool) SvTRUE(ST(2)); } - quest_manager.CrossZoneAssignTaskByGroupID(group_id, task_id, enforce_level_requirement); } XSRETURN_EMPTY; @@ -3793,7 +3791,6 @@ XS(XS__crosszoneassigntaskbyraidid) { if (items == 3) { enforce_level_requirement = (bool) SvTRUE(ST(2)); } - quest_manager.CrossZoneAssignTaskByRaidID(raid_id, task_id, enforce_level_requirement); } XSRETURN_EMPTY; @@ -3817,109 +3814,310 @@ XS(XS__crosszoneassigntaskbyguildid) { XSRETURN_EMPTY; } -XS(XS__crosszonesignalclientbycharid); -XS(XS__crosszonesignalclientbycharid) { +XS(XS__crosszonecastspellbycharid); +XS(XS__crosszonecastspellbycharid) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbycharid(int character_id, int value)"); - - if (items == 2) { - int char_id = (int) SvIV(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalPlayerByCharID(char_id, int_value); - } else { - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbycharid(int character_id, int value)"); + Perl_croak(aTHX_ "Usage: quest::crosszonecastspellbycharid(int character_id, uint32 spell_id)"); + { + int character_id = (int) SvIV(ST(0)); + uint32 spell_id = (uint32) SvIV(ST(1)); + quest_manager.CrossZoneCastSpellByCharID(character_id, spell_id); } - - XSRETURN_EMPTY; + XSRETURN_EMPTY; } -XS(XS__crosszonesignalclientbygroupid); -XS(XS__crosszonesignalclientbygroupid) { +XS(XS__crosszonecastspellbygroupid); +XS(XS__crosszonecastspellbygroupid) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, int value)"); - - if (items == 2) { + Perl_croak(aTHX_ "Usage: quest::crosszonecastspellbygroupid(int group_id, uint32 spell_id)"); + { int group_id = (int) SvIV(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalPlayerByGroupID(group_id, int_value); - } else { - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, int value)"); + uint32 spell_id = (uint32) SvIV(ST(1)); + quest_manager.CrossZoneCastSpellByGroupID(group_id, spell_id); } - - XSRETURN_EMPTY; + XSRETURN_EMPTY; } -XS(XS__crosszonesignalclientbyraidid); -XS(XS__crosszonesignalclientbyraidid) { +XS(XS__crosszonecastspellbyraidid); +XS(XS__crosszonecastspellbyraidid) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyraidid(int raid_id, int value)"); - - if (items == 2) { + Perl_croak(aTHX_ "Usage: quest::crosszonecastspellbyraidid(int raid_id, uint32 spell_id)"); + { int raid_id = (int) SvIV(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, int_value); - } else { - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyraidid(int raid_id, int value)"); + uint32 spell_id = (uint32) SvIV(ST(1)); + quest_manager.CrossZoneCastSpellByRaidID(raid_id, spell_id); } - - XSRETURN_EMPTY; + XSRETURN_EMPTY; } -XS(XS__crosszonesignalclientbyguildid); -XS(XS__crosszonesignalclientbyguildid) { +XS(XS__crosszonecastspellbyguildid); +XS(XS__crosszonecastspellbyguildid) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyguildid(int guild_id, int value)"); - - if (items == 2) { + Perl_croak(aTHX_ "Usage: quest::crosszonecastspellbyguildid(int guild_id, uint32 spell_id)"); + { int guild_id = (int) SvIV(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, int_value); - } else { - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyguildid(int guild_id, int value)"); + uint32 spell_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneCastSpellByGuildID(guild_id, spell_id); } - - XSRETURN_EMPTY; + XSRETURN_EMPTY; } -XS(XS__crosszonesignalclientbyname); -XS(XS__crosszonesignalclientbyname) { +XS(XS__crosszonedisabletaskbycharid); +XS(XS__crosszonedisabletaskbycharid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonedisabletaskbycharid(int character_id, uint32 task_id)"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneDisableTaskByCharID(char_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonedisabletaskbygroupid); +XS(XS__crosszonedisabletaskbygroupid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonedisabletaskbygroupid(int group_id, uint32 task_id)"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneDisableTaskByGroupID(group_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonedisabletaskbyraidid); +XS(XS__crosszonedisabletaskbyraidid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonedisabletaskbyraidid(int raid_id, uint32 task_id)"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneDisableTaskByRaidID(raid_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonedisabletaskbyguildid); +XS(XS__crosszonedisabletaskbyguildid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonedisabletaskbyguildid(int guild_id, uint32 task_id)"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneDisableTaskByGuildID(guild_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneenabletaskbycharid); +XS(XS__crosszoneenabletaskbycharid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneenabletaskbycharid(int character_id, uint32 task_id)"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneEnableTaskByCharID(char_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneenabletaskbygroupid); +XS(XS__crosszoneenabletaskbygroupid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneenabletaskbygroupid(int group_id, uint32 task_id)"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneEnableTaskByGroupID(group_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneenabletaskbyraidid); +XS(XS__crosszoneenabletaskbyraidid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneenabletaskbyraidid(int raid_id, uint32 task_id)"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneEnableTaskByRaidID(raid_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneenabletaskbyguildid); +XS(XS__crosszoneenabletaskbyguildid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneenabletaskbyguildid(int guild_id, uint32 task_id)"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneEnableTaskByGuildID(guild_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonefailtaskbycharid); +XS(XS__crosszonefailtaskbycharid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonefailtaskbycharid(int character_id, uint32 task_id)"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneFailTaskByCharID(char_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonefailtaskbygroupid); +XS(XS__crosszonefailtaskbygroupid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonefailtaskbygroupid(int group_id, uint32 task_id)"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneFailTaskByGroupID(group_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonefailtaskbyraidid); +XS(XS__crosszonefailtaskbyraidid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonefailtaskbyraidid(int raid_id, uint32 task_id)"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneFailTaskByRaidID(raid_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonefailtaskbyguildid); +XS(XS__crosszonefailtaskbyguildid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonefailtaskbyguildid(int guild_id, uint32 task_id)"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneFailTaskByGuildID(guild_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonemarqueebycharid); +XS(XS__crosszonemarqueebycharid) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyname(string name, int value)"); + if (items != 7) + Perl_croak(aTHX_ "Usage: quest::crosszonemarqueebycharid(int character_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message)"); - if (items == 2) { - char *name = (char *) SvPV_nolen(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalPlayerByName(name, int_value); - } else { - Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyname(string name, int value)"); + if (items == 7) { + int character_id = (int) SvIV(ST(0)); + int type = (int) SvIV(ST(1)); + int priority = (int) SvIV(ST(2)); + int fade_in = (int) SvIV(ST(3)); + int fade_out = (int) SvIV(ST(4)); + int duration = (int) SvIV(ST(5)); + char *message = (char *) SvPV_nolen(ST(6)); + quest_manager.CrossZoneMarqueeByCharID(character_id, type, priority, fade_in, fade_out, duration, message); } XSRETURN_EMPTY; } +XS(XS__crosszonemarqueebygroupid); +XS(XS__crosszonemarqueebygroupid) { + dXSARGS; + + if (items != 7) + Perl_croak(aTHX_ "Usage: quest::crosszonemarqueebygroupid(int group_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message)"); + + if (items == 7) { + int group_id = (int) SvIV(ST(0)); + int type = (int) SvIV(ST(1)); + int priority = (int) SvIV(ST(2)); + int fade_in = (int) SvIV(ST(3)); + int fade_out = (int) SvIV(ST(4)); + int duration = (int) SvIV(ST(5)); + char *message = (char *) SvPV_nolen(ST(6)); + quest_manager.CrossZoneMarqueeByGroupID(group_id, type, priority, fade_in, fade_out, duration, message); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonemarqueebyraidid); +XS(XS__crosszonemarqueebyraidid) { + dXSARGS; + + if (items != 7) + Perl_croak(aTHX_ "Usage: quest::crosszonemarqueebyraidid(int raid_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message)"); + + if (items == 7) { + int raid_id = (int) SvIV(ST(0)); + int type = (int) SvIV(ST(1)); + int priority = (int) SvIV(ST(2)); + int fade_in = (int) SvIV(ST(3)); + int fade_out = (int) SvIV(ST(4)); + int duration = (int) SvIV(ST(5)); + char *message = (char *) SvPV_nolen(ST(6)); + quest_manager.CrossZoneMarqueeByRaidID(raid_id, type, priority, fade_in, fade_out, duration, message); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonemarqueebyguildid); +XS(XS__crosszonemarqueebyguildid) { + dXSARGS; + + if (items != 7) + Perl_croak(aTHX_ "Usage: quest::crosszonemarqueebyguildid(int guild_id, uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, const char *message)"); + + if (items == 7) { + int guild_id = (int) SvIV(ST(0)); + int type = (int) SvIV(ST(1)); + int priority = (int) SvIV(ST(2)); + int fade_in = (int) SvIV(ST(3)); + int fade_out = (int) SvIV(ST(4)); + int duration = (int) SvIV(ST(5)); + char *message = (char *) SvPV_nolen(ST(6)); + quest_manager.CrossZoneMarqueeByGuildID(guild_id, type, priority, fade_in, fade_out, duration, message); + } + + XSRETURN_EMPTY; +} XS(XS__crosszonemessageplayerbyname); XS(XS__crosszonemessageplayerbyname) { dXSARGS; if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyname(int channel_id, string name, string message)"); + Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyname(uint32 type, string name, string message)"); if (items == 3) { - uint32 channel_id = (uint32) SvIV(ST(0)); - char *name = (char *) SvPV_nolen(ST(1)); - char *message = (char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneMessagePlayerByName(channel_id, name, message); + uint32 type = (uint32) SvUV(ST(0)); + char *name = (char *) SvPV_nolen(ST(1)); + char *message = (char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneMessagePlayerByName(type, name, message); } XSRETURN_EMPTY; @@ -3930,10 +4128,10 @@ XS(XS__crosszonemessageplayerbygroupid) { dXSARGS; if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbygroupid(int type, int group_id, string message)"); + Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbygroupid(uint32 type, int group_id, string message)"); if (items == 3) { - uint32 type = (uint32) SvIV(ST(0)); + uint32 type = (uint32) SvUV(ST(0)); int group_id = (int) SvIV(ST(1)); char *message = (char *) SvPV_nolen(ST(2)); quest_manager.CrossZoneMessagePlayerByGroupID(type, group_id, message); @@ -3947,10 +4145,10 @@ XS(XS__crosszonemessageplayerbyraidid) { dXSARGS; if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyraidid(int type, int raid_id, string message)"); + Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyraidid(uint32 type, int raid_id, string message)"); if (items == 3) { - uint32 type = (uint32) SvIV(ST(0)); + uint32 type = (uint32) SvUV(ST(0)); int raid_id = (int) SvIV(ST(1)); char *message = (char *) SvPV_nolen(ST(2)); quest_manager.CrossZoneMessagePlayerByRaidID(type, raid_id, message); @@ -3964,10 +4162,10 @@ XS(XS__crosszonemessageplayerbyguildid) { dXSARGS; if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyguildid(int type, int guild_id, string message)"); + Perl_croak(aTHX_ "Usage: quest::crosszonemessageplayerbyguildid(uint32 type, int guild_id, string message)"); if (items == 3) { - uint32 type = (uint32) SvIV(ST(0)); + uint32 type = (uint32) SvUV(ST(0)); int guild_id = (int) SvIV(ST(1)); char *message = (char *) SvPV_nolen(ST(2)); quest_manager.CrossZoneMessagePlayerByGuildID(type, guild_id, message); @@ -4040,6 +4238,866 @@ XS(XS__crosszonemoveplayerbyguildid) { XSRETURN_EMPTY; } +XS(XS__crosszonemoveinstancebycharid); +XS(XS__crosszonemoveinstancebycharid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonemoveinstancebycharid(int character_id, uint16 instance_id)"); + + if (items == 2) { + int character_id = (int) SvIV(ST(0)); + uint16 instance_id = (uint16) SvUV(ST(1)); + quest_manager.CrossZoneMoveInstanceByCharID(character_id, instance_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonemoveinstancebygroupid); +XS(XS__crosszonemoveinstancebygroupid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonemoveinstancebygroupid(int group_id, uint16 instance_id)"); + + if (items == 2) { + int group_id = (int) SvIV(ST(0)); + uint16 instance_id = (uint16) SvUV(ST(1)); + quest_manager.CrossZoneMoveInstanceByGroupID(group_id, instance_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonemoveinstancebyraidid); +XS(XS__crosszonemoveinstancebyraidid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonemoveinstancebyraidid(int raid_id, uint16 instance_id)"); + + if (items == 2) { + int raid_id = (int) SvIV(ST(0)); + uint16 instance_id = (uint16) SvUV(ST(1)); + quest_manager.CrossZoneMoveInstanceByRaidID(raid_id, instance_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonemoveinstancebyguildid); +XS(XS__crosszonemoveinstancebyguildid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonemoveinstancebyguildid(int guild_id, uint16 instance_id)"); + + if (items == 2) { + int guild_id = (int) SvIV(ST(0)); + uint16 instance_id = (uint16) SvUV(ST(1)); + quest_manager.CrossZoneMoveInstanceByGuildID(guild_id, instance_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovespellbycharid); +XS(XS__crosszoneremovespellbycharid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovespellbycharid(int character_id, uint32 spell_id)"); + + if (items == 2) { + int character_id = (int) SvIV(ST(0)); + uint32 spell_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveSpellByCharID(character_id, spell_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovespellbygroupid); +XS(XS__crosszoneremovespellbygroupid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovespellbygroupid(int group_id, uint32 spell_id)"); + + if (items == 2) { + int group_id = (int) SvIV(ST(0)); + uint32 spell_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveSpellByGroupID(group_id, spell_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovespellbyraidid); +XS(XS__crosszoneremovespellbyraidid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovespellbyraidid(int raid_id, uint32 spell_id)"); + + if (items == 2) { + int raid_id = (int) SvIV(ST(0)); + uint32 spell_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveSpellByRaidID(raid_id, spell_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovespellbyguildid); +XS(XS__crosszoneremovespellbyguildid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovespellbyguildid(int guild_id, uint32 spell_id)"); + + if (items == 2) { + int guild_id = (int) SvIV(ST(0)); + uint32 spell_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveSpellByGuildID(guild_id, spell_id); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovetaskbycharid); +XS(XS__crosszoneremovetaskbycharid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovetaskbycharid(int character_id, uint32 task_id)"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveTaskByCharID(char_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovetaskbygroupid); +XS(XS__crosszoneremovetaskbygroupid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovetaskbygroupid(int group_id, uint32 task_id)"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveTaskByGroupID(group_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovetaskbyraidid); +XS(XS__crosszoneremovetaskbyraidid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovetaskbyraidid(int raid_id, uint32 task_id)"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveTaskByRaidID(raid_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneremovetaskbyguildid); +XS(XS__crosszoneremovetaskbyguildid) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszoneremovetaskbyguildid(int guild_id, uint32 task_id)"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneRemoveTaskByGuildID(guild_id, task_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneresetactivitybycharid); +XS(XS__crosszoneresetactivitybycharid) { + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszoneresetactivitybycharid(int char_id, uint32 task_id, int activity_id)"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + quest_manager.CrossZoneResetActivityByCharID(char_id, task_id, activity_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneresetactivitybygroupid); +XS(XS__crosszoneresetactivitybygroupid) { + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszoneresetactivitybygroupid(int group_id, uint32 task_id, int activity_id)"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + quest_manager.CrossZoneResetActivityByGroupID(group_id, task_id, activity_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneresetactivitybyraidid); +XS(XS__crosszoneresetactivitybyraidid) { + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszoneresetactivitybyraidid(int raid_id, uint32 task_id, int activity_id)"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + quest_manager.CrossZoneResetActivityByRaidID(raid_id, task_id, activity_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneresetactivitybyguildid); +XS(XS__crosszoneresetactivitybyguildid) { + dXSARGS; + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszoneresetactivitybyguildid(int guild_id, uint32 task_id, int activity_id)"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + quest_manager.CrossZoneResetActivityByGuildID(guild_id, task_id, activity_id); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszonesetentityvariablebynpctypeid); +XS(XS__crosszonesetentityvariablebynpctypeid) { + dXSARGS; + + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebynpctypeid(int npc_type_id, string key, string value)"); + + if (items == 3) { + uint32 npc_type_id = (uint32) SvUV(ST(0)); + const char *key = (const char *) SvPV_nolen(ST(1)); + const char *str_value = (const char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneSetEntityVariableByNPCTypeID(npc_type_id, key, str_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesetentityvariablebyclientname); +XS(XS__crosszonesetentityvariablebyclientname) { + dXSARGS; + + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyclientname(string client_name, string key, string value)"); + + if (items == 3) { + const char *client_name = (const char *) SvPV_nolen(ST(0)); + const char *key = (const char *) SvPV_nolen(ST(1)); + const char *str_value = (const char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneSetEntityVariableByClientName(client_name, key, str_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesetentityvariablebygroupid); +XS(XS__crosszonesetentityvariablebygroupid) { + dXSARGS; + + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebygroupid(int group_id, string key, string value)"); + + if (items == 3) { + int group_id = SvIV(ST(0)); + const char *key = (const char *) SvPV_nolen(ST(1)); + const char *str_value = (const char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, key, str_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesetentityvariablebyraidid); +XS(XS__crosszonesetentityvariablebyraidid) { + dXSARGS; + + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyraidid(int raid_id, string key, string value)"); + + if (items == 3) { + int raid_id = SvIV(ST(0)); + const char *key = (const char *) SvPV_nolen(ST(1)); + const char *str_value = (const char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, key, str_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesetentityvariablebyguildid); +XS(XS__crosszonesetentityvariablebyguildid) { + dXSARGS; + + if (items != 3) + Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyguildid(int guild_id, string key, string value)"); + + if (items == 3) { + int guild_id = SvIV(ST(0)); + const char *key = (const char *) SvPV_nolen(ST(1)); + const char *str_value = (const char *) SvPV_nolen(ST(2)); + quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, key, str_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalclientbycharid); +XS(XS__crosszonesignalclientbycharid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbycharid(int character_id, uint32 signal)"); + + if (items == 2) { + int char_id = (int) SvIV(ST(0)); + uint32 signal = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalPlayerByCharID(char_id, signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalclientbygroupid); +XS(XS__crosszonesignalclientbygroupid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbygroupid(int group_id, uint32 signal)"); + + if (items == 2) { + int group_id = (int) SvIV(ST(0)); + uint32 signal = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalPlayerByGroupID(group_id, signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalclientbyraidid); +XS(XS__crosszonesignalclientbyraidid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyraidid(int raid_id, uint32 signal)"); + + if (items == 2) { + int raid_id = (int) SvIV(ST(0)); + uint32 signal = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalPlayerByRaidID(raid_id, signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalclientbyguildid); +XS(XS__crosszonesignalclientbyguildid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyguildid(int guild_id, uint32 signal)"); + + if (items == 2) { + int guild_id = (int) SvIV(ST(0)); + uint32 signal = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalPlayerByGuildID(guild_id, signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalclientbyname); +XS(XS__crosszonesignalclientbyname) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalclientbyname(string name, uint32 signal)"); + + if (items == 2) { + char *name = (char *) SvPV_nolen(ST(0)); + uint32 signal = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalPlayerByName(name, signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszonesignalnpcbynpctypeid); +XS(XS__crosszonesignalnpcbynpctypeid) { + dXSARGS; + + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::crosszonesignalnpcbynpctypeid(uint32 npc_type_id, uint32 value)"); + + if (items == 2) { + uint32 npc_type_id = (uint32) SvUV(ST(0)); + uint32 int_value = (uint32) SvUV(ST(1)); + quest_manager.CrossZoneSignalNPCByNPCTypeID(npc_type_id, int_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__crosszoneupdateactivitybycharid); +XS(XS__crosszoneupdateactivitybycharid) { + dXSARGS; + if (items < 3 || items > 4) + Perl_croak(aTHX_ "Usage: quest::crosszoneupdateactivitybycharid(int char_id, uint32 task_id, int activity_id, [int activity_count = 1])"); + { + int char_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + int activity_count = 1; + if (items == 4) { + activity_count = (int) SvIV(ST(3)); + } + quest_manager.CrossZoneUpdateActivityByCharID(char_id, task_id, activity_id, activity_count); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneupdateactivitybygroupid); +XS(XS__crosszoneupdateactivitybygroupid) { + dXSARGS; + if (items < 3 || items > 4) + Perl_croak(aTHX_ "Usage: quest::crosszoneupdateactivitybygroupid(int group_id, uint32 task_id, int activity_id, [int activity_count = 1])"); + { + int group_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + int activity_count = 1; + if (items == 4) { + activity_count = (int) SvIV(ST(3)); + } + quest_manager.CrossZoneUpdateActivityByGroupID(group_id, task_id, activity_id, activity_count); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneupdateactivitybyraidid); +XS(XS__crosszoneupdateactivitybyraidid) { + dXSARGS; + if (items < 3 || items > 4) + Perl_croak(aTHX_ "Usage: quest::crosszoneupdateactivitybyraidid(int raid_id, uint32 task_id, int activity_id, [int activity_count = 1])"); + { + int raid_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + int activity_count = 1; + if (items == 4) { + activity_count = (int) SvIV(ST(3)); + } + quest_manager.CrossZoneUpdateActivityByRaidID(raid_id, task_id, activity_id, activity_count); + } + XSRETURN_EMPTY; +} + +XS(XS__crosszoneupdateactivitybyguildid); +XS(XS__crosszoneupdateactivitybyguildid) { + dXSARGS; + if (items < 3 || items > 4) + Perl_croak(aTHX_ "Usage: quest::crosszoneupdateactivitybyguildid(int guild_id, uint32 task_id, int activity_id, [int activity_count = 1])"); + { + int guild_id = (int) SvIV(ST(0)); + uint32 task_id = (uint32) SvUV(ST(1)); + int activity_id = (int) SvIV(ST(2)); + int activity_count = 1; + if (items == 4) { + activity_count = (int) SvIV(ST(3)); + } + quest_manager.CrossZoneUpdateActivityByGuildID(guild_id, task_id, activity_id, activity_count); + } + XSRETURN_EMPTY; +} + +XS(XS__worldwideassigntask); +XS(XS__worldwideassigntask) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwideassigntask(uint32 task_id, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideAssignTask(task_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidecastspell); +XS(XS__worldwidecastspell) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidecastspell(uint32 spell_id, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 spell_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideCastSpell(spell_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidedisabletask); +XS(XS__worldwidedisabletask) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidedisabletask(uint32 task_id, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideDisableTask(task_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwideenabletask); +XS(XS__worldwideenabletask) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwideenabletask(uint32 task_id, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideEnableTask(task_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidefailtask); +XS(XS__worldwidefailtask) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidefailtask(uint32 task_id, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideFailTask(task_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidemarquee); +XS(XS__worldwidemarquee) { + dXSARGS; + if (items < 6 || items > 8) + Perl_croak(aTHX_ "Usage: quest::worldwidemarquee(uint32 color_id, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, string message, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 color_id = (uint32) SvUV(ST(0)); + uint32 priority = (uint32) SvUV(ST(1)); + uint32 fade_in = (uint32) SvUV(ST(2)); + uint32 fade_out = (uint32) SvUV(ST(3)); + uint32 duration = (uint32) SvUV(ST(4)); + char *message = (char *) SvPV_nolen(ST(5)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 7) { + min_status = (uint8) SvUV(ST(6)); + } + + if (items == 8) { + max_status = (uint8) SvUV(ST(7)); + } + quest_manager.WorldWideMarquee(color_id, priority, fade_in, fade_out, duration, message, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidemessage); +XS(XS__worldwidemessage) { + dXSARGS; + if (items < 2 || items > 4) + Perl_croak(aTHX_ "Usage: quest::worldwidemessage(uint32 type, string message, [uint8 min_status = 0, uint8 max_status = 0])"); + { + uint32 type = (uint32)SvUV(ST(0)); + const char *message = (const char*) SvPV_nolen(ST(1)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 3) { + min_status = (uint8) SvUV(ST(2)); + } + + if (items == 4) { + max_status = (uint8) SvUV(ST(3)); + } + quest_manager.WorldWideMessage(type, message, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidemove); +XS(XS__worldwidemove) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidemove(string zone_short_name, [uint8 min_status = 0, uint8 max_status = 0])"); + + if (items == 1) { + const char *zone_short_name = (const char*) SvPV_nolen(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideMove(zone_short_name, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidemoveinstance); +XS(XS__worldwidemoveinstance) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidemoveinstance(uint16 instance_id, [uint8 min_status = 0, uint max_status = 0])"); + { + uint16 instance_id = (uint16) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideMoveInstance(instance_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwideremovespell); +XS(XS__worldwideremovespell) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwideremovespell(uint32 spell_id, [uint8 min_status = 0, uint max_status = 0])"); + { + uint32 spell_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideRemoveSpell(spell_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwideremovetask); +XS(XS__worldwideremovetask) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwideremovetask(uint32 task_id, [uint8 min_status = 0, uint max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(2)); + } + quest_manager.WorldWideRemoveTask(task_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwideresetactivity); +XS(XS__worldwideresetactivity) { + dXSARGS; + if (items < 2 || items > 4) + Perl_croak(aTHX_ "Usage: quest::worldwideresetactivity(uint32 task_id, int activity_id, [uint8 min_status = 0, uint max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + int activity_id = (int) SvIV(ST(1)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 3) { + min_status = (uint8) SvUV(ST(2)); + } + + if (items == 4) { + max_status = (uint8) SvUV(ST(3)); + } + quest_manager.WorldWideResetActivity(task_id, activity_id, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidesetentityvariableclient); +XS(XS__worldwidesetentityvariableclient) { + dXSARGS; + if (items < 2 || items > 4) + Perl_croak(aTHX_ "Usage: quest::worldwidesetentityvariableclient(string variable_name, string variable_value, [uint8 min_status = 0, uint max_status = 0])"); + { + const char *variable_name = (const char*) SvPV_nolen(ST(0)); + const char *variable_value = (const char*) SvPV_nolen(ST(1)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 3) { + min_status = (uint8) SvUV(ST(2)); + } + + if (items == 4) { + max_status = (uint8) SvUV(ST(3)); + } + quest_manager.WorldWideSetEntityVariableClient(variable_name, variable_value, min_status, max_status); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidesetentityvariablenpc); +XS(XS__worldwidesetentityvariablenpc) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: quest::worldwidesetentityvariablenpc(string variable_name, string variable_value)"); + { + const char *variable_name = (const char*) SvPV_nolen(ST(0)); + const char *variable_value = (const char*) SvPV_nolen(ST(1)); + quest_manager.WorldWideSetEntityVariableNPC(variable_name, variable_value); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidesignalnpc); +XS(XS__worldwidesignalnpc) { + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: quest::worldwidesignalnpc(uint32 signal)"); + { + uint32 signal = (uint32) SvUV(ST(0)); + quest_manager.WorldWideSignalNPC(signal); + } + + XSRETURN_EMPTY; +} + +XS(XS__worldwidesignalclient); +XS(XS__worldwidesignalclient) { + dXSARGS; + if (items < 1 || items > 3) + Perl_croak(aTHX_ "Usage: quest::worldwidesignalclient(uint32 signal, [uint8 min_status = 0, uint max_status = 0])"); + { + uint32 signal = (uint32) SvUV(ST(0)); + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 2) { + min_status = (uint8) SvUV(ST(1)); + } + + if (items == 3) { + max_status = (uint8) SvUV(ST(1)); + } + quest_manager.WorldWideSignalClient(signal, min_status, max_status); + } + + XSRETURN_EMPTY; +} +XS(XS__worldwideupdateactivity); +XS(XS__worldwideupdateactivity) { + dXSARGS; + if (items < 2 || items > 5) + Perl_croak(aTHX_ "Usage: quest::worldwideupdateactivity(uint32 task_id, int activity_id, [int activity_count = 1, uint8 min_status = 0, uint max_status = 0])"); + { + uint32 task_id = (uint32) SvUV(ST(0)); + int activity_id = (int) SvIV(ST(1)); + int activity_count = 1; + uint8 min_status = 0; + uint8 max_status = 0; + if (items == 3) { + activity_count = (int) SvIV(ST(2)); + } + + if (items == 4) { + min_status = (uint8) SvUV(ST(3)); + } + + if (items == 5) { + max_status = (uint8) SvUV(ST(4)); + } + quest_manager.WorldWideUpdateActivity(task_id, activity_id, activity_count, min_status, max_status); + } + + XSRETURN_EMPTY; +} + XS(XS__enablerecipe); XS(XS__enablerecipe) { dXSARGS; @@ -4125,125 +5183,7 @@ XS(XS__qs_player_event) { XSRETURN_EMPTY; } -XS(XS__crosszonesetentityvariablebynpctypeid); -XS(XS__crosszonesetentityvariablebynpctypeid) { - dXSARGS; - if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebynpctypeid(int npc_type_id, string key, string value)"); - - if (items == 3) { - uint32 npc_type_id = (uint32) SvIV(ST(0)); - const char *key = (const char *) SvPV_nolen(ST(1)); - const char *str_value = (const char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneSetEntityVariableByNPCTypeID(npc_type_id, key, str_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__crosszonesetentityvariablebyclientname); -XS(XS__crosszonesetentityvariablebyclientname) { - dXSARGS; - - if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyclientname(string client_name, string key, string value)"); - - if (items == 3) { - const char *client_name = (const char *) SvPV_nolen(ST(0)); - const char *key = (const char *) SvPV_nolen(ST(1)); - const char *str_value = (const char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneSetEntityVariableByClientName(client_name, key, str_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__crosszonesetentityvariablebygroupid); -XS(XS__crosszonesetentityvariablebygroupid) { - dXSARGS; - - if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebygroupid(int group_id, string key, string value)"); - - if (items == 3) { - int group_id = SvIV(ST(0)); - const char *key = (const char *) SvPV_nolen(ST(1)); - const char *str_value = (const char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneSetEntityVariableByGroupID(group_id, key, str_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__crosszonesetentityvariablebyraidid); -XS(XS__crosszonesetentityvariablebyraidid) { - dXSARGS; - - if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyraidid(int raid_id, string key, string value)"); - - if (items == 3) { - int raid_id = SvIV(ST(0)); - const char *key = (const char *) SvPV_nolen(ST(1)); - const char *str_value = (const char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneSetEntityVariableByRaidID(raid_id, key, str_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__crosszonesetentityvariablebyguildid); -XS(XS__crosszonesetentityvariablebyguildid) { - dXSARGS; - - if (items != 3) - Perl_croak(aTHX_ "Usage: quest::crosszonesetentityvariablebyguildid(int guild_id, string key, string value)"); - - if (items == 3) { - int guild_id = SvIV(ST(0)); - const char *key = (const char *) SvPV_nolen(ST(1)); - const char *str_value = (const char *) SvPV_nolen(ST(2)); - quest_manager.CrossZoneSetEntityVariableByGuildID(guild_id, key, str_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__crosszonesignalnpcbynpctypeid); -XS(XS__crosszonesignalnpcbynpctypeid) { - dXSARGS; - - if (items != 2) - Perl_croak(aTHX_ "Usage: quest::crosszonesignalnpcbynpctypeid(uint32 npc_type_id, uint32 value)"); - - if (items == 2) { - uint32 npc_type_id = (uint32) SvIV(ST(0)); - uint32 int_value = (uint32) SvIV(ST(1)); - quest_manager.CrossZoneSignalNPCByNPCTypeID(npc_type_id, int_value); - } - - XSRETURN_EMPTY; -} - -XS(XS__worldwidemarquee); -XS(XS__worldwidemarquee) { - dXSARGS; - if (items != 6) - Perl_croak(aTHX_ "Usage: quest::worldwidemarquee(uint32 color_id, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, string message)"); - - if (items == 6) { - uint32 color_id = (uint32) SvIV(ST(0)); - uint32 priority = (uint32) SvIV(ST(1)); - uint32 fade_in = (uint32) SvIV(ST(2)); - uint32 fade_out = (uint32) SvIV(ST(3)); - uint32 duration = (uint32) SvIV(ST(4)); - char *message = (char *) SvPV_nolen(ST(5)); - quest_manager.WorldWideMarquee(color_id, priority, fade_in, fade_out, duration, message); - } - - XSRETURN_EMPTY; -} XS(XS__log); XS(XS__log) { @@ -4510,6 +5450,26 @@ EXTERN_C XS(boot_quest) { newXS(strcpy(buf, "crosszoneassigntaskbygroupid"), XS__crosszoneassigntaskbygroupid, file); newXS(strcpy(buf, "crosszoneassigntaskbyraidid"), XS__crosszoneassigntaskbyraidid, file); newXS(strcpy(buf, "crosszoneassigntaskbyguildid"), XS__crosszoneassigntaskbyguildid, file); + newXS(strcpy(buf, "crosszonecastspellbycharid"), XS__crosszonecastspellbycharid, file); + newXS(strcpy(buf, "crosszonecastspellbygroupid"), XS__crosszonecastspellbygroupid, file); + newXS(strcpy(buf, "crosszonecastspellbyraidid"), XS__crosszonecastspellbyraidid, file); + newXS(strcpy(buf, "crosszonecastspellbyguildid"), XS__crosszonecastspellbyguildid, file); + newXS(strcpy(buf, "crosszonedisabletaskbycharid"), XS__crosszonedisabletaskbycharid, file); + newXS(strcpy(buf, "crosszonedisabletaskbygroupid"), XS__crosszonedisabletaskbygroupid, file); + newXS(strcpy(buf, "crosszonedisabletaskbyraidid"), XS__crosszonedisabletaskbyraidid, file); + newXS(strcpy(buf, "crosszonedisabletaskbyguildid"), XS__crosszonedisabletaskbyguildid, file); + newXS(strcpy(buf, "crosszoneenabletaskbycharid"), XS__crosszoneenabletaskbycharid, file); + newXS(strcpy(buf, "crosszoneenabletaskbygroupid"), XS__crosszoneenabletaskbygroupid, file); + newXS(strcpy(buf, "crosszoneenabletaskbyraidid"), XS__crosszoneenabletaskbyraidid, file); + newXS(strcpy(buf, "crosszoneenabletaskbyguildid"), XS__crosszoneenabletaskbyguildid, file); + newXS(strcpy(buf, "crosszonefailtaskbycharid"), XS__crosszonefailtaskbycharid, file); + newXS(strcpy(buf, "crosszonefailtaskbygroupid"), XS__crosszonefailtaskbygroupid, file); + newXS(strcpy(buf, "crosszonefailtaskbyraidid"), XS__crosszonefailtaskbyraidid, file); + newXS(strcpy(buf, "crosszonefailtaskbyguildid"), XS__crosszonefailtaskbyguildid, file); + newXS(strcpy(buf, "crosszonemarqueebycharid"), XS__crosszonemarqueebycharid, file); + newXS(strcpy(buf, "crosszonemarqueebygroupid"), XS__crosszonemarqueebygroupid, file); + newXS(strcpy(buf, "crosszonemarqueebyraidid"), XS__crosszonemarqueebyraidid, file); + newXS(strcpy(buf, "crosszonemarqueebyguildid"), XS__crosszonemarqueebyguildid, file); newXS(strcpy(buf, "crosszonemessageplayerbyname"), XS__crosszonemessageplayerbyname, file); newXS(strcpy(buf, "crosszonemessageplayerbygroupid"), XS__crosszonemessageplayerbygroupid, file); newXS(strcpy(buf, "crosszonemessageplayerbyraidid"), XS__crosszonemessageplayerbyraidid, file); @@ -4518,6 +5478,22 @@ EXTERN_C XS(boot_quest) { newXS(strcpy(buf, "crosszonemoveplayerbygroupid"), XS__crosszonemoveplayerbygroupid, file); newXS(strcpy(buf, "crosszonemoveplayerbyraidid"), XS__crosszonemoveplayerbyraidid, file); newXS(strcpy(buf, "crosszonemoveplayerbyguildid"), XS__crosszonemoveplayerbyguildid, file); + newXS(strcpy(buf, "crosszonemoveinstancebycharid"), XS__crosszonemoveinstancebycharid, file); + newXS(strcpy(buf, "crosszonemoveinstancebygroupid"), XS__crosszonemoveinstancebygroupid, file); + newXS(strcpy(buf, "crosszonemoveinstancebyraidid"), XS__crosszonemoveinstancebyraidid, file); + newXS(strcpy(buf, "crosszonemoveinstancebyguildid"), XS__crosszonemoveinstancebyguildid, file); + newXS(strcpy(buf, "crosszoneremovespellbycharid"), XS__crosszoneremovespellbycharid, file); + newXS(strcpy(buf, "crosszoneremovespellbygroupid"), XS__crosszoneremovespellbygroupid, file); + newXS(strcpy(buf, "crosszoneremovespellbyraidid"), XS__crosszoneremovespellbyraidid, file); + newXS(strcpy(buf, "crosszoneremovespellbyguildid"), XS__crosszoneremovespellbyguildid, file); + newXS(strcpy(buf, "crosszoneremovetaskbycharid"), XS__crosszoneremovetaskbycharid, file); + newXS(strcpy(buf, "crosszoneremovetaskbygroupid"), XS__crosszoneremovetaskbygroupid, file); + newXS(strcpy(buf, "crosszoneremovetaskbyraidid"), XS__crosszoneremovetaskbyraidid, file); + newXS(strcpy(buf, "crosszoneremovetaskbyguildid"), XS__crosszoneremovetaskbyguildid, file); + newXS(strcpy(buf, "crosszoneresetactivitybycharid"), XS__crosszoneresetactivitybycharid, file); + newXS(strcpy(buf, "crosszoneresetactivitybygroupid"), XS__crosszoneresetactivitybygroupid, file); + newXS(strcpy(buf, "crosszoneresetactivitybyraidid"), XS__crosszoneresetactivitybyraidid, file); + newXS(strcpy(buf, "crosszoneresetactivitybyguildid"), XS__crosszoneresetactivitybyguildid, file); newXS(strcpy(buf, "crosszonesetentityvariablebynpctypeid"), XS__crosszonesetentityvariablebynpctypeid, file); newXS(strcpy(buf, "crosszonesetentityvariablebyclientname"), XS__crosszonesetentityvariablebyclientname, file); newXS(strcpy(buf, "crosszonesetentityvariablebygroupid"), XS__crosszonesetentityvariablebygroupid, file); @@ -4529,7 +5505,26 @@ EXTERN_C XS(boot_quest) { newXS(strcpy(buf, "crosszonesignalclientbyguildid"), XS__crosszonesignalclientbyguildid, file); newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file); newXS(strcpy(buf, "crosszonesignalnpcbynpctypeid"), XS__crosszonesignalnpcbynpctypeid, file); + newXS(strcpy(buf, "crosszoneupdateactivitybycharid"), XS__crosszoneupdateactivitybycharid, file); + newXS(strcpy(buf, "crosszoneupdateactivitybygroupid"), XS__crosszoneupdateactivitybygroupid, file); + newXS(strcpy(buf, "crosszoneupdateactivitybyraidid"), XS__crosszoneupdateactivitybyraidid, file); + newXS(strcpy(buf, "crosszoneupdateactivitybyguildid"), XS__crosszoneupdateactivitybyguildid, file); + newXS(strcpy(buf, "worldwidecastspell"), XS__worldwidecastspell, file); + newXS(strcpy(buf, "worldwidedisabletask"), XS__worldwidedisabletask, file); + newXS(strcpy(buf, "worldwideenabletask"), XS__worldwideenabletask, file); + newXS(strcpy(buf, "worldwidefailtask"), XS__worldwidefailtask, file); newXS(strcpy(buf, "worldwidemarquee"), XS__worldwidemarquee, file); + newXS(strcpy(buf, "worldwidemessage"), XS__worldwidemessage, file); + newXS(strcpy(buf, "worldwidemove"), XS__worldwidemove, file); + newXS(strcpy(buf, "worldwidemoveinstance"), XS__worldwidemoveinstance, file); + newXS(strcpy(buf, "worldwideremovespell"), XS__worldwideremovespell, file); + newXS(strcpy(buf, "worldwideremovetask"), XS__worldwideremovetask, file); + newXS(strcpy(buf, "worldwideresetactivity"), XS__worldwideresetactivity, file); + newXS(strcpy(buf, "worldwidesetentityvariableclient"), XS__worldwidesetentityvariableclient, file); + newXS(strcpy(buf, "worldwidesetentityvariablenpc"), XS__worldwidesetentityvariablenpc, file); + newXS(strcpy(buf, "worldwidesignalclient"), XS__worldwidesignalclient, file); + newXS(strcpy(buf, "worldwidesignalnpc"), XS__worldwidesignalnpc, file); + newXS(strcpy(buf, "worldwideupdateactivity"), XS__worldwideupdateactivity, file); newXS(strcpy(buf, "debug"), XS__debug, file); newXS(strcpy(buf, "delglobal"), XS__delglobal, file); newXS(strcpy(buf, "depop"), XS__depop, file); diff --git a/zone/lua_general.cpp b/zone/lua_general.cpp index 71798ecf0..4428dadfa 100644 --- a/zone/lua_general.cpp +++ b/zone/lua_general.cpp @@ -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), diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index 09423b49b..9daf2d351 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -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); } diff --git a/zone/questmgr.h b/zone/questmgr.h index 14f4678be..8e9d84cf9 100644 --- a/zone/questmgr.h +++ b/zone/questmgr.h @@ -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); diff --git a/zone/tasks.cpp b/zone/tasks.cpp index 141359d81..35fec576c 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -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(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(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) { diff --git a/zone/tasks.h b/zone/tasks.h index 8d948c370..cb4cd63c1 100644 --- a/zone/tasks.h +++ b/zone/tasks.h @@ -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); diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index c4a544357..ccd7edde8 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -448,7 +448,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) entity_list.MessageStatus(sem->guilddbid, sem->minstatus, sem->type, (char*)sem->message); else { Client* client = entity_list.GetClientByName(sem->to); - if (client != 0) { + if (client) { char* newmessage = 0; if (strstr(sem->message, "^") == 0) client->Message(sem->type, (char*)sem->message); @@ -584,7 +584,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) ServerZonePlayer_Struct* szp = (ServerZonePlayer_Struct*)pack->pBuffer; Client* client = entity_list.GetClientByName(szp->name); printf("Zoning %s to %s(%u) - %u\n", client != nullptr ? client->GetCleanName() : "Unknown", szp->zone, database.GetZoneID(szp->zone), szp->instance_id); - if (client != 0) { + if (client) { if (strcasecmp(szp->adminname, szp->name) == 0) client->Message(Chat::White, "Zoning to: %s", szp->zone); else if (client->GetAnon() == 1 && client->Admin() > szp->adminrank) @@ -612,7 +612,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) case ServerOP_KickPlayer: { ServerKickPlayer_Struct* skp = (ServerKickPlayer_Struct*)pack->pBuffer; Client* client = entity_list.GetClientByName(skp->name); - if (client != 0) { + if (client) { if (skp->adminrank >= client->Admin()) { client->WorldKick(); if (is_zone_loaded) @@ -628,7 +628,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) case ServerOP_KillPlayer: { ServerKillPlayer_Struct* skp = (ServerKillPlayer_Struct*)pack->pBuffer; Client* client = entity_list.GetClientByName(skp->target); - if (client != 0) { + if (client) { if (skp->admin >= client->Admin()) { client->GMKill(); if (is_zone_loaded) @@ -659,7 +659,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) case ServerOP_FlagUpdate: { Client* client = entity_list.GetClientByAccID(*((uint32*)pack->pBuffer)); - if (client != 0) { + if (client) { client->UpdateAdmin(); } break; @@ -673,7 +673,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) break; ServerGMGoto_Struct* gmg = (ServerGMGoto_Struct*)pack->pBuffer; Client* client = entity_list.GetClientByName(gmg->gotoname); - if (client != 0) { + if (client) { SendEmoteMessage(gmg->myname, 0, 13, "Summoning you to: %s @ %s, %1.1f, %1.1f, %1.1f", client->GetName(), zone->GetShortName(), client->GetX(), client->GetY(), client->GetZ()); auto outpack = new ServerPacket(ServerOP_ZonePlayer, sizeof(ServerZonePlayer_Struct)); ServerZonePlayer_Struct* szp = (ServerZonePlayer_Struct*)outpack->pBuffer; @@ -1888,99 +1888,122 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) } break; } - case ServerOP_CZSetEntityVariableByNPCTypeID: + case ServerOP_CZCastSpellPlayer: { - CZSetEntVarByNPCTypeID_Struct* CZM = (CZSetEntVarByNPCTypeID_Struct*)pack->pBuffer; - NPC* n = entity_list.GetNPCByNPCTypeID(CZM->npctype_id); - if (n != 0) { - n->SetEntityVariable(CZM->id, CZM->m_var); + CZCastSpellPlayer_Struct* CZSC = (CZCastSpellPlayer_Struct*) pack->pBuffer; + Client* client = entity_list.GetClientByCharID(CZSC->character_id); + if (client) { + client->SpellFinished(CZSC->spell_id, client); } break; } - case ServerOP_CZSignalNPC: + case ServerOP_CZCastSpellGroup: { - CZNPCSignal_Struct* CZCN = (CZNPCSignal_Struct*)pack->pBuffer; - NPC* n = entity_list.GetNPCByNPCTypeID(CZCN->npctype_id); - if (n != 0) { - n->SignalNPC(CZCN->data); - } - break; - } - case ServerOP_CZSignalClient: - { - CZClientSignal_Struct* CZCS = (CZClientSignal_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByCharID(CZCS->charid); - if (client != 0) { - client->Signal(CZCS->data); - } - break; - } - case ServerOP_CZSignalGroup: - { - CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*)pack->pBuffer; - auto client_group = entity_list.GetGroupByID(CZGS->group_id); + CZCastSpellGroup_Struct* CZSC = (CZCastSpellGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZSC->group_id); if (client_group) { for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { auto group_member = client_group->members[member_index]->CastToClient(); - group_member->Signal(CZGS->data); + group_member->SpellFinished(CZSC->spell_id, group_member); } } } break; } - case ServerOP_CZSignalRaid: + case ServerOP_CZCastSpellRaid: { - CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*)pack->pBuffer; - auto client_raid = entity_list.GetRaidByID(CZRS->raid_id); + CZCastSpellRaid_Struct* CZSC = (CZCastSpellRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZSC->raid_id); if (client_raid) { for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->Signal(CZRS->data); + raid_member->SpellFinished(CZSC->spell_id, raid_member); } } } break; } - case ServerOP_CZSignalGuild: + case ServerOP_CZCastSpellGuild: { - CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*)pack->pBuffer; - auto client_list = entity_list.GetClientList(); - for (auto client : client_list) { - if (client.second->GuildID() > 0 && client.second->GuildID() == CZGS->guild_id) { - client.second->Signal(CZGS->data); + CZCastSpellGuild_Struct* CZSC = (CZCastSpellGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZSC->guild_id) { + client.second->SpellFinished(CZSC->spell_id, client.second); } } break; } - case ServerOP_CZSignalClientByName: + case ServerOP_CZMarqueePlayer: { - CZClientSignalByName_Struct* CZCS = (CZClientSignalByName_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByName(CZCS->Name); - if (client != 0) { - client->Signal(CZCS->data); + CZMarqueePlayer_Struct* CZMS = (CZMarqueePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZMS->character_id); + std::string message = CZMS->message; + if (client) { + client->SendMarqueeMessage(CZMS->type, CZMS->priority, CZMS->fade_in, CZMS->fade_out, CZMS->duration, message); + } + break; + } + case ServerOP_CZMarqueeGroup: + { + CZMarqueeGroup_Struct* CZMS = (CZMarqueeGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZMS->group_id); + std::string message = CZMS->message; + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->SendMarqueeMessage(CZMS->type, CZMS->priority, CZMS->fade_in, CZMS->fade_out, CZMS->duration, message); + } + } + } + break; + } + case ServerOP_CZMarqueeRaid: + { + CZMarqueeRaid_Struct* CZMS = (CZMarqueeRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZMS->raid_id); + std::string message = CZMS->message; + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->SendMarqueeMessage(CZMS->type, CZMS->priority, CZMS->fade_in, CZMS->fade_out, CZMS->duration, message); + } + } + } + break; + } + case ServerOP_CZMarqueeGuild: + { + CZMarqueeGuild_Struct* CZMS = (CZMarqueeGuild_Struct*) pack->pBuffer; + std::string message = CZMS->message; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZMS->guild_id) { + client.second->SendMarqueeMessage(CZMS->type, CZMS->priority, CZMS->fade_in, CZMS->fade_out, CZMS->duration, message); + } } break; } case ServerOP_CZMessagePlayer: { - CZMessagePlayer_Struct* CZCS = (CZMessagePlayer_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByName(CZCS->CharName); - if (client != 0) { - client->Message(CZCS->Type, CZCS->Message); + CZMessagePlayer_Struct* CZCS = (CZMessagePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByName(CZCS->character_name); + if (client) { + client->Message(CZCS->type, CZCS->message); } break; } case ServerOP_CZMessageGroup: { - CZMessageGroup_Struct* CZGM = (CZMessageGroup_Struct*)pack->pBuffer; - auto client_group = entity_list.GetGroupByID(CZGM->GroupID); + CZMessageGroup_Struct* CZGM = (CZMessageGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZGM->group_id); if (client_group) { for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { auto group_member = client_group->members[member_index]->CastToClient(); - group_member->Message(CZGM->Type, CZGM->Message); + group_member->Message(CZGM->type, CZGM->message); } } } @@ -1988,13 +2011,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) } case ServerOP_CZMessageRaid: { - CZMessageRaid_Struct* CZRM = (CZMessageRaid_Struct*)pack->pBuffer; - auto client_raid = entity_list.GetRaidByID(CZRM->RaidID); + CZMessageRaid_Struct* CZRM = (CZMessageRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZRM->raid_id); if (client_raid) { for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->Message(CZRM->Type, CZRM->Message); + raid_member->Message(CZRM->type, CZRM->message); } } } @@ -2002,123 +2025,26 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) } case ServerOP_CZMessageGuild: { - CZMessageGuild_Struct* CZGM = (CZMessageGuild_Struct*)pack->pBuffer; - auto client_list = entity_list.GetClientList(); - for (auto client : client_list) { - if (client.second->GuildID() > 0 && client.second->GuildID() == CZGM->GuildID) { - client.second->Message(CZGM->Type, CZGM->Message); - } - } - break; - } - case ServerOP_CZSetEntityVariableByClientName: - { - CZSetEntVarByClientName_Struct* CZCS = (CZSetEntVarByClientName_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByName(CZCS->CharName); - if (client != 0) { - client->SetEntityVariable(CZCS->id, CZCS->m_var); - } - break; - } - case ServerOP_CZSetEntityVariableByGroupID: - { - CZSetEntVarByGroupID_Struct* CZCS = (CZSetEntVarByGroupID_Struct*)pack->pBuffer; - auto client_group = entity_list.GetGroupByID(CZCS->group_id); - if (client_group) { - for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { - if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { - auto group_member = client_group->members[member_index]->CastToClient(); - group_member->SetEntityVariable(CZCS->id, CZCS->m_var); - } - } - } - break; - } - case ServerOP_CZSetEntityVariableByRaidID: - { - CZSetEntVarByRaidID_Struct* CZCS = (CZSetEntVarByRaidID_Struct*)pack->pBuffer; - auto client_raid = entity_list.GetRaidByID(CZCS->raid_id); - if (client_raid) { - for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { - if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { - auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->SetEntityVariable(CZCS->id, CZCS->m_var); - } - } - } - break; - } - case ServerOP_CZSetEntityVariableByGuildID: - { - CZSetEntVarByGuildID_Struct* CZCS = (CZSetEntVarByGuildID_Struct*)pack->pBuffer; - auto client_list = entity_list.GetClientList(); - for (auto client : client_list) { - if (client.second->GuildID() > 0 && client.second->GuildID() == CZCS->guild_id) { - client.second->SetEntityVariable(CZCS->id, CZCS->m_var); - } - } - break; - } - case ServerOP_CZTaskAssign: - { - CZTaskAssign_Struct* CZTA = (CZTaskAssign_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByCharID(CZTA->character_id); - if (client != 0) { - client->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); - } - break; - } - case ServerOP_CZTaskAssignGroup: - { - CZTaskAssignGroup_Struct* CZTA = (CZTaskAssignGroup_Struct*)pack->pBuffer; - auto client_group = entity_list.GetGroupByID(CZTA->group_id); - if (client_group) { - for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { - if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { - auto group_member = client_group->members[member_index]->CastToClient(); - group_member->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); - } - } - } - break; - } - case ServerOP_CZTaskAssignRaid: - { - CZTaskAssignRaid_Struct* CZTA = (CZTaskAssignRaid_Struct*)pack->pBuffer; - auto client_raid = entity_list.GetRaidByID(CZTA->raid_id); - if (client_raid) { - for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { - if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { - auto raid_member = client_raid->members[member_index].member->CastToClient(); - raid_member->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); - } - } - } - break; - } - case ServerOP_CZTaskAssignGuild: - { - CZTaskAssignGuild_Struct* CZTA = (CZTaskAssignGuild_Struct*)pack->pBuffer; - auto client_list = entity_list.GetClientList(); - for (auto client : client_list) { - if (client.second->GuildID() > 0 && client.second->GuildID() == CZTA->guild_id) { - client.second->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); + CZMessageGuild_Struct* CZGM = (CZMessageGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZGM->guild_id) { + client.second->Message(CZGM->type, CZGM->message); } } break; } case ServerOP_CZMovePlayer: { - CZMovePlayer_Struct* CZMP = (CZMovePlayer_Struct*)pack->pBuffer; - Client* client = entity_list.GetClientByCharID(CZMP->character_id); - if (client != 0) { + CZMovePlayer_Struct* CZMP = (CZMovePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZMP->character_id); + if (client) { client->MoveZone(CZMP->zone_short_name); } break; } case ServerOP_CZMoveGroup: { - CZMoveGroup_Struct* CZMG = (CZMoveGroup_Struct*)pack->pBuffer; + CZMoveGroup_Struct* CZMG = (CZMoveGroup_Struct*) pack->pBuffer; auto client_group = entity_list.GetGroupByID(CZMG->group_id); if (client_group) { for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { @@ -2132,7 +2058,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) } case ServerOP_CZMoveRaid: { - CZMoveRaid_Struct* CZMR = (CZMoveRaid_Struct*)pack->pBuffer; + CZMoveRaid_Struct* CZMR = (CZMoveRaid_Struct*) pack->pBuffer; auto client_raid = entity_list.GetRaidByID(CZMR->raid_id); if (client_raid) { for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { @@ -2146,27 +2072,740 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) } case ServerOP_CZMoveGuild: { - CZMoveGuild_Struct* CZMG = (CZMoveGuild_Struct*)pack->pBuffer; - auto client_list = entity_list.GetClientList(); - for (auto client : client_list) { + CZMoveGuild_Struct* CZMG = (CZMoveGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { if (client.second->GuildID() > 0 && client.second->GuildID() == CZMG->guild_id) { client.second->MoveZone(CZMG->zone_short_name); } } break; } + + case ServerOP_CZMoveInstancePlayer: + { + CZMoveInstancePlayer_Struct* CZMP = (CZMoveInstancePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZMP->character_id); + if (client) { + client->MoveZoneInstance(CZMP->instance_id); + } + break; + } + case ServerOP_CZMoveInstanceGroup: + { + CZMoveInstanceGroup_Struct* CZMG = (CZMoveInstanceGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZMG->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->MoveZoneInstance(CZMG->instance_id); + } + } + } + break; + } + case ServerOP_CZMoveInstanceRaid: + { + CZMoveInstanceRaid_Struct* CZMR = (CZMoveInstanceRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZMR->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->MoveZoneInstance(CZMR->instance_id); + } + } + } + break; + } + case ServerOP_CZMoveInstanceGuild: + { + CZMoveInstanceGuild_Struct* CZMG = (CZMoveInstanceGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZMG->guild_id) { + client.second->MoveZoneInstance(CZMG->instance_id); + } + } + break; + } + case ServerOP_CZRemoveSpellPlayer: + { + CZRemoveSpellPlayer_Struct* CZRS = (CZRemoveSpellPlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZRS->character_id); + if (client) { + client->BuffFadeBySpellID(CZRS->spell_id); + } + break; + } + case ServerOP_CZRemoveSpellGroup: + { + CZRemoveSpellGroup_Struct* CZRS = (CZRemoveSpellGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZRS->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->BuffFadeBySpellID(CZRS->spell_id); + } + } + } + break; + } + case ServerOP_CZRemoveSpellRaid: + { + CZRemoveSpellRaid_Struct* CZRS = (CZRemoveSpellRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZRS->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->BuffFadeBySpellID(CZRS->spell_id); + } + } + } + break; + } + case ServerOP_CZRemoveSpellGuild: + { + CZRemoveSpellGuild_Struct* CZRS = (CZRemoveSpellGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZRS->guild_id) { + client.second->BuffFadeBySpellID(CZRS->spell_id); + } + } + break; + } + case ServerOP_CZSetEntityVariableByClientName: + { + CZSetEntVarByClientName_Struct* CZCS = (CZSetEntVarByClientName_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByName(CZCS->character_name); + if (client) { + client->SetEntityVariable(CZCS->variable_name, CZCS->variable_value); + } + break; + } + case ServerOP_CZSetEntityVariableByGroupID: + { + CZSetEntVarByGroupID_Struct* CZCS = (CZSetEntVarByGroupID_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZCS->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->SetEntityVariable(CZCS->variable_name, CZCS->variable_value); + } + } + } + break; + } + case ServerOP_CZSetEntityVariableByRaidID: + { + CZSetEntVarByRaidID_Struct* CZCS = (CZSetEntVarByRaidID_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZCS->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->SetEntityVariable(CZCS->variable_name, CZCS->variable_value); + } + } + } + break; + } + case ServerOP_CZSetEntityVariableByGuildID: + { + CZSetEntVarByGuildID_Struct* CZCS = (CZSetEntVarByGuildID_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZCS->guild_id) { + client.second->SetEntityVariable(CZCS->variable_name, CZCS->variable_value); + } + } + break; + } + case ServerOP_CZSetEntityVariableByNPCTypeID: + { + CZSetEntVarByNPCTypeID_Struct* CZM = (CZSetEntVarByNPCTypeID_Struct*) pack->pBuffer; + auto npc = entity_list.GetNPCByNPCTypeID(CZM->npctype_id); + if (npc != 0) { + npc->SetEntityVariable(CZM->variable_name, CZM->variable_value); + } + break; + } + case ServerOP_CZSignalNPC: + { + CZNPCSignal_Struct* CZCN = (CZNPCSignal_Struct*) pack->pBuffer; + auto npc = entity_list.GetNPCByNPCTypeID(CZCN->npctype_id); + if (npc != 0) { + npc->SignalNPC(CZCN->signal); + } + break; + } + case ServerOP_CZSignalClient: + { + CZClientSignal_Struct* CZCS = (CZClientSignal_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZCS->character_id); + if (client) { + client->Signal(CZCS->signal); + } + break; + } + case ServerOP_CZSignalGroup: + { + CZGroupSignal_Struct* CZGS = (CZGroupSignal_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZGS->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->Signal(CZGS->signal); + } + } + } + break; + } + case ServerOP_CZSignalRaid: + { + CZRaidSignal_Struct* CZRS = (CZRaidSignal_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZRS->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->Signal(CZRS->signal); + } + } + } + break; + } + case ServerOP_CZSignalGuild: + { + CZGuildSignal_Struct* CZGS = (CZGuildSignal_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZGS->guild_id) { + client.second->Signal(CZGS->signal); + } + } + break; + } + case ServerOP_CZSignalClientByName: + { + CZClientSignalByName_Struct* CZCS = (CZClientSignalByName_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByName(CZCS->character_name); + if (client) { + client->Signal(CZCS->signal); + } + break; + } + case ServerOP_CZTaskAssignPlayer: + { + CZTaskAssignPlayer_Struct* CZTA = (CZTaskAssignPlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZTA->character_id); + if (client) { + client->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); + } + break; + } + case ServerOP_CZTaskAssignGroup: + { + CZTaskAssignGroup_Struct* CZTA = (CZTaskAssignGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZTA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); + } + } + } + break; + } + case ServerOP_CZTaskAssignRaid: + { + CZTaskAssignRaid_Struct* CZTA = (CZTaskAssignRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZTA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); + } + } + } + break; + } + case ServerOP_CZTaskAssignGuild: + { + CZTaskAssignGuild_Struct* CZTA = (CZTaskAssignGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZTA->guild_id) { + client.second->AssignTask(CZTA->task_id, CZTA->npc_entity_id, CZTA->enforce_level_requirement); + } + } + break; + } + case ServerOP_CZTaskActivityResetPlayer: + { + CZTaskActivityResetPlayer_Struct* CZRA = (CZTaskActivityResetPlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZRA->character_id); + if (client) { + client->ResetTaskActivity(CZRA->task_id, CZRA->activity_id); + } + break; + } + case ServerOP_CZTaskActivityResetGroup: + { + CZTaskActivityResetGroup_Struct* CZRA = (CZTaskActivityResetGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZRA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->ResetTaskActivity(CZRA->task_id, CZRA->activity_id); + } + } + } + break; + } + case ServerOP_CZTaskActivityResetRaid: + { + CZTaskActivityResetRaid_Struct* CZRA = (CZTaskActivityResetRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZRA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->ResetTaskActivity(CZRA->task_id, CZRA->activity_id); + } + } + } + break; + } + case ServerOP_CZTaskActivityResetGuild: + { + CZTaskActivityResetGuild_Struct* CZRA = (CZTaskActivityResetGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZRA->guild_id) { + client.second->ResetTaskActivity(CZRA->task_id, CZRA->activity_id); + } + } + break; + } + case ServerOP_CZTaskActivityUpdatePlayer: + { + CZTaskActivityUpdatePlayer_Struct* CZUA = (CZTaskActivityUpdatePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZUA->character_id); + if (client) { + client->UpdateTaskActivity(CZUA->task_id, CZUA->activity_id, CZUA->activity_count); + } + break; + } + case ServerOP_CZTaskActivityUpdateGroup: + { + CZTaskActivityUpdateGroup_Struct* CZUA = (CZTaskActivityUpdateGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZUA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->UpdateTaskActivity(CZUA->task_id, CZUA->activity_id, CZUA->activity_count); + } + } + } + break; + } + case ServerOP_CZTaskActivityUpdateRaid: + { + CZTaskActivityUpdateRaid_Struct* CZUA = (CZTaskActivityUpdateRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZUA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->UpdateTaskActivity(CZUA->task_id, CZUA->activity_id, CZUA->activity_count); + } + } + } + break; + } + case ServerOP_CZTaskActivityUpdateGuild: + { + CZTaskActivityUpdateGuild_Struct* CZUA = (CZTaskActivityUpdateGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZUA->guild_id) { + client.second->UpdateTaskActivity(CZUA->task_id, CZUA->activity_id, CZUA->activity_count); + } + } + break; + } + case ServerOP_CZTaskDisablePlayer: + { + CZTaskDisablePlayer_Struct* CZUA = (CZTaskDisablePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZUA->character_id); + if (client) { + client->DisableTask(1, (int*) CZUA->task_id); + } + break; + } + case ServerOP_CZTaskDisableGroup: + { + CZTaskDisableGroup_Struct* CZUA = (CZTaskDisableGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZUA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->DisableTask(1, (int*) CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskDisableRaid: + { + CZTaskDisableRaid_Struct* CZUA = (CZTaskDisableRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZUA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->DisableTask(1, (int*) CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskDisableGuild: + { + CZTaskDisableGuild_Struct* CZUA = (CZTaskDisableGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZUA->guild_id) { + client.second->DisableTask(1, (int*) CZUA->task_id); + } + } + break; + } + case ServerOP_CZTaskEnablePlayer: + { + CZTaskEnablePlayer_Struct* CZUA = (CZTaskEnablePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZUA->character_id); + if (client) { + client->EnableTask(1, (int*) CZUA->task_id); + } + break; + } + case ServerOP_CZTaskEnableGroup: + { + CZTaskEnableGroup_Struct* CZUA = (CZTaskEnableGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZUA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->EnableTask(1, (int*) CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskEnableRaid: + { + CZTaskEnableRaid_Struct* CZUA = (CZTaskEnableRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZUA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->EnableTask(1, (int*) CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskEnableGuild: + { + CZTaskEnableGuild_Struct* CZUA = (CZTaskEnableGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZUA->guild_id) { + client.second->EnableTask(1, (int*) CZUA->task_id); + } + } + break; + } + case ServerOP_CZTaskFailPlayer: + { + CZTaskFailPlayer_Struct* CZUA = (CZTaskFailPlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZUA->character_id); + if (client) { + client->FailTask(CZUA->task_id); + } + break; + } + case ServerOP_CZTaskFailGroup: + { + CZTaskFailGroup_Struct* CZUA = (CZTaskFailGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZUA->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->FailTask(CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskFailRaid: + { + CZTaskFailRaid_Struct* CZUA = (CZTaskFailRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZUA->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->FailTask(CZUA->task_id); + } + } + } + break; + } + case ServerOP_CZTaskFailGuild: + { + CZTaskFailGuild_Struct* CZUA = (CZTaskFailGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZUA->guild_id) { + client.second->FailTask(CZUA->task_id); + } + } + break; + } + case ServerOP_CZTaskRemovePlayer: + { + CZTaskRemovePlayer_Struct* CZTR = (CZTaskRemovePlayer_Struct*) pack->pBuffer; + auto client = entity_list.GetClientByCharID(CZTR->character_id); + if (client) { + client->RemoveTaskByTaskID(CZTR->task_id); + } + break; + } + case ServerOP_CZTaskRemoveGroup: + { + CZTaskRemoveGroup_Struct* CZTR = (CZTaskRemoveGroup_Struct*) pack->pBuffer; + auto client_group = entity_list.GetGroupByID(CZTR->group_id); + if (client_group) { + for (int member_index = 0; member_index < MAX_GROUP_MEMBERS; member_index++) { + if (client_group->members[member_index] && client_group->members[member_index]->IsClient()) { + auto group_member = client_group->members[member_index]->CastToClient(); + group_member->RemoveTaskByTaskID(CZTR->task_id); + } + } + } + break; + } + case ServerOP_CZTaskRemoveRaid: + { + CZTaskRemoveRaid_Struct* CZTR = (CZTaskRemoveRaid_Struct*) pack->pBuffer; + auto client_raid = entity_list.GetRaidByID(CZTR->raid_id); + if (client_raid) { + for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) { + if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) { + auto raid_member = client_raid->members[member_index].member->CastToClient(); + raid_member->RemoveTaskByTaskID(CZTR->task_id); + } + } + } + break; + } + case ServerOP_CZTaskRemoveGuild: + { + CZTaskRemoveGuild_Struct* CZTR = (CZTaskRemoveGuild_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + if (client.second->GuildID() > 0 && client.second->GuildID() == CZTR->guild_id) { + client.second->RemoveTaskByTaskID(CZTR->task_id); + } + } + break; + } + case ServerOP_WWAssignTask: + { + WWAssignTask_Struct* WWAT = (WWAssignTask_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWAT->min_status && (client_status <= WWAT->max_status || WWAT->max_status == 0)) { + client.second->AssignTask(WWAT->task_id, WWAT->npc_entity_id, WWAT->enforce_level_requirement); + } + } + break; + } + case ServerOP_WWCastSpell: + { + WWCastSpell_Struct* WWCS = (WWCastSpell_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWCS->min_status && (client_status <= WWCS->max_status || WWCS->max_status == 0)) { + client.second->SpellFinished(WWCS->spell_id, client.second); + } + } + break; + } + case ServerOP_WWDisableTask: + { + WWDisableTask_Struct* WWDT = (WWDisableTask_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWDT->min_status && (client_status <= WWDT->max_status || WWDT->max_status == 0)) { + client.second->DisableTask(1, (int *) WWDT->task_id); + } + } + break; + } + case ServerOP_WWEnableTask: + { + WWEnableTask_Struct* WWET = (WWEnableTask_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWET->min_status && (client_status <= WWET->max_status || WWET->max_status == 0)) { + client.second->EnableTask(1, (int *) WWET->task_id); + } + } + break; + } + case ServerOP_WWFailTask: + { + WWFailTask_Struct* WWFT = (WWFailTask_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWFT->min_status && (client_status <= WWFT->max_status || WWFT->max_status == 0)) { + client.second->FailTask(WWFT->task_id); + } + } + break; + } case ServerOP_WWMarquee: { - WWMarquee_Struct* WWMS = (WWMarquee_Struct*)pack->pBuffer; - std::list client_list; - entity_list.GetClientList(client_list); - auto iter = client_list.begin(); - std::string Message = WWMS->Message; - while (iter != client_list.end()) { - Client* client = (*iter); - client->SendMarqueeMessage(WWMS->Type, WWMS->Priority, WWMS->FadeIn, WWMS->FadeOut, WWMS->Duration, Message); - iter++; + WWMarquee_Struct* WWMS = (WWMarquee_Struct*) pack->pBuffer; + std::string message = WWMS->message; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWMS->min_status && (client_status <= WWMS->max_status || WWMS->max_status == 0)) { + client.second->SendMarqueeMessage(WWMS->type, WWMS->priority, WWMS->fade_in, WWMS->fade_out, WWMS->duration, message); + } } + break; + } + case ServerOP_WWMessage: + { + WWMessage_Struct* WWMS = (WWMessage_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWMS->min_status && (client_status <= WWMS->max_status || WWMS->max_status == 0)) { + client.second->Message(WWMS->type, WWMS->message); + } + } + break; + } + case ServerOP_WWMove: + { + WWMove_Struct* WWMS = (WWMove_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWMS->min_status && (client_status <= WWMS->max_status || WWMS->max_status == 0)) { + client.second->MoveZone(WWMS->zone_short_name); + } + } + break; + } + case ServerOP_WWMoveInstance: + { + WWMoveInstance_Struct* WWMS = (WWMoveInstance_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWMS->min_status && (client_status <= WWMS->max_status || WWMS->max_status == 0)) { + client.second->MoveZoneInstance(WWMS->instance_id); + } + } + break; + } + case ServerOP_WWRemoveSpell: + { + WWRemoveSpell_Struct* WWRS = (WWRemoveSpell_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWRS->min_status && (client_status <= WWRS->max_status || WWRS->max_status == 0)) { + client.second->BuffFadeBySpellID(WWRS->spell_id); + } + } + break; + } + case ServerOP_WWRemoveTask: + { + WWRemoveTask_Struct* WWRT = (WWRemoveTask_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWRT->min_status && (client_status <= WWRT->max_status || WWRT->max_status == 0)) { + client.second->RemoveTaskByTaskID(WWRT->task_id); + } + } + break; + } + case ServerOP_WWResetActivity: + { + WWResetActivity_Struct* WWRA = (WWResetActivity_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWRA->min_status && (client_status <= WWRA->max_status || WWRA->max_status == 0)) { + client.second->ResetTaskActivity(WWRA->task_id, WWRA->activity_id); + } + } + break; + } + case ServerOP_WWSetEntityVariableClient: + { + WWSetEntVarClient_Struct* WWSC = (WWSetEntVarClient_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWSC->min_status && (client_status <= WWSC->max_status || WWSC->max_status == 0)) { + client.second->SetEntityVariable(WWSC->variable_name, WWSC->variable_value); + } + } + break; + } + case ServerOP_WWSetEntityVariableNPC: + { + WWSetEntVarNPC_Struct* WWSN = (WWSetEntVarNPC_Struct*) pack->pBuffer; + for (auto &npc : entity_list.GetNPCList()) { + npc.second->SetEntityVariable(WWSN->variable_name, WWSN->variable_value); + } + break; + } + case ServerOP_WWSignalClient: + { + WWSignalClient_Struct* WWSC = (WWSignalClient_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWSC->min_status && (client_status <= WWSC->max_status || WWSC->max_status == 0)) { + client.second->Signal(WWSC->signal); + } + } + break; + } + case ServerOP_WWSignalNPC: + { + WWSignalNPC_Struct* WWSN = (WWSignalNPC_Struct*) pack->pBuffer; + for (auto &npc : entity_list.GetNPCList()) { + npc.second->SignalNPC(WWSN->signal); + } + break; + } + case ServerOP_WWUpdateActivity: + { + WWUpdateActivity_Struct* WWUA = (WWUpdateActivity_Struct*) pack->pBuffer; + for (auto &client : entity_list.GetClientList()) { + auto client_status = client.second->Admin(); + if (client_status >= WWUA->min_status && (client_status <= WWUA->max_status || WWUA->max_status == 0)) { + client.second->UpdateTaskActivity(WWUA->task_id, WWUA->activity_id, WWUA->activity_count); + } + } + break; } case ServerOP_ReloadWorld: