←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

LangMotd

  • +
  • -
R3X's Photo R3X 26.08.2009

LangMotd
v1.01

To rozszerzenie pozwala na pokazywanie graczowi okna z zawartością zależną od jego języka.
Kod powstał dzięki pomysłowi berix`a http://amxx.pl/topic... ... t17682.htm


Funkcja rejestrująca langmotd; zwraca wskaźnik, który należy przechować
register_langmotd(const szCustomDir[], const szExt[], const szDefaultFile[])
szCustomDir[] - folder w który znajdują się pliki językowe
const szExt[] - rozszerzenie plików językowych
const szDefaultFile[] - pokaże ten plik, gdy nie znajdzie odpowiedniego dla języka gracza i serwa

Funkcja pokazująca langmotd, zwraca true lub false, zależy to od tego, czy znaleziono jakiś plik do pokazania
show_langmotd(id, langmotd, const szHeader[])
id - index gracza
langmotd - wskaźnik zwrócony przez register_langmotd
const szHeader[] - nagłówek okienka



Jak to działa?
Od gracza pobierany jest kod języka, np. pl, en. W folderze szCustomDir odszukiwany jest plik o nazwie tego kodu i podanym rozszerzeniu:
gpHelp = register_langmotd("help/","txt","help.txt");
gdy mam język "pl" szuka pliku

help/pl.txt


gpHelp = register_langmotd("addons/amxmodx/lang/help/","html","help.txt");
gdy mam język "en" szuka pliku

addons/amxmodx/lang/help/en.html



Gdy go nie znajdzie poszukuje w identyczny sposób tylko kod pobiera od serwera.

Gdy nie znajdzie pliku nawet dla serwera pokaże szDefaultFile (czyli w obu przykładach help.txt)

Wszystkie ścieżki podawane są od cstrike/


Jak go użyć w swoim pluginie?
W nagłówkowej części plugin należy dopisać:
#include "langmotd.inl"
a plik langmotd.inl umieścić w tym samym folderze co .sma

Można dowolnie zmieniać ilość obsługiwanych motd przez definicję stałej MAX_MOTDS nad include; np:
#define MAX_MOTDS 10
#include "langmotd.inl"
i możesz zarejestrować 10 różnych LangMotd.

Domyślna wartość to 3.

Attached Files

Quote

  • +
  • -
berix's Photo berix 31.08.2009

ok a jak zrobic jak plik html bedzie na zewnętrzym serwerze (http) poniewaz chce aby plik mial wiecej niz ok ~1,5 KB
Quote

  • +
  • -
R3X's Photo R3X 31.08.2009

file_exists nie działa przez http://, więc problemem byłoby sprawdzać istnienie pliku

jeśli usuniesz:

if(!file_exists(szFile)){
		get_pcvar_string(gcvarLang, szLang, 3);
		prepareLangKey(szLang, 3);
		get_langmotd_file(langmotd, szLang, szFile, LEN_DEFFILE);
		if(!file_exists(szFile)){
			copy(szFile, LEN_DEFFILE, gszDefFile[langmotd]);
			if(!file_exists(szFile))
				return false;
		}
	}
Możesz użyc funkcji tak:
gpHelp = register_langmotd("http://www.google.pl","html","http://www.google.pl/help.html");
z tym, że brak plik oznacza puste okno ;>
Quote