public void Process(int start, int length, int num, int whoAmI, byte[] readBuffer, byte bufferData)
        {
            int playerIndex = readBuffer[num++];
            if (playerIndex == Main.myPlayer)
            {
                return;
            }

            playerIndex = whoAmI;

            int direction = (int)(readBuffer[num++] - 1);

            short damage = BitConverter.ToInt16(readBuffer, num);
            num += 2;
            byte pvpFlag = readBuffer[num++];

            String deathText = Encoding.ASCII.GetString(readBuffer, num, length - num + start);
            bool pvp = (pvpFlag != 0);

            PlayerDeathEvent pDeath = new PlayerDeathEvent();
            pDeath.DeathMessage = deathText;
            pDeath.Sender = Main.players[playerIndex];
            Program.server.PluginManager.processHook(Hooks.PLAYER_DEATH, pDeath);
            if (pDeath.Cancelled)
            {
                return;
            }

            Main.players[playerIndex].KillMe((double)damage, direction, pvp, deathText);

            NetMessage.SendData(44, -1, whoAmI, deathText, playerIndex, (float)direction, (float)damage, (float)pvpFlag);
        }
        public void Process(int start, int length, int num, int whoAmI, byte[] readBuffer, byte bufferData)
        {
            int playerIndex = readBuffer[num++];

            if (playerIndex != whoAmI)
            {
                Netplay.slots[whoAmI].Kick ("Cheating detected (KILL_PLAYER forgery).");
                return;
            }

            playerIndex = whoAmI;

            int direction = (int)(readBuffer[num++] - 1);

            short damage = BitConverter.ToInt16(readBuffer, num);
            num += 2;
            byte pvpFlag = readBuffer[num++];

            String deathText = Encoding.ASCII.GetString(readBuffer, num, length - num + start);
            bool pvp = (pvpFlag != 0);

            var player = Main.players[playerIndex];

            PlayerDeathEvent pDeath = new PlayerDeathEvent();
            pDeath.DeathMessage = deathText;
            pDeath.Sender = player;
            Program.server.PluginManager.processHook(Hooks.PLAYER_DEATH, pDeath);
            if (pDeath.Cancelled)
            {
                return;
            }

            ProgramLog.Death.Log ("{0} @ {1}: [Death] {2}{3}", player.IPAddress, whoAmI, player.Name ?? "<null>", deathText);

            Main.players[playerIndex].KillMe((double)damage, direction, pvp, deathText);

            NetMessage.SendData(44, -1, whoAmI, deathText, playerIndex, (float)direction, (float)damage, (float)pvpFlag);
        }
コード例 #3
0
 /// <summary>
 /// Hook method for a player death
 /// </summary>
 /// <param name="Event">PlayerDeathEvent info</param>
 public virtual void onPlayerDeath(PlayerDeathEvent Event)
 {
 }
コード例 #4
0
ファイル: IRCage.cs プロジェクト: AWRyder/IRCage
 public override void onPlayerDeath(PlayerDeathEvent Event)
 {
     String msg = Event.Sender.Name + Event.DeathMessage;
     if (mircc.getIrcColors()) { msg = AIRCH.CODE_COLOR + "4" + msg; }
     mircc.sendToChan(msg);
      	        base.onPlayerDeath(Event);
 }
コード例 #5
0
 public override void onPlayerDeath(PlayerDeathEvent Event)
 {
 }
コード例 #6
0
 public override void onPlayerDeath(PlayerDeathEvent Event)
 {
     if (warpHomeOnDeath) {
         warpDriveEngine.warp(Event.Player, "home");
     }
 }