/// <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); }
/// <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); }
/// <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); }
/// <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); }