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.
|
Narzucenie nick'a przy wejściu na serwer oraz blokada możliwości jego zmiany.
#1
Napisano 02.01.2010 15:04
Napisałem sobie funkcję "zmien_nick(id)" która narzuca graczowi nick taki, jaki ja chcę.
Chciałbym teraz, aby była ona wywoływana przy wejściu gracza na serwer.
Dlatego próbowałem ją wywołać w "client_authorized(id) {}" oraz w "client_putinserver(id) {}" a także w "client_connect(id) {}" ale nie przynosiło to skutków.
Sama funkcja działa dobrze, bo sprawdzałem to poprzez wykonanie:
"register_clcmd("say /nick","zmien_nick",0,"Bla bla bla...");"
i zmieniała tak jak sobie tego życzyłem.
Co więc muszę zrobić, aby wykonywała zmianę nicku gracza przy wejściu na serwer?
Druga sprawa: czy jest możliwość, aby po pomyślnej zmianie nicku zablokować funkcję "name nowy_nick" dla gracza tak, by grał z narzuconym nickiem do końca?
Piszę dość spory plugin dlatego pozwolę sobie w przyszłości w tym temacie zadawać kolejne pytania jeżeli będę mieć jakieś problemy.
Pozdrawiam,
JSokol
#2
Napisano 02.01.2010 16:00
public client_putinserver(id){ set_task(0.1, "zmien_nick") }
2. Przejrzyj sma G_block_name_change - Nieoficjalny polski support AMX Mod X
IP: ts3.cserwerek.pl
#3
Napisano 02.01.2010 16:35
Ehh.. zabrakło u mnie słówka "public"...1.
public client_putinserver(id){ set_task(0.1, "zmien_nick") }
Tak więc dzięki wielkie, bo teraz w nowej formie:
"public client_putinserver(id) { zmien_nick(id); }"
już działa
Ten link się bardzo przydał, bo rzeczywiście ten plugin blokuje zmianę nick'a, tylko teraz jak zrobić wystarczające opóźnienie, by najpierw zmienił przy wejściu na serwer (bo dokonuje się to dopiero po dołączeniu do team'u), a potem dopiero zablokował zmienianie przez user'a. Próbowałem zrobić to tak, że linijkę:2. Przejrzyj sma G_block_name_change - Nieoficjalny polski support AMX Mod X
"register_message(get_user_msgid("SayText"), "message");"
dodawałem na samym końcu funkcji "zmien_nick(id)", niestety nie pomogło to i blokowało także zmianę nicka wywołaną przez tą funkcję.
Dobra, poradziłem sobie z tym drugim punktem Dodałem zmienną bool'owską, która przy pierwszej próbie zmiany nicku zmienia swoją wartość, jednocześnie pozwalając na zmianę nicku, a każda kolejna zmiana jest blokowana.
Zostaje więc póki co tylko problem wpisany poniżej w "edit'ach"
Za pomoc oczywiście ląduje plusik, dziękuję Portek
Pozdrawiam,
JSokol
// EDIT:
W dokumentacji języka PAWN znalazłem też funkcję "cs_set_user_team()" która wrzucałaby mi zawodnika zaraz po wejściu na serwer do teamu który wpisał w bazie danych, niestety okazuje się, że kompilator nie przepuszcza tej funkcji (próbowałem też w wersji set_user_team()). Tak więc nie znacie może jakiejś funkcji zastępczej, która pod określonym warunkiem (danej w bazie) wrzucałaby zawodnika od razu do teamu, nie dając mu możliwości wybrania go?
// Edit do EDITa
Dodałem:
"#include <cstrike.inc>"
i teraz kompilator rozpoznaje już tą funkcję, jednak gdy funkcja jest wywoływana w:
"public client_putinserver(id) { cs_set_user_team(id,CS_TEAM_T); }"
to wcale nie wrzuca automatycznie gracza, czyli w sumie to w ogóle dzieje się tak, jakby tej funkcji tam nie było
Użytkownik JSokol edytował ten post 02.01.2010 18:05
#4
Napisano 02.01.2010 19:03
Nieoficjalny polski support AMX Mod X -> Dokumentacja :: AMXX// EDIT:
W dokumentacji języka PAWN znalazłem też funkcję "cs_set_user_team()" która wrzucałaby mi zawodnika zaraz po wejściu na serwer do teamu który wpisał w bazie danych, niestety okazuje się, że kompilator nie przepuszcza tej funkcji (próbowałem też w wersji set_user_team()). Tak więc nie znacie może jakiejś funkcji zastępczej, która pod określonym warunkiem (danej w bazie) wrzucałaby zawodnika od razu do teamu, nie dając mu możliwości wybrania go?
// Edit do EDITa
Dodałem:
"#include <cstrike.inc>"
i teraz kompilator rozpoznaje już tą funkcję, jednak gdy funkcja jest wywoływana w:
"public client_putinserver(id) { cs_set_user_team(id,CS_TEAM_T); }"
to wcale nie wrzuca automatycznie gracza, czyli w sumie to w ogóle dzieje się tak, jakby tej funkcji tam nie było
cs_set_user_team (id, cs_get_user_team(id) == CS_TEAM_UNASSIGNED?CS_TEAM_CT:CS_TEAM_CT, CS_DONTCHANGE)
IP: ts3.cserwerek.pl
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych