Jump to content

[Mega TUT] Všetko o používaní textu na ploche


Leslie

Recommended Posts

Ahoj lidi.... vím že večine z vás lezem parádne na nervy s mojimi neustalimi otázkami co jak funguje..., v tem to časi sem sa hodne zaujimal o fungovanie TextDrawu..., 3D textu... a proste komplet textu na ploche. bohuzial.. ziadny tutoriál tuná nemá úplne všetko... Pokúsim sa... aby tu... bolo toho čo najviac (prípadné chyby mi hláste).

 


-[/hr]

Správa v CHATe

 

Určite každy pozna ako poslať správu v chate. pre tých čo nevedia sa pokúsim vysvetlit zopar funkcii ako tuto spravu poslat.:

1. Poslanie súkromnej správy

SendClientMessage(playerid, Farba, "Text ktorý sa ti vypíše. hlavne ho nezabudnite dat do tých uvodzoviek");

Farba - udáva sa buď v hex decimalnom kode priamo v sprave alebo si ju zadefinujete na zaciatku vasho kodu priamo pod #include

napríklad

#define COLOR_GREY 0xAFAFAFAA

Potom napiesto slova Farba napísete COLOR_GREY

ukáška:

if(!strcmp("/duells",cmdtext)) //prednastavený príkaz na port
{
SetPlayerPos(playerid,1714.837,-1912.18,13.5666); //prednastavena pozicia portu
SendClientMessage(playerid, 0xFF00FFAA,"Warpol si sa do zóny duelov v Los Santos"); //prednastavený text správy po zadaní príkazu
}

 

2. Poslanie globálnej správy

hore pod #include si zadefinujeme textove premenné

new var1t[255];
new var2t[100];

Nasledovnú čast zadáte do príkazu

GetPlayerName(playerid, var1t, 100);    //zistí hráčovo meno
format(var2t, 256, "Hráč %s sa presunul k chate adminov. [/chata]", var1t);    // prednastaví text ktorý vypíše všetkým hráčom i tomu ktorý príkaz zadá
SendClientMessageToAll(0xFFFF00AA, var2t);    // odošle príkaz s prednastavenou farbou v hex kóde

Vysvetlenie

%s - vypíše meno hráča ktorý zadal príkaz

 

3. a do tretice tu máme poslanie formátovaného textu...(túto funkciu este len študujem... podrobné info budem pravidelne aktualizovat prípadne napíšte kde tam je chyba)

ako prvý krok tak ako predtým si zadefinujeme pod #include nasledujúcu definíciu:

forward SendPlayerFormattedText(playerid, const str[], define);
forward public SendAllFormattedText(playerid, const str[], define);

a teraz si možte napríklad do publicu OnPlayerConnect(playerid) zadefinovať text hned po príchode hráča na server... avšak tento text sa nám objavý ešte pred tým ako sa zjavý text Connected to SA-MP 0.3c Server

Ukážka:

SendPlayerFormattedText(playerid, "Vytajte na serveri pre bylzsie info daj  /help.", 0);

Taktiež sa to však dá použiť i ako odpoveď na nejaký príkaz.

Ukážka:

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmd, "/help", true) == 0) 
{
	SendPlayerFormattedText(playerid,"Las Venturas Deathmatch: Money Grub Coded By Jax and the SA-MP Team.",0);
	SendPlayerFormattedText(playerid,"Type: /objective : to find out what to do in this gamemode.",0);
}
return 1;
}

 

 

VELKÝ TEXT NA PLOCHE

 

Jedná sa o funkciu ktorá vám vypíše text na obrazovke trebárs po pripojení hráča do hry, pri jeho zomretí,... ak sa koná závod... alebo iné... proste... dá sa to použiť hádam úplne na všetko čím chcete nútene niečo oznámiť hráčom i takým ktorý si vypnú chat tlačidlom F7

 

Poznáme 2 možnosti ako takýto text poslať

1. Možnosť ukázania textu všetkým hráčom:

Pozor... toto je jedna z možností:

ako prvý krok si zadevinujeme od #include nasledujúcu globálnu (teda pre celý kód) premennú

    new name[ 24 ], string[ 64 ];

alebo sa moze zadefinovat lokálnu premennú(funkcná len v danom publicu) priamo do publicu.

Príklad:

