Konsola serwera nie moze dać bana
Best Answer grankee 14.11.2014 00:50
@radim
if(!cmd_access(id,level,cid) && id!=0) return PLUGIN_HANDLED
Nieważne, że część warunku
id!=0
zostanie spełniona, bo jeżeli admin będzie miał odpowiednią flagę to część warunku
!cmd_access(id,level,cid)
nie zostanie spełniona, a co zatym idzie nie dojdzie to przerwania działania funkcji, ponieważ
&&
oznacza, że aby całość była spełniona muszą być spełnione jej obie części.
Admin z odpowiednią flagą zatem będzie mógł dać bana.
Go to the full post
Andrzejek
10.11.2014
Witam, mam taki problem, ponieważ konsola serwera czyli dokładnie tak:
server_cmd("amx_ban 15 %s VoteBan", szNameOfiara)
szNameOfiara - zawiera nick ofiary do zbanowania
próbowałem tak nawet
server_cmd("amx_ban ^"15^" #%d ^"VoteBan^"", get_user_userid(id_ofiary))
server_cmd("amx_ban ^"15^" %s ^"VoteBan^"", szNameOfiara)
I serwer to wykonuje, to potem cisza, nie daje bana. Nie wiem w czym jest problem, sprawdzałem nawet z tego: http://amxx.pl/topic...ans-brak-spamu/ i tak samo cisza. Wie może dlaczego tak się dzieje ??
GwynBleidD
10.11.2014
Zerknij w plugin od banów jakiego typu jest komenda amx_ban i czy sprawdza uprawnienia również od serwera.
Jeśli jest register_clcmd, dodaj register_srvcmd na funkcję która pominie sprawdzanie uprawnień
Jeśli jest register_concmd lub register_clcmd i register_srvcmd kierujące na tą samą funkcję sprawdzającą uprawnienia bez względu na to, czy wykonuje ją gracz czy serwer, rozdziel to.
sebul
11.11.2014
GwynBleidD
11.11.2014
register_concmd akurat rejestruje zarówno dla gracza jak i dla serwera
Są 2 rodzaje komend w AMXX, komenda klienta i komenda serwera. Komendę klienta tworzysz poprzez register_clcmd, a serwera poprzez register_srvcmd. Istnieje jeszcze register_concmd która po prostu rejestruje tą samą komendę zarówno dla klienta jak i dla serwera.
I teraz uprawnienia:
Jeśli w funkcji sprawdzasz uprawnienia, nie sprawdzając czy komenda została wywołana przez klienta czy przez serwer, to w 90% przypadków wywołania jej przez serwer komenda się nie powiedzie, bo serwer NIE POSIADA ŻADNYCH FLAG. No chyba, że mu je przydzielisz (to jest te 10% przypadków). Dlatego jeśli posiadasz komendę wymagającą sprawdzenia uprawnień, zarejestruj ją na 2 sposoby, z czego komendę serwera pozbawisz sprawdzania uprawnień.
Rivit
11.11.2014
Mam ten sam problem (ale z kickiem). Czyli jak dodam serwerowi wszystkie flagi (oprócz z) to będzie działać poprawnie?
GwynBleidD
11.11.2014
napisałem wyżej co jest DOBRYM rozwiązaniem. Dawanie serwerowi flag NIE jest.
Andrzejek
11.11.2014
register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<time in mins> <steamID or nickname or #authid or IP> <reason>")
Czyli działa dla osób, które mają falgę ban, to jak mam to teraz zrobić, mam zarejestrować register_srvcmd w pluginie w amxbans i wklepać komende do pluginu gdzie chce dać bana ??
grankee
13.11.2014
na początku funkcji przypisanej do tej komendy masz coś w stylu
public cmdBan(id,level,cid,3) { if(!cmd_access(id,level,cid)) return PLUGIN_HANDLED ......
wystarczy tutaj dodać warunek że jeśli jest serverem to też przejdzie np.
if(!cmd_access(id,level,cid) && id!=0) return PLUGIN_HANDLED
o ile kojarzę, ale mogę się mylić, to server ma id=0.
Więc ten warunek zatrzyma akcję jeśli wykonujący nie ma odpowiedniej flagi oraz nie jest serwerem.
Jeśli więc będzie serwerem to akcja się nie zatrzyma.
Edited by grankee, 13.11.2014 02:50.
radim
13.11.2014
na początku funkcji przypisanej do tej komendy masz coś w stylu
public cmdBan(id,level,cid,3) { if(!cmd_access(id,level,cid)) return PLUGIN_HANDLED ......wystarczy tutaj dodać warunek że jeśli jest serverem to też przejdzie np.
if(!cmd_access(id,level,cid) && id!=0) return PLUGIN_HANDLEDo ile kojarzę, ale mogę się mylić, to server ma id=0.
Więc ten warunek zatrzyma akcję jeśli wykonujący nie ma odpowiedniej flagi oraz nie jest serwerem.
Jeśli więc będzie serwerem to akcja się nie zatrzyma.
I wtedy admin (gracz z odpowiednią flagą przypisaną dla tej komendy) też nie będzie mogł dawać bana bo nie jest serwerem. Zamiat koniunkcji dałbym alternatywę
Andrzejek
13.11.2014
Ale właśnie nie ma takiej funkcji w pluginie z amxbans tylko jest zrobione w include
@radim a dokładnie?? :0
Attached Files
Best Answer
grankee
14.11.2014
@radim
if(!cmd_access(id,level,cid) && id!=0) return PLUGIN_HANDLED
Nieważne, że część warunku
id!=0
zostanie spełniona, bo jeżeli admin będzie miał odpowiednią flagę to część warunku
!cmd_access(id,level,cid)
nie zostanie spełniona, a co zatym idzie nie dojdzie to przerwania działania funkcji, ponieważ
&&
oznacza, że aby całość była spełniona muszą być spełnione jej obie części.
Admin z odpowiednią flagą zatem będzie mógł dać bana.