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

Plugin od mgły dla AdminaAdmin na spekcie lub po śmierci może wyłączyć sobie mgłę w celu sprawdzania graczy

admin fog mgła włączanie wyłączanie mgły spekt martwy sprawdzanie graczy

Najlepsza odpowiedź grankee, 15.12.2014 02:38

 

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.

Nie da się wykonać kodu na graczu, którego już nie ma na serwerze.

 

Nie na graczu lecz na zmiennej o id gracza, który opuścił serwer, a to się da.

 

 

 

public round_start(id)
{    
        console_cmd
(0, "gl_fog 1")
        FogActive = false
}
Co prawda wszystkim ustawi mgłe na 1, mimo iz chcesz, zeby tylko adminowi to zrobilo, jednak nie zmieni to działania, a pętle nie wiem czy jest sens.

Adminowi na spect także, a tak ma nie być.

 

 

if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || (get_user_flags(i) & ADMIN_TUTAJFLAGA))
        continue;

Żywemu adminowi też nie zmieni, a ma zmienić.

Przestudiuj to:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Admin Fog"
#define VERSION "1.0"
#define AUTHOR "$OLDIER"

#define CZAS 1.0

//new bool:FogActive//po pierwsze nazywaj zmienne zgodnie z ich przeznaczeniem, 
//dajesz FogActiv i okreslasz nią czy jest mgła wyłączona-na odwrót, co wprowadza w błąd
//new bool:FogDisabled //a tak w ogóle to ta zmienna Ci nie jest potrzebna, task będzie pomijał martwych adminów z flaga ADMIN_LEVEL_A

public plugin_init() {

	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("amx_fog 0","AdminFogOFF", ADMIN_LEVEL_A, "wylacza mgle dla admina")//amx_fog 0 = AdminFogOff, nie odwrotnie! poprawiłem
	register_clcmd("amx_fog 1","AdminFogON", ADMIN_LEVEL_A, "wlacza mgle dla admina")
	
	set_task(CZAS, "ustaw", _, _, _, "b")
	
	register_logevent("round_start", 2, "1=Round_Start")
	//register_logevent("round_end", 2, "1=Round_End")
}

public round_start(/*id*/)//round_start nie ma id
{	
	//if(get_user_flags(id) & ADMIN_LEVEL_A)//nie potrzeba sprawdzać czy to admin
	for(new id=1;id<get_maxplayers();id++)
	{
		if(is_user_alive(id))
			console_cmd(id, "gl_fog 1")
	}

	return PLUGIN_HANDLED
}

public AdminFogOFF(id)//Małe i wielkie litery mają znaczenie, jak dajesz wyżej AdminFogOFF to tutaj nie może być AdminFogOff
{
	/*if(FogDisabled == true)
	{
		console_print(id, "Mgla jest juz wylaczona")
		return PLUGIN_HANDLED
	}*/
/*
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id) || get_user_team(id) == 3)
		{
			client_cmd(id,"gl_fog 0")
			console_print(id, "Wylaczyles sobie mgle jako Admin")
			FogDisabled = true
		}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		
	}*/
	//Ja bym dał tak:
	if(!(get_user_flags(id) & ADMIN_LEVEL_A))
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
		return PLUGIN_HANDLED
	}
	if(!is_user_alive(id)/* || get_user_team(id) == 3*/)//Nie potrzeba sprawdzać czy jest na spect, bo jak jest to jest martwy więc i tak zadziała
	{
		client_cmd(id,"gl_fog 0")
		console_print(id, "Wylaczyles sobie mgle jako Admin")
		//FogDisabled = true
	}
	else
	{
		console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
	}
	
	
	return PLUGIN_HANDLED;
}

