Jump to content

Question

Posted

Problema intalnita (descriere): Nu este o problemă, ci o întrebare. Am creat un nou job (Trucker), cum fac ca după ce aleg licitația să îmi arate ceva de genul (ca în imaginea de jos)?
Ero(area / rile) / warning-(ul / urile): Nu există.
Liniile de cod / sursa / script-ul(obligatoriu): -
Imagini / Video (optional): http://i.imgur.com/FZ5WpMW.jpg
Ati incercat sa rezolvati singur?: Da, prima dată credeam că este un GameTextForPlayer, însă deabea dupaia am realizat faptul că este un TextDraw. 

Recommended Posts

  • 0
Posted (edited)

Arata-mi cum ai facut.

 

new Text:Trucker1[MAX_PLAYERS];
new Text:Trucker2[MAX_PLAYERS];
Trucker1[i] = TextDrawCreate(218.000000, 342.125000, "Drive the truck to the checkpoint.");
        TextDrawLetterSize(Trucker1[i], 0.348499, 1.582500);
        TextDrawAlignment(Trucker1[i], 1);
        TextDrawColor(Trucker1[i], -1);
        TextDrawSetShadow(Trucker1[i], 0);
        TextDrawSetOutline(Trucker1[i], 1);
        TextDrawBackgroundColor(Trucker1[i], 51);
        TextDrawFont(Trucker1[i], 1);
        TextDrawSetProportional(Trucker1[i], 1);
        Trucker2[i] = TextDrawCreate(231.000000, 367.937500, "(Ocean Dock's (LS) - %d km)");
        TextDrawLetterSize(Trucker2[i], 0.449999, 1.600000);
        TextDrawAlignment(Trucker2[i], 1);
        TextDrawColor(Trucker2[i], -1);
        TextDrawSetShadow(Trucker2[i], 0);
        TextDrawSetOutline(Trucker2[i], 1);
        TextDrawBackgroundColor(Trucker2[i], 51);
        TextDrawFont(Trucker2[i], 1);
        TextDrawSetProportional(Trucker2[i], 1);

Atâta am făcut, în rest.. nu am definit nimic la OnPlayerConnected sau altundeva.

Edited by Gawitkkk
  • 0
Posted

Asta este intr-o iteratie (adica un for) sau ... ?

Te referi la textdraw-uri? Daca da, acestea le-am pus la OnGameModeInit

  • 0
  • Administrator
Posted

Te referi la textdraw-uri? Daca da, acestea le-am pus la OnGameModeInit

Arata-mi tot ce tine de ele, unde le creezi si cum le folosesti, etc..

  • 0
Posted

Arata-mi tot ce tine de ele, unde le creezi si cum le folosesti, etc..

Le-am definit la începutul gamemode-ului:

new Text:Trucker1[MAX_PLAYERS];
new Text:Trucker2[MAX_PLAYERS];
  După care le-am creat la public-ul OnGameModeInit:
Trucker1[i] = TextDrawCreate(218.000000, 342.125000, "Drive the truck to the checkpoint.");
        TextDrawLetterSize(Trucker1[i], 0.348499, 1.582500);
        TextDrawAlignment(Trucker1[i], 1);
        TextDrawColor(Trucker1[i], -1);
        TextDrawSetShadow(Trucker1[i], 0);
        TextDrawSetOutline(Trucker1[i], 1);
        TextDrawBackgroundColor(Trucker1[i], 51);
        TextDrawFont(Trucker1[i], 1);
        TextDrawSetProportional(Trucker1[i], 1);
        Trucker2[i] = TextDrawCreate(231.000000, 367.937500, "(Ocean Dock's (LS) - %d km)");
        TextDrawLetterSize(Trucker2[i], 0.449999, 1.600000);
        TextDrawAlignment(Trucker2[i], 1);
        TextDrawColor(Trucker2[i], -1);
        TextDrawSetShadow(Trucker2[i], 0);
        TextDrawSetOutline(Trucker2[i], 1);
        TextDrawBackgroundColor(Trucker2[i], 51);
        TextDrawFont(Trucker2[i], 1);
        TextDrawSetProportional(Trucker2[i], 1);

 

Iar acum, urmează să fie adăugate la job-uri.

După ce selectez ruta, trebuie (trebuia.. ) să apară textdraw-urile.

 

  • 0
  • Administrator
Posted

Pai si daca ii pui acum

TextDrawShowForPlayer(playerid, Trucker2[playerid]);

nu merge?

  • 0
Posted

Pai si daca ii pui acum

TextDrawShowForPlayer(playerid, Trucker2[playerid]);

nu merge?

Ba da, dacă folosesc funcția asta, îmi arată.

  • 0
  • Administrator
Posted

Deci problema era ca tu nu ai creat textdraw-ul.

O marcam ca inchisa sau care mai este problema?

  • 0
Posted

Deci problema era ca tu nu ai creat textdraw-ul.

O marcam ca inchisa sau care mai este problema?

Tot nu am reușit să fac ca să îmi arate numărul de km rămași... să își facă update și toate cele, nu știu cum.. am tot încercat..

  • 0
Posted (edited)

Arata-mi cum ai facut.

 

                TextDrawShowForPlayer(playerid, Trucker1[playerid]);
                new
                Float: fDistance = GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2),
                string[44];
                format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);
                TextDrawShowForPlayer(playerid, string[playerid]);
Edited by Gawitkkk
  • 0
  • Administrator
Posted

Si unde ai asta pusa? Daca nu o ai in timer de asta nu se actualizeaza.

  • 0
Posted (edited)

 

                TextDrawShowForPlayer(playerid, Trucker1[playerid]);
                new
                Float: fDistance = GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2),
                string[44];
                format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);
                TextDrawShowForPlayer(playerid, string[playerid]);

Incearca sa pui asta in acel timer..

 

TextDrawHideForPlayer(playerid, Trucker1[playerid]);
TextDrawHideForPlayer(playerid, Trucker2[playerid]);
TextDrawShowForPlayer(playerid, Trucker1[playerid]);
new Float: fDistance = GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2);
new string[44];
format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);
TextDrawSetString(Trucker2[playerid], string);   
TextDrawShowForPlayer(playerid, Trucker2[playerid]);

 

Edited by Punct.

Nu mai deschideti in pu*a mea servere de SA:MP !

Jucati-va pe cele care sunt !   Sunt suficiente !

Reguli de bun simt:

1. Nu faceti reclama unde nu trebuie !

2. Nu injurati ca la usa cortului !

3. Daca esti analfabeti, taci din gura !

4. Nu abuza de 'scuze', 'din greseala' !

 

My work ::: http://pastebin.com/VRNRcaAs

  • 0
  • Administrator
Posted

@Punct. astea

TextDrawHideForPlayer(playerid, Trucker1[playerid]);
TextDrawHideForPlayer(playerid, Trucker2[playerid]);
TextDrawShowForPlayer(playerid, Trucker1[playerid]);
TextDrawShowForPlayer(playerid, Trucker2[playerid]);


Nu e nevoie sa fie in timer, poate sa le foloseasca doar o data.

  • 0
Posted

Pai daca se executa TextDrawShowForPlayer de mai multe ori, apare o singura data? Adica nu apare ca si cum ar fi mai multe?

 

Daca pun TextDrawSetSting, se modifica scrisul fara sa sterg textdraw-ul si sa-l fac sa apara din nou?

Nu mai deschideti in pu*a mea servere de SA:MP !

Jucati-va pe cele care sunt !   Sunt suficiente !

Reguli de bun simt:

1. Nu faceti reclama unde nu trebuie !

2. Nu injurati ca la usa cortului !

3. Daca esti analfabeti, taci din gura !

4. Nu abuza de 'scuze', 'din greseala' !

 

My work ::: http://pastebin.com/VRNRcaAs

  • 0
Posted (edited)

Incearca sa pui asta in acel timer..

 

TextDrawHideForPlayer(playerid, Trucker1[playerid]);
TextDrawHideForPlayer(playerid, Trucker2[playerid]);
TextDrawShowForPlayer(playerid, Trucker1[playerid]);
new Float: fDistance = GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2);
new string[44];
format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);
TextDrawSetString(Trucker2[playerid], string);   
TextDrawShowForPlayer(playerid, Trucker2[playerid]);

 

Am făcut cum ai spus tu, uite rezultatul: http://i.imgur.com/9XSupPI.png

 

1. Nu își face update numărul de km rămași.

2. Nu îmi arată în km, ci în metrii (cred).

 

@Punct. astea

TextDrawHideForPlayer(playerid, Trucker1[playerid]);
TextDrawHideForPlayer(playerid, Trucker2[playerid]);
TextDrawShowForPlayer(playerid, Trucker1[playerid]);
TextDrawShowForPlayer(playerid, Trucker2[playerid]);


Nu e nevoie sa fie in timer, poate sa le foloseasca doar o data.

Am făcut cum a spus Punct., mai sus am scris problemele rămase.

Edited by Gawitkkk
  • 0
  • Administrator
Posted

Pai daca se executa TextDrawShowForPlayer de mai multe ori, apare o singura data? Adica nu apare ca si cum ar fi mai multe?

 

Daca pun TextDrawSetSting, se modifica scrisul fara sa sterg textdraw-ul si sa-l fac sa apara din nou?

Daca nu il ascunzi sau distrugi dupa ce l-ai aratat pe ecran jucatorului foloseste TextDrawSetString sa ii modifici scrisul.

format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);

Aici in loc de %d trebuie %f, este float.

L-ai pus macar intr-un timer? :|

  • 0
Posted (edited)

Daca nu il ascunzi sau distrugi dupa ce l-ai aratat pe ecran jucatorului foloseste TextDrawSetString sa ii modifici scrisul.

format(string, sizeof(string), "Ocean Dock's (LS) %d km", fDistance);

Aici in loc de %d trebuie %f, este float.

L-ai pus macar intr-un timer? :|

Nu, nu i-am setat timer.. 

 

Uite cum îmi arată acum: http://i.imgur.com/PmC6Bzx.png

Linia script-ului:

    if(listitem == 0)
            {
                TextDrawHideForPlayer(playerid, Trucker1[playerid]);
                TextDrawHideForPlayer(playerid, Trucker2[playerid]);
                TextDrawShowForPlayer(playerid, Trucker1[playerid]);
                new Float: fDistance = GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2),
                string[44];
                format(string, sizeof(string), "(Ocean Dock's (LS) %f km)", fDistance);
                TextDrawSetString(Trucker2[playerid], string);
                TextDrawShowForPlayer(playerid, Trucker2[playerid]);
            }
Edited by Gawitkkk
  • 0
  • Administrator
Posted

Nu are cum sa se actualizeze daca nu ii faci un timer care sa faca asta ...

  • 0
Posted (edited)

Nu are cum sa se actualizeze daca nu ii faci un timer care sa faca asta ...

Am făcut timer-ul, acum... cum rezolv problema cu km rămași? Știu că trebuie împărțiți la 1000, dar cum fac asta?

http://i.imgur.com/PmC6Bzx.png

 

Edited by Gawitkkk
  • 0
Posted

...

format(string, sizeof(string), "(Ocean Dock's (LS) %f km)", fDistance / 100.0);

Daca vrei sa afisezi doar 2 decimale pui %.2f in loc de %f.

Totul funcționează corect și perfect.

 

Îți mulțumesc FOARTE mult și frumos pentru tot timpul acordat. Îmi cer scuze dacă te-am deranjat stresându-te cu prostiile mele, încă învăț.. Mulțumesc WoopS, mulțumesc sa-mp.ro !

  • 0
  • Administrator
Posted

Nici o problema :)

Te rog alege raspunsul care il consideri corect sa pot inchide topicul.

Merci!

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.