Beiträge von Jeffry

    Dann musst du es so machen:
    ocmd:vehiclelock(playerid,params[])
    {
    new veh = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3], Float:dist = 20.0, Float:tmp;
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    tmp = GetPlayerDistanceFromPoint(playerid, Pos[0], Pos[1], Pos[2]);
    if(tmp < dist)
    {
    veh = i;
    dist = tmp;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    veh = GetPlayerVehicleID(playerid);
    }
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    if(sInfo[playerid][alevel] > 0 || cInfo[veh][besitzer] == playerid)
    {
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    if(vehdoor!=0) vehdoor = 0;
    else vehdoor = 1;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Das Auto gehört dir nicht.");
    }
    return 1;
    }


    German_ScripterHD: Ändere in der Schleife: MAX_PLAYERS zu MAX_VEHICLES. Ist mir grade aufgefallen.

    i++;
    So wie ich das sehe gibt das keinen praktikablen Sinn, entferne das, weil du lädst die ID ja auf dem ersten Index, dann darfst du sich nicht verändern.

    sscanf(field[2], "%f", CI[i][vx]);
    sscanf(field[3], "%f", CI[i][vy]);
    sscanf(field[4], "%f", CI[i][vz]);
    sscanf(field[5], "%f", CI[i][vr]);
    zu:
    CI[i][vx] = floatstr(field[2]);
    CI[i][vy] = floatstr(field[3]);
    CI[i][vz] = floatstr(field[4]);
    CI[i][vr] = floatstr(field[5]);

    @[LnD]JustMe.77: Du machst das AttachObjectToVehicle einfach direkt nach CreateVehicle im Befehl. Je nach dem ob das Fahrzeug wieder entfernt werden kann musst du eben die Objekt ID in einer Variable (Spieler-Variable oder dasselbe für Fahrzeuge -> Array) speichern.


    .Kevin: Dann liegt es an etwas anderem, da der Code so wie ich ihn dir gegeben habe bei mit funktioniert.
    Hast du vielleicht das Limit an Objekten überschritten?

    Ahh, sorry. Stimmt. :sleeping:
    new string[256], model;
    for(new v;v< sizeof(PoliceCars);v++)
    {
    model = GetVehicleModel(PoliceCars[v]);
    if(model >= 400 && model <= 611)
    {
    format(string,sizeof(string),"%sFahrzeug: %s\n",string,vNames[model-400]);
    }
    }
    ShowPlayerDialog(playerid,DIALOG_FACTION_CAR,DIALOG_STYLE_LIST,"Fahrzeuge:",string, "Auswählen", "Abbrechen");


    EDIT:
    @Mencent: Da ist der Fehler immernoch drin. ;)

    Kaiserle:
    Du nimmst dieses Array:
    Hilfe: Autonamen zeigen


    new string[256], model;
    for(new v;v< sizeof(PoliceCars);v++)
    {
    model = GetVehicleModel(PoliceCars[v]);
    if(model >= 400 && model <= 611)
    {
    format(string,sizeof(string),"Fahrzeug: %s\n",vNames[model-400]);
    ShowPlayerDialog(playerid,DIALOG_FACTION_CAR,DIALOG_STYLE_LIST,"Fahrzeuge:",string, "Auswählen", "Abbrechen");
    }
    }


    .Kevin:

    (Quelle: Eigener Screenshot)


    Bei mir geht es:
    new car = CreateVehicle(408,2108.9387,-2077.9573,14.1000,130.9863,1,1,-1);
    new ob = CreateObject(1337,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(ob,car,0.000000,-4.099999,-0.699999,0.000000,0.000000,0.000000);
    PutPlayerInVehicle(playerid,car,0);


    Teste es mal so.

    Versuchs mal so:
    SetPlayerSpecialAction(playerid,0);
    Spieler[playerid][Mulltonne] = CreateObject(1337,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(Spieler[playerid][Mulltonne],GetPVarInt(playerid,"Mullwagen"),0.000000,-4.099999,-0.699999,0.000000,0.000000,0.000000);
    Spieler[playerid][Mulllader] = true;


    -4 kann aber auch ziemlich am Rand irgendwo sein.

    Könntest du bitte den Fehler und was du behoben hast kurz zeigen, damit, falls andere ein ähnliches Problem haben, die Lösung vorhanden ist?
    Danke! :)

    Ach, ich weiß warum. Das liegt an den MySQL Funktionen, die rufen das LoadPrivateVehicles_Data ja erst danach auf (Zeitverzögerung), daher stehen da die Daten noch nicht drin.
    Nimm das LockVehicles(); aus OnGameModeInit raus und schreibe es ganz unten bei LoadPrivateVehicles_Data hin, dann geht's.

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    //new str[546];
    for(new i=0;i<sizeof(FracVehicle);i++)
    {
    if(FracVehicle[i][f_vID] == vehicleid)
    {
    if(SpielerInfo[playerid][pFrak] != FracVehicle[i][f_fracID])
    {
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to enter this Vehicle because you are not in the right Fraction.");
    }
    break;
    }
    }
    return 1;
    }


    Wenn "0 Vehicles locked" kommt, dann wurden keine Privaten Fahrzeuge erstellt, wahrscheinlich steht da nichts in der Datenbank.