szefcio - 2012-04-30 20:38:53

Witam w tym poradniku przedstawie wam jak zrobić własny textdraw.


Na górze dajemy:

Kod:

new Text: Nazwa Text Drawa;

Szukamy public OnGameModeInit()
i tworzymy tam TextDraw, czyli:

Kod:

NazwaTD = TextDrawCreate(X,Y, "Tresc");//tworzymy TextDraw, w miejsce X,Y podajemy położenie TextDraw'u w pixelach
TextDrawColor(NazwaTD, Kolor);//ustawiamy jego kolor
i opcjonalnie:
TextDrawLetterSize(NazwaTD, X,Y);//ustawiamy szerokosc i wysokosc liter
Mozna tez dac duzo innych funkcji TextDraw'u ale nie bede o nich pisal

Mamy juz stworzony TextDraw, teraz trzeba go pokazac graczu, wiec szukamy:
public OnPlayerConnect(playerid) wtedy pokaze sie zaraz przy polaczeniu gracza.
A gdy chcemy aby sie pokazal po spawnie, to szukamy public OnPlayerSpawn(playerid)
i dajemy tam:

Kod:

TextDrawShowForPlayer(playerid, NazwaTD);//pokazujemy graczowi TextDraw

Mniej wiecej objasnilem jak zrobic zwykly TextDraw, teraz pora na cos bardziej skomplikowanego, np. TextDraw z respektem./color]

A wiec...
tworzymy zmienna, ktora bedzie przechowywac respekt graczom:

Kod:

new respekt[MAX_PLAYERS];//zmienna

Pozniej tworzymy TextDraw, ale inaczej jak wyzej, bo na gorze mapy nalezy dac:

Kod:

new Text:NazwaTD[MAX_PLAYERS];//zmienna dla wszystkich graczy oddzielnie

Teraz w public OnGameModeInit() robimy pętle na wszystkich graczy:

Kod:

for(new i=0; i<GetMaxPlayers(); i++)

pod pętlą dajemy klamrę otwierajaca, a pod klamra, tworzymy TD:

Kod:

NazwaTD[i] = TextDrawCreate(X,Y,"_");//tworzymy pusty TextDraw dla kazdego gracza oddzielnie, potem tak samo jak powyżej, tylko należy
 pamiętać, że po NazwaTD dawać [i]

Teraz, trzeba jakoś dodawać do zmiennej respekt, zazwyczaj respekt sie dodaje jak gracz kogoś zabije, to nie jest poradnik jak zrobic respekt, więc tego nie wytłumacze.

Teraz w publicu OnGameModeInit() robimy timer, który będzie aktualizował nam TextDraw, więc:

Kod:

SetTimer("TextDraw", 1000, 1);//czyli będzie się odtwarzał co 1 sek.

Teraz tworzymy nasz public TextDraw

Kod:

forward TextDraw();//forwardujemy public
public TextDraw()
{
for(new i=0; i<GetMaxPlayers(); i++); //pętla na wszystkich graczy
{
new string[256];//tworzymy string, ktory bedzie nam przechowywal treść TD
format(string, sizeof(string), "Respekt: %d", respekt[i]); //formatujemy tekst
TextDrawSetString(NazwaTD[i], string);// zmieniamy nasz pusty TextDraw na ten ze stringa
}
return 1;
}

I jeszcze go pokazujemy graczowi, więc w public OnPlayerConnect lub public OnPlayerSpawn, dajemy:

Kod:

TextDrawShowForPlayer(playerid, NazwaTD[playerid]);

Aby nie było problemów z limitem, należy dać w public OnGameModeExit():

Kod:

TextDrawDestroy(NazwaTD);

A w drugim przypadku: (w pętli)

Kod:

TextDrawDestroy(NazwaTD[i]);
www.souleaterforumgame.pun.pl www.teenager-hogwart.pun.pl www.legionxiii.pun.pl www.42gdh.pun.pl www.rumunskamuza.pun.pl