Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±

    Таймер заключения Jail

    Изначально стоял таймер цикличный посекундный, решил попробовать сделать не цикличный таймер.
    Не получается отобразить (format) его в команде /time корректно.


    Код:
    new ArrestTime[MAX_PLAYERS];//Таймер заключения
    Код:
    public OnPlayerSpawn(playerid)//При спавне
    {
    if(PlayerInfo[playerid][pArrest] > 0)//Если есть время  заключения
    {
    ArrestTime[playerid] = SetTimerEx("Arrest",PlayerInfo[playerid][pArrest],false,"i",playerid);//Устанавливаю таймер, время заключения беру из аккаунта
    Код:
    public OnPlayerDeath(playerid, killerid, reason)//После смерти игрока
    {
    if(cuff[playerid] == true)//Если в наручниках
    {
    switch(PlayerInfo[playerid][pWanted])//В зависимости от розыска записываю время заключения в аккаунт
    {
    case 1: PlayerInfo[playerid][pArrest] = 600000;
    case 2: PlayerInfo[playerid][pArrest] = 1200000;
    case 3: PlayerInfo[playerid][pArrest] = 1800000;
    case 4: PlayerInfo[playerid][pArrest] = 2400000;
    case 5: PlayerInfo[playerid][pArrest] = 3000000;
    case 6: PlayerInfo[playerid][pArrest] = 3600000;
    }
    Код:
    CMD:time(playerid)
    {
    com
    flood
    new string[100];
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) ApplyAnimation(playerid, "COP_AMBIENT", "Coplook_watch",4.1,0,0,0,0,0,1);
    new text[20];
    getdate(year, month, day);
    switch(month)
    {
    case 1: text = "January";
    case 2: text = "February";
    case 3: text = "March";
    case 4: text = "April";
    case 5: text = "May";
    case 6: text = "June";
    case 7: text = "July";
    case 8: text = "August";
    case 9: text = "September";
    case 10: text = "October";
    case 11: text = "November";
    case 12: text = "December";
    }
    GPN
    f("%s взглянул(а) на часы", playername);
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 20.0, 10000);
    gettime(hour, minuite, second);
    FixHour();
    if(PlayerInfo[playerid][pArrest] > 0)//Если в тюрьме
    {
    PlayerInfo[playerid][pArrest] = ArrestTime[playerid];//Приравниваю массив игрока к таймеру заключения и показываю время заключения игроку
    SavePlayer(playerid);
    f("~w~%d %s~n~~w~~w~%d:%d~n~~p~NewGame~n~~w~Jail: ~r~%d sec", day, text, hour, minuite, PlayerInfo[playerid][pArrest])
    }
    else
    {
    f("~w~%d %s~n~~w~~w~%d:%d~n~~p~NewGame", day, text, hour, minuite);
    }
    GameTextForPlayer(playerid, string, 5000, 1);
    return 1;
    }

  2. #2
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    PHP код:
    PlayerInfo[playerid][pArrest] = ArrestTime[playerid];//Приравниваю массив игрока к таймеру заключения и показываю время заключения игроку 
    Для чего? Если уже
    PHP код:
    switch(PlayerInfo[playerid][pWanted])//В зависимости от розыска записываю время заключения в аккаунт
    {
    case 
    1PlayerInfo[playerid][pArrest] = 600000;
    case 
    2PlayerInfo[playerid][pArrest] = 1200000;
    case 
    3PlayerInfo[playerid][pArrest] = 1800000;
    case 
    4PlayerInfo[playerid][pArrest] = 2400000;
    case 
    5PlayerInfo[playerid][pArrest] = 3000000;
    case 
    6PlayerInfo[playerid][pArrest] = 3600000;


  3. #3
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±
    Не понял твоего вопроса. Для того, чтобы массив в аккаунте приравнять к текущему таймеру, чтобы показать это время игроку. А "уже" - это выставление в массив значения в зависимости от уровня розыска pWanted.

    Мой вопрос состоит в том, чтобы узнать - как можно показать игроку время из вот этого таймера - ArrestTime[playerid] = SetTimerEx("Arrest",PlayerInfo[playerid][pArrest],false,"i",playerid);

  4. #4
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    В твоем варианте PlayerInfo[playerid][pArrest] не изменяется, по этому и баг с /time
    Цитата Сообщение от Jackal Посмотреть сообщение
    Закрыто. Решение найдено. Делюсь.

    [quote name='Romzes' timestamp='1443163314' post='133568']
    20 - это ID таймера
    0 - это значит что таймер еще не был создан.

    [hr]
    По сути функции нету что бы узнать время когда остановится таймер но можно это сделать.

    1. Заводим новую переменную, допустим
    PHP код:
    new aTEST[playerid]; 
    2. В паблик Tazer(playerid) нужно будет добавить код:
    PHP код:
    TazerTime[playerid] = 0;
    aTEST[playerid] = 0
    3. После или перед созданием таймера добавляем этот код:
    PHP код:
    aTEST[playerid] = gettime()+20// 20 - это кол-во секунд что в таймере 
    4. Команда для узнавания время:
    PHP код:
    CMD:test(playerid) {
        new 
    text[32];
        if(
    TazerTime[playerid] != 0) {
            
    format(textsizeof(text), "~w~Taz: ~r~%d", (aTEST[playerid]-gettime())); // Узнаю сколько времени осталось
        
    } else {
            
    format(textsizeof(text), "The timer is not running!"); // Сообщаем что таймер не запущен!
        
    }
        
    GameTextForPlayer(playeridtext50001);
        return 
    1;

    PS: Вариант не идеален но может быть вам подойдет!
    Здесь аналогично.
    Skype: vitya.saveliev


 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •