From 3fcc9eea490d5a4d1ead8d2cd7ea316ad2b46bd3 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 19 Jan 2016 22:07:29 -0500 Subject: [PATCH] Moved the warp and send packet code out of packet processor and into the server object. Rewrote the warp command to use the world manager (still working on it). Add a playmusic command. --- FFXIVClassic Map Server/PacketProcessor.cs | 74 +--------------------- FFXIVClassic Map Server/Program.cs | 13 +++- FFXIVClassic Map Server/Server.cs | 39 ++++++++++-- 3 files changed, 48 insertions(+), 78 deletions(-) diff --git a/FFXIVClassic Map Server/PacketProcessor.cs b/FFXIVClassic Map Server/PacketProcessor.cs index 787a6b52..40ffd747 100644 --- a/FFXIVClassic Map Server/PacketProcessor.cs +++ b/FFXIVClassic Map Server/PacketProcessor.cs @@ -359,79 +359,7 @@ namespace FFXIVClassic_Lobby_Server packet.replaceActorID(entry.Value.actorID); entry.Value.queuePacket(packet); } - } + } - /* - public Actor findActor(ConnectedPlayer player, uint id) - { - Actor ownerActor = mStaticActors[id]; - if (ownerActor == null) - { - foreach (Actor a in player.actorInstanceList) - { - if (a.actorID == player.eventCurrentOwner) - { - ownerActor = a; - break; - } - } - - if (ownerActor == null) - return null; - } - return ownerActor; - } - */ - private void initNpcs() - { - /* - List npcList = Database.getNpcList(); - foreach (Npc npc in npcList) - inn.addActorToZone(npc); - Log.info(String.Format("Loaded {0} npcs...", npcList.Count)); - * */ - } - - private void loadTest(ClientConnection client, ConnectedPlayer player) - { - string sequence = "6789abcdefghijklmnopqrsuvwxy"; - //10 for just login - for (int i = 7; i < sequence.Length; i++) - { - - BasePacket packet = new BasePacket("./packets/tt2/" + sequence[i]); - packet.replaceActorID(player.actorID); - client.queuePacket(packet); - - } - } - - public void doWarp(uint mapID, float x, float y, float z) - { - List pList = new List(); - - - foreach (KeyValuePair entry in mPlayers) - { - pList.Clear(); - - entry.Value.getActor().positionX = x; - entry.Value.getActor().positionY = y; - entry.Value.getActor().positionZ = z; - - pList.Add(_0xE2Packet.buildPacket(0x6c, 0xF)); - pList.Add(SetMapPacket.buildPacket(0x6c, mapID, 0)); - BasePacket packet = BasePacket.createPacket(pList, true, false); - - BasePacket actorPacket = entry.Value.getActor().getInitPackets(entry.Value.actorID); - - packet.replaceActorID(entry.Value.actorID); - actorPacket.replaceActorID(entry.Value.actorID); - - entry.Value.queuePacket(packet); - entry.Value.queuePacket(actorPacket); - } - } - } } diff --git a/FFXIVClassic Map Server/Program.cs b/FFXIVClassic Map Server/Program.cs index fca7e806..5eb5aef6 100644 --- a/FFXIVClassic Map Server/Program.cs +++ b/FFXIVClassic Map Server/Program.cs @@ -87,8 +87,19 @@ namespace FFXIVClassic_Lobby_Server Log.error("Could not load packet: " + e); } } + else if (split[0].Equals("music")) + { + try + { + server.doMusic(split[1]); + } + catch (Exception e) + { + Log.error("Could not change music: " + e); + } + } } - else if (split.Length >= 3) + if (split.Length >= 3) { if (split[0].Equals("warp")) { diff --git a/FFXIVClassic Map Server/Server.cs b/FFXIVClassic Map Server/Server.cs index 52cf707a..f07d0b1a 100644 --- a/FFXIVClassic Map Server/Server.cs +++ b/FFXIVClassic Map Server/Server.cs @@ -13,6 +13,7 @@ using System.IO; using FFXIVClassic_Map_Server.packets.send.actor; using FFXIVClassic_Map_Server; using FFXIVClassic_Map_Server.actors; +using FFXIVClassic_Map_Server.packets.send; namespace FFXIVClassic_Lobby_Server { @@ -266,12 +267,42 @@ namespace FFXIVClassic_Lobby_Server } } - public void doWarp(String map, String x, String y, String z) + public void doMusic(string music) { - if (map.ToLower().StartsWith("0x")) - mProcessor.doWarp(Convert.ToUInt32(map, 16), Single.Parse(x), Single.Parse(y), Single.Parse(z)); + ushort musicId; + + if (music.ToLower().StartsWith("0x")) + musicId = Convert.ToUInt16(music, 16); else - mProcessor.doWarp(Convert.ToUInt32(map), Single.Parse(x), Single.Parse(y), Single.Parse(z)); + musicId = Convert.ToUInt16(music); + + foreach (KeyValuePair entry in mConnectedPlayerList) + { + BasePacket musicPacket = BasePacket.createPacket(SetMusicPacket.buildPacket(entry.Value.actorID, musicId, 1), true, false); + entry.Value.queuePacket(musicPacket); + } + } + + public void doWarp(string map, string sx, string sy, string sz) + { + uint mapId; + float x,y,z; + + if (map.ToLower().StartsWith("0x")) + mapId = Convert.ToUInt32(map, 16); + else + mapId = Convert.ToUInt32(map); + + x = Single.Parse(sx); + y = Single.Parse(sy); + z = Single.Parse(sz); + + foreach (KeyValuePair entry in mConnectedPlayerList) + { + BasePacket e2Packet = BasePacket.createPacket(_0xE2Packet.buildPacket(0x6c, 0xF), true, false); + entry.Value.queuePacket(e2Packet); + mWorldManager.DoZoneChange(entry.Value.getActor(), mapId, 0x2, x, y, z, 0.0f); + } } public WorldManager GetWorldManager()