←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Narzucenie nick'a przy wejściu na serw...

Zablokowany

  • +
  • -
JSokol - zdjęcie JSokol 02.01.2010

Cześć.

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
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 02.01.2010

1.
public client_putinserver(id){
 set_task(0.1, "zmien_nick")
}

2. Przejrzyj sma G_block_name_change - Nieoficjalny polski support AMX Mod X
Odpowiedz

  • +
  • -
JSokol - zdjęcie JSokol 02.01.2010

1.

public client_putinserver(id){
 set_task(0.1, "zmien_nick")
}

Ehh.. zabrakło u mnie słówka "public"... :P
Tak więc dzięki wielkie, bo teraz w nowej formie:
"public client_putinserver(id) { zmien_nick(id); }"
już działa ;)

2. Przejrzyj sma G_block_name_change - Nieoficjalny polski support AMX Mod X

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ę:
"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
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 02.01.2010

// 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 :)

Nieoficjalny polski support AMX Mod X -> Dokumentacja :: AMXX

cs_set_user_team (id, cs_get_user_team(id) == CS_TEAM_UNASSIGNED?CS_TEAM_CT:CS_TEAM_CT, CS_DONTCHANGE)
Odpowiedz
Zablokowany