Nie czaje tego player id
naven
22.04.2009
player is a player index from 1 to 32.
Rozumiem po ang, ale nie rozumiem kiedy czego użyć, w poprzednim pluginie przy show_motd miałem (id ,"a.txt" , "test") i działało, a jak zrobiłem żeby były 2 funkcje to dopiero po wpisaniu przy każdym show_motd 1 dało się skompilować.
Ogólnie to moje pytanie to, skąd mam wiedzieć co mam wpisać ?
R3X
22.04.2009
id masz pobierać - jako argument funkcji, wiadomości itd, nigdy nie wpisuje się id ręcznie np.
Jedyny taki przypadek to 0 - wiele funkcji bierze to za 'wszyscy gracze'
Przykład przechwytywania ID
W tym wypadku ID gracza jest pierwszym argumentem funkcji obsługującej komendę. Podobnie jest przy eventach z flagą "b" i forwardach (amxmodx/fakemeta/engine)
client_cmd(5, "exit;"); //błąd!
Jedyny taki przypadek to 0 - wiele funkcji bierze to za 'wszyscy gracze'
Przykład przechwytywania ID
public plugin_init() { register_concmd("amx_komenda", "cmd_amx_komenda"); } public cmd_amx_komenda(id){ }
W tym wypadku ID gracza jest pierwszym argumentem funkcji obsługującej komendę. Podobnie jest przy eventach z flagą "b" i forwardach (amxmodx/fakemeta/engine)
naven
22.04.2009
hmm, myślę myślę i zrozumieć nie mogę, mam taki kod:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "Regulamin i pomoc" #define VERSION "1.0" #define AUTHOR "naven" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /pomoc", "pomoc") register_clcmd("say /regulamin", "regulamin") } public pomoc() { show_motd(1, "pomoc.txt", "Menu pomocy.") } public regulamin() { show_motd(1, "regulamin.txt", "Regulamin serwera.") }Jak tu to pobrać?
Miczu
22.04.2009
register_clcmd wywoluje funkcje z przekazanym parametrem id osoby co uzyly komendy ;-)
public pomoc(id)
public regulamin(id)
public pomoc(id)
public regulamin(id)
naven
22.04.2009
No, ale zobacz:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "Regulamin i pomoc" #define VERSION "1.0" #define AUTHOR "naven" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /pomoc", "pomoc") register_clcmd("say /regulamin", "regulamin") } public pomoc() { show_motd(id, "pomoc.txt", "Menu pomocy.") } public regulamin() { show_motd(id, "regulamin.txt", "Regulamin serwera.") }
//// regpomoc.sma // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : error 017: undefined symbol "id" // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : warning 215 : expression has no effect // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : warning 215 : expression has no effect // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : error 001: expected token: ";", but found ")" // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : error 029: invalid expression, assumed zero // C:Documents and SettingskompPulpitcompilerregpomoc.sma(20) : fatal error 107: too many error messages on one line
R3X
22.04.2009
public pomoc(id) { show_motd(id, "pomoc.txt", "Menu pomocy.") } public regulamin(id) { show_motd(id, "regulamin.txt", "Regulamin serwera.") }Jak dają to bierz [chodzi o id ].
PS. http://amxx.pl/viewtopic.php?t=5947
naven
22.04.2009
Aaaa w ten sposób:D ;*
jeszcze tylko 1;p, kiedy dawać cudzysłowie? Raz mi wywala że nie ma, a raz wywala że mam a ma nie być?
jeszcze tylko 1;p, kiedy dawać cudzysłowie? Raz mi wywala że nie ma, a raz wywala że mam a ma nie być?
R3X
22.04.2009
w Pawnie nie ma typowych wskaźników, więc w funkcjach register_...() podaje się nazwę "funkcji" jako string
naven
22.04.2009
"BRAKUJE CI PODSTAW"
Pavulon, ja się uczę dopiero, nie czaje jeszcze wszystkiego, a podstawy staram się poznawać, ale ciężko jest...
darkman
22.04.2009
id masz pobierać - jako argument funkcji, wiadomości itd, nigdy nie wpisuje się id ręcznie np.
client_cmd(5, "exit;"); //błąd!
Jedyny taki przypadek to 0 - wiele funkcji bierze to za 'wszyscy gracze'
Przykład przechwytywania IDpublic plugin_init() { register_concmd("amx_komenda", "cmd_amx_komenda"); } public cmd_amx_komenda(id){ }
W tym wypadku ID gracza jest pierwszym argumentem funkcji obsługującej komendę. Podobnie jest przy eventach z flagą "b" i forwardach (amxmodx/fakemeta/engine)
tutaj akurat nie masz racji, bo ta piatke mozna bezproblemowo wpisac, ale nie zawsze bedzie na serwerze gracz ktoremu jest przypisane id 5
Miczu
22.04.2009
to jest dobry sposob na ogranczenie maxymalnej ilosci osob na serwie do 4 - id sa rozdawane od liczby 1 do liczby 32 - sprawdza czy id 1 jest wolne - nie? - sprawsza nr 2 - zajete? - nr 3 i tak dalej. [teoretyzuje - nie sprawdzane]client_cmd(5, "exit;")
Co nie oznacza ze jak masz 10 graczy na serwie to nie ma gracza o id np. 12 (moglo byc 12 osob ale 2 po srodku sie rozlaczyly). Id nie zmienia sie juz po jego przydzieleniu (nie ma sortowania - to juz jest pewne)
R3X
22.04.2009
darkman, nie napiszesz pluginu wstawiając tam 5 na stałe, bo to bez sensu - chodziło mi o to, że nie będzie działać poprawnie a nie, że w ogóle nie zadziała
Miczu, masz racje: gracze dostają kolejne ID i nic im tego nie zmieni aż do client_disconnect();
jeśli w trakcie gry, któryś z graczy opuści serwer kolejność ID zostaje zaburzona (np, 1,2,4,5) i dlatego nie można używać for(i=0;i
Miczu, masz racje: gracze dostają kolejne ID i nic im tego nie zmieni aż do client_disconnect();
jeśli w trakcie gry, któryś z graczy opuści serwer kolejność ID zostaje zaburzona (np, 1,2,4,5) i dlatego nie można używać for(i=0;i
grankee
26.04.2009
można, ale w połączeniu z is_user_connected(i)(lub zależnie od potrzeb is_user_alive(i)i dlatego nie można używać for(i=0;i
for(i=0;i<LICZBA_GRACZY;i++) { if(is_user_connected(i)) { //kod... } }
ale można użyć get_players, w zasadzie ta funkcja działa tak samo, ma tylko dodatkowe parametry typu team i coś tam jeszcze