Szerző Téma: textdraw!  (Megtekintve 791 alkalommal)

textdraw!
« Dátum: 2013. június 29. - 23:16:21 »
0 Show voters
Hellotok bár sorarl lejebb már nyitottam egy ilyen topicot de bettettem és nem jó!
 
if(OnDuty[playerid]==0)
              {
                  SendClientMessage(playerid, COLOR_WHITE, \"Rendõr szolgálatba álltál.\");
                  SendClientMessage(playerid, COLOR_WHITE, \"Fegyverek elõvételéhez /elõvesz.\");
                  GetPlayerName(playerid, sendername, sizeof(sendername));
                  GetPlayerName(playerid,sendername,sizeof(sendername));
                  format(string, sizeof(string), \"Egy rendõr szolgálatba állt! (( /112 Ha szükséged van rá! ))\", sendername);
                OOCNews(0x0000FFFF,string);
               GivePlayerWeapon(playerid,3,1);
                 GivePlayerWeapon(playerid,22,500);
               GivePlayerWeapon(playerid,17,2);
               cmd_me(playerid,\"kiveszi a fegyvereket a szekrénybõl,és elrakja õket!\");
                 SetPlayerHealth(playerid,100);
                 SetPlayerArmour(playerid,100);
               cmd_me(playerid,\"Felveszi a golyóálló mellényt!\");
                 SetPlayerSkin(playerid, 282)
               cmd_me(plyarid,\"Felveszi a szolgálati ruháját\");
               OnDuty[playerid] = 1;
               SetPlayerColor(playerid, 0x0000FFFF);
               new Float:x, Float:y, Float:z;
                            GetPlayerPos(playerid, x, y, z); 
                            new Text3D:label = Create3DTextLabel(\"POLICE\", 0x0000FFFF, x, y, z, 30.0, 0);
                            Attach3DTextLabelToPlayer(label, playerid, x, y, z);

 
és hibát ír a labelra!most elírtak valamit vagy hiányos?

textdraw!
« Válasz #1 Dátum: 2013. július 08. - 13:51:43 »
0 Show voters
Szerintem ennek egy jobb módja, ha deklarálsz egy Játékos változót.
A script tetején pl.: new Text3D:LabelForPlayer[MAX_PLAYERS];
Ezzel minden player ID-hez tudsz majd rendelni egy labelt, amit késõbb el is bírsz törölni (ha leadja a szolgálatot pl.).
Ezt alapból -1-re be kell állítani, mert a TextDrawID-k 0-áról kezdõdnek, és ha valami hiba történne (ami így belegondolva kicsi eséllyel fog bekövetkezni), így nem venné át a player más labeljét.
 

public OnPlayerConnect(playerid)
{
    // ... egyéb kód
    LabelForPlayer[playerid] = -1;
   //  ... egyéb kód.
}

 
A duty része pedig így:
 

...
    GetPlayerPos(playerid, x, y, z); 
    LabelForPlayer[playerid] = Create3DTextLabel(\"POLICE\", 0x0000FFFF, x, y, z, 30.0, 0);
    Attach3DTextLabelToPlayer(LabelForPlayer[playerid], playerid, 0.0, 0.0, 0.7); // ez offset, nem koordináta.
..

 
Elméletben a player akihez csatolod nem látja, ezért nem tudtam tesztelni, neked is csak egy másik játékossal fog sikerülni. Remélem segítettem.
U.I.:A téma címe inkább Label lehetett volna mert a Textdraw és a label az két nagyon távoli dolog. :D
« Utoljára szerkesztve: 2013. július 08. - 13:53:57 írta Norbivar »

textdraw!
« Válasz #2 Dátum: 2013. július 08. - 14:43:14 »
0 Show voters
rendben köszönöm a válaszod és hogy törölhetném?:D

textdraw!
« Válasz #3 Dátum: 2013. július 08. - 16:53:20 »
0 Show voters
Van egy függvény rá. Ezt pl. a duty-nak a \'szolgálat leadása\' részhez adod hozzá (amikor elveszi a fegyver, vagy ruhát, vagy mittudom én, érted).
 

... //kód lenne
SendClientMessage(playerid,SZIN,\"Leadtad a szolgálatot!\"); // ez csak egy üzenet hogy legyen :D
Delete3DTextLabel(LabelForPlayer[playerid]); // letörli a játékos változójához rendelt 3dlabelt
LabelForPlayer[playerid] = -1; // Ezt se árt visszarakni alapra, azaz -1re, mivel a 3dtextlabeleket 0-ától ID-zi be a rendszer.
..

textdraw!
« Válasz #4 Dátum: 2013. július 08. - 18:05:52 »
0 Show voters
rendben köszönöm a segítséged!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal