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

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

    как сделать сколько игрок находился времени в игре

    Ув. знатоки pro-pawn.
    Как сделать так чтобы к примеру игрок заходил в игру у него началось считать сколько времени он проводит в игре а при выходе с игры обнулялось.

    К примеру игрок водит команду /time у него выводит сообщени нахождение в игре: час/минут а потом игрок вышел у него обнуляеться время

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    NetStats_GetConnectedTime

    Либо через массив. При коннекте устанавливаете значение переменной игрока значению: GetTickCount() и потом сравниваете так:
    PHP код:
    (GetTickCount() - переменная_игрока[playerid]) / 1000 
    Выведет количество секунд, сколько игрок провёл в игре.

  3. Пользователь сказал cпасибо:
    denis01 (09.06.2014)
  4. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    В начало мода
    PHP код:
    #define ShowTimeOfPlayerInGame(%0,%1,%2,%3) ConvertSeconds(gettime() - GetPVarInt(%0, "Time Of Player In Game"), %1, %2, %3) 
    В OnPlayerConnect
    PHP код:
    SetPVarInt(playerid"Time Of Player In Game"gettime()); 
    После новую функцию для конвертации секунд в формат "час/минута/секунда"
    PHP код:
    stock ConvertSeconds(conv_time, &conv_hour, &conv_minute,&conv_second)
    {
        if(
    conv_time <= 60)
        {
            
    conv_hour 0;
            
    conv_minute 0;
            
    conv_second conv_time;
        }
        else if(
    conv_time 60 && conv_time 3600)
        {
            
    conv_hour 0;
            
    conv_minute conv_time 60;
            
    conv_second floatround(conv_time 60floatround_tozero);
        }
        else if(
    conv_time == 3600){ conv_hour 1conv_minute 0conv_second 0; }
        else if(
    conv_time 3600)
        {
            new 
    conv_minute_int;
            
    conv_hour conv_time 3600;
            
    minutes_int floatround(conv_time 3600floatround_tozero);
            
    conv_minute conv_minute_int 60;
            
    conv_second floatround(conv_minute_int 60floatround_tozero);
        }
        return 
    1;

    И пример вывода времени:
    PHP код:
    new hour_in_game,
        
    minute_in_game,
        
    seconds_in_game;

    ShowTimeOfPlayerInGame(playeridhour_in_gameminute_in_gameseconds_in_game);
    printf("Игрок с ID %d провёл в игре %d часов, %d минут и %d секунд"playeridhour_in_gameminute_in_gameseconds_in_game); 
    Как-то так. В теории должно работать. Кто проверит - отпишитесь
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. 2 пользователя(ей) сказали cпасибо:
    denis01 (09.06.2014) Mr.DeViLsS (09.06.2014)
  6. #4
    Аватар для Mr.DeViLsS
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.03.2014
    Сообщений
    132
    Репутация:
    -2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение

    Как-то так. В теории должно работать. Кто проверит - отпишитесь
    Работает!

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

    Статус
    Оффлайн
    Регистрация
    17.05.2014
    Сообщений
    70
    Репутация:
    0 ±
    Вот скриншот:

    Хотелось бы так сделать, DeimoS а твоим способом в диалоге что надо использовать?

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Цитата Сообщение от denis01 Посмотреть сообщение
    Вот скриншот:

    Хотелось бы так сделать, DeimoS а твоим способом в диалоге что надо использовать?
    в PlayerInfo:
    PHP код:
    pTimeGame 
    в public Refresh либо его аналог:
    PHP код:
    PlayerInfo[i][pTimeGame] +=1
    в public PayDay:
    PHP код:
    if(PlayerInfo[i][pTimeGame] < 1800)
                    {
                        if(
    PlayerInfo[i][pMember] !=0) { checks checks 2;  }
                    } 
    а в команду /time там где формат:
    PHP код:
    Convert(PlayerInfo[playerid][pTimeGame]) 
    Примерно будет так:
    PHP код:
    format(stringsizeof(string), "Нахождение в игре: {2BD639}%s"Convert(PlayerInfo[playerid][pTimeGame])); 
    В OnPlayerConnect это:
    PHP код:
    PlayerInfo[playerid][pTimeGame] = 0

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

    Статус
    Оффлайн
    Регистрация
    17.05.2014
    Сообщений
    70
    Репутация:
    0 ±
    Цитата Сообщение от Maks5 Посмотреть сообщение
    в PlayerInfo:
    PHP код:
    pTimeGame 
    в public Refresh либо его аналог:
    PHP код:
    PlayerInfo[i][pTimeGame] +=1
    в public PayDay:
    PHP код:
    if(PlayerInfo[i][pTimeGame] < 1800)
                    {
                        if(
    PlayerInfo[i][pMember] !=0) { checks checks 2;  }
                    } 
    а в команду /time там где формат:
    PHP код:
    Convert(PlayerInfo[playerid][pTimeGame]) 
    Примерно будет так:
    PHP код:
    format(stringsizeof(string), "Нахождение в игре: {2BD639}%s"Convert(PlayerInfo[playerid][pTimeGame])); 
    В OnPlayerConnect это:
    PHP код:
    PlayerInfo[playerid][pTimeGame] = 0
    Вы же при payday заного начинаете читать! а мне надо чтобы к примеру если он 5 часов или 10 часов, то ему это показывало а не в payday обратно с 0 отчёт шел

  10. #8
    Аватар для Mr.DeViLsS
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.03.2014
    Сообщений
    132
    Репутация:
    -2 ±
    Цитата Сообщение от denis01 Посмотреть сообщение
    Вот скриншот:

    Хотелось бы так сделать, DeimoS а твоим способом в диалоге что надо использовать?
    PHP код:
    new string[30]; new hour_in_game,minute_in_game,seconds_in_game;
    ShowTimeOfPlayerInGame(playeridhour_in_gameminute_in_gameseconds_in_game);
    format(string,30"Нахождение в игре: %d часов, %d минут и %d секунд",hour_in_gameminute_in_gameseconds_in_game);
    ShowPlayerDialog(playerid,ид_диалога,стиль_диалога,"Название",string"кнопка1","кнопка2"); 

 

 

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

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

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

Ваши права

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