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?
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
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.
..