Text an das gespawnte Auto ankleben

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo ich möchte gerne das da der text am auto klebt es kommen bisher keine errors und warrnings aber bisher funktioniert es nicht
    ich habe bestimmt irgentwo einen kleinen aber fatalen Fehler gemacht
    ocmd:acar(playerid,params[])
    {
    new vID;
    static vehicle[MAX_PLAYERS];
    static acarexist[MAX_PLAYERS];
    new Text3D:VehicleAdminName[MAX_PLAYERS];
    if(sInfo[playerid][alevel] >= 2)
    if(sInfo[playerid][aduty]==0)return SendClientMessage(playerid,CL_KNALLROT,"ERROR: Du bist nicht Admin-OnDuty!");
    {
    if(acarexist[playerid] == 1)
    {
    SendClientMessage(playerid,CL_HGRÜN,"Admin-Car gelöscht");
    DestroyVehicle(vehicle[playerid]);
    acarexist[playerid] = 0;
    return 1;
    }
    else if(acarexist[playerid]==0)
    {
    if(sscanf(params,"i",vID))return SendClientMessage(playerid,CL_KNALLROT,"Aussage: /acar Fahrzeug--->[ID]"); //Hier wird das was der Spieler hinter dem Befehl eingegeben hat in Variablen getrennt. In unserem Fall in "vID"
    new Float:X,Float:Y,Float:Z,Float:ROTA;
    GetVehiclePos(vID,X,Y,Z);
    new str[128];
    new a_level;
    a_level=sInfo[playerid][alevel];
    format(str,sizeof(str),"%s Car von %s",a_rang[a_level]);
    VehicleAdminName[playerid] = Create3DTextLabel(str,CL_HGRÜN,GetPlayerPos(playerid,X,Y,Z),ROTA,MAX_STREAM_NAME_DISTANCE,GetPlayerVirtualWorld(playerid),1);
    Attach3DTextLabelToVehicle(VehicleAdminName[playerid],vID,X,Y,2);//30.0,40.0,50.0
    //VehicleAdminName[playerid],playerid,vID,0.0,0.0,0.3);

    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,ROTA);
    vehicle[playerid] = CreateVehicle(vID,X,Y,Z,ROTA,-1,-1,0); //Farbe -1 bedeutet Random. Also zufällige Farbe.ok
    PutPlayerInVehicle(playerid,vehicle[playerid],0); //Die 0 steht für die Sitz ID. 0 = Fahrer :)ok//frage?
    SetVehicleNumberPlate(vID,"{00ff00}[{ff0000}Admin{00ff00}]");
    SendClientMessage(playerid,CL_HGRÜN,"Admin-Car erstellt ");
    acarexist[playerid] = 1;
    return 1;
    }

    }
    SendClientMessage(playerid,CL_HROT,"Du darfst diesen Befehl nicht nutzen.");
    return 1;
    }


    das der text beim llöschen verschwinden soll mache ich danach rein


    MFG Blackvogel

  • Versuchs mal so:
    Ich habe bei Attach3DTextLabelToVehicle die vehicle[playerid] anstatt vID genommen.
    Du kannst auch vID = vehicle[playerid] setzen, aber deine Entscheidung...


    ocmd:acar(playerid,params[])
    {
    new vID;
    static vehicle[MAX_PLAYERS];
    static acarexist[MAX_PLAYERS];
    new Text3D:VehicleAdminName[MAX_PLAYERS];
    if(sInfo[playerid][alevel] >= 2)
    if(sInfo[playerid][aduty]==0)return SendClientMessage(playerid,CL_KNALLROT,"ERROR: Du bist nicht Admin-OnDuty!");
    {
    if(acarexist[playerid] == 1)
    {
    SendClientMessage(playerid,CL_HGRÜN,"Admin-Car gelöscht");
    DestroyVehicle(vehicle[playerid]);
    acarexist[playerid] = 0;
    return 1;
    }
    else if(acarexist[playerid]==0)
    {
    if(sscanf(params,"i",vID))return SendClientMessage(playerid,CL_KNALLROT,"Aussage: /acar Fahrzeug--->[ID]"); //Hier wird das was der Spieler hinter dem Befehl eingegeben hat in Variablen getrennt. In unserem Fall in "vID"
    new Float:X,Float:Y,Float:Z,Float:ROTA;
    GetVehiclePos(vID,X,Y,Z);
    new str[128];
    new a_level;

    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,ROTA);
    vehicle[playerid] = CreateVehicle(vID,X,Y,Z,ROTA,-1,-1,0); //Farbe -1 bedeutet Random. Also zufällige Farbe.ok
    PutPlayerInVehicle(playerid,vehicle[playerid],0); //Die 0 steht für die Sitz ID. 0 = Fahrer :)ok//frage?
    SetVehicleNumberPlate(vID,"{00ff00}[{ff0000}Admin{00ff00}]");

    a_level=sInfo[playerid][alevel];
    format(str,sizeof(str),"%s Car von %s",a_rang[a_level]);
    VehicleAdminName[playerid] = Create3DTextLabel(str,CL_HGRÜN,GetPlayerPos(playerid,X,Y,Z),ROTA,MAX_STREAM_NAME_DISTANCE,GetPlayerVirtualWorld(playerid),1);
    Attach3DTextLabelToVehicle(VehicleAdminName[playerid],vehicle[playerid],X,Y,2);//30.0,40.0,50.0
    //VehicleAdminName[playerid],playerid,vID,0.0,0.0,0.3);

    SendClientMessage(playerid,CL_HGRÜN,"Admin-Car erstellt ");
    acarexist[playerid] = 1;
    return 1;
    }

    }
    SendClientMessage(playerid,CL_HROT,"Du darfst diesen Befehl nicht nutzen.");
    return 1;
    }

  • ocmd:acar(playerid,params[])
    {
    new vID;
    static vehicle[MAX_PLAYERS], bool:acarexist[MAX_PLAYERS];
    new Text3D:VehicleAdminName[MAX_PLAYERS];
    if(sInfo[playerid][alevel] < 2) return SendClientMessage(playerid,CL_HROT,"Du darfst diesen Befehl nicht nutzen.");
    if(sInfo[playerid][aduty]==0) return SendClientMessage(playerid,CL_KNALLROT,"ERROR: Du bist nicht Admin-OnDuty!");
    if(acarexist[playerid] == true)
    {
    DestroyVehicle(vehicle[playerid]);
    acarexist[playerid] = false;
    return SendClientMessage(playerid,CL_HGRÜN,"Admin-Car gelöscht");
    }
    if(sscanf(params,"i",vID))return SendClientMessage(playerid,CL_KNALLROT,"Aussage: /acar Fahrzeug--->[ID]"); //Ich würde dir empfehlen die Funktion "IsNumeric" zu nutzen. (Mal googeln)
    //new Float:X,Float:Y,Float:Z,Float:ROTA; ---> Ergibt keinen Sinn diese zu erstellen.
    //GetVehiclePos(vID,X,Y,Z);
    new str[128];
    format(str,sizeof(str),"%s Car von %s",a_rang[sInfo[playerid][alevel]]); //Wie schon erwähnt noch eins hinzufügen
    VehicleAdminName[playerid] = Create3DTextLabel(str,CL_HGRÜN,GetPlayerPos(playerid,X,Y,Z),ROTA,MAX_STREAM_NAME_DISTANCE,GetPlayerVirtualWorld(playerid),1);
    Attach3DTextLabelToVehicle(VehicleAdminName[playerid],vID,0.0,0.0,2.0); //Hier lag der Fehler * Erklärung unten.
    return 1;
    }


    Also zum mitschreiben:
    Du machst einen Befehl, wo du die ID eines Vehicles auf dem Server angeben sollst und daran dann der 3dText gesetzt wird.


    Nun jetzt ist die Frage, wieso erstellst du danach ein Auto? :huh:
    Habe das erstmal entfernt und deinen Code schöner gemacht.


    *Erklärung zum Fehler (siehe Code)
    Du musst die x,y,z, Achso von der Mitte des Autos aus angeben.
    Deswegen ergibt es hier keinen Sinn die Position des Spielers zu verwenden.


    Bei Fragen melden


    L.G.