Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Odczekiwanie


  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

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.
  • +
  • -
  • 0

#2 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

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
  • +
  • -
  • 0

#3 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 05.08.2008 12:40

podam na przykładzie:
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ć.
  • +
  • -
  • 0

#4 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 05.08.2008 12:50

niewiem czy zadziala:

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)
}

  • +
  • -
  • 0

#5 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

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
  • +
  • -
  • 0

#6 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 05.08.2008 13:50

set_task moze przekazan dowolna ilosc argumentow, moze zrobie poradnik jak z tego korzystac kiedys :]
  • +
  • -
  • 0

#7 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 05.08.2008 17:22

Miczu zrób go teraz, bo właśnie szykuję hitowy plugin i mi to niezbędne;]
  • +
  • -
  • 0

#8 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

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)

  • +
  • -
  • 0

#9 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 05.08.2008 18:12

przekazałeś jeden argument TAsk Parm, tyle to ja potrafię, chodzi o przekazanie powiedzmy 4
  • +
  • -
  • 0

#10 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

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)

  • +
  • -
  • 0

#11 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

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ę:D
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych