Exemplo n.º 1
0
        private static void OnWeaponPrewarn(object unused)
        {
            // Limpiamos el timer
            weaponTimer.Dispose();

            int currentSpawn = 0;

            weaponCrateList = new List <WeaponCrateModel>();

            // Elegimos una localización aleatoria de las existentes
            Random random        = new Random();
            int    spawnPosition = random.Next(Constants.MAX_WEAPON_SPAWNS);

            // Añadimos las cajas de armas y munición
            List <Vector3> weaponSpawns = GetRandomWeaponSpawns(spawnPosition);

            // Creamos las cajas para las localizaciones dadas
            foreach (Vector3 spawn in weaponSpawns)
            {
                // Obtenemos el contenido
                int type   = currentSpawn % 2;
                int chance = random.Next(type == 0 ? Constants.MAX_WEAPON_CHANCE : Constants.MAX_AMMO_CHANCE);
                CrateContentModel crateContent = GetRandomCrateContent(type, chance);

                // Creamos la caja
                WeaponCrateModel weaponCrate = new WeaponCrateModel();
                weaponCrate.contentItem   = crateContent.item;
                weaponCrate.contentAmount = crateContent.amount;
                weaponCrate.position      = spawn;
                weaponCrate.carriedEntity = String.Empty;
                weaponCrate.crateObject   = NAPI.Object.CreateObject(481432069, spawn, new Vector3(0.0f, 0.0f, 0.0f), 0);

                // Añadimos la caja a la lista
                weaponCrateList.Add(weaponCrate);

                // Incrementamos el contador
                currentSpawn++;
            }

            // Avisamos del punto a todas las facciones
            foreach (Client player in NAPI.Pools.GetAllPlayers())
            {
                if (NAPI.Data.HasEntityData(player, EntityData.PLAYER_PLAYING) && NAPI.Data.GetEntityData(player, EntityData.PLAYER_FACTION) > Constants.LAST_STATE_FACTION)
                {
                    NAPI.Chat.SendChatMessageToPlayer(player, Constants.COLOR_INFO + Messages.INF_WEAPON_SPAWN_ISLAND);
                }
            }

            // Creamos un temporizador para avisar a la policía
            weaponTimer = new Timer(OnPoliceCalled, null, 240000, Timeout.Infinite);
        }
Exemplo n.º 2
0
        public static WeaponCrateModel GetPlayerCarriedWeaponCrate(int playerId)
        {
            WeaponCrateModel weaponCrate = null;

            foreach (WeaponCrateModel weaponCrateModel in weaponCrateList)
            {
                if (weaponCrateModel.carriedEntity == Constants.ITEM_ENTITY_PLAYER && weaponCrateModel.carriedIdentifier == playerId)
                {
                    weaponCrate = weaponCrateModel;
                    break;
                }
            }
            return(weaponCrate);
        }
Exemplo n.º 3
0
        public static WeaponCrateModel GetClosestWeaponCrate(Client player, float distance = 1.5f)
        {
            WeaponCrateModel weaponCrate = null;

            foreach (WeaponCrateModel weaponCrateModel in weaponCrateList)
            {
                if (player.Position.DistanceTo(weaponCrateModel.position) < distance && weaponCrateModel.carriedEntity == String.Empty)
                {
                    weaponCrate = weaponCrateModel;
                    break;
                }
            }
            return(weaponCrate);
        }
Exemplo n.º 4
0
        private static void OnWeaponPrewarn(object unused)
        {
            weaponTimer.Dispose();

            int currentSpawn = 0;

            weaponCrateList = new List <WeaponCrateModel>();

            Random random        = new Random();
            int    spawnPosition = random.Next(Constants.MAX_WEAPON_SPAWNS);

            // Get crates' spawn points
            List <Vector3> weaponSpawns = GetRandomWeaponSpawns(spawnPosition);

            NAPI.Task.Run(() =>
            {
                foreach (Vector3 spawn in weaponSpawns)
                {
                    // Calculate weapon or ammunition crate
                    int type   = currentSpawn % 2;
                    int chance = random.Next(type == 0 ? Constants.MAX_WEAPON_CHANCE : Constants.MAX_AMMO_CHANCE);
                    CrateContentModel crateContent = GetRandomCrateContent(type, chance);

                    // We create the crate
                    WeaponCrateModel weaponCrate = new WeaponCrateModel();
                    {
                        weaponCrate.contentItem   = crateContent.item;
                        weaponCrate.contentAmount = crateContent.amount;
                        weaponCrate.position      = spawn;
                        weaponCrate.carriedEntity = string.Empty;
                        weaponCrate.crateObject   = NAPI.Object.CreateObject(481432069, spawn, new Vector3(), 0);
                    }

                    weaponCrateList.Add(weaponCrate);
                    currentSpawn++;
                }
            });

            // Warn all the factions about the place
            foreach (Client player in NAPI.Pools.GetAllPlayers())
            {
                if (player.GetData(EntityData.PLAYER_PLAYING) != null && player.GetData(EntityData.PLAYER_FACTION) > Constants.LAST_STATE_FACTION)
                {
                    player.SendChatMessage(Constants.COLOR_INFO + InfoRes.weapon_spawn_island);
                }
            }

            // Timer to warn the police
            weaponTimer = new Timer(OnPoliceCalled, null, 240000, Timeout.Infinite);
        }
Exemplo n.º 5
0
        public static void OnPlayerDisconnected(Client player, DisconnectionType type, string reason)
        {
            WeaponCrateModel weaponCrate = GetPlayerCarriedWeaponCrate(player.Value);

            if (weaponCrate != null)
            {
                weaponCrate.position          = new Vector3(player.Position.X, player.Position.Y, player.Position.X - 1.0f);
                weaponCrate.carriedEntity     = string.Empty;
                weaponCrate.carriedIdentifier = 0;

                // Place the crate on the floor
                weaponCrate.crateObject.Detach();
                weaponCrate.crateObject.Position = weaponCrate.position;
            }
        }
Exemplo n.º 6
0
        public static void OnPlayerDisconnected(Client player, byte type, string reason)
        {
            // Obtenemos el id del personaje
            WeaponCrateModel weaponCrate = GetPlayerCarriedWeaponCrate(player.Value);

            if (weaponCrate != null)
            {
                weaponCrate.position          = new Vector3(player.Position.X, player.Position.Y, player.Position.X - 1.0f);
                weaponCrate.carriedEntity     = String.Empty;
                weaponCrate.carriedIdentifier = 0;

                // Colocamos el objeto en su posición
                NAPI.Entity.DetachEntity(weaponCrate.crateObject);
                NAPI.Entity.SetEntityPosition(weaponCrate.crateObject, weaponCrate.position);
            }
        }