Pobieranie tekstu
dasiek
06.07.2011
Tak więc. Mam mały problem z pobraniem do zmiennej tego, co napisze gracz w sayu. Kombinowałem i nic. chętnie nie pogardze kodem z wyjaśnieniem.
Harsay
06.07.2011
#include <amxmodx> #include <amxmisc> #define PLUGIN "Sprawdz Co Napisal" #define VERSION "0.0.0.0.1" #define AUTHOR "Harsay" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd ( "say", "SprawdzCoNapisal" ) } public SprawdzCoNapisal(id) { new said[192] // wiem że w tym zapisuje się ciąg znaków read_args ( said, 191 ) // a tutaj chyba odczytuje zmienną client_print(0, print_chat, "[Sprawdz Co Napisal] Ktos napisal - %s", said) }
Na takiej zasadzie działa swear replacement. A co do wyjaśnień to się tylko domyślam
Szkoda że nie jest read_args opisane w dokumentacji na amxx.pl
Dokumentacja AMXX.pl: Core >> amxmodx > read_args
Ale raczej służy do odczytywania ciągu znaków
@edit
Działa na 100%
Steam Community :: hry mix óń :: Screenshots
Użytkownik Harsay edytował ten post 06.07.2011 09:18
dasiek
06.07.2011
czyli jak dam
to przeczyta mi to co jest dalej po "!" ?
register_clcmd ( "say !", "SprawdzCoNapisal" )
to przeczyta mi to co jest dalej po "!" ?
Harsay
06.07.2011
Nie.
@edit
poczekaj...
Wtedy powinno zareagować. Jeżeli nie to zaraz napiszę jak trzeba
@edit2
Jednak nie. Sekunda...
@edit3
Zdaje mi się że ! musi być na początku a ten kod pokaże tekst zawierający w każdym miejscu.
Więc containi musi zwrócić 0
Użytkownik Harsay edytował ten post 06.07.2011 09:53
@edit
poczekaj...
register_clcmd ( "say ^"!", "SprawdzCoNapisal" )
Wtedy powinno zareagować. Jeżeli nie to zaraz napiszę jak trzeba
@edit2
Jednak nie. Sekunda...
@edit3
#include <amxmodx> #include <amxmisc> #define PLUGIN "Sprawdz Co Napisal" #define VERSION "0.0.0.0.1" #define AUTHOR "Harsay" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd ( "say", "SprawdzCoNapisal" ) } public SprawdzCoNapisal(id) { new said[192] read_args ( said, 191 ) if ( containi ( said, ! ) != -1 ) // Sprawdzamy czy tekst zawiera ! Jezeli nie zwroci -1 tp nie wywola client_print client_print(0, print_chat, "[Sprawdz Co Napisal] Ktos napisal - %s", said) }
Zdaje mi się że ! musi być na początku a ten kod pokaże tekst zawierający w każdym miejscu.
Więc containi musi zwrócić 0
#include <amxmodx> #include <amxmisc> #define PLUGIN "Sprawdz Co Napisal" #define VERSION "0.0.0.0.1" #define AUTHOR "Harsay" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd ( "say", "SprawdzCoNapisal" ) } public SprawdzCoNapisal(id) { new said[192] read_args ( said, 191 ) if ( containi ( said, ! ) == 0 ) client_print(0, print_chat, "[Sprawdz Co Napisal] Ktos napisal - %s", said) }
Użytkownik Harsay edytował ten post 06.07.2011 09:53
dasiek
06.07.2011
Error: Invalid expression, assumed zero on line 19
w linijce
if ( containi ( said, ! ) != -1 )
Knopers
06.07.2011
eh ludzie
say "Elo ludzie !" albo "elo! ludzie"
if ( containi ( said, "!" ) != -1 )a tak po za tym to wiesz ze to się wykona nawet w takim przypadku ?
say "Elo ludzie !" albo "elo! ludzie"
diablix
06.07.2011
Pobrać do zmiennej możesz za pomocą np. globalnej tablicy
new g_sSomeoneSaid[33][128];
//...
g_sSomeoneSaid[id] = vArgs;
dasiek
06.07.2011
ogólnie to chodzi mi o to, żeby pobierało mi tekst gdy jest na początku ! (dla przykładu)
vaverix
06.07.2011
Witam.
Nie ma co domniemywać, czy to będzie działało, czy nie, po prostu sprawdźcie kod, zanim go zamieścicie...
Proszę:
Coś takiego?
W efekcie jak wyślesz wiadomość zawierającą na początku wykrzyknik, to zostanie ona zapisana do stringu g_text, czyli dokładnie tak, jak chciałeś...
Pozdrawiam.
Użytkownik vaverix edytował ten post 06.07.2011 15:26
Nie ma co domniemywać, czy to będzie działało, czy nie, po prostu sprawdźcie kod, zanim go zamieścicie...
Proszę:
/* vaverix, amxx-dev.pl, amxx.pl */ #include <amxmodx> #define MAX 128 // maksymalna dlugosc wiadomosci new g_text[128]; public plugin_init() { register_plugin("Nowy Plugin","1.0","#Vaverix."); register_clcmd("say","cmd_say"); register_clcmd("say_team","cmd_say"); } public cmd_say(id) { new arg[MAX]; // deklarujemy zmienną w której będzie wysłana wiadomość read_argv(1, arg, MAX-1); // pobieramy wiadomość (można też przez read_args, bez znaczenia) if(!equal("!",arg,1)) // sprawdzamy, czy na początku wiadomości znajduję się wykrzyknik return PLUGIN_CONTINUE; // jeśli nie, to zostawiamy wiadomość w spokoju // jeśli tak to informujemy o tym gracza client_print(id, print_chat, "Twoja wiadomosc zawiera wykrzyknik i zostala przechowana w zmiennej g_text..."); replace(arg, MAX-1, "!", ""); // usuwamy wykrzynik na początku wiadomości copy(g_text, MAX-1, arg); // zapisujemy wiadomość bez wykrzyknika do stringu g_text return PLUGIN_HANDLED; // i nie pokazujemy tej wiadomości na czacie... }
Coś takiego?
ogólnie to chodzi mi o to, żeby pobierało mi tekst gdy jest na początku ! (dla przykładu)
W efekcie jak wyślesz wiadomość zawierającą na początku wykrzyknik, to zostanie ona zapisana do stringu g_text, czyli dokładnie tak, jak chciałeś...
Pozdrawiam.
Użytkownik vaverix edytował ten post 06.07.2011 15:26