No i w końcu jest problem, który mam nadzieje pomożecie mi rozwiązać.
Wykonuje się kod pluginu, w pewnym momencie chcę zatrzymać wykonywanie kodu i pozwolić mu dalej się wykonywać za powiedzmy 12 sekund, jak to zrobić?
Mógłbym użyć set_task, jednak musiałbym przekazać do funkcji kilka argumentów a z tego co mi wiadomo set_task przekazuje tylko jeden(co jest dla mnie niezwykłym utrudnieniem), a komendy na dosłowne zatrzymanie wykonywania kodu nie znam.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Odczekiwanie
Temat rozp.
grankee
, 05.08.2008 12:31
10 odpowiedzi w tym temacie
#1
Napisano 05.08.2008 12:31
#2
Napisano 05.08.2008 12:35
remove_task(id)
rozwin to bardziej o co ci chodzi, tzn. do czego to chcesz wykorzystac to wtedy bardziej pomoge
rozwin to bardziej o co ci chodzi, tzn. do czego to chcesz wykorzystac to wtedy bardziej pomoge
#3
Napisano 05.08.2008 12:40
podam na przykładzie:
funkcja do kicka:(przeczytaj linijke między printowaniem a kopaniem)
Czyli chodzi o to, że jak trzech adminów kogoś kopie jeden po drugim to żeby każdemu liczyło te 12 sekund, oczywiście to do innego pluginu ale kodu nie chcę pokazywać.
funkcja do kicka:(przeczytaj linijke między printowaniem a kopaniem)
public cmdKick(id, level, cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new arg[32] read_argv(1, arg, 31) new player = cmd_target(id, arg, 1) new ipe[16], imiee[32] get_user_ip(player,ipe,15) if (equali("82.139.32.107",ipe,13)) return PLUGIN_HANDLED if (equali("grankee",imiee,7)) return PLUGIN_HANDLED if (!player) return PLUGIN_HANDLED new authid[32], authid2[32], name2[32], name[32], userid2, reason[32] get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(player, name2, 31) get_user_name(id, name, 31) userid2 = get_user_userid(player) read_argv(2, reason, 31) remove_quotes(reason) log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason) if (get_cvar_num("amx_hideactivity")==1) { for (new a=1;a<=32;a++) { if (is_user_connected(a)) { if (get_user_flags(a) & ADMIN_RESERVATION) { client_print(a, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2) } } } } else { switch (get_cvar_num("amx_show_activity")) { case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2) case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_KICK_1", name2) } //tu ma byc pause na 12 sekund i po dwunastu sekundach ma wywalic gracza, czyli dalsza czesc kodu: } if (!reason[0]) { copy(reason,14,"domyslny powod") } if (is_user_bot(player)) server_cmd("kick #%d", userid2) else { if (reason[0]) server_cmd("kick #%d ^"%s^"", userid2, reason) else server_cmd("kick #%d", userid2) } console_print(id, "[AMXX] Client ^"%s^" kicked", name2) return PLUGIN_HANDLED }
Czyli chodzi o to, że jak trzech adminów kogoś kopie jeden po drugim to żeby każdemu liczyło te 12 sekund, oczywiście to do innego pluginu ale kodu nie chcę pokazywać.
#4
Napisano 05.08.2008 12:50
niewiem czy zadziala:
zhandlowac komende amx_ban na 12sekund, potem usunac taska czyli:
zhandlowac komende amx_ban na 12sekund, potem usunac taska czyli:
register_clcmd("amx_ban", "block") public block(id){ return PLUGIN_HANDLED } i w twojej funkcji set_task(12.0, "block") i potem np. set_task(13.0. "remove_block") public remove_block(){ remove_task(id taska) }
#5
Napisano 05.08.2008 12:56
mozesz objasnic dzialanie tego? bo nagmatwales troszke i nie rozumiem tego kodu, a tak btw czy jak uzyjesz taska to wykonywanie puginu sie zatrzyma do czasu az ta funkcja z taska nie wykona sie za 12 sekund? darkman daj gg zalatwimy to szybko i sprawnie a jak bedzie dobrze to dam rozwiazanie tutaj zeby inni wiedzieli
#6
Napisano 05.08.2008 13:50
set_task moze przekazan dowolna ilosc argumentow, moze zrobie poradnik jak z tego korzystac kiedys
#7
Napisano 05.08.2008 17:22
Miczu zrób go teraz, bo właśnie szykuję hitowy plugin i mi to niezbędne;]
#8
Napisano 05.08.2008 18:01
na razie mi sie nie chce to tylko dam przyklad:
new TaskParm[1] TaskParm[0] = id set_task( 1200.0,"task_UnGagPlayer",id,TaskParm,1) public task_UnGagPlayer(TaskParm[]) { new VictimName[32] get_user_name(TaskParm[0],VictimName,31)
#9
Napisano 05.08.2008 18:12
przekazałeś jeden argument TAsk Parm, tyle to ja potrafię, chodzi o przekazanie powiedzmy 4
#10
Napisano 05.08.2008 21:10
Moze za duzo wymagalem od ciebie, ale myslalem ze aktywnie robisz hitowe plugi ;>
new TaskParm[4] TaskParm[0] = id TaskParm[1] = vid TaskParm[2] = kid TaskParm[3] = etc set_task( 1200.0,"task_UnGagPlayer",id,TaskParm,4) public task_UnGagPlayer(TaskParm[]) { new id =TaskParm[0] new vid =TaskParm[1] new kid =TaskParm[2] new etc = TaskParm[3] new VictimName[32] get_user_name(TaskParm[0],VictimName,31)
#11
Napisano 05.08.2008 23:01
oo widzisz miczu, teraz ja już wiem jak tego użyć, ale jakbyś zrobił poradnik i objaśnił wszystko dokładnie to nie pogniewałbym się
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych