Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16
  1. #1
    Аватар для James
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.02.2014
    Сообщений
    30
    Репутация:
    0 ±

    Отсчет времени

    Как сделать отсчет времени в стиле GameTextForPlayer
    как в костях на Samp rp

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

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    PHP код:
    enum stol
    {
        
    vrema
    }
    new 
    SI[MAX_STOL][stol];

    SI[i][vrema] --;
    new 
    str[15];
    format(str,15,"~b~%s",TimeConverter(SI[i][vrema]));
    GameTextForPlayer(playeridstr50001);

    stock TimeConverter(seconds)//Конвертер секунды в минуты и секунды
    {
        new 
    str[6];//объявляем символьную переменную
        
    new minutes floatround(seconds/60);//кол. целых минут
        
    seconds -= minutes*60;  //остаток
        
    format(strsizeof(str), "%02d:%02d"minutesseconds);//преобразовываем
        
    return str;//возвращаем строку символов

    как то так, довольно просто

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

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    PHP код:
    enum stol
    {
        
    vrema
    }
    new 
    SI[MAX_STOL][stol];

    SI[i][vrema] --;
    new 
    str[15];
    format(str,15,"~b~%s",TimeConverter(SI[i][vrema]));
    GameTextForPlayer(playeridstr50001);

    stock TimeConverter(seconds)//Конвертер секунды в минуты и секунды
    {
        new 
    str[6];//объявляем символьную переменную
        
    new minutes floatround(seconds/60);//кол. целых минут
        
    seconds -= minutes*60;  //остаток
        
    format(strsizeof(str), "%02d:%02d"minutesseconds);//преобразовываем
        
    return str;//возвращаем строку символов

    как то так, довольно просто
    А ничего, что он попросил немного иной пример? Ему наверняка не нужны вырезки кода из каких-то модов, можно обойтись одной переменной! К тому-же, нужно обновлять GameText каждую секунду, и GameTextForPlayer создавать не на 5 секунд, а на 1. Наверное стоит объяснить подробнее, а не выдавать не рабочие, или плохие примеры?

  4. #4
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Пельмень Посмотреть сообщение
    А ничего, что он попросил немного иной пример? Ему наверняка не нужны вырезки кода из каких-то модов, можно обойтись одной переменной! К тому-же, нужно обновлять GameText каждую секунду, и GameTextForPlayer создавать не на 5 секунд, а на 1. Наверное стоит объяснить подробнее, а не выдавать не рабочие, или плохие примеры?
    Вырезки? я только что сделал это в notepad

  5. #5
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    Вырезки? я только что сделал это в notepad
    Очень плохо сделал!

  6. #6
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Пельмень Посмотреть сообщение
    Очень плохо сделал!
    Приведи ка свой пример, раз я плохо сделал

  7. #7
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    PHP код:
    new ret_time 0;
    new 
    timer_ex 0;

    stock Start (playeridnum) {
        
    ret_time num;
        
    timer_ex SetTimerEx ("LessTime"1000true"i"playerid);
        return 
    1;
    }

    forward LessTime (playerid);
    public 
    LessTime (playerid) {
        if (
    ret_time-- < 1) {
            
    KillTimer (timer_ex);
            return 
    1;
        }
        new 
    time [5];
        
    format (timesizeof (time), "%d"ret_time);
        
    GameTextForPlayer (playeridtime10001);
        return 
    1;


  8. Пользователь сказал cпасибо:
    seriu (01.08.2014)
  9. #8
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Цитата Сообщение от Пельмень Посмотреть сообщение
    PHP код:
    new ret_time 0;
    new 
    timer_ex 0;

    stock Start (playeridnum) {
        
    ret_time num;
        
    timer_ex SetTimerEx ("LessTime"1000true"i"playerid);
        return 
    1;
    }

    forward LessTime (playerid);
    public 
    LessTime (playerid) {
        if (
    ret_time-- < 1) {
            
    KillTimer (timer_ex);
            return 
    1;
        }
        new 
    time [5];
        
    format (timesizeof (time), "%d"ret_time);
        
    GameTextForPlayer (playeridtime10001);
        return 
    1;

    ну ладно, тут я тупанул по поводу левого времени. Но твой пример не лучше ибо у тебя используется таймер для игрока, но при окончании времени убирается 1 таймер. А если разные игроки использовали этот таймер в разные секунды?

    PHP код:
    enum stol 

        
    Svrema,
        
    Stimer

    new 
    SI[MAX_STOL][stol]; 

    SI[i][vrema] = 30;
    SI[i][Stimer] = SetTimerEx ("UpdateStol"1000true"i"i); 

    forward UpdateStol(i);
    public 
    UpdateStol(i)
    {
        if(
    SI[i][vrema]> 0SI[i][vrema] --; 
        new 
    str[7]; 
        
    format(str,7,"~b~%d",SI[i][vrema]); 
        
    GameTextForPlayer(playeridstr10001); 
        if(
    SI[i][vrema] == 0KillTimer(SI[i][Stimer]);
        return 
    1;

    Последний раз редактировалось seriu; 01.08.2014 в 01:14. Причина: playerid заменил на i

  10. #9
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    ну ладно, тут я тупанул по поводу левого времени. Но твой пример не лучше ибо у тебя используется таймер для игрока, но при окончании времени убирается 1 таймер. А если разные игроки использовали этот таймер в разные секунды?

    PHP код:
    enum stol 

        
    Svrema,
        
    Stimer

    new 
    SI[MAX_STOL][stol]; 

    SI[i][vrema] = 30;
    SI[i][Stimer] = SetTimerEx ("UpdateStol"1000true"i"playerid); 

    forward UpdateStol(i);
    public 
    UpdateStol(i)
    {
        if(
    SI[i][vrema]> 0SI[i][vrema] --; 
        new 
    str[7]; 
        
    format(str,7,"~b~%d",SI[i][vrema]); 
        
    GameTextForPlayer(playeridstr10001); 
        if(
    SI[i][vrema] == 0KillTimer(SI[i][Stimer]);
        return 
    1;

    С чего-это мой пример не лучше? Во-первых, для чего вообще использовать enum. Во-вторых, мой пример очень просто переделать для каждого игрока!

    PHP код:
    new ret_time [MAX_PLAYERS] = {0, ...};
    new 
    timer_ex [MAX_PLAYERS] = {0, ...};

    stock Start (playeridnum) {
        
    ret_time [playerid] = num;
        
    timer_ex [playerid] = SetTimerEx ("LessTime"1000true"i"playerid);
        return 
    1;
    }

    forward LessTime (playerid);
    public 
    LessTime (playerid) {
        if (
    ret_time [playerid]-- < 1) {
            
    KillTimer (timer_ex [playerid]);
            return 
    1;
        }
        new 
    time [5];
        
    format (timesizeof (time), "%d"ret_time [playerid]);
        
    GameTextForPlayer (playeridtime10001);
        return 
    1;


  11. #10
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    PHP код:
    new ret_time[MAX_PLAYERS] = {0, ...}; 
    new 
    timer_ex[MAX_PLAYERS] = {0, ...}; 

    stock Start(playeridnum){ 
        
    ret_time[playerid] = num
        
    timer_ex[playerid] = SetTimerEx ("LessTime"1000true"i"playerid); 
        return 
    1


    forward LessTime(playerid); 
    public 
    LessTime(playerid){ 
        if(
    ret_time[playerid]-- < 1)
            return 
    KillTimer(timer_ex [playerid]); 
        new 
    time[5]; 
        
    format(timesizeof(time), "%d"ret_time[playerid]); 
        
    GameTextForPlayer(playeridtime10001); 
        return 
    1

    Ну хз, вдруг лучше:D

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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