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)
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.
|
Napisano 27.07.2012 19:39
Napisano 27.07.2012 20:36
polecam amx_gag
Użytkownik aerocell edytował ten post 27.07.2012 20:36
Napisano 27.07.2012 21:26
Użytkownik aerocell edytował ten post 27.07.2012 21:26
Napisano 27.07.2012 21:55
Użytkownik aerocell edytował ten post 27.07.2012 22:00
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 )
}
Napisano 28.07.2012 13:06
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");
}
Użytkownik aerocell edytował ten post 28.07.2012 13:09
Napisano 28.07.2012 13:13
Napisano 28.07.2012 13:24
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
Napisano 28.07.2012 15:26
#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 )
}
Napisano 28.07.2012 16:03
public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
return PLUGIN_HANDLED;
}
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
Napisano 29.07.2012 12:26
public sayChat( id ){
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Napisano 29.07.2012 12:43
Napisano 29.07.2012 13:22
Napisano 29.07.2012 16:26
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.
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.client_print(id, print_chat, "tutaj wiadomosc");aby wysłać wiadomość do tego samego gracza.
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 ){Jeśli jednak już zostało użyte id jako identyfikator gracza
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(pid, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}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 ){Pierwsza jego linijka pobiera numer gracza, który ją wywołał i zapisuje do zmiennej id.
if( !isBlocked || hasFlag( id ) ){
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "tutaj wiadomosc");
return PLUGIN_HANDLED;
}
Stąd należy użyć właśnieclient_print(id, print_chat, "tutaj wiadomosc");aby wysłać wiadomość do tego samego gracza.
Napisano 29.07.2012 17:02
raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.0 użytkowników, 0 gości, 0 anonimowych