Kleines Label Problem Geht nicht weg

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
  • Hey Leute .
    hey habe ein kleines problem mit dem label am bus steht leerlauf wenn ich in dienst gehe und mir die fahrt rein mache verschwindet der leerlauf nicht es kommen dan 2 labels mit leerlauf und im dienst kann mir da einer helfen MfG Lui

    if(isPlayerInJob(playerid,11) && IsVehicleABus(GetPlayerVehicleID(playerid)))//busfahrerjob
    {
    Spieler[playerid][WorkInJob] = 1;
    SetPlayerCheckpoint(playerid,buslinie1[0][Xcp],buslinie1[0][Ycp],buslinie1[0][Zcp],buslinie1[0][CPSize]);
    BusCheckpointStatus1[playerid] = 0;
    //DestroyDynamic3DTextLabel(buslinieninfo[GetPlayerVehicleID(playerid)]);
    DestroyDynamic3DTextLabel(buspriceinfo[ (GetPlayerVehicleID(playerid))]);
    buslinieninfo[playerid] = 11;//für das textlabel
    format(string,sizeof(string),"Linie %i | Busfahrer %s ist nun im Dienst! Kosten: %i$",buslinieninfo[playerid],SpielerName(playerid),MAX_BUS_PRICE);
    SCMALL(GRUEN,string);
    SCM(playerid,GELB,"Fahre nun einzeln die Haltestellen ab! Ein Checkpoint wurde gesetzt.(/stopjob um abzubrechen)");
    format(string,sizeof(string),"Linie %i\nNächster Halt: %s\nBusfahrer: %s\nKosten: %i$",buslinieninfo[playerid],buslinie1[BusCheckpointStatus1[playerid]][CheckPointText],SpielerName(playerid),MAX_BUS_PRICE);
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    //buspriceinfo[GetPlayerVehicleID(playerid)] = CreateDynamic3DTextLabel(string,BUSuTAXIDUTYFARBE, 0.0,0.0,0.0,25.0,INVALID_PLAYER_ID, GetPlayerVehicleID(playerid),1,0,-1,-1);
    //Attach3DTextLabelToVehicle(buspriceinfo[GetPlayerVehicleID(playerid)],GetPlayerVehicleID(playerid),0.0,0.0,0.0);

    buspriceinfo[GetPlayerVehicleID(playerid)] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,GetPlayerVehicleID(playerid),1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[GetPlayerVehicleID(playerid)], SERVERFARBEHEX, string);


    return 1;
    }
    }


    for(new i=0; i<sizeof(Busse); i++)
    {
    new string [56];
    AddVehicleComponent(Busse[i],1074);
    AddVehicleComponent(Busse[i],1086);
    format(string,sizeof(string),"Leerfahrt");
    buspriceinfo[i] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,Busse[i],1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[i], SERVERFARBEHEX, string);
    }

  • Das Problem ist, dass du mit der vehicleid auf den Bus-Index zugreifst, das geht aber nicht, da du die Busse so nicht erstellst.
    Du musst also anhand der vehicleid des Busses den Index im Array finden.
    if(isPlayerInJob(playerid,11) && IsVehicleABus(GetPlayerVehicleID(playerid)))//busfahrerjob
    {
    new idx = GetBusIndex(GetPlayerVehicleID(playerid)); //Index des Busses auslesen
    if(idx == -1) return 1; //Kein Bus
    Spieler[playerid][WorkInJob] = 1;
    SetPlayerCheckpoint(playerid,buslinie1[0][Xcp],buslinie1[0][Ycp],buslinie1[0][Zcp],buslinie1[0][CPSize]);
    BusCheckpointStatus1[playerid] = 0;
    //DestroyDynamic3DTextLabel(buslinieninfo[idx]);
    DestroyDynamic3DTextLabel(buspriceinfo[idx]);
    buslinieninfo[playerid] = 11;//für das textlabel
    format(string,sizeof(string),"Linie %i | Busfahrer %s ist nun im Dienst! Kosten: %i$",buslinieninfo[playerid],SpielerName(playerid),MAX_BUS_PRICE);
    SCMALL(GRUEN,string);
    SCM(playerid,GELB,"Fahre nun einzeln die Haltestellen ab! Ein Checkpoint wurde gesetzt.(/stopjob um abzubrechen)");
    format(string,sizeof(string),"Linie %i\nNächster Halt: %s\nBusfahrer: %s\nKosten: %i$",buslinieninfo[playerid],buslinie1[BusCheckpointStatus1[playerid]][CheckPointText],SpielerName(playerid),MAX_BUS_PRICE);
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    //buspriceinfo[idx] = CreateDynamic3DTextLabel(string,BUSuTAXIDUTYFARBE, 0.0,0.0,0.0,25.0,INVALID_PLAYER_ID, GetPlayerVehicleID(playerid),1,0,-1,-1);
    //Attach3DTextLabelToVehicle(buspriceinfo[idx],GetPlayerVehicleID(playerid),0.0,0.0,0.0);
    buspriceinfo[idx] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,GetPlayerVehicleID(playerid),1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[idx], SERVERFARBEHEX, string);
    return 1;
    }


    Und dazu diese Funktion:
    stock GetBusIndex(vehicleid)
    {
    for(new i=0; i<sizeof(Busse); i++)
    {
    if(Busse[i] == vehicleid) return i;
    }
    return -1;
    }

  • Hm, eventuell ist das Label zuvor bereits doppelt vorhandenen? Prüfe mal, ob das der Fall ist, indem du anstatt das Label zu löschen und ein neues zu erstellen, das alte nur per Update Funktion im Text änderst. Wenn dann die Texte auch ineinander stehen, ist das Label doppelt (oder mehr) vorhanden.

  • habe das nur hier drine

    public OnVehicleSpawn(vehicleid)
    {
    for(new i=0; i<sizeof(Busse); i++)
    {
    new string [56];
    AddVehicleComponent(Busse[i],1074);
    AddVehicleComponent(Busse[i],1086);
    format(string,sizeof(string),"Leerfahrt");
    buspriceinfo[i] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,Busse[i],1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[i], SERVERFARBEHEX, string);
    }
    return 1;
    }


    und im Gamemodeinit
    for(new i=0; i<sizeof(Busse); i++)
    {
    new string[56];
    AddVehicleComponent(Busse[i],1074);
    AddVehicleComponent(Busse[i],1086);
    format(string,sizeof(string),"Leerfahrt");
    buspriceinfo[i] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,Busse[i],1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[i], SERVERFARBEHEX, string);


    }

    sonst habe ich es nirgenswo

  • hey jeffry kanst du mir noch mall helfen der hier wird nicht richtig ausgeführt

    if(BusCheckpointStatus1[playerid] != -1 || BusCheckpointStatus2[playerid] != -1 || BusCheckpointStatus3[playerid] != -1 || BusCheckpointStatus4[playerid] != -1 || BusCheckpointStatus5[playerid] != -1 || BusCheckpointStatus6[playerid] != -1 || BusCheckpointStatus7[playerid] != -1 || BusCheckpointStatus8[playerid] != -1)
    {
    new string [56],idx = GetBusIndex(GetPlayerVehicleID(playerid)); //Index des Busses auslesen
    if(idx == -1) return 1; //Kein Bus
    KillTimer(Spieler[playerid][pBusTimer]);
    Spieler[playerid][WorkInJob] = 0;
    BusCheckpointStatus1[playerid] = -1;//busjob
    BusCheckpointStatus2[playerid] = -1;//busjob
    BusCheckpointStatus3[playerid] = -1;//busjob
    BusCheckpointStatus4[playerid] = -1;//busjob
    BusCheckpointStatus5[playerid] = -1;//busjob
    BusCheckpointStatus6[playerid] = -1;//busjob
    BusCheckpointStatus7[playerid] = -1;//busjob
    BusCheckpointStatus8[playerid] = -1;//busjob
    DisablePlayerCheckpoint(playerid);
    buslinieninfo[playerid] = 0;
    SCM(playerid,GELB,"Busfahrerjob abgebrochen!");
    DestroyDynamic3DTextLabel(buspriceinfo[idx]);
    format(string,sizeof(string),"Leerfahrt");
    buspriceinfo[idx] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,GetPlayerVehicleID(playerid),1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[idx], SERVERFARBEHEX, string);
    }
    return 1;

  • also wenn ich das so mache

    [list=1][*]if(BusCheckpointStatus1[playerid] != -1 || BusCheckpointStatus2[playerid] != -1 || BusCheckpointStatus3[playerid] != -1 || BusCheckpointStatus4[playerid] != -1 || BusCheckpointStatus5[playerid] != -1 || BusCheckpointStatus6[playerid] != -1 || BusCheckpointStatus7[playerid] != -1 || BusCheckpointStatus8[playerid] != -1)
    [*] {
    [*] KillTimer(Spieler[playerid][pBusTimer]);
    [*] Spieler[playerid][WorkInJob] = 0;
    [*] BusCheckpointStatus1[playerid] = -1;//busjob
    [*] BusCheckpointStatus2[playerid] = -1;//busjob
    [*] BusCheckpointStatus3[playerid] = -1;//busjob
    [*] BusCheckpointStatus4[playerid] = -1;//busjob
    [*] BusCheckpointStatus5[playerid] = -1;//busjob
    [*] BusCheckpointStatus6[playerid] = -1;//busjob
    [*] BusCheckpointStatus7[playerid] = -1;//busjob
    [*] BusCheckpointStatus8[playerid] = -1;//busjob
    [*] DisablePlayerCheckpoint(playerid);
    [*] buslinieninfo[playerid] = 0;
    [*] SCM(playerid,GELB,"Busfahrerjob abgebrochen!");
    [*] }
    [*] return 1;
    [/list]
    geht es wenn ich das so mache

    [list=1][*]if(BusCheckpointStatus1[playerid] != -1 || BusCheckpointStatus2[playerid] != -1 || BusCheckpointStatus3[playerid] != -1 || BusCheckpointStatus4[playerid] != -1 || BusCheckpointStatus5[playerid] != -1 || BusCheckpointStatus6[playerid] != -1 || BusCheckpointStatus7[playerid] != -1 || BusCheckpointStatus8[playerid] != -1)
    [*] {
    [*] new string [56],idx = GetBusIndex(GetPlayerVehicleID(playerid)); //Index des Busses auslesen
    [*] if(idx == -1) return 1; //Kein Bus
    [*] KillTimer(Spieler[playerid][pBusTimer]);
    [*] Spieler[playerid][WorkInJob] = 0;
    [*] BusCheckpointStatus1[playerid] = -1;//busjob
    [*] BusCheckpointStatus2[playerid] = -1;//busjob
    [*] BusCheckpointStatus3[playerid] = -1;//busjob
    [*] BusCheckpointStatus4[playerid] = -1;//busjob
    [*] BusCheckpointStatus5[playerid] = -1;//busjob
    [*] BusCheckpointStatus6[playerid] = -1;//busjob
    [*] BusCheckpointStatus7[playerid] = -1;//busjob
    [*] BusCheckpointStatus8[playerid] = -1;//busjob
    [*] DisablePlayerCheckpoint(playerid);
    [*] buslinieninfo[playerid] = 0;
    [*] SCM(playerid,GELB,"Busfahrerjob abgebrochen!");
    [*] DestroyDynamic3DTextLabel(buspriceinfo[idx]);
    [*] format(string,sizeof(string),"Leerfahrt");
    [*] buspriceinfo[idx] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,GetPlayerVehicleID(playerid),1,-1,0,-1,-1,-1);
    [*] UpdateDynamic3DTextLabelText(buspriceinfo[idx], SERVERFARBEHEX, string);
    [*] }
    [*] return 1;
    [/list]
    nicht mehr
    und ab hier statet er



    public OnPlayerExitVehicle(playerid,vehicleid)
    {
    if(IsVehicleABus(vehicleid))
    {
    if(isPlayerInJob(playerid,11))
    {
    if(BusCheckpointStatus1[playerid] != -1 || BusCheckpointStatus2[playerid] != -1 || BusCheckpointStatus3[playerid] != -1 || BusCheckpointStatus4[playerid] != -1 || BusCheckpointStatus5[playerid] != -1 || BusCheckpointStatus6[playerid] != -1 || BusCheckpointStatus7[playerid] != -1 || BusCheckpointStatus8[playerid] != -1)
    {
    JobTimer[playerid] = SetTimerEx("JobExit",10000,false,"i",playerid);
    SCM(playerid,GELB,"Achtung! Du darfst dich nur 1 Minuten ausserhalb des Fahrzeuges bewegen,da der Job sonst abbricht!");
    }
    }
    }

  • Das heißt dann, dass der Spieler in keinem der Busse aus dem Busse Array drin ist.


    Da müsstest du dem Timer noch die vehicleid mitgeben, wenn der Spieler aussteigt. Sprich zusätzlich zur playerid noch die vehicleid und dann damit dem Index auslesen, anstatt mit GetPlayerVehicleID.

  • JobTimer[playerid] = SetTimerEx("JobExit",10000,false,"i",playerid);
    Zu
    JobTimer[playerid] = SetTimerEx("JobExit",10000,false,"ii",playerid, vehicleid);
    Dazu dann eben noch das public und forward zum JobExit um die vehicleid erweitern, und bei GetBusIndex in der Zeile vor dem Print die vehicleid nehmen, anstatt GetPlayerVehicleID.

  • ich habe es bissen um gescriptet und brauche bissen deine hilfe

    if(isPlayerInJob(playerid,11) && IsVehicleABus(vehicleid))//busfahrerjob
    {
    Spieler[playerid][WorkInJob] = 1;
    SetPlayerCheckpoint(playerid,buslinie1[0][Xcp],buslinie1[0][Ycp],buslinie1[0][Zcp],buslinie1[0][CPSize]);
    BusCheckpointStatus1[playerid] = 0;
    buslinieninfo[playerid] = 11;//für das textlabel
    format(string,sizeof(string),"Linie %i | Busfahrer %s ist nun im Dienst! Kosten: %i$",buslinieninfo[playerid],SpielerName(playerid),MAX_BUS_PRICE);
    SCMALL(GRUEN,string);
    SCM(playerid,GELB,"Fahre nun einzeln die Haltestellen ab! Ein Checkpoint wurde gesetzt.(/stopjob um abzubrechen)");
    format(string,sizeof(string),"Linie %i\nNächster Halt: %s\nBusfahrer: %s\nKosten: %i$",buslinieninfo[playerid],buslinie1[BusCheckpointStatus1[playerid]][CheckPointText],SpielerName(playerid),MAX_BUS_PRICE);
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    UpdateDynamic3DTextLabelText(vFahrzeug[vehicleid][VehText], GELB, string);
    return 1;
    }
    }

    Das problem ist es wird angezeigt aber der string ändert sich nicht der text wenn der duty geht bleibt der ändert sich nicht von dem label da brauchte ich deine hilfe MfG LUi

  • hier

    stock CreateVehicleEx(modeltype,Float:xvehpos,Float:yvehpos,Float:zvehpos,Float:vehrotation,vehcc1,vehcc2,vehrespawndelay,bool:resett=true)
    {
    new vehicleid;
    if(modeltype < 400 || modeltype > 611)return 0;
    vehicleid = CreateVehicle(modeltype,xvehpos,yvehpos,zvehpos,vehrotation,vehcc1,vehcc2,vehrespawndelay);
    KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF);
    Motor[vehicleid] = false;
    lightson[vehicleid] = false;
    motorhaube[vehicleid] = false;
    kofferraum[vehicleid] = false;
    RefillVehicle[vehicleid] = 0;
    RepairAVehicle[vehicleid] = 0;
    UCL[vehicleid] = 0;
    format(VehicleRadioStream[vehicleid],128,"NONE");
    vFahrzeug[vehicleid][OldVehPos][0] = xvehpos;
    vFahrzeug[vehicleid][OldVehPos][1] = yvehpos;
    vFahrzeug[vehicleid][OldVehPos][2] = zvehpos;
    vFahrzeug[vehicleid][OldVehPos][3] = vehrotation;
    vFahrzeug[vehicleid][Xs] = xvehpos;
    vFahrzeug[vehicleid][Ys] = yvehpos;
    vFahrzeug[vehicleid][Zs] = zvehpos;
    vFahrzeug[vehicleid][VehText] = CreateDynamic3DTextLabel(" ", GELB, 50.0, 60.0, 110.0, MAX_STREAM_NAME_DISTANCE, INVALID_PLAYER_ID, vehicleid, 0, -1, -1, -1, 100.0);
    if(resett == false)
    {
    vFahrzeug[vehicleid][Neon] = 0;
    vFahrzeug[vehicleid][KofferraumGanja] = 0;
    vFahrzeug[vehicleid][KofferraumKokain] = 0;
    vFahrzeug[vehicleid][KofferraumMaterials] = 0;
    vFahrzeug[vehicleid][KofferraumOpium] = 0;
    vFahrzeug[vehicleid][KofferraumLunchpakete] = 0;
    vFahrzeug[vehicleid][KofferraumC4] = 0;
    vFahrzeug[vehicleid][KofferraumWerkzeugkasten] = 0;
    vFahrzeug[vehicleid][KofferraumBenzinkanister] = 0;
    vFahrzeug[vehicleid][Kilometer] = 0;
    vFahrzeug[vehicleid][Tankkm] = 0;
    vFahrzeug[vehicleid][FailGas] = 0;
    vFahrzeug[vehicleid][Abgeschleppt] = 0;
    vFahrzeug[vehicleid][AbgeschlepptPreis] = 0;
    MotorDown[vehicleid] = 0;
    vFahrzeug[vehicleid][Tank] = VehicleInfo[modeltype-400][vtankvolumen];
    vFahrzeug[vehicleid][Handbremse] = 0;
    }
    return vehicleid;
    }


    dann brauche ich nur noch mit
    UpdateDynamic3DTextLabelText(vFahrzeug[vehicleid][VehText], GELB, string); machen dan geht das aber die halte stellen werden nich über string gändert bleibt immer eine MfG Lui

  • Das passt eigentlich.
    Ändere mal
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    zu:
    VehicleOnDuty[vehicleid] = true;


    Vielleicht gibt das GetPlayerVehicleID zu dem Zeitpunkt INVALID_VEHICLE_ID zurück, was dann das Array sprengt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen