Autos laden [Own Car] | Hilfe

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
  • Guten Abend liebe Brotfische,


    ich habe nun ein Autohaus erstellt und lese die Autos mit diesem Public aus:

    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,DB);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][model]=cache_get_field_content_int(i,"model",DB);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",DB);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",DB);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",DB);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",DB);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",DB);
    cInfo[id][db_id]=cache_get_field_content_int(i,"nr",DB);
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    myowncar[cInfo[i][id_x]]=idx[playerid];//<<<<<< Hier
    }
    return 1;
    }


    Ihr seht, dass ich dort eine Variable "myowncar" erstellt habe, die ich natürlich auch oben im Script definiert habe.
    Diese sollte eigentlich die idx von dem Spieler des jeweiligem Fahrzeug speichern, sodass ich bei meinem /lock - Befehl abfragen kann, ob es sein eigenes Auto ist.


    Dann habe ich hier noch die "getFreeCarID()" Funktion:

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


    Hier der /lock - Befehl:

    ocmd:lock(playerid, params[])
    {
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    new Float:vposx, Float:vposy, Float:vposz;
    GetVehiclePos(i, vposx, vposy, vposz);
    if(IsPlayerInRangeOfPoint(playerid, 3,vposx, vposy, vposz))
    {
    if(myowncar[i]==idx[playerid])
    {
    if(Lock[i] == true)
    {
    GameTextForPlayer(playerid, "~n~~n~~g~Fahrzeug aufgeschlossen", 2200, 5);
    Lock[i] = false;
    UnLockCar(i);
    PlaySoundEx(playerid, 1147);//Hupe
    return 1;
    }
    else
    {
    GameTextForPlayer(playerid, "~n~~n~~r~Fahrzeug abgeschlossen", 2200, 5);
    Lock[i] = true;
    LockCar(i);
    PlaySoundEx(playerid, 1147);//Hupe
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, LILA, "[Info:] Du hast keine Schlüssel.");
    return 1;
    }
    }
    }
    return 1;
    }


    Dort frage ich ab, ob es sein eigenes Auto ist oder nicht.
    Und hier befindet sich auch der Fehler bzw. oben bei "public OnPlayerCarsLoad(playerid)" da es dort in die Variable "myowncar" eingespeichert wird.
    Es funktioniert nicht immer, nur wenn man alleine auf dem Server ist.
    Wo befindet sich das Problem?


    Ich hoffe ihr könnt mir helfen.


    Mit freundlichen Grüßen,
    Scriter4.0

    Scripter im Ruhestand.

    Einmal editiert, zuletzt von Scripter4.0 ()

  • Etwas sehr umständlich und unübersichtlich.


    Warum legst du nicht eine eine eindeutige ID in der DB für jeden User an, diese ID wird dann von der DB auf den User geladen und diese kannst du dann für die Abfrage bei Fahrzeugen benutzen.