public AdminFogON(id)
{
	/*if(FogDisabled == false)
	{
	console_print(id, "Mgla jest juz wlaczona")
	return PLUGIN_HANDLED
	}*/
	
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		/*if(!is_user_alive(id) || get_user_team(id) == 3)//po co Ci te wszystkie warunki? W tym miejscu gracz włącza sobie mgłe więc nieważne czy jest żywy itd...
		na dobrą sprawę nieważne nawet czy jest adminem, ale niech będzie, żeby zwykły user nie mógł użyć komendy
		{*/
		client_cmd(id,"gl_fog 1")
		console_print(id, "Wlaczyles sobie mgle jako Admin")
		//FogDisabled = false
		/*}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")*/
	}
	return PLUGIN_HANDLED;
}

public ustaw(/*id*/)//tu nie ma id
{
	/*if(FogDisabled == true)
	{
		if(get_user_flags(id) & ADMIN_LEVEL_H)//po co to sprawdzasz tutaj? Przecież jakby nie miał admina to by sobie nie wyłączył
			{
				if(!is_user_alive(id) || get_user_team(id) == 3)
				return PLUGIN_HANDLED
			}
	}
	else
	{
	
	}*/
	//A wystarczy:
	for(new id=1;id<get_maxplayers();id++)
	{
		if(!is_user_connected(id))
			continue
		if((is_user_alive(id))||(!(get_user_flags(id) & ADMIN_LEVEL_A)))
			client_cmd(id, "gl_fog 1")
	}
	return PLUGIN_CONTINUE
}

Finalnie kod jest o połowę krótszy:

#include <amxmodx>

#define CZAS 1.0

public plugin_init() {

	register_plugin("Admin Fog", "1.0", "$OLDIER")
	
	register_clcmd("amx_fog 0","AdminFogOFF", ADMIN_LEVEL_A, "wylacza mgle dla admina")//amx_fog 0 = AdminFogOff, nie odwrotnie! poprawiłem
	register_clcmd("amx_fog 1","AdminFogON", ADMIN_LEVEL_A, "wlacza mgle dla admina")
	
	set_task(CZAS, "ustaw", _, _, _, "b")
	
	register_logevent("round_start", 2, "1=Round_Start")
}

public round_start()
{	
	
	for(new id=1;id<get_maxplayers();id++)
	{
		if(is_user_alive(id))
			console_cmd(id, "gl_fog 1")
	}

	return PLUGIN_HANDLED
}

public AdminFogOFF(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_A))
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
		return PLUGIN_HANDLED
	}
	if(!is_user_alive(id))
	{
		client_cmd(id,"gl_fog 0")
		console_print(id, "Wylaczyles sobie mgle jako Admin")
	}
	else
		console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
	return PLUGIN_HANDLED;
}

public AdminFogON(id)
{
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		client_cmd(id,"gl_fog 1")
		console_print(id, "Wlaczyles sobie mgle jako Admin")
	}
	return PLUGIN_HANDLED;
}

public ustaw()
{
	for(new id=1;id<get_maxplayers();id++)
	{
		if(!is_user_connected(id))
			continue
		if((is_user_alive(id))||(!(get_user_flags(id) & ADMIN_LEVEL_A)))
			client_cmd(id, "gl_fog 1")
	}
	return PLUGIN_CONTINUE
}
Przejdź do postu


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

#1 Sooldierr

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:94
  • Lokalizacja:Turek
Offline

Napisano 04.11.2014 17:17

Witam.

 

Próbuję stworzyć plugin, który dałby Adminom możliwość sprawdzania graczy pod kątem włączonej/wyłączonej mgły.

 

Komendy:

 

amx_fog <0/1> - włączanie/wyłączanie mgły

 

Komendy mają działać tylko i wyłącznie podczas gdy Admin jest martwy lub przebywa na spekcie.

W przypadku nie spełnienia tego warunku komunikat:

 

"Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!"

 

W przypadku, gdy Admin użyje komendy zgodnie z warunkiem powyżej, lecz w trakcie gdy korzysta z niej, stanie się żywy lub dołączy do gry to automatycznie komenda się dezaktywuje. (Zabezpieczenie przed wykorzystywaniem komendy dla własnych celów)

 

Flaga dostępu: ADMIN_LEVEL_A

W przypadku rozłączenia clienta (Admina), komenda się dezaktywuje.

 

Dodatkowo w jednym pluginie chcę zawrzeć task cykliczny co 3s, który wykonuje komendę gl_fog 1 na wszystkich z wyjątkiem Adminów korzystającym w tym czasie z wyłączonej mgły

 

 

Jestem zaledwie początkującym, mój kod, który dotychczas napisałem (wiem, tragicznie wygląda uwzględnienie taska oraz to automatyczne włączanie mgły):

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Admin Fog"
#define VERSION "1.0"
#define AUTHOR "$OLDIER"

#define CZAS 1.0

new bool:FogActive

public plugin_init() {

	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("amx_fog 0","AdminFogON", ADMIN_LEVEL_A, "wylacza mgle dla admina")
	register_clcmd("amx_fog 1","AdminFogOFF", ADMIN_LEVEL_A, "wlacza mgle dla admina")
	
	set_task(CZAS, "ustaw", _, _, _, "b")
	
	register_logevent("round_start", 2, "1=Round_Start")
	//register_logevent("round_end", 2, "1=Round_End")
}

public round_start(id)
{	
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		if(is_user_alive(id))
		{
			console_cmd(id, "gl_fog 1")
			FogActive = false
		}
	}

	return PLUGIN_HANDLED
}

public AdminFogON(id)
{
	if(FogActive == true)
	{
	console_print(id, "Mgla jest juz wylaczona")
	return PLUGIN_HANDLED
	}

	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id) || get_user_team(id) == 3)
		{
			client_cmd(id,"gl_fog 0")
			console_print(id, "Wylaczyles sobie mgle jako Admin")
			FogActive = true
		}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
	}
	
	return PLUGIN_HANDLED;
}

public AdminFogOff(id)
{
	if(FogActive == false)
	{
	console_print(id, "Mgla jest juz wlaczona")
	return PLUGIN_HANDLED
	}
	
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id) || get_user_team(id) == 3)
		{
			client_cmd(id,"gl_fog 1")
			console_print(id, "Wlaczyles sobie mgle jako Admin")
			FogActive = false
		}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
	}
	return PLUGIN_HANDLED;
}

public ustaw(id)
{
	if(FogActive == true)
	{
		if(get_user_flags(id) & ADMIN_LEVEL_H)
			{
				if(!is_user_alive(id) || get_user_team(id) == 3)
				return PLUGIN_HANDLED
			}
	}
	else
	{
	client_cmd(id, "gl_fog 1")
	}
	
	return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#2 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 14.12.2014 15:05

Nie podobają mi się te warunki, są one jak dla mnie nielogiczne, no ale każdy sobie piszę kod jak chce:

    if(FogActive == true)
    {
    console_print(id, "Mgla jest juz wylaczona")
    return PLUGIN_HANDLED
    }

 

Dwa, przestudiuj ten kod:

amx_fog <0/1> - włączanie/wyłączanie mgły
...
        if(!is_user_alive(id) || get_user_team(id) == 3)
        {
            client_cmd(id,"gl_fog 0")
            console_print(id, "Wylaczyles sobie mgle jako Admin")
            FogActive = true
        }

 ...
 
        if(is_user_alive(id))
        {
            console_cmd(id, "gl_fog 1")
            FogActive = false
        }

 

To kiedy w końcu ta mgła się włącza wyłącza?

 

Trzy, Mówisz, że ma to być tylko dla graczy z flagą ADMIN_LEVEL_A, tymczasem w funkcji np. ustaw ustawiasz dla gracza z ADMIN_LEVEL_H

 

Co do automatycznego wyłączania komendy przy ożywieniu gracza z admin_level_a, użyj funkcji respawnu i sprawdź, czy zrespawnowany gracz to jest admin, jeżeli tak, wyłącz komendę.

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#3 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 14.12.2014 19:42

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.

Nie da się wykonać kodu na graczu, którego już nie ma na serwerze.


  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#4 Sooldierr

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:94
  • Lokalizacja:Turek
Offline

Napisano 14.12.2014 20:43

Też się dziwię, właśnie ocb mu.

 

Generalnie nie wiem czy on mnie zrozumiał. Ja się głowię jak połączyć to z taskiem ustawiającym mgłę graczom, bo jak wiadomo mogą sobie ją wyłączać.

I teraz muszę zrobić wykluczenie dla Adminów, którzy użyli komendy wyłączającej oraz dodać zabezpieczenie, aby nie nadużywali komendy.


  • +
  • -
  • 0

#5 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 14.12.2014 20:48

do plugin_init dodaj:

set_task(10.0, "WymuszajMgle", 420, _, _, "b") // 420 blaze it xD

Na końcu .sma dodaj

public WymuszajMgle()
{
	for(new i=1; i<33; i++)
                {
		if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || (get_user_flags(i) & ADMIN_TUTAJFLAGA))
		continue;
		
		client_cmd(i, "gl_fog 1");
	}


}

