Attach3DTextLabelToVehicle verschwindet

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 Community,


    Ich habe noch ein Problem, mein 3DLabel am Auto verschwindet nach ca
    45sec. Es soll aber dauerhaft dran bleiben bis ich das auto wieder
    lösche.




    ocmd:veh(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(sSpieler[playerid][Adminlevel] >= 3)
    {
    new Text3D:adminveh[MAX_VEHICLES],string[128];
    new ModelID, color[2],Float:VehPos[4], vehicleid;
    if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,0xB0AFB0FF,"Du bist nicht zu Fuß unterwegs");
    if(sscanf(params, "ddd",ModelID,color[0],color[1])) return SendClientMessage(playerid,0xB0AFB0FF, "Befehl: /veh [ModellID] [Farbe 1] [Farbe 2]");
    if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid,0xB0AFB0FF, "Die Anzahl muss zwischen 400 - 611 liegen");
    if(color[0] < 0 || color[0] > 255 || color[1] < 0 || color[1] > 255) return SendClientMessage(playerid,0xB0AFB0FF, "Die FarbID muss zwischen 0 - 255 liegen");
    GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
    GetPlayerFacingAngle(playerid, VehPos[3]);
    LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
    SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
    vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],color[0],color[1],-1);
    format(string,sizeof(string),"Admin-Fahrzeug von %s",SpielerName(playerid));
    adminveh[vehicleid] = Create3DTextLabel(string, GOLD,0,0,0.0, 2.5,0,1);
    Attach3DTextLabelToVehicle(adminveh[vehicleid],vehicleid,0.0,0.0,2.0);
    SetVehicleNumberPlate(vehicleid,"HSOL");
    PutPlayerInVehicle(playerid,vehicleid,0);
    for(new c=0;c<CAR_AMOUNT;c++)
    {
    Gas[c] = GetGasMax(GetVehicleModel(c));
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin oder hast nicht den benötigten Rang dazu!");
    }
    }
    return 1;
    }

  • Wahrscheinlich rufst du irgendwo Delete3DTextLabel() auf, wodurch es wieder gelöscht wird. Überprüfe mal allgemein sämtliche Aufrufe von Delete3DTextLabel(). Oder wird das Fahrzeug innerhalb den 45 Sekunden (gewollt) neu erstellt?


    edit:
    Ich seh jetzt erst, adminveh erstellst du lokal? Das würde ich nicht tun, denn sonst kannst du das Label zu einem späteren Zeitpunkt nicht löschen, beispielsweise wenn das Fahrzeug gelöscht wird. Du kannst auch kein Fahrzeug in eine virtuelle Welt oder Interior setzen, welches gar nicht existiert (du setzt diese Daten für das Fahrzeug, obwohl das Fahrzeug nicht mal erstellt worden ist). Auch "tankst" du jedes Fahrzeug voll, was wahrscheinlich auch nicht gewollt ist?

    Einmal editiert, zuletzt von Douq ()

  • @Canna oh dann habe ich es falsch verstanden, sry. Ja die Funktion wird 4mal aufgerufen .


    @Douq Ich habe die tankbefüllung und MAX_VEHICLES entfernt. Ich bin 10 Minuten gefahren und das Label ist nicht verschwunden :), ich stande auch 5 Minuten rum und das Label ist auch nicht verschwunden :D . Ich danke dir vielmals das du mir geholfen hast :).



    Kann geschlossen werden



    //EDIT jetzt verschwindet es wieder -.-

  • Meine Nennungen nach der Editierung sollten auch gar nicht zur Fehlerbehebung sondern zur Optimierung dienen. Hilfreich wäre es, wenn du einmal die Stellen mit Destroy3DTextLabel() überprüfen könntest, denn sehr wahrscheinlich löscht du es aus versehen einfach wo anders (durch eine ID-Verschiebung o.ä.). Möglich könnte auch der falsche Einsatz von Attach3DTextLabelToVehicle() an anderer Stelle sein. Würde die beiden Funktionen einfach mal überprüfen, ob da die Möglichkeit bestehen können (beispielsweise das die Funktionen in einem Timer auftauchen oder in einem Callback, was aufgeruft werden könnte, während dein Label verschwindet).