internal PacketReceivedEventArgs(PacketReceivedEventArgs e)
 {
     Instance = e.Instance;
     PacketType = e.PacketType;
     Start = e.Start;
     Length = e.Length;
     ReadBuffer = e.ReadBuffer;
     Player = e.Player;
 }
Example #2
0
 public static void CallEvent(object sender, PacketReceivedEventArgs args)
 {
     try
     {
         LuaHandler.lua.GetFunction("hook.Call").Call(new object[] { args.PacketType.ToString(), args });
     }
     catch (Exception e)
     {
         Console.WriteLine("[Lua Error] {0}", e.Message);
     }
 }
 internal ChangeTilePacketReceivedEventArgs(PacketReceivedEventArgs e)
     : base(e)
 {
     int index = Start + 1;
     Action = ReadBuffer[index];
     index++;
     X = BitConverter.ToInt32(ReadBuffer, index);
     index += 4;
     Y = BitConverter.ToInt32(ReadBuffer, index);
     index += 4;
     Type = ReadBuffer[index];
 }
 internal SetLiquidPacketReceivedEventArgs(PacketReceivedEventArgs e)
     : base(e)
 {
     int index = 1 + Start;
     X = BitConverter.ToInt32(ReadBuffer, index);
     index += 4;
     Y = BitConverter.ToInt32(ReadBuffer, index);
     index += 4;
     LiquidAmount = ReadBuffer[index];
     index++;
     Lava = ReadBuffer[index] == 1;
 }
Example #5
0
 public void OnPlayerLeave(object sender, PacketReceivedEventArgs args)
 {
     string leaveUser = Session.Sessions[args.Player].Username;
     IRC.send("PRIVMSG " + channel + " :[" + leaveUser + " disconnected]");
 }
Example #6
0
 public void OnPlayerJoin(object sender, PacketReceivedEventArgs args)
 {
     string joinUser = Session.Sessions[args.Player].Username;
     IRC.send("PRIVMSG " + channel + " :[" + joinUser + " connected]");
 }
Example #7
0
 public void OnPlayerDeath(object sender, PacketReceivedEventArgs args)
 {
     string deadUser = Session.Sessions[args.Player].Username;
     IRC.send("PRIVMSG " + channel + " :" + deadUser + " was slain..");
 }
Example #8
0
 public void OnPlayerChat(object sender, PacketReceivedEventArgs args)
 {
     string chatUser = Session.Sessions[args.Player].Username;
     string chatUserText = Encoding.ASCII.GetString(args.ReadBuffer, args.Start + 5, args.Length - 5);
     if (chatUserText.Substring(0, 1) == "/") return;
     IRC.send("PRIVMSG " + channel + " :(" + chatUser + ") " + chatUserText);
 }
