Пример #1
0
        public static void ExplodeTNT(Player p, ushort x, ushort y, ushort z, int radius)
        {
            Player.players.ForEach(delegate(Player pl)
            {
                if (pl == p || !p.placedTNT.isActive || !CTF.gameOn || pl.team == p.team)
                {
                    return;
                }

                currLevel.Blockchange(x, y, z, Block.air);
                p.placedTNT.isActive = false;

                ushort px = (ushort)(pl.pos[0] / 32);
                ushort py = (ushort)(pl.pos[1] / 32);
                ushort pz = (ushort)(pl.pos[2] / 32);

                if ((Math.Max(px, x) - Math.Min(px, x)) <= radius)
                {
                    if ((Math.Max(py, y) - Math.Min(py, y)) <= radius)
                    {
                        if ((Math.Max(pz, z) - Math.Min(pz, z)) <= radius)
                        {
                            Player.GlobalMessage("&f- " + pl.color + pl.name + "&S was exploded by " + p.color + p.name + "&S's TNT!");
                            p.killPlayer(pl);
                            Server.s.Log(p.name + " exploded " + pl.name + "!");
                        }
                    }
                }

                ushort minX = (ushort)(x - radius);
                ushort minY = (ushort)(y - radius);
                ushort minZ = (ushort)(z - radius);
                ushort maxX = (ushort)(x + radius);
                ushort maxY = (ushort)(y + radius);
                ushort maxZ = (ushort)(z + radius);

                for (ushort xx = minX; xx <= maxX; xx++)
                {
                    for (ushort yy = minY; yy <= maxY; yy++)
                    {
                        for (ushort zz = minZ; zz <= maxZ; zz++)
                        {
                            if (currLevel.GetTile(xx, yy, zz) != Block.blackrock && tntDestroyBlocks)
                            {
                                currLevel.Blockchange(xx, yy, zz, Block.air);
                                Player.GlobalBlockchange(currLevel, xx, yy, zz, Block.air);
                            }
                        }
                    }
                }
            });
        }