Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

set task вопрос

Статус пользователя admir
сообщение 18.1.2013, 19:46
Сообщение #1
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

Добрый день. Допустим я создаю такой set_task:
Код
set_task(4.0, "remove_t", victim);


Это правильно, но вот если я делаю set_task loop, как мне передать в функцию вызываемую set_task значение victim и при этом назначить set_task'у id, что-бы можно было потом удалить через remove_task?

На такие коды выдает ошибку аргументов:
Код
set_task(0.5, "tt_stop", victim, 2, _, _, "b");


Код
set_task(0.5, "tt_stop", 2, victim, _, _, "b");


Как сделать правильно?

Отредактировал: admir, - 18.1.2013, 19:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Makzz
сообщение 19.1.2013, 7:25
Сообщение #2


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Аргументы set_task:
Код
Float:time
const function[]
id = 0
const parameter[]=""
len = 0
const flags[]=""
repeat = 0


Как вариант:
new sInfo[1]
sInfo[0] = victim
set_task(0.5, "tt_stop", victim, sInfo, 1, _, "b");
и
remove_task(victim);

Вот только будет ли sInfo в лупе передаваться?....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя admir
сообщение 19.1.2013, 22:07
Сообщение #3
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

Цитата(Makzz @ 19.1.2013, 7:25) *
Аргументы set_task:
Вот только будет ли sInfo в лупе передаваться?....

в этом состоял мой вопрос, как в loop set_task передать функции значение аргумента..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alexander_3
сообщение 19.1.2013, 22:52
Сообщение #4


Стаж: 17 лет

Сообщений: 80
Благодарностей: 137
Полезность: 900

Код
public plugin_init() {
    register_clcmd("say /5", "test2")
}

public test2(id) {
    new func[3]
    func[0] = id
    func[1] = id
    func[2] = id
    set_task(1.0, "test", _, func, 3, "b")
}

public test(func[]) {
    new id1= func[0]
    new id2 = func[1]
    new id3 = func[2]
    client_print(0, print_chat, "%d | %d | %d", id1, id2, id3)
}


Отредактировал: Alexander_3, - 19.1.2013, 23:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 19.1.2013, 23:04
Сообщение #5


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

айди будет нормально передаваться


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя admir
сообщение 20.1.2013, 16:31
Сообщение #6
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

mazdan, у меня в функции, которую я вызываю 2 аргумента (id - игроков)
Код
public UserTakeDamage(victim, attacker)

я использую 1-ый set_task (обычный):
Код
set_task(4.0, "remove", victim);

а вот как мне использовать set_task (loop) и передать в него значение attacker...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 20.1.2013, 17:37
Сообщение #7


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Код
new Parms[ 2 ];

Parms[0] = pevAttacker;
Parms[1] = pevVictim;

set_task( 4.0, "Ctask__Remove", Parms);

public Ctask__Remove( Parms[ 2 ] )
{
    new pevAttacker = Parms[ 0 ];
    new pevVictim = Parms[ 1 ];
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 20.1.2013, 18:40
Сообщение #8


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

уже показали
Код
public UserTakeDamage(victim, attacker)
{
    new func[2]
    func[0] = attacker  //1
    func[1] =victim   //7

    set_task(1.0, "test",23, func, 2, "b")
}

public test(data[],task_id) {
    new attacker= data[0]
    new victim= data[1]
    client_print(0, print_chat, "%d | %d | %d", task_id, attacker, victim)
}

Цитата(должно быть так)
23 | 1 | 7


Bos93, ваш пример не будет работать. Вы не соблюдаете синтаксис set_task
Цитата
Float:time
const function[]
id = 0
const parameter[]=""
len = 0
const flags[]=""
repeat = 0


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 20.1.2013, 19:00
Сообщение #9


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Я ни разу не применял это,поэтому ошибся,думал размерность необходимо указывать.Я думаю такой скриптинг не правильный и можно обойтись без такого таска. Интересно,что хотел автор этим сделать?

Отредактировал: Bos93, - 20.1.2013, 19:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 20.1.2013, 19:16
Сообщение #10


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ну, например, выводить каждые 2 секунды инфу о последнем попадании (кто и в кого), аналогично текст нужно же передавать
Размерность не знаю вроде не надо (в функции) в set_task надо вот с примерами, просто у них там нет флага "b" но в целом то же самое
https://forums.alliedmods.net/showthread.php?t=156342


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя admir
сообщение 22.1.2013, 15:10
Сообщение #11
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

с помощью set_task loop я хотел "заморозить игрока", не дать ему двигаться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: