Beiträge von Mogly1

    Ich hätte es so gemacht, evt. (nicht getestet)



    public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
    {
    if(IsPalyerInTaxi(palyerid))// abfrage ob spieler in Taxi ist, musst selbst anpassen
    {
    new vehicle = GetPlayerVehicleID(playerid);
    for(new i=0; i<MAX_PALYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    if(IsPlayerInVehicle(i, vehicle) && GetPlayerVehicleSeat(i)==PLAYER_STATE_DRIVER)
    {
    return SetPlayerCheckpoint(i, fX, fY, fZ, 5.0);
    }
    }
    return 1;
    }
    return 1;
    }

    nur 6? nicht mal 1, 2
    aber wenn doch amch mal so



    printl("a");
    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    printl("b");
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~an!", 2000, 5);
    printl("c");
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    printl("d");


    ja wenn du keinen Job hast wie... ich fragte "wie" setzt du in den keinen job wenn du die id if(!isPlayerInJob(playerid,0)) auch verwendest?
    oder ist 0 kein job?

    verrück die 4 mal anch weiter unten also so...



    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~an!", 2000, 5);
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    printl("4");



    wird sie dann imme rnoch geprintet?

    dann du doch mal hier printen


    ]
    //Private Fahrzeuge
    for(new id = 0; id < sizeof(cInfo); id++)
    {
    if(cInfo[id][id_x] == Vehicle)
    {
    printl("1");
    if(cInfo[id][besitzer] == PlayerInfo[playerid][p_id])
    {
    printl("2");
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine == VEHICLE_PARAMS_ON)
    {
    printl("3");
    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~r~aus!", 2000, 5);
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    return 1;
    }
    else
    {
    printl("4");
    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~an!", 2000, 5);
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    return 1;
    }
    printl("5");
    }
    printl("6");
    }
    }

    was wird denn falsch geprintet?
    du hast beim print auch nen kleinen fehler schau
    printf("Besitzer: %d | ID: %d",cInfo[id][besitzer],cInfo[i][db_id]);
    du hast nur i, dieses muss aber zu id also so
    printf("Besitzer: %d | ID: %d",cInfo[id][besitzer],cInfo[id][db_id]);

    ehm du schau mal ganz genau hin...



    for(new id = 0; id < sizeof(cInfo); id++)
    {
    if(cInfo[id][id_x] == Vehicle)
    {
    }
    }
    else
    {
    return SendClientMessage(playerid,-1,"Kaputt");
    }



    Das else ist anch der for schleife da fehlt ne if abfrage ob das fahrzeug kaputt ist oder nicht? schau mal so evt.

    for(new id = 0; id < sizeof(cInfo); id++)
    {
    if(cInfo[id][id_x] == Vehicle)
    {
    //weitere sachen
    SendClientMessage(playerid,-1,"Ich sollte im Chat stehen");
    }
    }

    Ja hey
    Der fehler ist glaube das wenn du kein admin warst, dass das
    return SCM(playerid,BUSFARBESYSTEM,"Du besitzt keine Schlüssel für dieses Fahrzeug.");
    dort nicht ganz angebracht ist
    versuchs mal so

    if((newkeys & KEY_ANALOG_DOWN) && IsPlayerInAnyVehicle(playerid) && !IsVehAKeyVeh(vehicleid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(Spieler[playerid][pHealTime] != 0)return SCM(playerid,GRAU,"Du kannst während des Geschlechtsverkehr den Motor des Fahrzeuges nicht starten.");
    if(RepairAVehicle[vehicleid] == 1)return SCM(playerid,GRAU,"Dein Fahrzeug wird gerade repariert!");
    if(RefillVehicle[vehicleid] == 1)return SCM(playerid,GRAU,"Du tankst gerade!");
    if(IsAFahrrad(GetVehicleModel(vehicleid)))return SCM(playerid, GRAU, "Dieses Fahrrad hat keinen Motor!");
    else if(MotorDown[vehicleid] != 0)return SCM(playerid,WEISS,"Das Fahrzeug ist kaputt. Rufe einen Abschlepper oder einen Kraftfahrzeugmechaniker.");
    else if(vFahrzeug[vehicleid][Tank] <= 0.0 && !IsVehAZug(vehicleid))return SCM(playerid,GRAU,"Tank leer.");
    if(IsPlayerAnAdmin(playerid,1))
    {
    if(IsValidVehicle(vehicleid))
    {
    if(Motor[vehicleid] == false)
    {
    Motor[vehicleid] = true;
    KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
    vFahrzeug[vehicleid][VehicleEngineTimer] = SetTimerEx("VehicleEngine",VehicleInfo[GetVehicleModel(vehicleid)-400][vEngineStartInSek]*1000,0,"ii",playerid,vehicleid);
    format(string, sizeof(string), "%s betätigt die Zündung.", SpielerName(playerid));
    SetPlayerChatBubble(playerid, string, MEFARBE, 25.0, 12000);
    SendClientMessage(playerid, HELLBLAU, "Du betätigst die Zündung.");
    }
    else if(Motor[vehicleid] == true)
    {
    KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[vehicleid] = false;
    format(string, sizeof(string), "%s stellt den Motor ab.", SpielerName(playerid));
    SetPlayerChatBubble(playerid, string, MEFARBE, 25.0, 12000);
    SendClientMessage(playerid, HELLBLAU, "Du stellst den Motor ab.");
    }
    }
    }
    else if(isPlayerInJob(playerid,17))
    {
    if(IsValidVehicle(vehicleid))
    {
    if(Motor[vehicleid] == false)
    {
    Motor[vehicleid] = true;
    KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
    vFahrzeug[vehicleid][VehicleEngineTimer] = SetTimerEx("VehicleEngine",VehicleInfo[GetVehicleModel(vehicleid)-400][vEngineStartInSek]*1000,0,"ii",playerid,vehicleid);
    format(string, sizeof(string), "%s betätigt die Zündung.", SpielerName(playerid));
    SetPlayerChatBubble(playerid, string, MEFARBE, 25.0, 12000);
    SendClientMessage(playerid, HELLBLAU, "Du betätigst die Zündung.");
    }
    else if(Motor[vehicleid] == true)
    {
    KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[vehicleid] = false;
    format(string, sizeof(string), "%s stellt den Motor ab.", SpielerName(playerid));
    SetPlayerChatBubble(playerid, string, MEFARBE, 25.0, 12000);
    SendClientMessage(playerid, HELLBLAU, "Du stellst den Motor ab.");
    }
    }
    }
    else{return SCM(playerid,BUSFARBESYSTEM,"Du besitzt keine Schlüssel für dieses Fahrzeug.");}
    }


    #edit

    du müsstest evt. das anpassen bei
    getFreeCarID()
    da du ja nur die
    cInfo[i][id_x]
    setzt wenn es nicht gesperrt ist, somit überschreibt sich das glaube anch meiner theorie erstell mal noch nen
    "geladen"
    cInfo[i][geladen]
    das setzt du dann auf 1 bei


    OnPlayerCarsLoad
    also so dann

    forward OnPlayerCarsLoad(playerid);
    public OnPlayerCarsLoad(playerid)
    {
    for(new i=0; i<cache_num_rows(); i++)
    {
    new id = getFreeCarID();
    cInfo[id][geladen]=1;



    und bei getfreecarID


    getFreeCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][geladen]==0)return i;
    }
    return 0;
    }


    und wenn das Fahrzeug sich ausloggt alsow eiss ja net wie du es hast musst du geladen wieder 0 setzen dann sollte eigentlich das erstmal wieder richtig gehen ^^

    na dann zeig mal dein load/save von cars evt. ist da was nicht ganz richtig
    und print mal beim Code
    cInfo[i][db_id], bzw je nach dem wei du es hast aus

    printf("ID:%d | Besitzer:%d | Model:%d | Gesperrt:%d",cInfo[i][db_id],cInfo[i][besitzer],cInfo[i][model],cInfo[i][c_gespeert]);

    Also alles klar funkt eig alles richtig pass auf...


    printf("ID:%d | Besitzer:%d | Model:%d | Gesperrt:%d",i,cInfo[i][besitzer],cInfo[i][model],cInfo[i][c_gespeert]);


    un die ergebnisse von dir



    [19:12:46]
    [19:12:46] ID:0 | Besitzer:3 | Model:496 | Gesperrt:0
    [19:12:46] ID:1 | Besitzer:3 | Model:496 | Gesperrt:0
    [19:12:46] ID:2 | Besitzer:3 | Model:496 | Gesperrt:1


    stimmen so apss auf die ID ist nullw eil der print das i vond er schleife wieder gibt...
    und dir wird nur ein fahrzeug im dialog gezeigt weil nur 1 Gesperrt ist...
    somit Funktioniert doch alles oder wolltest du es anders haben?

    Ja da du hier ein return hast
    return SendClientMessage(playerid,COLOR_RED,"Keine gefunden");
    das return beendet somit die ganzeschleife und was darutner kommt
    somit versuchs mal damit

    ocmd:freikaufen(playerid)
    {
    if(PlayerInfo[playerid][pLoggedIn]==false)return 1;
    new string[128],fahrzeugevorhanden=0;
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer] == PlayerInfo[playerid][p_id])
    {
    if(cInfo[i][c_gespeert] == 1)
    {
    format(string,sizeof(string),"%s %d \n",string,cInfo[i][model]);
    fahrzeugevorhanden=1;
    }
    }
    }
    if( fahrzeugevorhanden==1)
    {
    return ShowPlayerDialog(playerid,DIALOG_CARFREIKAUFEN_AUSWAHL,DIALOG_STYLE_LIST,"Verwahrstelle",string,"Auswählen","Abbruch");
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Keine Fahrzeuge in der Verwahrstelle");
    }
    return 1;
    }


    und das



    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Kein Besitzer");
    }

    lassen wir auch aus der Schleife weil das genau das gleiche wie mit dem c_gesperrt ist
    Warum?
    also es ist relativ egal ob wir nicht der besitzer vom fahrzeug sind, denn es passiert auch nichts mit dem wagen


    Hoffe du verstehst es mfg. Mogly1