Skocz do zawartości
A TERMINATOR

TextDraw'y

Rekomendowane odpowiedzi

Witam, przedstawie wam teraz jak zrobic TextDraw. Zacznijmy od zwyklego, takiego, ktory nigdy się nie zmienia ani nie porusza.

Więc:

dajemy na gorze mapy

new Text: NazwaTD;
Szukamy public OnGameModeInit() i tworzymy tam TextDraw, czyli:
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:
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:
new respekt[MAX_PLAYERS];//zmienna
Pozniej tworzymy TextDraw, ale inaczej jak wyzej, bo na gorze mapy nalezy dac:
new Text:NazwaTD[MAX_PLAYERS];//zmienna dla wszystkich graczy oddzielnie
Teraz w public OnGameModeInit() robimy pętle na wszystkich graczy:
for(new i=0; i<GetMaxPlayers(); i++)
pod pętlą dajemy klamrę otwierajaca, a pod klamra, tworzymy TD:
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:
SetTimer("TextDraw", 1000, 1);//czyli będzie się odtwarzał co 1 sek.
Teraz tworzymy nasz public TextDraw. (Wyjaśnienia dam w komentarzach)
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:
TextDrawShowForPlayer(playerid, NazwaTD[playerid]);
UWAGA: Aby nie było problemów z limitem, należy dać w public OnGameModeExit():
TextDrawDestroy(NazwaTD);
A w drugim przypadku: (w pętli)
TextDrawDestroy(NazwaTD[i]);

Myślę, że wszystko dobrze objaśniłem, prosze o komentarze.

Pomogłem ?? Postaw + pod moim nickiem!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak coś robisz, to rób dokładniej, chodzi mi o opisanie każdej funkcji dot. TextDrawu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

O ta

TextDrawHideForAll(Textdraw2);

  A TERMINATOR dodaj funkcje na chowanie textdrawa i timer do tego zapomniałeś bo pokaże Ci się a nie schowa ;)

Jak ktoś będzie chciał zrobić więcej z TextDraw'ami to poprostu napisze tutaj kolejnego posta albo wejdzie na www.wiki.pawno.pl

Nie trzeba czegoś tłumaczyć jak jest nie potrzebne.

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dam zwykły kod HTML, który pomaga mi w znalezieniu odpowiedniej pozycji.

Jak ktoś chce użyć, to wystarczy, że skopiuje go do notatnika, zapisze jako html i uruchomi w przeglądarce.

<html>
<head>
<title>TextDraw! Dla Pawno.pl</title>
</head>
<body>
<a href="#" ><img src="http://www.fototube.pl/pix/img9/org/d41d8c9de80fc53aba54f2d46fd2216e.jpg" ISMAP /></a>
</body>
</html>

Po kliknięciu w adresie będzie wartość X,Y

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przydało mi się. :D Zrobiłem podobny do rp-pl a drugi ruchomy, że cały czas zmieni się nazwa. :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witajcie! A ja mam pewien problem, gdy w:

public OnGameModeInit()
Stawiam coś takiego:
            silnik = TextDrawCreate(218.000000,380.000000,"Trwa odpalanie silnika..");
            TextDrawAlignment(silnik,0);
            TextDrawBackgroundColor(silnik,0x000000ff);
            TextDrawFont(silnik,1);
            TextDrawLetterSize(silnik,0.499999,1.800000);
            TextDrawColor(silnik,0xffffffff);
            TextDrawSetOutline(silnik,1);
            TextDrawSetProportional(silnik,1);
            TextDrawSetShadow(silnik,1);
TextDraw ustawia się przy Spawn'ie, a nie w public'u, w którym podałem kod:
TextDrawShowForPlayer(playerid, silnik);

Ktoś wie jak temu zaradzić?

@EDIT: Dobra, naprawiło się jakoś. ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×