Szerző Téma: Textdraw types?  (Megtekintve 1143 alkalommal)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Textdraw types?
« Dátum: 2016. November 23. - 19:43:29 »
0 Show voters
Sziasztok !
A textdrawokkal büvölődők jelenleg, és valami megfogta az elmémet.
A textdrawoknak ugyebár 2 féle tipusa van,
 
Textdraw:TD;
PlayerTextdraw:pTD;

 
Szeretném megtudni, hogy a kettő között mi a különbség, melyiket jobb használni játékosok számára, jó gondolom, hogy a \"PlayerTextdraw\", de miért és, miben? :D
Illetve, hogy szükséges-e a tömb használata, PlayerTD esetén.
 
Textdraw:PenzTD[MAX_PLAYERS];
PenzTD[playerid] = TextDrawCreate(320.0,20.0,...................);

 
VAGY
 
PlayerTextdraw:PenzTD;
PenzTD = PlayerTextDrawCreate(320.0,20.0,...................);
// VAGY
PlayerTextdraw:PenzTD[MAX_PLAYERS];
PenzTD[playerid] = PlayerTextDrawCreate(320.0,20.0,...................);

 
Az angol fórumon is ment erről a vita, hogy hogyan kéne használni pontosan, megoszlottak a vélemények, ezért gondolom megkérdem itt, hogy ti mit gondoltok ?

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Textdraw types?
« Válasz #1 Dátum: 2016. November 23. - 23:12:54 »
0 Show voters
Szia!
A PlayerText-dran külön a játékosokra orientálódik, mint ahogy a nevéből is ered, az esetben ajánlatos használni, ha minden játékosonként mást jelenít meg, avagy mást mutat, továbbá máshogy nyilvánul meg a textdraw limit a PlayerTextdraw-ra, mint a sima Textdraw-ra, így ennek függvényében nagyobb játékos számnál is megjeleníti a textdrawokat, ellentétben a simával, aminek ha jól tudom 1024 a limite, tehát ha játékosonként 1 textdrawot hozol létre, akkor az 1025. játékosnak már nem lesz textdrawja.
btw: én nem használok sehol se sima textdrawot, remélem segítettem, ha további kérdésed van szívesen válaszolok rá.  :wave:
A tömb érték alatt pedig nem egyértelmű hogy mit értesz, ha van kettő textdrawod, és egy változó tömbértékéhez akarod hozzászúrni a return értéket, akkor kettő tömbre lesz szükséged, ügyebár new PlayerText:whadez[MAX_PLAYERS][2]; remélem érthető, nem megy ilyenkor már a fogalmazás. :)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Textdraw types?
« Válasz #2 Dátum: 2016. November 24. - 14:58:45 »
0 Show voters
Köszönöm a válaszod ! Szóval te a Playertextdraw-ot preferálod és ajánlod inkább :D
A tömböknél azt értem, hogy a textdrawokat tömbbe kellett rakni, amikor a játékosnak akartad kezelni.
 
Textdraw:PenzTD[MAX_PLAYERS]; // Ez dekralál egy PenzTD változót, MAX_PLAYERS darabnyit, tehát hogy értsétek, létrehozz pl. 32 Darab PenzTD változót, amiben textdrawokat tárolhatunk.

 
Ha ezt haszálni akarod, akkor
 
PenzTD[playerid] = TextDrawCreate(320,20,............);

 
Ez van sima TDk-nél, de ha játékos textdrawot használok, az játékos orientált, ahogyan \"whadez\" leírta, tehát nemtudom, hogy azt is tömbbe kell rakni, vagy a playerid paraméter különbözteti meg.
 
PlayerTextdraw:PenzTD[MAX_PLAYERS];
PenzTD[playerid] = PlayerTextDrawCreate(playerid,320,20,..............);
// VAGY, nem kell tömb csak, egy változó ami minden játékst külön választ.
PlayerTextdraw:PenzTD;
PenzTD = PlayerTextDrawCreate(playerid,320,20.................);

 
Remélem így érthetően eltudtam magyarázni mit szeretnék megtudni, azonban itt az angol fórum poszt is, ahol szintén ez volt a téma :
http://forum.sa-mp.com/showthread.php?t=568734

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Textdraw types?
« Válasz #3 Dátum: 2016. November 24. - 16:35:52 »
+1 Show voters
Gondolkozzunk logikusan, oké?
Ha deklarálsz egy változót, integer típusba, és nem adsz meg neki \'alapértelmezett\' értéket, akkor 0 lesz az adott változó értéke.
Ha létrehozol egy \'globális\' változót, pl: new PlayerText:Pelda, és feljön a játékos, Pelda = CreatePlayerText, a Pelda változó értéke a létrehozott playertextdrawnak az ID-jét fogja megkapni. Ha feljön a 2. játékos, akkor ez a változó settelődik, és a 2. játékosnak a PlayerTextdraw ID-jét fogja megkapni.
Ezért hozunk létre egy tömböt, ami a \'MAX_PLAYERS\' értékét tartalmazza, és [playerid]-hez kötjük, hogy kezelhető legyen játékosonként a playertextdraw.
 :wave:
« Utoljára szerkesztve: 2016. November 24. - 16:40:45 írta DEFEATER »

Textdraw types?
« Válasz #4 Dátum: 2016. November 24. - 16:39:53 »
0 Show voters
A tömböt a játékosnak hozod létre, hogy tárold benne a textdraw ID-jét későbbi használatra.
Vagyis, ha változót használsz.
A textdrawot elkészíted egy játékosnak. Közben fellép egy másik játékos is, annak is létrehozod, ugyanabba a változóba. Így az első játékosnak \"eltűnik\" a textdraw, nem tudod neki többet megjeleníteni, mert nem az Ő textdraw ID-je van a változóban!
Ha tömböt használsz.
A textdrawot elkészíted egy játékosnak a saját változójába. Közben fellép egy másik játékos is, annak is létrehozod, az Ő saját a változójába. Így mind a kettő játékosnak lesz egy textdrawja, amit utána törölhetsz/módosíthatsz/stb.
És ez a fontos, amit a samp wiki ír:
Return Values:

The ID of the created textdraw

Ha esetleg rosszul gondolom, akkor javítsatok ki, de szerintem így ennek van értelme.
Ui.: Ja király, megelőztek...

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Textdraw types?
« Válasz #5 Dátum: 2016. November 24. - 16:45:38 »
0 Show voters
:)
egy szavas hozzászólást elkerüljük, így írok ide hogy anGeL[/member] ne warnoljon.  :wub:

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Textdraw types?
« Válasz #6 Dátum: 2016. November 24. - 16:52:57 »
0 Show voters
Ezek szerint ez a helyes eljárás :
 
PlayerTextdraw:PenzTD[MAX_PLAYERS];
PenzTD[playerid] = PlayerTextDrawCreate(playerid,320,20.................);

 
Ezt értettem eddig is, hogy tömb miért kell, csak azthittem, hogy a PlayerTD-hez nem kell mivel a paraméter külön veszi.
Köszönöm szépen a válaszokat !

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal