←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Pobieranie tekstu

Zablokowany

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

  • +
  • -
Harsay - zdjęcie 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 xD

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 ;P

@edit
Działa na 100%
Steam Community :: hry mix óń :: Screenshots
Użytkownik Harsay edytował ten post 06.07.2011 09:18
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 06.07.2011

czyli jak dam
register_clcmd ( "say !", "SprawdzCoNapisal" )

to przeczyta mi to co jest dalej po "!" ?
Odpowiedz

  • +
  • -
Harsay - zdjęcie Harsay 06.07.2011

Nie.

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

  • +
  • -
dasiek - zdjęcie dasiek 06.07.2011

Error: Invalid expression, assumed zero on line 19

w linijce

if ( containi ( said, ! ) != -1 )
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 06.07.2011

eh 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"
Odpowiedz

  • +
  • -
diablix - zdjęcie diablix 06.07.2011

Pobrać do zmiennej możesz za pomocą np. globalnej tablicy

new g_sSomeoneSaid[33][128];

//...
g_sSomeoneSaid[id] = vArgs;
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 06.07.2011

ogólnie to chodzi mi o to, żeby pobierało mi tekst gdy jest na początku ! (dla przykładu)
Odpowiedz

  • +
  • -
vaverix - zdjęcie 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ę:

/*
	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
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 06.07.2011

Dzięki wielkie tego potrzebowałem ;)

Do zamknięcia
Odpowiedz
Zablokowany