From 669f6a177cad71850afff36e09bfbdab607839e1 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 23 Aug 2017 23:58:14 +0200 Subject: [PATCH] Prperational work for linkshells --- .../chai/CmnDefCutSceneReplay.chai_outdated | 61 ------------------- .../Server_Common/Network/PacketDef/Ipcs.h | 36 ++++++----- .../Server_Zone/Network/GameConnection.cpp | 2 + .../Network/Handlers/EventHandlers.cpp | 10 +++ .../Network/Handlers/PacketHandlers.cpp | 4 ++ 5 files changed, 33 insertions(+), 80 deletions(-) delete mode 100644 bin/scripts/chai/CmnDefCutSceneReplay.chai_outdated diff --git a/bin/scripts/chai/CmnDefCutSceneReplay.chai_outdated b/bin/scripts/chai/CmnDefCutSceneReplay.chai_outdated deleted file mode 100644 index 4bddaa63..00000000 --- a/bin/scripts/chai/CmnDefCutSceneReplay.chai_outdated +++ /dev/null @@ -1,61 +0,0 @@ -// This is an automatically generated chai script template -// Content needs to be added by hand to make it function -// In order for this script to be loaded, change its extension to .chai - - -// Quest Script: SubFst004_00027 -// Quest Name: Preserving the Past -// Quest ID: 65563 -// Start NPC: 1000194 -// End NPC: 1000789 - -class CmnDefCutSceneReplayDef -{ - // Basic quest information - var quest_name - var quest_id - - // These are the quest vars / flags used in this quest - // GetQuestUI8AL - // GetQuestUI8BH - - // Available Scenes in this quest, not necessarly all are used - attr onScene00000; - - // Quest rewards - var RewardExpFactor; - var RewardItem; - var RewardItemCount; - - // Entities found in the script data of the quest - // some of these may be useful - var ACTOR0; - var ACTOR1; - var ACTOR2; - var ITEM0; - - def CmnDefCutSceneReplayDef() - { - - } - - def Scene00000( player, eventId, flags, unk, unk1 ) - { - player.eventPlay(eventId, 0, 0x2000, unk, 1, - fun( player, eventId, subEvent, param1, param2, param3 ) - { - player.eventFinish(eventId, 1); - } ); - } - -}; - - -def CmnDefCutSceneReplay_START(player, actorId, eventId) -{ - var quest = CmnDefCutSceneReplay(); - var actor = mapActor( actorId ); - - player.eventStart( actorId, eventId, 1, 0, 0 ); - CmnDefCutSceneReplay.Scene00000( player, eventId, 0, 0, 0 ); -} diff --git a/src/servers/Server_Common/Network/PacketDef/Ipcs.h b/src/servers/Server_Common/Network/PacketDef/Ipcs.h index f0cf819c..b5e9b9b6 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -127,43 +127,39 @@ namespace Packets { enum ClientZoneIpcType : uint16_t { - TellChatHandler = 0x0064,// updated for sb + PingHandler = 0x0065, // updated for sb + InitHandler = 0x0066, // updated for sb + ChatHandler = 0x0067, // updated for sb - PingHandler = 0x0065,// updated for sb - InitHandler = 0x0066,// updated for sb - ChatHandler = 0x0067,// updated for sb - - FinishLoadingHandler = 0x0069,// updated for sb + FinishLoadingHandler = 0x0069, // updated for sb CFCommenceHandler = 0x006F, CFRegisterDuty = 0x0071, CFRegisterRoulette = 0x0072, - - PlayTimeHandler = 0x0073,// updated for sb - LogoutHandler = 0x0074,// updated for sb + PlayTimeHandler = 0x0073, // updated for sb + LogoutHandler = 0x0074, // updated for sb CFDutyInfoHandler = 0x0078, SocialReqSendHandler = 0x00A5, - SocialListHandler = 0x00AA,// updated for sb - SetSearchInfoHandler = 0x00AC,// updated for sb + SocialListHandler = 0x00AA, // updated for sb + SetSearchInfoHandler = 0x00AC, // updated for sb ReqSearchInfoHandler = 0x00AD, - BlackListHandler = 0x00B7,// updated for sb + BlackListHandler = 0x00B7, // updated for sb - LinkshellListHandler = 0x00BF,// updated for sb + LinkshellListHandler = 0x00BF, // updated for sb - FcInfoReqHandler = 0x0100,// updated for sb + FcInfoReqHandler = 0x0100, // updated for sb ZoneLineHandler = 0x0107, // updated for sb - ActionHandler = 0x0108,// updated for sb - - DiscoveryHandler = 0x0109,// updated for sb + ActionHandler = 0x0108, // updated for sb + DiscoveryHandler = 0x0109, // updated for sb SkillHandler = 0x010B, // updated for sb - GMCommand1 = 0x010C,// updated for sb - GMCommand2 = 0x010D,// updated for sb + GMCommand1 = 0x010C, // updated for sb + GMCommand2 = 0x010D, // updated for sb UpdatePositionHandler = 0x010F, // updated for sb InventoryModifyHandler = 0x0116, // updated for sb @@ -176,6 +172,8 @@ namespace Packets { ReturnEventHandler = 0x0128, TradeReturnEventHandler = 0x0129, + + LinkshellEventHandler = 0x013C, }; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/servers/Server_Zone/Network/GameConnection.cpp b/src/servers/Server_Zone/Network/GameConnection.cpp index a56f5c34..2a364cb3 100644 --- a/src/servers/Server_Zone/Network/GameConnection.cpp +++ b/src/servers/Server_Zone/Network/GameConnection.cpp @@ -85,6 +85,8 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive, setZoneHandler( ClientZoneIpcType::ReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler ); setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler, "EventHandlerReturn", &GameConnection::eventHandler ); + setZoneHandler( ClientZoneIpcType::LinkshellEventHandler, "LinkshellEventHandler", &GameConnection::eventHandler ); + setZoneHandler( ClientZoneIpcType::CFDutyInfoHandler, "CFDutyInfoRequest", &GameConnection::cfDutyInfoRequest ); setZoneHandler( ClientZoneIpcType::CFRegisterDuty, "CFRegisterDuty", &GameConnection::cfRegisterDuty ); setZoneHandler( ClientZoneIpcType::CFRegisterRoulette, "CFRegisterRoulette", &GameConnection::cfRegisterRoulette ); diff --git a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp index c75bd7b0..a3591b37 100644 --- a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp @@ -129,6 +129,16 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP break; } + case ClientZoneIpcType::LinkshellEventHandler: + { + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x20 ); + uint16_t subEvent = inPacket.getValAt< uint16_t >( 0x24 ); + std::string lsName = inPacket.getStringAt( 0x27 ); + + abortEventFunc( pPlayer, 0, eventId ); + break; + } + } } diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 907837a7..17f9be33 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -569,6 +569,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa pTargetPlayer->hasStateFlag( PlayerStateFlag::BetweenAreas1 ) ) { // send error for player between areas + // TODO: implement me return; } @@ -576,18 +577,21 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa pTargetPlayer->hasStateFlag( PlayerStateFlag::BoundByDuty1 ) ) { // send error for player bound by duty + // TODO: implement me return; } if( pTargetPlayer->getOnlineStatus() == OnlineStatus::Busy ) { // send error for player being busy + // TODO: implement me ( i've seen this done with packet type 67 i think ) return; } GamePacketNew< FFXIVIpcTell, ServerChatIpcType > tellPacket( pPlayer->getId() ); strcpy( tellPacket.data().msg, msg.c_str() ); strcpy( tellPacket.data().receipientName, targetPcName.c_str() ); + // TODO: do these have a meaning? //tellPacket.data().u1 = 0x92CD7337; //tellPacket.data().u2a = 0x2E; //tellPacket.data().u2b = 0x40;