public async Task OnPlayerDeath(User player, IEntity killer, UInt32 reason)
        {
            if (player.paintballArena == 0)
            {
                await Task.Delay(120000);

                player.Spawn(new Position(359f, -594, 28.6f), 100);
                player.Health = 200;
                player.Armor  = 200;
            }
            else
            {
                PaintballHandler.HandleDeath(player);
            }
            return;
        }
示例#2
0
        public Task onPlayerDisconnect(User player, string reason)
        {
            var dbChar = Main.database.CharacterCollection.AsQueryable().FirstOrDefault(c => c.ownerObjId == player.uid);

            if (dbChar == null)
            {
                return(Task.CompletedTask);
            }


            foreach (User p in Alt.GetAllPlayers().Where(x => player.Position.IsInRange(x.Position, 20f)))
            {
                NotifyHandler.SendNotification(p, $"Anti-Offlineflucht {dbChar.firstName} {dbChar.lastName} ist disconnected! Grund: {reason}");
                Console.WriteLine("Disconnect Reason: " + reason);
            }



            //save position
            if (player.paintballArena == 0)
            {
                dbChar.pos_x    = player.Position.X;
                dbChar.pos_y    = player.Position.Y;
                dbChar.pos_z    = player.Position.Z;
                dbChar.health   = player.Health;
                dbChar.armor    = player.Armor;
                dbChar.isOnline = false;
            }
            if (player.paintballArena != 0)
            {
                PaintballHandler.HandleDisconnect(player);
            }

            Main.database.CharacterCollection.ReplaceOne(x => x.ownerObjId == player.uid, dbChar);
            return(Task.CompletedTask);
        }