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
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.
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.
#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


Dodatki SourceMod



Temat jest zamknięty








