public static void AreaStatus(RicePacket packet) { var ack = new RicePacket(0x2AB); // from ZoneServer for (int i = 0; i < 100; i++) { var area = RiceServer.GetArea(i); ack.Writer.Write(area != null ? area.GetPlayerCount() : 0); } }
public static void EnterArea(RicePacket packet) { //TODO: Associate instance with gameserver player based on provided serial, verify, handle var serial = packet.Reader.ReadUInt16(); var name = packet.Reader.ReadUnicodeStatic(21); var area = packet.Reader.ReadInt32(); var group = packet.Reader.ReadInt32(); var localtime = packet.Reader.ReadInt32(); if (packet.Sender.Player == null) { var serverSerial = RiceServer.GetSerial(serial); if (serverSerial == null || serverSerial.GetOwner().ActiveCharacter.Name != name) { Log.WriteLine("Serial non-existent or invalid for current user."); packet.Sender.Error("water u even doin"); return; } packet.Sender.Player = serverSerial.GetOwner(); packet.Sender.Player.ActiveCharacter.CarSerial = serial; packet.Sender.Player.AreaClient = packet.Sender; } RiceServer.GetArea(area).AddPlayer(packet.Sender.Player); var ack = new RicePacket(563); ack.Writer.Write(area); ack.Writer.Write(1); //Result ack.Writer.Write(localtime); ack.Writer.Write(Environment.TickCount); ack.Writer.Write(new byte[6]); // The rest of this is null packet.Sender.Send(ack); }
public static void ExitArea(RicePacket packet) { var area = packet.Reader.ReadInt32(); RiceServer.GetArea(area).RemovePlayer(packet.Sender.Player); }