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

Task się nie wyłącza.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 12.07.2019 15:21

Witam, mam problem z pluginem, ponieważ tak w pluginie który jest włączany przez menu, nie wyłącza się kiedy jest nowa runda.

 

Dodaje kod:

public plugin_init() {
	
	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  ;
	
}
public Poczatek_Rundy(){	

	for(new id=1; id<=32; id++){
	hud_on[id] = false
	remove_task(id+POKAZ_HUD);
	}
} 
public task_hud(task_id){

	new id = task_id-POKAZ_HUD
	
	if(!hud_on[id]){
		remove_task( id + POKAZ_HUD)
	}
	
	if(hud_on[id]){
	set_hudmessage( 0, 0, 200, 0.5, 0.6, 2, 0.02, 1.0, 0.01)
	show_hudmessage(0, "TEST");
	}
}

Tak wygląda case, włączenia HUD:

		case 3:{
		hud_on[id] = true;
		set_task(0.3, "task_hud", id+POKAZ_HUD, _, _, "b");
		}

Dlaczego HUD/task się nie wyłącza kiedy następuję nowa runda?


  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 12.07.2019 15:40

Hmmm, na pierwszy rzut oka wyglada ok.

	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  ;

Nie pamiętam dokładnie, ale to chyba łapie Ci moment w którym kończy się freezetime.

 

 

Nie rozumiem sensu zmiennej hud_on, jeśli jest używana tylko w tych miejscach - czyli do ogarniania czy hud jest włączony czy nie to jest bez sensu. Bo przecież robiąc remove_task wyłączasz taska, a sprawdzić czy gracz ma wyswietlany hud można poprzez funkcje task_exists(taskid), która powie Ci czy istnieje dany hud.

 

Kod jest ok, daj sobie jakieś printy etc czy w ogóle sterowanie Ci wchodzi do ifów w których jest remove_task

 

Poza tym to stosuj wcięcia w kodzie.

 

A i zamiast:

remove_task( id + POKAZ_HUD)

w tasku mozesz se dać:

remove_task(task_id)

  • +
  • -
  • 1

#3 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 12.07.2019 16:04

 

Hmmm, na pierwszy rzut oka wyglada ok.

	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  ;

Nie pamiętam dokładnie, ale to chyba łapie Ci moment w którym kończy się freezetime.

 

 

Nie rozumiem sensu zmiennej hud_on, jeśli jest używana tylko w tych miejscach - czyli do ogarniania czy hud jest włączony czy nie to jest bez sensu. Bo przecież robiąc remove_task wyłączasz taska, a sprawdzić czy gracz ma wyswietlany hud można poprzez funkcje task_exists(taskid), która powie Ci czy istnieje dany hud.

 

Kod jest ok, daj sobie jakieś printy etc czy w ogóle sterowanie Ci wchodzi do ifów w których jest remove_task

 

Poza tym to stosuj wcięcia w kodzie.

 

A i zamiast:

remove_task( id + POKAZ_HUD)

w tasku mozesz se dać:

remove_task(task_id)

 

 

Nie wiem sam już o co chodzi mam teraz tak:

public task_hud(task_id){

	new id = task_id-POKAZ_HUD
	
	if(task_exists(id + POKAZ_HUD)){
	set_hudmessage( 0, 160, 255, 0.5, 0.6, 2, 0.02, 1.0, 0.01)
	show_hudmessage(0, "TEST");
	}
}

Jak w menu wyłączam task to normalnie działa :/

		case 8:{
		remove_task(id + POKAZ_HUD);
		}

Jak robię tym to już nie:

	register_logevent("Poczatek_Rundy", 2, "1=Round_Start");
public Poczatek_Rundy(){	

	for(new id=1; id<=32; id++){
	remove_task(id + POKAZ_HUD);
	}
} 

  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 12.07.2019 16:49

Pokaż cały kod.

 

Zmień public Poczatek_Rundy na to:

public Poczatek_Rundy()
{
	for(new i = 1; i <= 32; i++)
	{
		if(!is_user_connected(i))
		{
			continue;
		}

		remove_task(i + POKAZ_HUD);
	}
}

Dodaj:

public client_disconnect(index)
{
	if(!task_exists(index + POKAZ_HUD))
	{
		return;
	}

	remove_task(index + POKAZ_HUD);
}

Dodaj w Poczatek_Rundy log_amx'a, sprawdzającego czy task istnieje, przykładowo:

log_amx("Player: %i, Task id: %i, exist: %s", id, id + POKAZ_HUD, task_exists(id + POKAZ_HUD) ? "True" : "False");

Tak jak napisał TibacK, możesz uzywać argumentu "task_id" zamiast "id + POKAZ_HUD", wartości wyjdą dokładnie te same.

 

Polecam też pomyśleć nad estetyką kodu (odezwij się na PW, chętnie Ci podpowiem co i jak) i nazywaniem zmiennych po angielsku.


  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#5 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 12.07.2019 17:11

Ku mojemu zdziwieniu, Task się wyłącza i w ogóle cały działa. Da się zrobić żeby się jeszcze wcześniej wyłączał? Nie po tym freezie ? Jaki event trzeba dać?


  • +
  • -
  • 0

#6 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 12.07.2019 17:25

register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")

@aSiorr

 

Nie trzeba robić tak:

public client_disconnect(index)
{
	if(!task_exists(index + POKAZ_HUD))
	{
		return;
	}

	remove_task(index + POKAZ_HUD);
}

:D Przecie wystarczy samo:

public client_disconnect(index)
{
	remove_task(index + POKAZ_HUD);
}

Rivit (12.07.2019 17:27):
Tak, wiem, czepiam sie

Użytkownik TibacK edytował ten post 12.07.2019 17:27

  • +
  • -
  • 1




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

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