Ten kod pomija adminów, aby mieć kod od nie nadużywania komendy, musisz po prostu liczyć w pętli, albo dodać taska, sprawdzajacego czy dany czas minął itd.

 

+ wiekszosc kodu jest bezsensu, np roundstart nie posiada id!

 

Wiec polecam zamienic:

public round_start(id)
{	
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		if(is_user_alive(id))
		{
			console_cmd(id, "gl_fog 1")
			FogActive = false
		}
	}

	return PLUGIN_HANDLED
}

na

public round_start(id)
{	
		console_cmd(0, "gl_fog 1")
		FogActive = false
}

Co prawda wszystkim ustawi mgłe na 1, mimo iz chcesz, zeby tylko adminowi to zrobilo, jednak nie zmieni to działania, a pętle nie wiem czy jest sens.


Użytkownik Droso edytował ten post 14.12.2014 20:53

  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#6 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 15.12.2014 02:38   Najlepsza odpowiedź

 

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.

Nie da się wykonać kodu na graczu, którego już nie ma na serwerze.

 

Nie na graczu lecz na zmiennej o id gracza, który opuścił serwer, a to się da.

 

 

 

public round_start(id)
{    
        console_cmd
(0, "gl_fog 1")
        FogActive = false
}
Co prawda wszystkim ustawi mgłe na 1, mimo iz chcesz, zeby tylko adminowi to zrobilo, jednak nie zmieni to działania, a pętle nie wiem czy jest sens.

Adminowi na spect także, a tak ma nie być.

 

 

if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || (get_user_flags(i) & ADMIN_TUTAJFLAGA))
        continue;

Żywemu adminowi też nie zmieni, a ma zmienić.

Przestudiuj to:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Admin Fog"
#define VERSION "1.0"
#define AUTHOR "$OLDIER"

#define CZAS 1.0

//new bool:FogActive//po pierwsze nazywaj zmienne zgodnie z ich przeznaczeniem, 
//dajesz FogActiv i okreslasz nią czy jest mgła wyłączona-na odwrót, co wprowadza w błąd
//new bool:FogDisabled //a tak w ogóle to ta zmienna Ci nie jest potrzebna, task będzie pomijał martwych adminów z flaga ADMIN_LEVEL_A

public plugin_init() {

	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("amx_fog 0","AdminFogOFF", ADMIN_LEVEL_A, "wylacza mgle dla admina")//amx_fog 0 = AdminFogOff, nie odwrotnie! poprawiłem
	register_clcmd("amx_fog 1","AdminFogON", ADMIN_LEVEL_A, "wlacza mgle dla admina")
	
	set_task(CZAS, "ustaw", _, _, _, "b")
	
	register_logevent("round_start", 2, "1=Round_Start")
	//register_logevent("round_end", 2, "1=Round_End")
}

public round_start(/*id*/)//round_start nie ma id
{	
	//if(get_user_flags(id) & ADMIN_LEVEL_A)//nie potrzeba sprawdzać czy to admin
	for(new id=1;id<get_maxplayers();id++)
	{
		if(is_user_alive(id))
			console_cmd(id, "gl_fog 1")
	}

	return PLUGIN_HANDLED
}

public AdminFogOFF(id)//Małe i wielkie litery mają znaczenie, jak dajesz wyżej AdminFogOFF to tutaj nie może być AdminFogOff
{
	/*if(FogDisabled == true)
	{
		console_print(id, "Mgla jest juz wylaczona")
		return PLUGIN_HANDLED
	}*/
/*
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id) || get_user_team(id) == 3)
		{
			client_cmd(id,"gl_fog 0")
			console_print(id, "Wylaczyles sobie mgle jako Admin")
			FogDisabled = true
		}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		
	}*/
	//Ja bym dał tak:
	if(!(get_user_flags(id) & ADMIN_LEVEL_A))
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
		return PLUGIN_HANDLED
	}
	if(!is_user_alive(id)/* || get_user_team(id) == 3*/)//Nie potrzeba sprawdzać czy jest na spect, bo jak jest to jest martwy więc i tak zadziała
	{
		client_cmd(id,"gl_fog 0")
		console_print(id, "Wylaczyles sobie mgle jako Admin")
		//FogDisabled = true
	}
	else
	{
		console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
	}
	
	
	return PLUGIN_HANDLED;
}

public AdminFogON(id)
{
	/*if(FogDisabled == false)
	{
	console_print(id, "Mgla jest juz wlaczona")
	return PLUGIN_HANDLED
	}*/
	
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		/*if(!is_user_alive(id) || get_user_team(id) == 3)//po co Ci te wszystkie warunki? W tym miejscu gracz włącza sobie mgłe więc nieważne czy jest żywy itd...
		na dobrą sprawę nieważne nawet czy jest adminem, ale niech będzie, żeby zwykły user nie mógł użyć komendy
		{*/
		client_cmd(id,"gl_fog 1")
		console_print(id, "Wlaczyles sobie mgle jako Admin")
		//FogDisabled = false
		/*}
		else
		{
			console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
		}
	}
	else
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")*/
	}
	return PLUGIN_HANDLED;
}

public ustaw(/*id*/)//tu nie ma id
{
	/*if(FogDisabled == true)
	{
		if(get_user_flags(id) & ADMIN_LEVEL_H)//po co to sprawdzasz tutaj? Przecież jakby nie miał admina to by sobie nie wyłączył
			{
				if(!is_user_alive(id) || get_user_team(id) == 3)
				return PLUGIN_HANDLED
			}
	}
	else
	{
	
	}*/
	//A wystarczy:
	for(new id=1;id<get_maxplayers();id++)
	{
		if(!is_user_connected(id))
			continue
		if((is_user_alive(id))||(!(get_user_flags(id) & ADMIN_LEVEL_A)))
			client_cmd(id, "gl_fog 1")
	}
	return PLUGIN_CONTINUE
}

Finalnie kod jest o połowę krótszy:

#include <amxmodx>

#define CZAS 1.0

public plugin_init() {

	register_plugin("Admin Fog", "1.0", "$OLDIER")
	
	register_clcmd("amx_fog 0","AdminFogOFF", ADMIN_LEVEL_A, "wylacza mgle dla admina")//amx_fog 0 = AdminFogOff, nie odwrotnie! poprawiłem
	register_clcmd("amx_fog 1","AdminFogON", ADMIN_LEVEL_A, "wlacza mgle dla admina")
	
	set_task(CZAS, "ustaw", _, _, _, "b")
	
	register_logevent("round_start", 2, "1=Round_Start")
}

public round_start()
{	
	
	for(new id=1;id<get_maxplayers();id++)
	{
		if(is_user_alive(id))
			console_cmd(id, "gl_fog 1")
	}

	return PLUGIN_HANDLED
}

public AdminFogOFF(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_A))
	{
		console_print(id, "Nie posiadasz uprawnien do uzywania tej komendy!")
		return PLUGIN_HANDLED
	}
	if(!is_user_alive(id))
	{
		client_cmd(id,"gl_fog 0")
		console_print(id, "Wylaczyles sobie mgle jako Admin")
	}
	else
		console_print(id, "Musisz byc martwy lub przebywac na spekcie, aby moc uzywac tej komendy!")
	return PLUGIN_HANDLED;
}

public AdminFogON(id)
{
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		client_cmd(id,"gl_fog 1")
		console_print(id, "Wlaczyles sobie mgle jako Admin")
	}
	return PLUGIN_HANDLED;
}

public ustaw()
{
	for(new id=1;id<get_maxplayers();id++)
	{
		if(!is_user_connected(id))
			continue
		if((is_user_alive(id))||(!(get_user_flags(id) & ADMIN_LEVEL_A)))
			client_cmd(id, "gl_fog 1")
	}
	return PLUGIN_CONTINUE
}

Użytkownik grankee edytował ten post 15.12.2014 02:51

  • +
  • -
  • 0

#7 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 15.12.2014 15:00

 

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.

Nie da się wykonać kodu na graczu, którego już nie ma na serwerze.

 

Jeżeli się nie da, to w jaki sposób sprawdzasz w jailbreaku, czy akurat grę opuścił prowadzący, czy też nie? Pobierasz jego id. A kolega w temacie jasno określił, że chce, by po wyjściu admina z serwera komenda została wyłączona, właśnie dlatego też odniosłem się do tego i do dwóch innych rzeczy, gdyż jasno w temacie nie zostało przez autora określone, czego chce od nas, więc odniosłem się do kilku rzeczy tak na marginesie.

 

@Droso

 

Aaaa, no teraz rozumiem, mgła ma być tylko dla jednego gracza - admina, myślałem, że ma ją ustawić wszystkim graczom i po wyjściu z serwera ma wszystkim dezaktywować, w razie jakby admin zapomniał tego zrobić. Mój koszmarny błąd i zwracam honor. ^^


Użytkownik Wielkie Jol edytował ten post 15.12.2014 15:09

  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#8 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 15.12.2014 15:03

 

 

To samo tyczy się przy opuszczaniu gry przez admina. Służy do tego funkcja client_disconnect.

Nie da się wykonać kodu na graczu, którego już nie ma na serwerze.

 

Jeżeli się nie da, to w jaki sposób sprawdzasz w jailbreaku, czy akurat grę opuścił prowadzący, czy też nie? Pobierasz jego id. A kolega w temacie jasno określił, że chce, by po wyjściu admina z serwera komenda została wyłączona, właśnie dlatego też odniosłem się do tego i do dwóch innych rzeczy, gdyż jasno w temacie nie zostało przez autora określone, czego chce od nas, więc odniosłem się do kilku rzeczy tak na marginesie.

 

No właśnie komenda "client_cmd(id,"gl_fog 1")" wykonuje sie u gracza o danym ID - w obrębie plików gracza, a FogActive to zmienna, nie komenda.

Nie da się wykonać nic na graczu, który wyszedł.

 

Przyjmuje przeprosiny tylko na pw xD


Użytkownik Droso edytował ten post 15.12.2014 15:03

  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#9 Sooldierr

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:94
  • Lokalizacja:Turek
Offline

Napisano 16.12.2014 03:25

Dzięki Droso, to jest to co chciałem w pełni osiągnąć :)


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: admin, fog, mgła, włączanie, wyłączanie, mgły, spekt, martwy, sprawdzanie, graczy

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

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