Example #9
0
        public static bool GetDataMod(dynamic inst, int start, int length)
        {
            if (NetplayMod.ServerSock[inst.whoAmI].state == 1337)
            {
                // RCON
                // TODO: Code RCON. Lol.
            }
            PacketReceivedEventArgs e = new PacketReceivedEventArgs(inst, start, length);
            if (PacketReceived != null) PacketReceived.Invoke(inst, e);
            if (e.Canceled)
            {
                return false;
            }
            switch (e.PacketType)
            {
                case PacketTypes.Version: if (VersionReceived != null) VersionReceived.Invoke(inst, e); break;
                case PacketTypes.Disconnect: if (DisconnectReceived != null) DisconnectReceived.Invoke(inst, e); break;
                case PacketTypes.Connected: if (ConnectedReceived != null) ConnectedReceived.Invoke(inst, e); break;
                case PacketTypes.Avatar: if (AvatarReceived != null) AvatarReceived.Invoke(inst, e); break;
                case PacketTypes.InventorySlot: if (InventorySlotReceived != null) InventorySlotReceived.Invoke(inst, e); break;
                case PacketTypes.Ready: if (ReadyReceived != null) ReadyReceived.Invoke(inst, e); break;
                case PacketTypes.WorldParams: if (WorldParamsReceived != null) WorldParamsReceived.Invoke(inst, e); break;
                case PacketTypes.RequestChunk: if (RequestChunkReceived != null) RequestChunkReceived.Invoke(inst, e); break;
                case PacketTypes.Status: if (StatusReceived != null) StatusReceived.Invoke(inst, e); break;
                case PacketTypes.SendRow: if (SendRowReceived != null) SendRowReceived.Invoke(inst, e); break;
                case PacketTypes.CalculateFrame: if (CalculateFrameReceived != null) CalculateFrameReceived.Invoke(inst, e); break;
                case PacketTypes.SpawnPlayer: if (SpawnPlayerReceived != null) SpawnPlayerReceived.Invoke(inst, e); break;
                case PacketTypes.UpdatePlayer: if (UpdatePlayerReceived != null) UpdatePlayerReceived.Invoke(inst, e); break;
                case PacketTypes.IsPlayerActive: if (IsPlayerActiveReceived != null) IsPlayerActiveReceived.Invoke(inst, e); break;
                case PacketTypes.RequestPlayerSync: if (RequestPlayerSyncReceived != null) RequestPlayerSyncReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerLife: if (PlayerLifeReceived != null) PlayerLifeReceived.Invoke(inst, e); break;
                case PacketTypes.ChangeTile: if (ChangeTileReceived != null) ChangeTileReceived.Invoke(inst, e); break;
                case PacketTypes.UpdateTime: if (UpdateTimeReceived != null) UpdateTimeReceived.Invoke(inst, e); break;
                case PacketTypes.UpdateDoor: if (DoorChangeReceived != null) DoorChangeReceived.Invoke(inst, e); break;
                case PacketTypes.UpdateTiles: if (UpdateTilesReceived != null) UpdateTilesReceived.Invoke(inst, e); break;
                case PacketTypes.DropItem: if (DropItemReceived != null) DropItemReceived.Invoke(inst, e); break;
                case PacketTypes.ItemOwner: if (ItemOwnerReceived != null) ItemOwnerReceived.Invoke(inst, e); break;
                case PacketTypes.NpcData: if (NpcDataReceived != null) NpcDataReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerHitNpc: if (PlayerHitNpcReceived != null) PlayerHitNpcReceived.Invoke(inst, e); break;
                case PacketTypes.ChatMessage: if (ChatMessageReceived != null) ChatMessageReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerStrike: if (PlayerStrikeReceived != null) PlayerStrikeReceived.Invoke(inst, e); break;
                case PacketTypes.Projectile: if (ProjectileReceived != null) ProjectileReceived.Invoke(inst, e); break;
                case PacketTypes.StrikeNpc: if (StrikeNpcReceived != null) StrikeNpcReceived.Invoke(inst, e); break;
                case PacketTypes.DisposeProjectile: if (DisposeProjectileReceived != null) DisposeProjectileReceived.Invoke(inst, e); break;
                case PacketTypes.SetPvp: if (SetPvpReceived != null) SetPvpReceived.Invoke(inst, e); break;
                case PacketTypes.RequestChest: if (RequestChestReceived != null) RequestChestReceived.Invoke(inst, e); break;
                case PacketTypes.ChestItem: if (ChestItemReceived != null) ChestItemReceived.Invoke(inst, e); break;
                case PacketTypes.OpenChest: if (OpenChestReceived != null) OpenChestReceived.Invoke(inst, e); break;
                case PacketTypes.KillTile: if (KillTileReceived != null) KillTileReceived.Invoke(inst, e); break;
                case PacketTypes.HealEffect: if (HealEffectReceived != null) HealEffectReceived.Invoke(inst, e); break;
                case PacketTypes.SetZone: if (SetZoneReceived != null) SetZoneReceived.Invoke(inst, e); break;
                case PacketTypes.RequestPassword: if (RequestPasswordReceived != null) RequestPasswordReceived.Invoke(inst, e); break;
                case PacketTypes.SendPassword: if (SendPasswordReceived != null) SendPasswordReceived.Invoke(inst, e); break;
                case PacketTypes.RemoveItemOwner: if (RemoveItemOwnerReceived != null) RemoveItemOwnerReceived.Invoke(inst, e); break;
                case PacketTypes.TalkToNpc: if (TalkToNpcReceived != null) TalkToNpcReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerAnimation: if (PlayerAnimationReceived != null) PlayerAnimationReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerMana: if (PlayerManaReceived != null) PlayerManaReceived.Invoke(inst, e); break;
                case PacketTypes.ManaEffect: if (ManaEffectReceived != null) ManaEffectReceived.Invoke(inst, e); break;
                case PacketTypes.PlayerDeath: if (PlayerDeathReceived != null) PlayerDeathReceived.Invoke(inst, e); break;
                case PacketTypes.ChangeTeams: if (ChangeTeamsReceived != null) ChangeTeamsReceived.Invoke(inst, e); break;
                case PacketTypes.RequestSign: if (RequestSignReceived != null) RequestSignReceived.Invoke(inst, e); break;
                case PacketTypes.Sign: if (SignReceived != null) SignReceived.Invoke(inst, e); break;
                case PacketTypes.SetLiquid: if (SetLiquidReceived != null) SetLiquidReceived.Invoke(inst, e); break;
                case PacketTypes.SpawnSelf: if (SpawnSelfReceived != null) SpawnSelfReceived.Invoke(inst, e); break;
            }
            if (e.Canceled)
            {
                return false;
            }

            byte msgType = inst.readBuffer[start];

            try
            {
                if (MainMod.NetMode == 1)
                {
                    switch (msgType)
                    {
                        case 0x3:
                            return OnConnected(inst, start, length);

                        case 0xfe:
                            OnTModTeleport(inst, start, length);
                            return false;

                        default:
                            return true;
                    }
                }
                else if (MainMod.NetMode == 2)
                {
                    if (inst == null)
                    {
                        return false;
                    }
                    byte player = (byte)(int)inst.whoAmI;
                    if (NetplayMod.ServerSock[player] == null)
                    {
                        return false;
                    }
                    if (NetplayMod.ServerSock[player].kill)
                    {
                        return false;
                    }
                    switch (msgType)
                    {
                        case 0x1:
                            return OnVersion(inst, start, length);

                        case 0x4:
                            return OnAvatar(inst, start, length);

                        case 0x5:
                            return OnPlayerSlot(inst, start, length);

                        case 0x6:
                            return OnPlayerReady(inst, start, length);

                        case 0xa:
                            return OnSendSection(inst, start, length);

                        case 0xc:
                            return OnPlayerSpawn(inst, start, length);

                        case 0xd:
                            return OnPlayerUpdate(inst, start, length);

                        case 0xf:
                            return OnRequestSync(inst, start, length);

                        case 0x10:
                            return OnPlayerHealth(inst, start, length);

                        case 0x11:
                            return OnTileChange(inst, start, length);

                        case 0x14:
                            return OnSendTileSquare(inst, start, length);

                        case 0x17:
                            return OnSpawnNpc(inst, start, length);

                        case 0x19:
                            return OnChat(inst, start, length);

                        case 0x1a:
                            return OnPlayerDamage(inst, start, length);

                        case 0x1b:
                            return OnNewProjectile(inst, start, length);

                        case 0x1e:
                            return OnTogglePvp(inst, start, length);

                        case 0x1f:
                            return OnChestGetContents(inst, start, length);

                        case 0x20:
                            return OnChestItem(inst, start, length);

                        case 0x21:
                            return OnChestOpen(inst, start, length);

                        case 0x22:
                            return OnKillTile(inst, start, length);

                        case 0x26:
                            return OnServerPassword(inst, start, length);

                        case 0x2a:
                            return OnPlayerMana(inst, start, length);

                        case 0x2c:
                            return OnKillMe(inst, start, length);

                        case 0x2d:
                            return OnChangeTeam(inst, start, length);

                        case 0x2e:
                            return OnReadSign(inst, start, length);

                        case 0x2f:
                            return OnNewSign(inst, start, length);

                        case 0x30:
                            return OnLiquid(inst, start, length);

                        case 0xff:
                            OnTModIdentify(inst, start, length);
                            return false;

                        default:
                            return true;
                    }
                }
                else
                {
                    return true;
                }
            }
            catch (Exception exception)
            {
                try
                {
                    MainMod.Log("A message buffer exception occured. Please report this at http://tmod.biz/forums/");
                    using (StreamWriter writer = new StreamWriter("messageBufferException.txt", true))
                    {
                        writer.WriteLine(DateTime.Now);
                        writer.WriteLine(exception);
                        writer.WriteLine("");
                    }
                    if (e.PacketType == PacketTypes.ChatMessage)
                        return false; // workaround for annoying command error spam.
                }
                catch
                {
                }
                return true;
            }
        }
 internal DisconnectPacketReceivedEventArgs(PacketReceivedEventArgs e)
     : base(e)
 {
     int index = Start + 1;
     Reason = ASCIIEncoding.ASCII.GetString(ReadBuffer, index, (Length - index) + Start);
 }
 internal AvatarPacketReceivedEventArgs(PacketReceivedEventArgs e)
     : base(e)
 {
     int index = Start +	28;
     PlayerName = Encoding.ASCII.GetString(ReadBuffer, index, (Length - index) + Start);
 }