Fraktionspark System auf MySQL

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
  • Hallo Breadfish-Community,


    ich bin am versuchen vom Dini Fraktionssystem auf MySQL umzuschreiben.
    Mein Problem liegt allerdings jetzt beim Befehl '/fpark' ...


    Ich habe mir auch das kleine Tutorial von Jeffry angeschaut, aber das klappt bei mir auch irgendwie nicht...
    (Link zum Tutorial: http://forum.sa-mp.de/gta-mult…g-system-mit-mysql-r39-2/ )



    So sieht bis jetzt mein /fpark Befehl aus:

    dcmd(efa,3,cmdtext);
    if(strcmp(cmdtext,"/fpark",true)==0)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    for(new i=0; i< MAX_FACTION_CARS; i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611)
    {
    if(GetPlayerAdminLevel(playerid) >= NEEDED_ADMINLEVEL || GetPlayerLeader(playerid) == FactionCars[i][fFaction][0])
    {
    //new vehicleid = GetPlayerVehicleID(playerid);
    //if(SaveFracVehCheck(vehicleid)) return SendClientMessage(playerid,COLOR_WHITE,"Du hast das Fraktionsfahrzeug {88FF6A}erfolgreich{FFFFFF} umgeparkt.");
    new query[156];
    format(query, sizeof(query), "UPDATE fraktionsautos SET Fv_aX='%f', Fv_aY='%f', Fv_aZ='%f', Fv_aA='%f' WHERE FVehID = '%d'",FactionCars[i][v_X], FactionCars[i]
    [v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fCarid]);
    mysql_function_query(dbhandle, query, false, "", "");
    SendClientMessage(playerid,COLOR_WHITE,"Du hast das Fraktionsfahrzeug {88FF6A}erfolgreich{FFFFFF} umgeparkt.");
    }
    else SendClientMessage(playerid,COLOR_WHITE,"Du bist dazu {FF6A6A}nicht{FFFFFF} berechtigt.");
    return true;
    }SendClientMessage(playerid,COLOR_WHITE,"Du sitzt in {FF6A6A}keinem{FFFFFF} Fraktionsfahrzeug.");
    }SendClientMessage(playerid,COLOR_WHITE,"Du sitzt in {FF6A6A}keinem{FFFFFF} Fahrzeug oder bist {FF6A6A}nicht{FFFFFF} der Fahrer.");
    }
    return 1;
    }


    habe es auch so Probiert, das Problem hierbei ist, in der Datenbank werden alle Autos mit der selben ID auf eine Koordinate gesetzt...
    (Hier habe ich am ende FactionCars[i][fCarid] zu FactionCars[i][fVehid] gesetzt)



    dcmd(efa,3,cmdtext);
    if(strcmp(cmdtext,"/fpark",true)==0)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    for(new i=0; i< MAX_FACTION_CARS; i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611)
    {
    if(GetPlayerAdminLevel(playerid) >= NEEDED_ADMINLEVEL || GetPlayerLeader(playerid) == FactionCars[i][fFaction][0])
    {
    //new vehicleid = GetPlayerVehicleID(playerid);
    //if(SaveFracVehCheck(vehicleid)) return SendClientMessage(playerid,COLOR_WHITE,"Du hast das Fraktionsfahrzeug {88FF6A}erfolgreich{FFFFFF} umgeparkt.");
    new query[156];
    format(query, sizeof(query), "UPDATE fraktionsautos SET Fv_aX='%f', Fv_aY='%f', Fv_aZ='%f', Fv_aA='%f' WHERE FVehID = '%d'",FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fVehid]);
    mysql_function_query(dbhandle, query, false, "", "");
    SendClientMessage(playerid,COLOR_WHITE,"Du hast das Fraktionsfahrzeug {88FF6A}erfolgreich{FFFFFF} umgeparkt.");
    }
    else SendClientMessage(playerid,COLOR_WHITE,"Du bist dazu {FF6A6A}nicht{FFFFFF} berechtigt.");
    return true;
    }SendClientMessage(playerid,COLOR_WHITE,"Du sitzt in {FF6A6A}keinem{FFFFFF} Fraktionsfahrzeug.");
    }SendClientMessage(playerid,COLOR_WHITE,"Du sitzt in {FF6A6A}keinem{FFFFFF} Fahrzeug oder bist {FF6A6A}nicht{FFFFFF} der Fahrer.");
    }
    return 1;
    }


    Wo kann das Problem liegen?


    P.S.: Ich habe auch mit so einer Stock abfrage versucht aber auch fehlgeschlagen...


    Bitte um Hilfe...



    Lg
    J0a9

  • Datenbank Screenshot:



    Lade Funktion:



    forward LoadFraktionsAuto();
    public LoadFraktionsAuto()
    {
    new query1[100];
    format(query1, sizeof(query1), "SELECT * FROM fraktionsautos");
    mysql_function_query(dbhandle, query1, true, "LoadFactionCars", "");
    return 1;
    }


    forward LoadFactionCars();
    public LoadFactionCars()
    {
    if(!cache_num_rows())return 1;
    for(new fc = 0; fc < cache_num_rows(); fc++)
    {
    FactionCars[fc][fVehid] = cache_get_field_content_int(fc, "FVehId", dbhandle);
    FactionCars[fc][fFaction] = cache_get_field_content_int(fc, "FFaction", dbhandle);
    FactionCars[fc][v_X] = cache_get_field_content_float(fc, "Fv_aX", dbhandle);
    FactionCars[fc][v_Y] = cache_get_field_content_float(fc, "Fv_aY", dbhandle);
    FactionCars[fc][v_Z] = cache_get_field_content_float(fc, "Fv_aZ", dbhandle);
    FactionCars[fc][v_A] = cache_get_field_content_float(fc, "Fv_aA", dbhandle);
    FactionCars[fc][fCol][0] = cache_get_field_content_int(fc, "FCol1", dbhandle);
    FactionCars[fc][fCol][1] = cache_get_field_content_int(fc, "FCol2", dbhandle);
    FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][v_X],FactionCars[fc][v_Y],FactionCars[fc][v_Z],FactionCars[fc][v_A],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
    }
    return 1;
    }



    Speicher System (ist von dir Jeffry habs versucht einzubauen aber kp ob's klappt hab das mit dem Timer):



    forward SaveAllFactionCars();
    public SaveAllFactionCars()
    {
    new query[256];
    for(new i;i<sizeof(FactionCars);i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611)
    {
    GetVehiclePos(FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z]);
    GetVehicleZAngle(FactionCars[i][fVehid], FactionCars[i][v_A]);
    format(query, sizeof(query), "UPDATE fraktionsautos SET FVehid = '%d', Fv_aX = '%f', Fv_aY = '%f', Fv_aZ = '%f', Fv_aA = '%f', FCol1 = '%d', FCol2 = '%d', FracID = '%d' WHERE id = '%d'",
    FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fCol][0], FactionCars[i][fCol][1], FactionCars[i][fFaction], i);
    mysql_tquery(dbhandle, query);
    return 1;
    }
    }
    return 0;
    }


    Lg
    J0a9

  • Du scheinst "id" als A_I zu verwenden.
    forward LoadFactionCars();
    public LoadFactionCars()
    {
    if(!cache_num_rows())return 1;
    for(new fc = 0; fc < cache_num_rows(); fc++)
    {
    FactionCars[fc][db_id] = cache_get_field_content_int(fc, "id", dbhandle);
    FactionCars[fc][fVehid] = cache_get_field_content_int(fc, "FVehId", dbhandle);
    FactionCars[fc][fFaction] = cache_get_field_content_int(fc, "FFaction", dbhandle);
    FactionCars[fc][v_X] = cache_get_field_content_float(fc, "Fv_aX", dbhandle);
    FactionCars[fc][v_Y] = cache_get_field_content_float(fc, "Fv_aY", dbhandle);
    FactionCars[fc][v_Z] = cache_get_field_content_float(fc, "Fv_aZ", dbhandle);
    FactionCars[fc][v_A] = cache_get_field_content_float(fc, "Fv_aA", dbhandle);
    FactionCars[fc][fCol][0] = cache_get_field_content_int(fc, "FCol1", dbhandle);
    FactionCars[fc][fCol][1] = cache_get_field_content_int(fc, "FCol2", dbhandle);
    FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][v_X],FactionCars[fc][v_Y],FactionCars[fc][v_Z],FactionCars[fc][v_A],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
    }
    return 1;
    }


    Und dann:
    forward SaveAllFactionCars();
    public SaveAllFactionCars()
    {
    new query[256];
    for(new i;i<sizeof(FactionCars);i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611)
    {
    GetVehiclePos(FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z]);
    GetVehicleZAngle(FactionCars[i][fVehid], FactionCars[i][v_A]);
    format(query, sizeof(query), "UPDATE fraktionsautos SET FVehid = '%d', Fv_aX = '%f', Fv_aY = '%f', Fv_aZ = '%f', Fv_aA = '%f', FCol1 = '%d', FCol2 = '%d', FracID = '%d' WHERE id = '%d'",
    FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fCol][0], FactionCars[i][fCol][1], FactionCars[i][fFaction], FactionCars[i][db_id]);
    mysql_tquery(dbhandle, query);
    }
    }
    return 1;
    }


    Die db_id musst du dann noch im enum anlegen.

  • ah ok danke sehr :)


    Ich versuche dann das /fpark system umzuschreiben, so wie es in deinem Tutorial ist :)


    Wenn ich Hilfe benötige Melde ich mich, bis dahin bedanke ich mich für deine schnelle Hilfe...


    //Edit:


    Ich versuche es nun mit dem Stock Aufbau...


    Code:

    stock SaveFracVehCheck(vehicleid)
    {
    new query[256];
    for(new i;i<MAX_FACTION_CARS ;i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611)
    {
    GetVehiclePos(FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z]);
    GetVehicleZAngle(FactionCars[i][fVehid], FactionCars[i][v_A]);
    format(query, sizeof(query), "UPDATE fraktionsautos SET FVehid = '%d', Fv_aX = '%f', Fv_aY = '%f', Fv_aZ = '%f', Fv_aA = '%f', FCol1 = '%d', FCol2 = '%d', FracID = '%d' WHERE id = '%d'",
    FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fCol][0], FactionCars[i][fCol][1], FactionCars[i][fFaction], FactionCars[i][fdb_id]);
    mysql_tquery(dbhandle, query);
    return 1;
    }
    }
    return 0;
    }


    Allerdings bekomme ich ein Warning:

    Code
    warning 203: symbol is never used: "vehicleid"

    in der Zeile -> stock SaveFracVehCheck(vehicleid)


    Was ist denn da der Fehler?


    Lg
    J0a9

  • stock SaveFracVehCheck(vehicleid)
    {
    new query[256];
    for(new i;i<MAX_FACTION_CARS ;i++)
    {
    if(FactionCars[i][fVehid] >= 400 && FactionCars[i][fVehid] <= 611 && vehicleid == FactionCars[i][fCarid])
    {
    GetVehiclePos(FactionCars[i][fCarid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z]);
    GetVehicleZAngle(FactionCars[i][fCarid], FactionCars[i][v_A]);
    format(query, sizeof(query), "UPDATE fraktionsautos SET FVehid = '%d', Fv_aX = '%f', Fv_aY = '%f', Fv_aZ = '%f', Fv_aA = '%f', FCol1 = '%d', FCol2 = '%d', FracID = '%d' WHERE id = '%d'",
    FactionCars[i][fVehid], FactionCars[i][v_X], FactionCars[i][v_Y], FactionCars[i][v_Z], FactionCars[i][v_A], FactionCars[i][fCol][0], FactionCars[i][fCol][1], FactionCars[i][fFaction], FactionCars[i][fdb_id]);
    mysql_tquery(dbhandle, query);
    return 1;
    }
    }
    return 0;
    }


    Du darfst die fVehid und fCarid nicht durcheinander bringen. Das hast du etwas schlecht benannt.
    fVehid = Model
    fCarid = vehicleid