public override void OnRead(RiftClient From) { if (Message.StartsWith(".teleport")) { string CmdArgs = Message.Substring(10); string[] pos = CmdArgs.Split(new char[] { ' ' }); WorldServerPositionUpdate WPos = new WorldServerPositionUpdate(); WPos.GUID = From.Char.Id; WPos.Position = new List<float>(); WPos.Position.Add(float.Parse(pos[0])); WPos.Position.Add(float.Parse(pos[1])); WPos.Position.Add(float.Parse(pos[2])); WPos.Orientation = new List<float>(); WPos.Orientation.Add(0.0f); WPos.Orientation.Add(0.0f); WPos.Orientation.Add(0.0f); if (long.Parse(pos[3]) != CurrentMapId) { WorldTeleport WorldPort = WorldTeleport.FromPorticulum(long.Parse(pos[3]), 1, 0, "tm_Sanctum_SanctumOfTheVigil"); From.SendSerialized(WorldPort); WorldZoneInfo ZoneInfo = CacheMgr.Instance.GetZoneInfoCache("Capital1"); From.SendSerialized(ZoneInfo); WorldStartingPosition StartPos = new WorldStartingPosition(); StartPos.MapName = "world"; StartPos.Position = new List<float>(WPos.Position.ToArray()); From.SendSerialized(StartPos); ISerializablePacket PacketContainer = new ISerializablePacket(); WorldPositionExtra StartPos2 = new WorldPositionExtra(); StartPos2.MapName = "world"; StartPos2.MapId = 2; StartPos2.Position = new List<float>(WPos.Position.ToArray()); StartPos2.Position2 = new List<float>(WPos.Position.ToArray()); PacketContainer.Opcode = (long)Opcodes.WorldStartingPositionExtra; PacketContainer.AddField(0, EPacketFieldType.Packet, StartPos2); From.SendSerialized(PacketContainer); CurrentMapId = long.Parse(pos[3]); List<Cache_Info> CacheData = CacheMgr.Instance.GetBinCache(11319, false); foreach (Cache_Info ci in CacheData) From.SendCache(ci.Type, (uint)ci.CacheId); //From.SendSerialized(WPos); } else From.SendSerialized(WPos); } else { PlayerName = "Magetest"; Unk1 = 2551; Unk2 = 2551; From.SendSerialized(this); } }
public override void OnRead(RiftClient From) { Log.Success("Authentification", "Email = " + Email + " SessionTicket = " + SessionTicket); // TMP, Client must ALLWAYS provide SessionTicket, not sended because an invalid certificate probably Character PlrInfo = null; Account Acct = null; if (SessionTicket == 0) Acct = AccountMgr.Instance.GetAccount(Email.ToUpper()); else Acct = AccountMgr.Instance.GetAccountBySessionTicket(SessionTicket); if (Acct == null) { Log.Error("Authentification", "Invalid WORLD_AUTH_REQUEST"); From.Disconnect(); return; } PlrInfo = CharacterMgr.Instance.GetCharacter((int)Acct.PendingCharacter); if (PlrInfo == null) { Log.Error("Authentification", "Invalid WORLD_AUTH_REQUEST"); From.Disconnect(); return; } From.Char = PlrInfo; WorldAuthenticationResponse Rp = new WorldAuthenticationResponse(); Rp.AddField(0, EPacketFieldType.True, (bool)true); From.SendSerialized(Rp); WorldCacheUpdated Updated = new WorldCacheUpdated(); Updated.GUID = PlrInfo.Id; From.SendSerialized(Updated); ///////////////////////////////////////////////////////////////////// // Send Inventory ///////////////////////////////////////////////////////////////////// WorldEntityUpdate Inventory = new WorldEntityUpdate(); Inventory.BuildInventory(From, From.Char); From.SendSerialized(Inventory); WorldEntityUpdate Item = new WorldEntityUpdate(); Item.BuildItem(From, From.Char); From.SendSerialized(Item); ////////////////////////////////////////////////////////////////////// /**** One of them seem to delete object ***/ ISerializablePacket Packet1 = new ISerializablePacket(); Packet1.Opcode = 0x03F6; Packet1.AddField(0, EPacketFieldType.Raw4Bytes, new byte[4] { 0x20, 0xB1, 0x59, 0x41 }); Packet1.AddField(1, EPacketFieldType.ByteArray, new byte[] { 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 }); byte[] UnkGuid = new byte[8] { 0xCB, 0x34, 0x3D, 0x94, 0x23, 0x04, 0xCC, 0x01 }; //Array.Reverse(UnkGuid); Packet1.AddField(2, EPacketFieldType.Raw8Bytes, UnkGuid); From.SendSerialized(Packet1); ISerializablePacket Packet2 = new ISerializablePacket(); Packet2.Opcode = 0x02E9; Packet2.AddField(0, EPacketFieldType.List, new List<long>() { 3605869292 }); From.SendSerialized(Packet2); ISerializablePacket Packet3 = new ISerializablePacket(); Packet3.Opcode = 0x2D7F; From.SendSerialized(Packet3); /********************************************/ WorldZoneInfo ZoneInfo = CacheMgr.Instance.GetZoneInfoCache("Mathosia1"); From.SendSerialized(ZoneInfo); WorldStartingPosition StartPosition = new WorldStartingPosition(); StartPosition.MapName = "guardian_map"; From.SendSerialized(StartPosition); WorldPositionExtra ExtraPosition = new WorldPositionExtra(); ExtraPosition.MapName = "guardian_map"; ISerializablePacket Extra = new ISerializablePacket(); Extra.Opcode = (long)Opcodes.WorldStartingPositionExtra; Extra.AddField(0, EPacketFieldType.Packet, ExtraPosition); From.SendSerialized(Extra); }