/// <summary>
        /// Создать обработчик событий автобусной остановки
        /// </summary>
        private ColShape CreateBusPointShape(string shapeValue, Vector3 position)
        {
            var shape = API.createSphereColShape(position, 4F);

            shape.onEntityEnterColShape += (colShape, entity) => {
                var player = API.getPlayerFromHandle(entity);
                if (!ConditionsCorrect(player, shape))
                {
                    return;
                }
                ActionHelper.SetAction(player, 3000, () => {
                    ShowNextStop(player, shape, shapeValue);
                    SetPlayerReward(player);
                });
            };
            shape.onEntityExitColShape += (colShape, entity) => {
                var player = API.getPlayerFromHandle(entity);
                if (!ConditionsCorrect(player, shape))
                {
                    return;
                }
                ActionHelper.CancelAction(player);
            };
            return(shape);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Обработка события попадания игрока в зону эвента
 /// </summary>
 private void OnPlayerEnterEventZone(ColShape shape, NetHandle entity)
 {
     PlayerHelper.ProcessAction(entity, player => {
         if (!player.hasData(PlayerData.LEAVE_EVENT))
         {
             return;
         }
         player.resetData(PlayerData.LEAVE_EVENT);
         API.sendChatMessageToPlayer(player, "~g~Вы вернулись в зону эвента");
         ActionHelper.CancelAction(player);
     }, true);
 }
Exemplo n.º 3
0
        /// <summary>
        /// Применить рандомный скин
        /// </summary>
        private void SetRandomSkin(Client player, PlayerInfo playerInfo)
        {
            ActionHelper.CancelAction(player, SKIN_RESET_ACTION);
            var skins = Enum.GetValues(typeof(TemporarySkin));
            var hash  = (PedHash)skins.GetValue(ActionHelper.Random.Next(skins.Length));

            API.setPlayerSkin(player, hash);
            ActionHelper.SetAction(player, 3600000, () => _playerInfoManager.SetPlayerClothes(player, true), SKIN_RESET_ACTION);
            playerInfo.Inventory.First(e => e.Type == InventoryType.TempoSkin).DecreaseCount();
            EquipWeapon(player);
            API.sendColoredNotificationToPlayer(player, "Действие скина закончится через час", 0, 21);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Создает точку сдачи угнаной машины
        /// </summary>
        private void CreateQuestEndPoint(long clanId, Vector3 position)
        {
            var endPoint = API.createCylinderColShape(position, 4f, 3f);

            endPoint.onEntityEnterColShape += (shape, entity) => PlayerHelper.ProcessAction(entity, player => {
                var playerClanId = PlayerInfoManager.GetInfo(player).Clan?.ClanId ?? Validator.INVALID_ID;
                if (clanId != playerClanId)
                {
                    return;
                }
                var vehicle = API.getPlayerVehicle(player);
                if (vehicle.IsNull || !API.hasEntityData(vehicle, THIEFT_VEHICLE))
                {
                    return;
                }
                API.deleteEntity(vehicle);
                SetQuestReward(player);
                ActionHelper.CancelAction(player, CLAN_QUEST_TIMER);
                API.triggerClientEvent(player, ServerEvent.HIDE_CLAN_QUEST_POINTS);
            }, true);
        }