Podstawowa składnia
Code: Select all
set_task ( Float:time, const function[], id = 0, parameter[]="", len = 0, flags[]="", repeat = 0 )
Opis poszczególnych parametrów
- Float:time jest to czas w sekundach, po jakim funkcja ma zostać wywołana. Należy pamiętać, że czas podajemy jako float. Co to oznacza ? Czas musi być zapisany w systemie dziesiętnym, z jednym miejscem po kropce. Mówiąc najprościej jeśli chcemy aby funkcja była wykonywana po upływie 10 sekund zamiast 10 podajemy 10.0
- const function[] nazwa funkcji jaką chcemy wywołać
- id jest to po prostu id. Należy pamiętać o tym aby każdy task ( zadanie ) miał unikalne id. Jeśli pozostawimy ten parametr pusty ( będzie on niezdefiniowany ) to automatycznie przybierze on wartość 0. Znając id taska można wykonać na nim dodatkowe operacje o czym opowiem w dalszej części artykułu.
- parameter[] tutaj możesz dodać dowolną liczbę dodatkowych parametrów ( ich liczbę umieszczasz w zmiennej len )
- len ilość elementów dodanych w parameter[]
- flags[] flaga, parametr ten określa sposób w jaki będzie wywoływany task
- "a" powtarzaj zadanie określoną w zmiennej repeat liczbę razy.
- "b" powtarzaj zadanie aż do zmiany mapy / wyłączenia serwera bądź aż do momentu "zabicia" taska
- "c" wykonaj zadanie po czasie
- "d" wykonaj zadanie przed czasem
- "a" powtarzaj zadanie określoną w zmiennej repeat liczbę razy.
- repeat liczba powtórzeń taska. Brana jest pod uwagę tylko jeśli tasa ma flagę "a"
Dodatkowe operacje
Jak już wcześniej wspomniałem znając id taska możemy wykonać na nim dodatkowe operacje :
Code: Select all
task_exists ( id = 0, outside = 0 ) // sprawdź czy task o danym id istnieje
change_task ( id = 0, Float:newTime=1.0, outside = 0 ) // zmień czas wykonania zadania
remove_task ( id = 0, outside = 0 ) // bezpowrotnie usuń task o danym id
Pojawił się zatem dodatkowy parametr outside. Do czego on służy ? Jeśli ustawimy go na 1 będziemy mogli operować na taskach nie pochodzących od danego pluginu.
Przykłady
Jako przykład napiszmy plugin, który co 60 sekund od momentu startu mapy wypisuje wszystkim graczom jakąś wiadomość :
Code: Select all
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "set_task test"
#define VERSION "1.0"
#define AUTHOR "marcon"
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, AUTHOR );
set_task( 60.0, "print", _, _, _, "b" );
}
public print( )
{
client_print( 0, print_chat, "Wiadomosc" );
}
Gotowe

Code: Select all
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "set_task test"
#define VERSION "1.0"
#define AUTHOR "marcon"
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, AUTHOR );
}
public client_authorized( id )
{
set_task( 15.0, "print", id );
}
public print( id )
{
new nick[ 32 ];
get_user_name( id, nick, 31 );
client_print( id, print_chat, "Witaj %s", nick );
}
Powyższy plugin po 15 sekundach powita gracza, który właśnie dołączył do gry

[center]Absolutny zakaz kopiowania ![/center]