←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Problem z hudem (co robie źle)?

Locked

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

otóż pisałem sobie taki plugin jak poniżej tak dla nauki pisania ogólnie i mam pytanie dlaczego nie działa hud po wpisaniu /stop i czy mógłby ktoś dodać albo powiedziec jak żeby tylko admin mógł wpisać tą komende? bo ja sie dopiero ucze i chce wiedzieć co i jak za pomoc daje+++ z góry Pozdrawiam Kosa
Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /super", "Start")

register_clcmd("say /stop", "Stop")
}
public Start(id)
{
set_user_noclip( id, 1 )

}
public Stop(id)
{
set_user_noclip( id )
set_hudmessage( 80, 0, 255, 0.03, 0.76, 2, 0.02, 1.0, 0.01 )
show_hudmessage( id, "%s Nie ma Juz supermana!")
}
Quote

Gość_21977_* 19.06.2012

show_hudmessage( id, "%s Nie ma Juz supermana!")

%s oznacza zmienną typu string, którą należy podać jako kolejny parametr, nie podajesz jej.

Przykład:
new id, godnosc[32]="Clark Kent";
set_hudmessage(80, 0, 255, 0.03, 0.76, 2, 0.02, 1.0, 0.01);
show_hudmessage(id, "%s Nie ma Juz supermana!", godnosc);
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

A to będzie tak, że Każdego nick będzie? że np wpisuje 3 graczy /stop i pisze np M3sQ nie ma juz super mana itp. jak sie nie da w Hud to może da się w client_print ?
Quote

Gość_21977_* 19.06.2012

show_hudmessage(id, "%s Nie ma Juz supermana!", godnosc);


Jeśli pierwszym parametrem show_hudmessage jest numer id, to wiadomość na HUD zostanie wysłana tylko do gracza o tym określonym id.
Jeśli za pierwszy parametr dasz 0 (zero), to wiadomość na HUD zostanie wysłana do wszystkich.
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

a co zrobić żeby tylko było dla Admina, żeby tylko admin mogł wpisać /start i stop na Flage Kick
Quote

Gość_21977_* 19.06.2012

To jest 3. parametr funkcji register_clcmd.
register_clcmd("say /super", "Start", ADMIN_KICK);
register_clcmd("say /stop", "Stop", ADMIN_KICK);
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

nie działa, dalej zwykły gracz może to wpisać :(
Quote

  • +
  • -
grzesiu131's Photo grzesiu131 19.06.2012

if(!cmd_acces(id, level, cid))
{
return PLUGIN_HANDLED;
}


Dopisz do Start na samej górze
Edited by grzesiu131, 19.06.2012 17:10.
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 19.06.2012

Nie tylko dopisz to, ale i też zmień deklarację funkcji z
public Start(id)

na
public Start(id, level, cid)
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

dalej nie działa teraz sma wygląda tak, co robie źle? :/
//Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /super", "Start", ADMIN_LEVEL_H)

register_clcmd("say /stop", "Stop", ADMIN_LEVEL_H)
}
public Start(id, level, cid)
{
if(!cmd_acces(id, level, cid))
{
return PLUGIN_HANDLED;
}
set_user_noclip( id, 1 )

}
public Stop(id)
{
set_user_noclip( id )

}
Quote

Gość_21977_* 19.06.2012

if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

błędy w kompilatorze
super.sma(22) : error 017: undefined symbol "cmd_acces"
super.sma(28) : warning 209: function "Start" should return a value
Quote

Gość_21977_* 19.06.2012

if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

tak samo dla funkcji Stop()
Na końcu dodaj return PLUGIN_CONTINUE;
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 19.06.2012

dalej nie działa może coś źle dodaje niech ktoś pokaże cały Kod jak powinien wyglądać :D
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 19.06.2012

SpeedKill, tak NIGDY nie sprawdzamy, czy ktoś ma daną flagę... Tym bardziej w przypadku determinowania czy może użyć danej komendy. Po pierwsze, przy client_connect flagi nie są jeszcze odczytywane, po drugie jeśli nawet by były to mogą się zmienić, bo ktoś np użyje amx_reloadadmins, albo inny plugin doda/ujmie komuś flagę, a po trzecie: nie da się wtedy zmienić szybko flag dostępu do danej funkcji poprzez cmdaccess.ini

Do autora, cmd_access ma 2 s na końcu!
speedkill (20.06.2012 06:11):
Od kiedy minusa daje się za błędy kod ? Chyba, że czegoś nie wiem.
Quote

Gość_21977_* 20.06.2012

Odnośnie 2s w cmd_access, to już cytowałem własną wypowiedź w moim poprzednim poście, mając nadzieję, że zwrócę na to uwagę.
Jak widać, czasem trzeba prosto z mostu ;)

Jeśli chodzi zaś o
public client_connect(id)
g_Have[id] = (get_user_flags(id) & read_flags("t")) > 0
to wystarczy zamiast client_connect(), użyć client_authorized().
Wadą tego rozwiązania będzie to, że flagi zostaną pobrane tylko raz, w związku z tym, jakiekolwiek modyfikacje sumy flag w czasie rzeczywistym nie będą uwzględniane. Tego rozwiązania nie polecam.
Aczkolwiek zaletą jest, że flagi nie będą pobierane od gracza każdorazowo. Użycie client_connect() jest, masz rację, niepoprawne, gdyż kolejność, w jakiej się wykonają client_connect() oraz client_authorized() jest nieokreślona.
Quote

naXe's Photo naXe 20.06.2012

Kombinujecie -_-


#include <amxmodx>
#include <fun>

public plugin_init() {
register_plugin("New Plug-In", "1.0", "Administrator")

register_clcmd("say /super", "wlacz")
register_clcmd("say /stop", "wyłącz")
}

public wlacz(id) {
if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_KICK))
return PLUGIN_HANDLED

set_user_noclip(id, 1)
return PLUGIN_HANDLED
}

public wyłącz(id) {
if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_KICK))
return PLUGIN_HANDLED

new nick[32]
get_user_name(id, nick, 31)

set_user_noclip(id)
set_hudmessage(80, 0, 255, 0.03, 0.76, 2, 0.02, 1.0, 0.01)
show_hudmessage(0, "%s nie ma juz supermana!", nick)
return PLUGIN_HANDLED
}


PS: Nie wiem czemu się robią polskie znaki w znaczniku sma wyłącz

Można tez tak i jest krótszy kod:

#include <amxmodx>
#include <fun>

new bool: nc[33]

public plugin_init() {
register_plugin("New Plug-In", "1.0", "Administrator")

register_clcmd("say /super", "wlacz")
}

public wlacz(id) {
if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_KICK))
return PLUGIN_HANDLED

new nick[32]
get_user_name(id, nick, 31)

if(nc[id]) {
nc[id] = false
set_user_noclip(id)
} else {
nc[id] = true
set_user_noclip(id, 1)
}
set_hudmessage(80, 0, 255, 0.03, 0.76, 2, 0.02, 1.0, 0.01)
show_hudmessage(0, "%s %s supermana!", nick, nc[id]? "ma" : "nie ma juz")
return PLUGIN_HANDLED
}
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 20.06.2012

naXe, czy ja wiem czy krótszy? Po odliczeniu pustych, wychodzi dokładnie tyle samo linii :P Co prawda ma trochę mniej znaków, ale nie to się liczy. Rejestrujemy o jedną komendę mniej, więc jest niejako "prościej", ale i to jest w tym przypadku względne. Twoje rozwiązanie jednak nie uwzględnia 3ciego aspektu z mojego poprzedniego postu, dalej nie będzie można edytować flagi poprzez cmdaccess.ini

benio, dzięki za przyznanie racji :) Tyle, że Twój post nie wniósł nic, czego mój poprzedni nie zrobił (może prócz ładnych linków do dokumentacji)
Edited by GwynBleidD, 20.06.2012 01:18.
Quote

Gość_21977_* 20.06.2012

Attached File  Untitled.sma   874bytes   48 downloads
Quote

  • +
  • -
Kosa :D's Photo Kosa :D 20.06.2012

Dziękuje wszystkim za pomoc + beniowi dam, ale jutro bo wykorzystałem limit wszyscy inni dostali od góry do dołu :D
Quote
Locked