←  Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

Nie czaje tego player id

Zablokowany

  • +
  • -
naven - zdjęcie 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ć xD?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 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 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)
Odpowiedz

  • +
  • -
naven - zdjęcie 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ć?
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 22.04.2009

register_clcmd wywoluje funkcje z przekazanym parametrem id osoby co uzyly komendy ;-)

public pomoc(id)
public regulamin(id)
Odpowiedz

  • +
  • -
naven - zdjęcie 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
Odpowiedz

  • +
  • -
R3X - zdjęcie 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 :D ].


PS. http://amxx.pl/viewtopic.php?t=5947
Odpowiedz

  • +
  • -
naven - zdjęcie 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ć?
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 22.04.2009

cudzysłów oznacza zmienną typu string => "BRAKUJE CI PODSTAW"
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 22.04.2009

w Pawnie nie ma typowych wskaźników, więc w funkcjach register_...() podaje się nazwę "funkcji" jako string
Odpowiedz

  • +
  • -
naven - zdjęcie 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...
Odpowiedz

  • +
  • -
darkman - zdjęcie 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 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)


tutaj akurat nie masz racji, bo ta piatke mozna bezproblemowo wpisac, ale nie zawsze bedzie na serwerze gracz ktoremu jest przypisane id 5
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 22.04.2009

client_cmd(5, "exit;")

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]

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)
Odpowiedz

  • +
  • -
R3X - zdjęcie 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 xP 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
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 26.04.2009

i dlatego nie można używać for(i=0;i

można, ale w połączeniu z is_user_connected(i)(lub zależnie od potrzeb is_user_alive(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
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 26.04.2009

Zgodzę się tylko jeśli LICZBA_GRACZY to ilość slotów (maxplayers).
Odpowiedz
Zablokowany