set_task

Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
http://amxxmodx.ru/core/amxmodxinc/...druguyu-funkciyu-cherez-trebuemoe-vremya.html - почитал и туго все равно доходит:bad:

C++:
public client_putinserver(id) {
    iNumTests[id] = 0; // Законектился игрок присвоил кол-во проверок 0
    // Как заполнить set_task ?
    // 20.0 - каждые 20 сек будет повторяться проверка функции Check
    // flags[]="" - Флаги функции: a - Повторение задачи
    // repeat = X(число) - в моем случае всего будет 3 проверки через каждые 20 сек?


    set_task(20.0, "Check", .flags = "a", repeat = 3);
}

public check {
}
В итоге в течении 60 сек произойдет 3 проверки с интервалом в 20сек с момента конекта игрока и остановиться работа функции Check?
 
Последнее редактирование модератором:
Сообщения
28
Реакции
24
Alfistik, да.
6 Июн 2018
Тебе ещё нужно передать через такс айди игрока, который тебе нужен будет в обработчике, чтобы выполнять необходимые тебе операции.

Из описания
id = 0 - Уникальный идентификатор к задаче. ( если у вас одновременно запущенно их 10, что бы с каждым можно было работать отдельно и ни чего не спуталось)
Код:
set_task(20.0, "Check", id, .flags = "a", .repeat = 3);

public Check(id)
{
    //Обработчик задачи
}
 
Последнее редактирование:
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Alfistik, да.
6 Июн 2018
set_task(20.0, "Check", .flags = "a", .repeat = 3);
6 Июн 2018
Тебе ещё нужно передать через такс айди игрока, который тебе нужен будет в обработчике, чтобы выполнять необходимые тебе операции.

Из описания


Код:
set_task(20.0, "Check", id, .flags = "a", .repeat = 3);

public Check(id)
{
    //Обработчик задачи
}
public client_disconnect(id)
remove_task(id);// Не нужно использовать с флагом "а"?
 
Сообщения
28
Реакции
24
Alfistik, ну ты сам подумай. Создал ты задачу. Будет она длится 60 сек. Игрок выходит на 25 сек. Правильно будет убирать задачу при дисконекте игрока через remove_task. Но использовать remove_task(id), то у тебя уберутся все задачи с айди игрока. В таких случаях, если нужно убрать именно данную задачу, необходимо задать уникальный номер. Что-то типо такого: id + магическое число. Магическое число - это любое число)

В конечном результате у нас получается:
Код:
#define MAGIC_ID 6062018

public client_putinserver(id)
{
    set_task(20.0, "Check", id + MAGIC_ID, .flags = "a", .repeat = 3);
}

public Check(id)
{
    if(id > MAGIC_ID) id -= MAGIC_ID;
   
    //Дальше работаем с конкретным игроком по правильному id
}

public client_disconnect(id)
{
    remove_task(id + MAGIC_ID);
}
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Alfistik, ну ты сам подумай. Создал ты задачу. Будет она длится 60 сек. Игрок выходит на 25 сек. Правильно будет убирать задачу при дисконекте игрока через remove_task. Но использовать remove_task(id), то у тебя уберутся все задачи с айди игрока. В таких случаях, если нужно убрать именно данную задачу, необходимо задать уникальный номер. Что-то типо такого: id + магическое число. Магическое число - это любое число)

В конечном результате у нас получается:
Код:
#define MAGIC_ID 6062018

public client_putinserver(id)
{
    set_task(20.0, "Check", id + MAGIC_ID, .flags = "a", .repeat = 3);
}

public Check(id)
{
    if(id > MAGIC_ID) id -= MAGIC_ID;

    //Дальше работаем с конкретным игроком по правильному id
}

public client_disconnect(id)
{
    remove_task(id + MAGIC_ID);
}
Спасибо понял
Код:
public client_putinserver(id)
{
    iNumTests[id] = 0;
    set_task(20.0, "Check", id, .flags = "a", .repeat = 3);
}
public client_disconnect(id)
    remove_task(id);//Этим я удаляю всю инфу по id и при конекте все с 0 начинается

public Check(id)
{
//Здесь сам уже функционал как я понял проверки уже каждого игрока перебирать не надо я это выполнил в set_task с помощью id
}
 
Последнее редактирование модератором:
Сообщения
28
Реакции
24
Alfistik, вставляй код в соответствующие тэги.
6 Июн 2018
Не особо ты понял.
Код:
public client_disconnect(id)
remove_task(id);
Чтобы такое делать, ты должен быть уверен, что у тебя нигде больше не используются задачи с айди id. В противном случае, ты остановишь не только эту задачу. Банальный пример - у тебя два плагин запускают задачу с уникальным идентификатором id. (Ошибочка. Garey поправил)
 
Последнее редактирование:
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Alfistik, вставляй код в соответствующие тэги.
6 Июн 2018
Не особо ты понял.
Код:
public client_disconnect(id)
remove_task(id);
Чтобы такое делать, ты должен быть уверен, что у тебя нигде больше не используются задачи с айди id. В противном случае, ты остановишь не только эту задачу. Банальный пример - у тебя два плагин запускают задачу с уникальным идентификатором id.
Я уже забил так для себя решил понять, думал пинг кикер запилить типа прошел 4 проверки за 60 сек если все ок с пингом играй если пинг выше нормы то пока ))
 
Сообщения
28
Реакции
24
Кстати, плодить эти задачи тоже не есть гуд)
 
Сообщения
141
Реакции
201
Помог
5 раз(а)
Чтобы такое делать, ты должен быть уверен, что у тебя нигде больше не используются задачи с айди id. В противном случае, ты остановишь не только эту задачу. Банальный пример - у тебя два плагин запускают задачу с уникальным идентификатором id.

@Garey, по правде говоря, никогда не встречался с использованием второго параметра)
Не знаешь – не пиши.
 
Сообщения
28
Реакции
24
Garey, по правде говоря, никогда не встречался с использованием второго параметра)
 
Сообщения
496
Реакции
621
Помог
16 раз(а)
Я уже забил так для себя решил понять, думал пинг кикер запилить типа прошел 4 проверки за 60 сек если все ок с пингом играй если пинг выше нормы то пока ))
Это плохая логика. Тема изначально начата с кснета - облегчить нагрузку на сервер за счёт пинг кикера. Выбрали один из самых лёгких плагинов и начали улучшать типа.
Пинг вещь не всегда стабильная. А если я через прокси зашёл? а если у меня провайдер так себе? wi-fi? Запросто пинг в течение минуты-двух может быть низким, а затем резко подскочить.
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Это плохая логика. Тема изначально начата с кснета - облегчить нагрузку на сервер за счёт пинг кикера. Выбрали один из самых лёгких плагинов и начали улучшать типа.
Пинг вещь не всегда стабильная. А если я через прокси зашёл? а если у меня провайдер так себе? wi-fi? Запросто пинг в течение минуты-двух может быть низким, а затем резко подскочить.
я тоже об этому думал типа все время проверять пока есть игрок на сервере или первые 60 сек
 
Сообщения
51
Реакции
-24
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Последнее редактирование:

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

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу