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

[ROZWIĄZANE] Blokada na say dla wszystkich prócz admina (komenda)


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

#1 Filip1512

    Wszechmogący

  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 27.07.2012 19:39

Cześć :)

Mógłby ktoś napisać plugin, który po wpisaniu /muteall na czacie przez admina blokowałoby wszystkim say? (say_team ma działać)
I żeby komenda mogła być użyta tylko i wyłącznie przez osoby z flagą A (immunitet)
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#2 Kołodziej

    Wszechwiedzący

  • Power User

Reputacja: 85
Zaawansowany

  • Postów:522
  • Imię:Kamil
  • Lokalizacja:Poland
Offline

Napisano 27.07.2012 19:58

polecam amx_gag
  • +
  • -
  • 0
CoD Fast Exp 31.186.83.235:27056 Dołączona grafika

CoD 300 Lvl+West 89.231.6.12:27035 Dołączona grafika

#3 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 27.07.2012 20:36

polecam amx_gag


Wyjdź, albo się nie udzielaj. Nie chce gagować i się bawić w czas itd. tylko raz napisac /muteall i zmutować cały serwer na say, zapomniałem jeszcze dopisać - oczywiście proszę też o to, żeby można było to odwrócić komendą /unmute all.

Użytkownik aerocell edytował ten post 27.07.2012 20:36

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#4 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 27.07.2012 21:06

łap:
Załączony plik  blockChat.sma   926 bajtów  29 Ilość pobrań
  blockChat.amxx
  • +
  • -
  • 1

#5 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 27.07.2012 21:26

A mógłbyś to przerobić na komende na czacie i dostępne tylko dla osoby z flagą "A"(ADMIN_IMMUNITY)?

Użytkownik aerocell edytował ten post 27.07.2012 21:26

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#6 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 27.07.2012 21:35

:)
Załączony plik  blockChat.sma   751 bajtów  24 Ilość pobrań
  blockChat.amxx
  • +
  • -
  • 1

#7 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 27.07.2012 21:55

Nie rozumiesz ;P Chodzi o to, że jak osoba z flaga A napisze na czacie /muteall - to nikt nie może pisać prócz osoby z flagą A. Jak osoba z flagą A napisze /unmuteall to wszyscy moga normalnie pisac :)
Ale dzięki, ze pomagasz, ale jeszcze sprobuj zmienic ;P

//edit
Juz wiem, jak to dziala, juz doczytalem :D ale wtedy jeszcze ustaw tak, zeby admin z flaga A mogl pisac nawet gdy czat jest zablokowany

Użytkownik aerocell edytował ten post 27.07.2012 22:00

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#8 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 28.07.2012 10:58

ref
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 28.07.2012 11:10


#include <amxmodx>

#include <amxmisc>



#define PLUGIN	"New Plugin"

#define AUTHOR	"DarkGL"

#define VERSION	"1.0"



#define ADMIN_FLAG ADMIN_IMMUNITY



new bool: isBlocked	=	false;



public plugin_init(){

	register_plugin(PLUGIN, VERSION, AUTHOR)

	

	register_clcmd( "say /muteall" , "muteOn" );

	register_clcmd( "say_team /muteall" , "muteOn" );

	

	register_clcmd( "say /unmuteall" , "muteOff" );

	register_clcmd( "say_team /unmuteall" , "muteOff" );

	

	register_clcmd( "say" , "sayChat" );

}



public muteOn( id , level , cid ){

	if( hasFlag( id ) ){

		isBlocked	=	true;

	}

}



public muteOff( id , level , cid ){

	if( hasFlag( id ) ){

		isBlocked	=	false;

	}

}



public sayChat( id ){

	

	if( hasFlag( id ) ){

		return PLUGIN_CONTINUE;

	}

	else if( isBlocked ){

		return PLUGIN_HANDLED;

	}

	

	return PLUGIN_CONTINUE;

}



bool: hasFlag( id ){

	return bool: ( get_user_flags( id ) & ADMIN_FLAG )

}


  • +
  • -
  • 1

#10 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 28.07.2012 13:06

O to mi właśnie chodziło Dark, dzięki :D Teraz jeszcze powiedz, jak wywołać wiadomość dla każdego gracza, jesli czat jest zablokowany lub "zostal zablokowany" lub "zostal odblokowany". Te 2 ostatnie to rozumiem, że normalnie client print tak? Czyli:

public muteOn( id , level , cid ){
if( hasFlag( id ) ){
isBlocked = true;
}
client_print(id, print_chat, "Czat zostal zablokowany");
}


public muteOff( id , level , cid ){
if( hasFlag( id ) ){
isBlocked = false;
}
client_print(id, print_chat, "Czat zostal odblokowany");
}


A jak ktoś próbuje napisać w trakcie, gdy czat jest juz zablokowany?

Użytkownik aerocell edytował ten post 28.07.2012 13:09

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#11 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 28.07.2012 13:13

funkcja sayChat jest uruchamiana jeśli ktoś chce napisać na czacie
  • +
  • -
  • 1

#12 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 28.07.2012 13:24

Czyli zrobić tak?

public sayChat( id ){

if( hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
else if( isBlocked ){
client_print(id, print_chat, "Obecnie czat jest zablokowany, moze pisac tylko admin.");
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

Użytkownik aerocell edytował ten post 28.07.2012 13:24

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#13 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 28.07.2012 15:26

tak
#include <amxmodx>
#include <amxmisc>

#define PLUGIN  "New Plugin"
#define AUTHOR  "DarkGL"
#define VERSION "1.0"

#define ADMIN_FLAG ADMIN_IMMUNITY

new bool: isBlocked     =       false;

public plugin_init(){
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd( "say /muteall" , "muteOn" );
	register_clcmd( "say_team /muteall" , "muteOn" );
	
	register_clcmd( "say /unmuteall" , "muteOff" );
	register_clcmd( "say_team /unmuteall" , "muteOff" );
	
	register_clcmd( "say" , "sayChat" );
}

public muteOn( id  ){
	if( hasFlag( id ) ){
		isBlocked       =       true;
	}
}

public muteOff( id ){
	if( hasFlag( id ) ){
		isBlocked       =       false;
	}
}

public sayChat( id ){
	
	if( !isBlocked || hasFlag( id ) ){
		return PLUGIN_CONTINUE;
	}
	
	return PLUGIN_HANDLED;
}

bool: hasFlag( id ){
	return bool: ( get_user_flags( id ) & ADMIN_FLAG )
}

  • +
  • -
  • 0

#14 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 28.07.2012 16:03

public sayChat( id ){

if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}

return PLUGIN_HANDLED;
}


A gdzie dopisać client_print, żeby jak ktoś napisze w czacie, kiedy jest zablokowany czat to napisze TYLKO TEJ OSOBIE na czacie info, że "Czat jest zablokowany"? I ogólnie co tutaj dodałeś? Żeby jak napisze admin, to żeby to info się nie pojawiało? Żeby wykluczało admina z tego tak?

//edit

Tak będzie ok?

public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}

Użytkownik aerocell edytował ten post 28.07.2012 16:10

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#15 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.07.2012 12:26

Reff..

Tak będzie ok?

public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#16 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 29.07.2012 12:43

pid na id
wtedy będzie ok
  • +
  • -
  • 0

#17 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.07.2012 13:22

A można wiedzieć jaka jest różnica między pid, cid i id? Bo jakoś nigdzie tego nigdy nie mogłem znaleźć...
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#18 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 29.07.2012 16:26

pid czy id to są po prostu nazwy zmiennych, używanych, żeby zidentyfikować gracza.
Przypomnijmy kod do poprawy:
public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Jeśli jednak już zostało użyte id jako identyfikator gracza
public sayChat( id ){
to należy konsekwentnie używać id do końca.
Plugin jako zmienną id przechowuje id gracza, który wykonał tę komendę i id ∈ [1 ; 32] ∩ ℕ
Jeśli nagle zamiast id, użyjesz pid, to plugin nie będzie wiedział na kim wykonać komendę, gdyż nie zna wartości pid i nie wykona jej na graczu o numerze id, lecz najprawdopodobniej na wszystkich, gdyż niezadeklarowany pid weźmie jako wartość 0 (nie weim, jak jest w pawnie, może pobrałby śmieci z pamięci)

W każdym razie, id przechowuje numer gracza, a pid nie, więc należy konsekwentnie używać id do końca.
Oczywiście nie ma problemu, jeśli użyjesz zmiennej pid, ale to wtedy także konsekwentnie, używaj jej wszędzie.

Kod powinien wyglądać tak:
public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Pierwsza jego linijka pobiera numer gracza, który ją wywołał i zapisuje do zmiennej id.
Stąd należy użyć właśnie
client_print(id, print_chat, "tutaj wiadomosc");
aby wysłać wiadomość do tego samego gracza.

#19 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 29.07.2012 17:01

pid czy id to są po prostu nazwy zmiennych, używanych, żeby zidentyfikować gracza.
Przypomnijmy kod do poprawy:

public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Jeśli jednak już zostało użyte id jako identyfikator gracza
public sayChat( id ){
to należy konsekwentnie używać id do końca.
Plugin jako zmienną id przechowuje id gracza, który wykonał tę komendę i id ∈ [1 ; 32] ∩ ℕ
Jeśli nagle zamiast id, użyjesz pid, to plugin nie będzie wiedział na kim wykonać komendę, gdyż nie zna wartości pid i nie wykona jej na graczu o numerze id, lecz najprawdopodobniej na wszystkich, gdyż niezadeklarowany pid weźmie jako wartość 0 (nie weim, jak jest w pawnie, może pobrałby śmieci z pamięci)

W każdym razie, id przechowuje numer gracza, a pid nie, więc należy konsekwentnie używać id do końca.
Oczywiście nie ma problemu, jeśli użyjesz zmiennej pid, ale to wtedy także konsekwentnie, używaj jej wszędzie.

Kod powinien wyglądać tak:
public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Pierwsza jego linijka pobiera numer gracza, który ją wywołał i zapisuje do zmiennej id.
Stąd należy użyć właśnie
client_print(id, print_chat, "tutaj wiadomosc");
aby wysłać wiadomość do tego samego gracza.


Czyli pid, cid, id to jest to samo, tylko że inaczej nazwane tak? :) Jeśli tak to prosżę o zamknięcie tematu, bo pomoc udzielona.
(29.07.2012 17:04):
Tak, to jest po prostu nazwa zmiennej.

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#20 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 29.07.2012 17:02

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL




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

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