private void ParseGameData(GameDataPacket packet) { if (packet.DataItems != null) { var strArray = packet.DataItems.ToArray(); if (strArray.Length >= 14) { for (var index = 0; index < strArray.Length; index++) { var dataItem = strArray[index]; if (string.IsNullOrEmpty(dataItem)) continue; switch (index) { case 0: GameMode = packet.GameMode; break; case 1: IsGameJoltPlayer = packet.IsGameJoltPlayer; break; case 2: GameJoltId = packet.GameJoltId; break; case 3: DecimalSeparator = packet.DecimalSeparator; break; case 4: Nickname = packet.Name; break; case 5: LevelFile = packet.LevelFile; break; case 6: Position = packet.GetPosition(DecimalSeparator); //if (packet.GetPokemonPosition(DecimalSeparator) != Vector3.Zero) //{ // LastPosition = Position; // // Position = packet.GetPosition(DecimalSeparator); // // IsMoving = LastPosition != Position; //} break; case 7: Facing = packet.Facing; break; case 8: Moving = packet.Moving; break; case 9: Skin = packet.Skin; break; case 10: BusyType = packet.BusyType; //Basic.ServersManager.UpdatePlayerList(); break; case 11: PokemonVisible = packet.PokemonVisible; break; case 12: if (packet.GetPokemonPosition(DecimalSeparator) != Vector3.Zero) PokemonPosition = packet.GetPokemonPosition(DecimalSeparator); break; case 13: PokemonSkin = packet.PokemonSkin; break; case 14: PokemonFacing = packet.PokemonFacing; break; } } } else Logger.Log(LogType.Error, $"P3D Reading Error: ParseGameData DataItems < 14. Packet DataItems {packet.DataItems}."); } else Logger.Log(LogType.Error, $"P3D Reading Error: ParseGameData DataItems is null."); }
private void HandleGameData(GameDataPacket packet) { ParseGameData(packet); Module.SendPosition(this); if(IsInitialized) Module.ClientUpdate(this); if (!Moving) Module.SendPacketToAll(packet); var dataPacket = GetDataPacket(); dataPacket.Origin = Id; SendPacket(dataPacket); // We assume that if we get a GameData, it's a client that wanna play if (FirstGameData) return; FirstGameData = true; if (!Module.SetClientId(this)) return; SendPacket(new IdPacket { Origin = -1, PlayerId = Id }); SendPacket(new WorldDataPacket { Origin = -1, DataItems = Module.World.GenerateDataItems() }); if (!IsGameJoltPlayer) { SendServerMessage("Please use /login %PASSWORD% for logging in or registering"); SendServerMessage("Please note that chat data isn't sended secure to server"); SendServerMessage("So it can be seen via traffic sniffing"); SendServerMessage("Don't use your regular passwords"); SendServerMessage("On server it's stored fully secure via SHA-512"); } else Initialize(); }