internal PacketReceivedEventArgs(PacketReceivedEventArgs e) { Instance = e.Instance; PacketType = e.PacketType; Start = e.Start; Length = e.Length; ReadBuffer = e.ReadBuffer; Player = e.Player; }
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; }
public void OnPlayerLeave(object sender, PacketReceivedEventArgs args) { string leaveUser = Session.Sessions[args.Player].Username; IRC.send("PRIVMSG " + channel + " :[" + leaveUser + " disconnected]"); }
public void OnPlayerJoin(object sender, PacketReceivedEventArgs args) { string joinUser = Session.Sessions[args.Player].Username; IRC.send("PRIVMSG " + channel + " :[" + joinUser + " connected]"); }
public void OnPlayerDeath(object sender, PacketReceivedEventArgs args) { string deadUser = Session.Sessions[args.Player].Username; IRC.send("PRIVMSG " + channel + " :" + deadUser + " was slain.."); }
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); }
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); }