←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Zwrócenie c-stringu

Zablokowany

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

Witam, męczę się i głowię jak w pawnie można zwrócić tablice (c-stringa).
Przykład:
[...]
show_hudmessage(id, "Zwrocony tekst: %s", oddajtxt(id));
[...]
public oddajtxt(id)
{
new name[32];
get_user_name(pid, name, 31);

return name;
}

Oczywiście przykład nie działa tak jak powinien.
Użytkownik diggs edytował ten post 31.10.2011 19:02
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 31.10.2011

Chyba tak się nie da, bo i w żadnym pluginie nie widziałem czegoś podobnego, do tego zrobiłeś tutaj błąd ^ ^ jak już to
public oddajtxt(id)
{
new name[32];
get_user_name(id, name, 31);

return name;
}
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

Nie istotne czy mam błąd w przykładzie, chodzi czy i jak to zrobić muszę wywołać funkcje która wygeneruje mi tekst i chce żeby ona mi ten tekst zwróciła, ale + dla ciebie za spostrzegawczość ;]
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 31.10.2011

Nie da się zwrócić tablicy w pawnie, no może dynamiczną ale i tak zaleca się robienie tego w ten sposób

tablica(x[32])
{
copy(x, 31, "Moj string");
}

Co do tego ze sie da dynamiczną ale nie powinno:
http://www.amxmodx.o...go=func&id=1206

Opis copy:
http://amxx.pl/dokumentacja/f1377/copy

zerknij sobie w stocki które są w bibliotekach, z reguły tak to działa ;)

dla przykładu nie robimy:
name = get_user_name(id)
Użytkownik Vertricus edytował ten post 31.10.2011 19:42
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

@Vertricus - a przez referencje jakoś by nie dało? Co do sposobu z copy czy mam to skopiować do tablicy x która jest globalna czy do tej której np przekazuje przy wywoływaniu tej funkcji?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 31.10.2011

Można zwracać tekst, ale tworzą się właśnie dziwne referencje i czasami kod nie zachowuje się jak tego byśmy chcieli.

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	
	new szNick[32];
	szNick = getText();
	
	log_amx("No siema %s", szNick);
}

getText()
{
	new szText[] = "ziom";
	return szText;
}



Podałem zły przykład to podam i dobry:

getText(szText[], len)
{
    return copy(szText, len, "ziom");
}
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

R3X mógłbyś pokazać jeszcze jak wywołać tą funkcje z poprawnego sposobu?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 31.10.2011


new szNick[32];

getText(szNick, 31);



log_amx( "No siema %s", szNick);

Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 31.10.2011

a jak już jesteśmy w temacie to nie można robić konstrukcji takiej
return "tekst";
kompilator się na tym wywali :D
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

Niestety ale sposób z copy nie działa :/
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 31.10.2011

działa, działa...
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 31.10.2011

Mi nie działa a robię to tak:
public native_get_text(id, szText[], len)
{
new text[64];

ArrayGetString(g_Text, num[id], text, 63);

return copy(szText, len, text);
}
[...]
new szcos[64];
diggs_get_text(id, class_name, 64);
show_hudmessage(id, "Tekst: %s",  szcos);
[...]
Efektem tego jest napis "Tekst:"

Jak nic z tym nie zrobię to jutro zrobię to od d*py strony.
Użytkownik diggs edytował ten post 31.10.2011 21:28
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 31.10.2011

czy dobrze widzę, że to natyw? to pewniak że nie działa ze stylem=1

musisz użyć style=0 i set_string()
Odpowiedz

  • +
  • -
diggs - zdjęcie diggs 01.11.2011

R3X dobrze widzisz i wielkie dzięki za to, ale jutro już to zrobię na dziś mam dość. Dam znać jak mi poszło.



Edit 01.11.2011

R3X jeszcze raz dzięki za spostrzegawczość, właśnie dopisałem 1 linijkę i chodzi jak ta bajka xD dodam że w stylu 1 też sie da wystarczy tylko na samym początku naszej funkcji dodać wywołanie funkcji param_convert( num ) i jako parametr podać numer argumentu w którym przekazana ma być tablica.

Po raz kolejny zawiniła moja skłonność do popełniania banalnych błędów...
Użytkownik diggs edytował ten post 01.11.2011 07:35
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 01.11.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany