Tankinhalt aus Datenbank auslesen

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
  • Gerne würde ich den Tankinhalt aus meiner Datenbank auselsen habe hierbei aber noch ein paar kleine Probleme. Es wird nicht Richtig ausgelesen.


    Laden der Daten:

    for(new i=0; i<cache_num_rows(); i++)
    {
    new id = getFreeCarID();
    cache_get_value_name_int(i, "id", cInfo[id][db_id] );//Integer
    cache_get_value_name_int(i, "model", cInfo[id][model]);//Integer
    cache_get_value_name_int(i, "besitzer", cInfo[id][besitzer]);//Integer
    cache_get_value_name_float(i, "x", cInfo[id][c_x]); //Float
    cache_get_value_name_float(i, "y", cInfo[id][c_y]);//Float
    cache_get_value_name_float(i, "z", cInfo[id][c_z]);//Float
    cache_get_value_name_float(i, "r", cInfo[id][c_r]);//Float
    cache_get_value_name_int(i, "c1", cInfo[id][color1]);//Integer
    cache_get_value_name_int(i, "c2", cInfo[id][color2]);//Integer
    cache_get_value_name_int(i, "c3", cInfo[id][color3]);//Integer
    cache_get_value_name_int(i, "key", cInfo[id][key]);//Integer
    cache_get_value_name_int(i, "c_gesperrt", cInfo[id][c_gespeert] );//Integer
    cache_get_value_name_int(i, "tank", cInfo[id][tankinhalt]);//Integer
    if(cInfo[id][c_gespeert] == 0)
    {
    cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][color1],cInfo[id][color2],cInfo[id][color3]);
    }
    }


    Abfrage welche Zahl angezeigt werden soll



    if(newstate==PLAYER_STATE_ONFOOT)
    {

    for(new i=0; i<sizeof(autosOhneMotor); i++)
    {
    new vID=GetPlayerVehicleID(playerid);
    new vModel=GetVehicleModel(vID);
    if(autosOhneMotor[i]!=vModel)continue;
    new tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //Motor an/ausschalten
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    SetVehicleParamsEx(vID, 1, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    }
    PlayerTextDrawHide(playerid, tankLabel[playerid]);
    for(new i=0; i<sizeof(tank); i++)
    {
    tank[i]=cInfo[i][tankinhalt];
    }

  • Okay. Wenn ich es Richtig auslese ist es ja schonmal Gut. Mir wird dauerhaft der Wert 0 in der Tankanzeige angezeigt.


    Der Wert soll hier abgefragt werden


    [list=1][*] for(new i=0; i<sizeof(tank); i++)[*] {[*] tank[i]=cInfo[i][tankinhalt];[*] }[/list]


    Habe gerade gesehen das ich das bei OnFoot hinzugefügt habe aber aucch wenn ich es bei PLAYER_STATE_DRIVER hinzufüge wird es mir nicht richtig angezeigt.


    if(newstate==PLAYER_STATE_DRIVER) { for(new i=0; i<sizeof(tank); i++) { tank[i]=cInfo[i][tankinhalt]; } }



    /push 05.12 von meinem Handy

    Einmal editiert, zuletzt von robbi2304 ()


  • for(new i=0; i<MAX_PLAYERS; i++)
    {
    new vID=GetPlayerVehicleID(playerid);
    format(string, sizeof(string), "Tanke: %i%%", cInfo[vID][tankinhalt]);
    PlayerTextDrawSetString(i,Textdraw12[playerid], string);
    }

    kann den tankinhalt nicht Richtig auslesen wodurch dauerhaft 0 Angegeben wird


    Wie folgt werden die Cars erstellt



    forward OnPlayerCarsLoad(playerid);
    public OnPlayerCarsLoad(playerid)
    {
    for(new i=0; i<cache_num_rows(); i++)
    {
    new id = getFreeCarID();
    cache_get_value_name_int(i, "id", cInfo[id][db_id] );//Integer
    cache_get_value_name_int(i, "model", cInfo[id][model]);//Integer
    cache_get_value_name_int(i, "besitzer", cInfo[id][besitzer]);//Integer
    cache_get_value_name_float(i, "x", cInfo[id][c_x]); //Float
    cache_get_value_name_float(i, "y", cInfo[id][c_y]);//Float
    cache_get_value_name_float(i, "z", cInfo[id][c_z]);//Float
    cache_get_value_name_float(i, "r", cInfo[id][c_r]);//Float
    cache_get_value_name_int(i, "c1", cInfo[id][color1]);//Integer
    cache_get_value_name_int(i, "c2", cInfo[id][color2]);//Integer
    cache_get_value_name_int(i, "c3", cInfo[id][color3]);//Integer
    cache_get_value_name_int(i, "key", cInfo[id][key]);//Integer
    cache_get_value_name_int(i, "c_gesperrt", cInfo[id][c_gespeert] );//Integer
    cache_get_value_name_int(i, "tank", cInfo[id][tankinhalt]);//Integer
    if(cInfo[id][c_gespeert] == 0)
    {
    cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][color1],cInfo[id][color2],cInfo[id][color3],cInfo[id][tankinhalt]);
    }
    }
    return 1;
    }

    2 Mal editiert, zuletzt von robbi2304 () aus folgendem Grund: Fehler Zeile gefunden, trotzdem keine Lösung im Kopf daher der Edit

  • new vID=GetPlayerVehicleID(playerid);
    format(string, sizeof(string), "Tanke: %i%%", cInfo[vID][tankinhalt]);
    zu:
    new id=GetCInfoIndex(GetPlayerVehicleID(playerid));
    if(id == -1) continue;
    format(string, sizeof(string), "Tanke: %i%%", cInfo[id][tankinhalt]);


    Mit:
    stock GetCInfoIndex(vID)
    {
    for(new i = 0; i < sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == vID) return i;
    }
    return -1;
    }

  • Zwei Fragen habe ich derzeit noch,


    derzeit wird das Tanklabel nicht runtergezählt



    if(tanktimer == 1)
    {
    tanktimer = 0;
    //Tanks reduzieren
    for(new i=1; i<sizeof(cInfo); i++)
    {
    if(!hatAutoMotor(i))continue;
    if(!isMotorOn(i))continue;
    cInfo[i][tankinhalt]--;
    new id=GetCInfoIndex(GetPlayerVehicleID(playerid));
    if(id == -1) continue;
    if(cInfo[id][tankinhalt]>0)continue;
    stopMotor(i);
    }
    }


    hinzu, wie speichere ich am sinnvollsten den Tankstand wenn der Spieler das Fahrzeug verlässt ?

  • derzeit wird das Tanklabel nicht runtergezählt

    if(tanktimer == 1)
    {
    tanktimer = 0;
    //Tanks reduzieren
    for(new i=1; i<sizeof(cInfo); i++)
    {
    if(!hatAutoMotor(i))continue;
    if(!isMotorOn(i))continue;
    cInfo[i][tankinhalt]--;
    if(cInfo[i][tankinhalt]>0)continue;
    stopMotor(i);
    }
    }


    hinzu, wie speichere ich am sinnvollsten den Tankstand wenn der Spieler das Fahrzeug verlässt ?

    Rufe bei OnPlayerStateChange (newstate != PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_DRIVER) die Speicherung für das Fahrzeug auf.