public OnPlayerDeath(playerid, killerid, reason)
{
   new name[ 24 ], string[ 64 ];
//    ....atď.

neni nutné použiť 2 krát new... ale treba to oddelit čiarkou :)

    GetPlayerName( playerid, name, 24 ); //zistí hráčovo meno
   format( string, sizeof(string), "Vypíše text", name ); // prednastavý text hráčovy
   GameTextForAll( string, 5000, 3 );

Vysvetlivky

číslo 5000 - počet sekúd teda kolko bude nápis na ploche zobrazeny1sekunda = 1000 (zrejme sa to udáva v milisekundách ak sa nemylim

číslo 3 - označuje štýl textu

 

Možnosť ukázania textu len 1 hráčovy:

no... praktycky je to to iste ako u 1 hraca... len sa pouzije príkaz

GameTextForPlayer(playerid,"~w~SA-MP: ~r~Las Venturas ~g~Mony server",5000,5)

 

Je však možné použiť mnoho iných spusobov ako vytvoriť a definovať GameText... ale na tie dalsie vás nechám trosku premýslat :v:

 

Štýly textu:

medium.jpg

Style_1

medium.jpg

medium.jpg

medium.jpg

medium.jpg

medium.jpg

Taktiež sa moze pouziť i farba textu alebo klidne i šipky či iné a na to nám slúžia tieto kódy:

Nový riadok ~n~

Red ~r~

Green ~g~

Blue ~b~

White ~w~

Yellow ~y~

Purple ~p~

Black ~l~

Otočenie textu ľahšia ~ H~

Šedá šípka hore ~U ~

Šedá šípka dole ~D~

Šedá šípka vľavo ~<~

Šedá šípka vpravo ~>~

Mapovanie klávesnica ~K~

 

 

TEXT DRAW

 

Takže začneme... Každý z vás určite vie... co je to vlastne ten TEXT DRAW... pre tých co nevedia... je to text na obrazovke...Vyzerá to asi nejak takto :d. Má samozrejme mnoho ďalších podob... ale myslim že ten obrázok to vystihuje najviac.

 

Základné príkazy:

Ako prvý krok si zadefinujeme nejaký text... (premennú....aby NIEKTORÝ nekrityzovali)

new Text:Nas_text;

Slovo Nas_text bude prestavovat premennú (mozete samozrejme zmenit)

 

Následuje publicOnGameModeInit() prípadne publicOnFilterScriptInit() podla toho či robite game mod alebo Filterscripts

Obrazovka je rozdelená na body 640 x 445 (súradnicový systém X Y začínajúci v lavom hornom rohu obrazovky. My si zadefinujeme text, ktorý bude začínat na súradniciach 35 a 120

Nas_text = TextDrawCreate(35.0, 120.0, "Text ktorý chceme zobrazit");

Teraz máme nachystané suradnice a text

 

Ako dalsi krok si mozme zvolit typ písma. Číslice 0 až 3 označujú 4 typi písma

clipboard01vu9.png

TextDrawFont(Nas_text, 1)

 

Niní možme si možme zvolit farbu textu....(farbu je v Hex. kóde. prvých 6 číslic označuje farbu....napr.: 0xFFFFFFAA

TextDrawColor(Nas_text, 0xFFFFFFAA);

farbu je mozne zmenit podle libosti

 

Obrys textu...

TextDrawBackgroundColor(Nas_text, 0x000000FF);

 

Nastavenie výšky a šírky textu.

TextDrawLetterSize(Nas_text, 1, 3.0);

Prvé číslo definuje výšku textu

Druhé číslo definuje jeho šírku

 

Zarovnanie textu: Ak je zarovnanie 1 alebo 0, zarovnava text dolava, ak je zarovnanie 2, zarovnava do stredu, ak je zarovnanie 3, zarovnava doprava.

TextDrawAlignment(MyTextdraw, 2);

 

Nastavenie obrysu pismen textu. To číslo 1 je možne zmeniť na večšie (podLa potreby)

TextDrawSetOutline(Nas_text, 1);

 

Nastavenie Veľkosti tieňa textu.

TextDrawSetShadow(Nas_text, 2);

 

Medzeri medzi písmenami

Pouziva sa na nastavenie primeraneho odstupu pismen medzi sebou. Za to slovícko "nastavit" co je v kóde nizsie moze byt 0 alebo 1 (1 = pouziva sa). Napr. pismena W I budu mat rovnaku sirku.

TextDrawSetProportional(Nas_text, nastavit);

 

Teraz sa vrhneme na zobrazovanie textu.

1. Text mozme zobrazit len urcitému hrácovy.

TextDrawShowForPlayer(playerid, Nas_text);

 

2. Text zobrazíme všetkým hráčom...vhodné hlavne na hromadné spravy od adminov

TextDrawShowForAll(Nas_text);

 

! POZOR !

Bez prikazov TextDrawShowForPlayer alebo TextDrawShowForAll sa vam nikdy nezobrazi TextDraw, preto su tie prikazy nevyhnutne v mode!

 

Skrytie textu:

TextDrawHideForPlayer(playerid, Nas_text);

 

! POZOR !

Ak sa hrac odpoji zo serveru a neskryje sa mu text (ak ma nejaky zapnuty), tak potom kazdemu dalsiemu pripojenemu hracovi pada hra (poprípadne sa hracom neda pripojit na server).

Preto odporucam pouzit toto nasledovné zabezpečenie:

 

Zmyznutie textu: (vlozit do publicOnPlayerDisconnect(playerid, reason)

1. skrytie textu určitému hráčovy:

TextDrawHideForPlayer(playerid, Nas_text);

2. skrytie textu vsetkým hráčom:

TextDrawHideForAll(Nas_Text);

 

Zmenu textu v urcitom TextDrawe

TextDrawSetString(Nas_text, "Text ktorý chceme zobrazit"); 

Je tiez mozné pouzit v príkaze TextDrawCreate moze byt zapisany array premennou. Moze v sebe obsahovat atributy:

Nový riadok ~n~

Red ~r~

Green ~g~

Blue ~b~

White ~w~

Yellow ~y~

Purple ~p~

Black ~l~

Otočenie textu ľahšia ~ H~

Šedá šípka hore ~U ~

Šedá šípka dole ~D~

Šedá šípka vľavo ~<~

Šedá šípka vpravo ~>~

Mapovanie klávesnica ~K~

 

Príklad:

TextDrawSetString(txt, "Novy ~y~text");

 

Znicenie urciteho textu

TextDrawDestroy(Nas_text);

 

 

Textdraw v Boxe

 

 

Určite každy z vás uz skusal alebo aspon bude skusat dat text do boxu... je to celkom dost jednoduche...

 

Ak si chcete vytvorit bor vez celu plochu.. proste zadate len jeden bod... a to lavy horny roh boxu...

 

Ak vsak chcete aby ten box bol len v urcitej oblasti, bol pekny...no prste vyzeral k svetu.. tak na to treba uz body 2.

 

Tu je tutoriál ako si mozte takyto box vytvorit:

Za 1. Vytvoríme si premeenú ktorá nam bude reprezentovat Text draw

 

new Tabulka;

 

Za 2. Rozhodneme sa kam chceme umiestnit box... a urcime si 2 body.

 

Lavý horný bod boxu:

 

Tabulka = TextDrawCreate(35,120,"~l~Tento server je proste super");

 

Pravý dolný bod boxu:

 

TextDrawTextSize(Tabulka,300,140);

 

Za 3. Oznámime textdrawu ze bude používaný box

 

TextDrawUseBox(Tabulka, true);

 

Ak box nieje použivaný stačí dať namiesto true slovo false

 

Za 4. Zadefinujeme si ďalšie parametre textu:

TextDrawFont(Tabulka, 1); 
TextDrawSetShadow(Tabulka, 0);
TextDrawLetterSize(txtr1, 0.25,1); 
TextDrawSetProportional(Tabulka, false);

 

A nakoniec len tak pre zaujimavost dulezity parameter:

Natavenie Farby boxu (jeho priehladnosti)

 

TextDrawBoxColor(Tabulka ,0x00000000); 

 

Farbu textu určíte klasicky:

0x -ostáva

000000 - farba textu v hexadecimálnom kóde (prosim vás... na tej stranke to je i s # tak do pawna tu miesku nepiste)

00 - posledné číslice..udávaju či má byť tabulka videt alebo nie... 00 - 99 (00 - nieje vidiet; 99 - je vidiet úplne. Ten kto má Vindows Wista... alebo vizsie... tak vie o co sa jedna... mu to vytvori taku... sklenenu tabulku... proste priehladnu)

 

Jo... na zobrazenie toho boxu... proste jak na klasicky text draw...

 

 

3D text v hre

 

Pripravuje sa...

 


-[/hr]

Tak dakujem za váš čas... a dufam ze som týmto tutom osvetlil zaujímavost Textu na obrazovke... Ospravedlnujem sa ze to bolo take zdlhave citanie... ale snad som to dost dobre vysvetlil.. a ak tu takyto podrobny tut uz je... tak ho zmazte.. oki??Postupne budem pridávať ďalšie zaujímavosti ak mi teda tento tut schválite

:v:

 

Prosím hodnoďte ale :spam:

Link to comment
Share on other sites

prosim vymaz to je tot tu asi 20 X dakujem za pochopenie

ano ... ale v kazdem neco chyba... a pozeral sem kolko krat to tu je... a nasel sem to tu len 5 krát... bud zle vysvetlene... alebo neuplne

Link to comment
Share on other sites

pěkný, jsou tam ukázky, celkem dobře popsané

pokud je to z tvé hlavy tak dobrá práce

 

 

NO A Z ČEJ HLAVY BY TO MALO ASI BYT??? "lol"

 

tak víš jak, někteří píší stylem CTRL-C, CTRL-V

no tak ja pisem stylem CTRL + moja hlava, CTRL + napisem co viem

Link to comment
Share on other sites

.....

 

pozry Qwer... ak sisi nevsimol... tak vsetky tuty sa ani v najmensom nevyrovnaju tomu mojmu... ako som to vysvetlil ja... najdi mi aspon jedniny tutu na tomto fore ktory sa bude rovnat obsahom tomu mojmu... popripadne bude tam toho viac.. a ja kludne necham tento tut zmazat...

 

jediny tut ktory sa aspon trochu priblizil je tento

 

nemozem za to ze nenavidis lamy jako sem jaaa :v:

Link to comment
Share on other sites

dobre... tak sú tu 2... ale stale tam nieje ten dulezity popis pro zacatecniku tak aby to pochopil uplne kazdy... a mi nehovor ze si sa z teho mojho tutu nedozvedel neco nove...

 

jo a este neco... nevim kto z nas 2 je tu namysleny viac... ale ak si myslis ze som to ja tak si bez dat sprchu a pozry sa do zrkadla... nic v zlom... ale mam pocit ze ty sa svojimi vedomostami ohladom pawna proste vytahujes a ked po tebe nekdo neco chce tak mu to vysvetlis jakeby ten komu to vysvetlujes robil v pawne uz aspon rok..a ak ma mienis bu****vat za to ze sem blby jak koleckove brusle... kludne si posluz... bo je to pravda... ale aspon nekopcim a snazim sa to naucit od ludi co to blbcov jak som ja chcu naucit

Link to comment
Share on other sites

Neobhajuj to, nikto tvoj tut nebude uctievat ako jediny prospesny a vynimocny.

 

"lol" a zadam to tu snad ??? "lol" omg... no oki... este si pokrytizujte "lol"

Link to comment
Share on other sites

Jee moc dobrý!Já zkouším teď TDE ale tohle tytam zůstane pořád jestli se nemýlím?

 

Ja vás nechápem prečo hladáte len chyby niektorý sa stím trapia niektorý nie no tak v pawne to error nevypíše chlapec sa snaží..A je to dobré pomohlo mi to 10/10

 

 

Muzu se zeptat jak semho kritizoval? :d

Ale mimochodem misto TextDraw mito da zamestnani Lekare a misto zmenit barvu textu mito da zamestnani policajta :d

Link to comment
Share on other sites

pekný TuT, len pár chýb:

Nastavenie výšky a šírky textu.

TextDrawLetterSize(Nas_text, 1, 3.0);

Prvé číslo definuje výšku textu

Druhé číslo definuje jeho šírku

asi si myslel TextDrawTextSize

 

____

Otočenie textu ľahšia ~ H~

Mapovanie klávesnica ~K~

keby si to vyskúšal, tak to nemusíš prekladať na Google :d

~h~ zosvetlí farbu písma
~k~ zobrazí názov klávesy

 

____

00 - posledné číslice..udávaju či má byť tabulka videt alebo nie... 00 - 99 (00 - nieje vidiet; 99 - je vidiet úplne.

je to HEX číslo, takže 00 - FF (HEX používa 16 znakov)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...