Русское сообщество по скриптингу

Награда за время на сервере  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Награда за время на сервере

Сообщение Jodi Redlot » 10 июн 2019, 17:49

Как такое реализовать? Зашёл человек на сервер, и через 20, скажем, минут игры, что-то происходит. Заранее спасибо.
"Just kiddin' around"
Аватара пользователя
Jodi Redlot
 
Сообщения: 29
Зарегистрирован: 23 май 2017, 03:37
Благодарил (а): 14 раз.
Поблагодарили: 2 раз.
Опыт программирования: Около года
Языки программирования: C++, C#, Pawn

Re: Награда за время на сервере  [Решено]

Сообщение xbass13 » 10 июн 2019, 20:12

Зашёл человек на сервер, ставим таймер на 20 минут через set_task.
Если точность не важна, когда игрок входит, запоминаем через Float:connectTime[id] =get_gametime() время входа, и в начале карты ставим всего один таймер (чаще вызывается - больше точность, больше нагрузка), который будет всех игроков обходить и сравнивать connectTime[id]+60.0*20.0 <= get_gametime()
Аватара пользователя
xbass13
 
Сообщения: 52
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 29 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php

Re: Награда за время на сервере

Сообщение Jodi Redlot » 14 июн 2019, 14:54

xbass13 писал(а):Зашёл человек на сервер, ставим таймер на 20 минут через set_task.
Если точность не важна, когда игрок входит, запоминаем через Float:connectTime[id] =get_gametime() время входа, и в начале карты ставим всего один таймер (чаще вызывается - больше точность, больше нагрузка), который будет всех игроков обходить и сравнивать connectTime[id]+60.0*20.0 <= get_gametime()

Спасибо, как-то сам не дошёл до этого) Если вдруг кому надо логику:
Код: Выделить всё

public client_putinserver
(id)
    set_task(1.0, "t_CheckTimer", id + TASK_CHECKTIMER, _, _, "b")

public t_CheckTimer(taskid)
{
    new id = ID_CHECKTIMER
    
    i_Time
[id]++
    
    if
(i_Time[id] == 60)
    {
        i_QuestState[id][0]++
        i_Time[id] = 0
    
}
    
    if
(i_QuestState[id][0] == 10)
    {
        remove_task(id + TASK_CHECKTIMER)
        i_QuestState[id][0] = -1
    
}
}
"Just kiddin' around"
Аватара пользователя
Jodi Redlot
 
Сообщения: 29
Зарегистрирован: 23 май 2017, 03:37
Благодарил (а): 14 раз.
Поблагодарили: 2 раз.
Опыт программирования: Около года
Языки программирования: C++, C#, Pawn


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1