Problem mit createfcar

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 Community,


    Schon wieder ich :/


    Brauche mal wieder Hilfe von euch habe gerade ein createfcar geschrieben was noch so richtig funkt
    In der datenbank wird zwar was erstellt aber da ist immer die id 0 wen ich zwei Autos erstellt habe
    Die Koordinaten sind auch gleich obwohl ich sie anders geparkt habe
    Autos werden auch nach dem Restart des servers nicht gespeichert aber in der Datenbank bleibt alles
    http://prntscr.com/7oukwm


    Das kommt in der mysql_log

    SQL
    [23:16:05] [WARNING] cache_get_data - no active cache



    Ich poste erstmal die load und save vlt liegt es ja daran


    public LoadFractionCars()
    {
    new val[128],query[256];
    for(new idx;idx<MAX_FRACTION_CARS; idx++)
    {
    format(query, sizeof(query), "SELECT * FROM `frakcars` WHERE `id` = %d", idx);
    mysql_function_query(dbhandle,query,false,"","");
    mysql_store_result();
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(val,"VehID");
    FractionCars[idx][fVehid] = strval(val);
    mysql_fetch_field_row(val,"PosX");
    FractionCars[idx][fPos][0] = strval(val);
    mysql_fetch_field_row(val,"PosY");
    FractionCars[idx][fPos][1] = strval(val);
    mysql_fetch_field_row(val,"PosZ");
    FractionCars[idx][fPos][2] = strval(val);
    mysql_fetch_field_row(val,"PosR");
    FractionCars[idx][fPos][3] = strval(val);
    mysql_fetch_field_row(val,"Col1");
    FractionCars[idx][fCol][0] = strval(val);
    mysql_fetch_field_row(val,"Col2");
    FractionCars[idx][fCol][1] = strval(val);
    mysql_fetch_field_row(val,"Fraktion");
    FractionCars[idx][fraktion] = strval(val);
    }
    mysql_free_result();
    if(FractionCars[idx][fVehid] >= 400 && FractionCars[idx][fVehid] <= 611)
    {
    FractionCars[idx][fCarid] = CreateVehicle(FractionCars[idx][fVehid],FractionCars[idx][fPos][0],FractionCars[idx][fPos][1],FractionCars[idx][fPos][2],FractionCars[idx][fPos][3],FractionCars[idx][fCol][0],FractionCars[idx][fCol][1], -1);
    SetVehicleNumberPlate(FractionCars[idx][fCarid], fInfo[FractionCars[idx][fraktion]-1]);
    SetVehicleToRespawn(FractionCars[idx][fCarid]);
    }
    }
    }


    public SaveFractionCars()
    {
    new query[1024];
    for(new idx;idx<MAX_FRACTION_CARS; idx++)
    {
    if(FractionCars[idx][fVehid] >= 400 && FractionCars[idx][fVehid] <= 611){
    format(query,sizeof(query),"UPDATE frakcars SET VehID='%i', PosX='%f' ,PosY='%f' ,PosZ='%f' ,PosR='%f',Col1='%i',Col2='%i',Fraktion='%i' WHERE id='%i'",
    FractionCars[idx][fVehid], FractionCars[idx][fPos][0], FractionCars[idx][fPos][1], FractionCars[idx][fPos][2], FractionCars[idx][fPos][3], FractionCars[idx][fCol][0], FractionCars[idx][fCol][1], FractionCars[idx][fraktion], idx);
    mysql_function_query(dbhandle,query,false,"","");
    }
    }
    return 1;
    }


  • ocmd:createfcar(playerid,params[])
    {
    new modelid,frakid,Float:PosX2,Float:PosY2,Float:PosZ2,Float:PosA2,color1,color2;
    if(!isAdmin(playerid,4))return SendClientMessage(playerid,COLOR_DRED,"Dein Adminrang ist zu niedrig!");
    if(sscanf(params,"dddd",modelid,frakid,color1,color2)) return SendClientMessage(playerid,COLOR_GREY,"INFO: {FF9600}/createfcar {B3B3B3}[Model ID] [Fraktion ID] [Color 1] [Color 2])");
    new fc = FreeFrakCheck();
    new query[128];
    format(query,sizeof(query),"INSERT INTO frakcars (id) VALUES ('%d')",fc);
    mysql_function_query(dbhandle,query,false,"","");
    mysql_free_result();
    GetPlayerPos(playerid,PosX2,PosY2,PosZ2);
    GetPlayerFacingAngle(playerid,PosA2);
    FractionCars[fc][fVehid] = modelid;
    FractionCars[fc][fPos][0] = PosX2;
    FractionCars[fc][fPos][1] = PosY2;
    FractionCars[fc][fPos][2] = PosZ2;
    FractionCars[fc][fPos][3] = PosA2;
    FractionCars[fc][fCol][0] = color1;
    FractionCars[fc][fCol][1] = color2;
    FractionCars[fc][fraktion] = frakid;
    FractionCars[fc][fCarid] = CreateVehicle(FractionCars[fc][fVehid],FractionCars[fc][fPos][0],FractionCars[fc][fPos][1],FractionCars[fc][fPos][2],FractionCars[fc][fPos][3],FractionCars[fc][fCol][0],FractionCars[fc][fCol][1],-1);
    SendClientMessage(playerid,COLOR_YELLOW,"[FRAKTIONSCAR]: Du hast das Auto erfolgreich erstellt!");
    SendClientMessage(playerid,COLOR_YELLOW,"[FRAKTIONSCAR]: Vergiss aber nicht es später mit /fpark umzuparken!");
    SendClientMessage(playerid,COLOR_YELLOW,"[INFO]: Für weitere Befehle verwende /fcarinfo");
    PutPlayerInVehicle(playerid,FractionCars[fc][fCarid],0);
    SaveFractionCars();
    return 1;
    }


  • stock FreeFrakCheck()
    {
    new bedin[128],query[128];
    for(new i;i<MAX_FRACTION_CARS;i++)
    {
    format(bedin,sizeof(bedin),"id='%i'",i);
    format(query,sizeof(query),"SELECT * FROM frakcars WHERE %s",bedin);
    mysql_function_query(dbhandle,query,false,"","");
    mysql_store_result();
    if(mysql_retrieve_row()==0) return i;
    }
    return 0;
    }

  • Wie meinst du das Jetzt :x ?
    Bin gerade etwas verpeilt


    //edit
    Ich habe mal ab der SaveFractionCars Funktion
    alles geprintet


    und da kommt das

    SQL
    [00:01:46] query: UPDATE frakcars SET VehID='567', PosX='2495.356689' ,PosY='-1678.603027' ,PosZ='13.338906' ,PosR='359.204498',Col1='86',Col2='86',Fraktion='7' WHERE id='0'


    aber in der datenbank ist halt immer die 0 da


    //edit

    SQL
    [00:05:59] [ERROR] CMySQLQuery::Execute[] - (error #1062) Duplicate entry '1' for key 'PRIMARY'


    Das war jetzt auch auf einmal da.

    3 Mal editiert, zuletzt von JOK3R ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • hmm also genau wie vorher :/ und es wird auch keine mysql_log erstellt
    wieder nur 0 stehen aber es wird richtig geprinted
    [00:22:58] query: UPDATE frakcars SET VehID='567', PosX='2495.136962' ,PosY='-1679.246582' ,PosZ='13.338799' ,PosR='0.629628',Col1='86',Col2='86',Fraktion='7' WHERE id='0'


    Hier steht id 0 aber in der Datenbank steht id 1 sehr komisch :huh:

  • Okay jetzt zeigt er es an
    http://prntscr.com/7ovmtz
    Aber das auto wird nicht gespawnt nach dem restart.
    Ich habe glaube ich das spawnen vom fahrzeug vergessen


    //edit
    Obwohl ich habe doch in der LoadFraction funktion drin stehen


    if(FractionCars[idx][fVehid] >= 400 && FractionCars[idx][fVehid] <= 611) {
    FractionCars[idx][fCarid] = CreateVehicle(FractionCars[idx][fVehid],FractionCars[idx][fPos][0],FractionCars[idx][fPos][1],FractionCars[idx][fPos][2],FractionCars[idx][fPos][3],FractionCars[idx][fCol][0],FractionCars[idx][fCol][1], -1);
    SetVehicleNumberPlate(FractionCars[idx][fCarid], fInfo[FractionCars[idx][fraktion]-1]);
    SetVehicleToRespawn(FractionCars[idx][fCarid]); }


    Wird aber trotzdem nicht gespawnt :/

    4 Mal editiert, zuletzt von JOK3R ()

  • Ich habe mir mal dein Fraktion System Tutorial angesehen und vieles verändert aber aus irgendeinem Grund wird das auto trotzdem nach dem Restart nicht gespawnt was ist den Falsch :huh: :huh: ????


    Und wen ich mysql_query(); mache bekomme ich einen error

  • /*
    public LoadFractionCars()
    {
    new val[128],query[256];
    for(new idx;idx<MAX_FRACTION_CARS; idx++)
    {
    format(query, sizeof(query), "SELECT * FROM `frakcars` WHERE `id` = %d", idx);
    mysql_query();
    mysql_store_result();
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(val,"VehID");
    FractionCars[idx][fVehid] = strval(val);
    mysql_fetch_field_row(val,"PosX");
    FractionCars[idx][fPos][0] = strval(val);
    mysql_fetch_field_row(val,"PosY");
    FractionCars[idx][fPos][1] = strval(val);
    mysql_fetch_field_row(val,"PosZ");
    FractionCars[idx][fPos][2] = strval(val);
    mysql_fetch_field_row(val,"PosR");
    FractionCars[idx][fPos][3] = strval(val);
    mysql_fetch_field_row(val,"Col1");
    FractionCars[idx][fCol][0] = strval(val);
    mysql_fetch_field_row(val,"Col2");
    FractionCars[idx][fCol][1] = strval(val);
    mysql_fetch_field_row(val,"Fraktion");
    FractionCars[idx][frak_ID] = strval(val);
    }
    mysql_free_result();
    if(FractionCars[idx][fVehid] >= 400 && FractionCars[idx][fVehid] <= 611)
    {
    FractionCars[idx][fCarid] = CreateVehicle(FractionCars[idx][fVehid],FractionCars[idx][fPos][0],FractionCars[idx][fPos][1],FractionCars[idx][fPos][2],FractionCars[idx][fPos][3],FractionCars[idx][fCol][0],FractionCars[idx][fCol][1], -1);
    SetVehicleNumberPlate(FractionCars[idx][fCarid], fInfo[FractionCars[idx][frak_ID]-1]);
    SetVehicleToRespawn(FractionCars[idx][fCarid]);
    FractionCars[idx][fLock] = true;
    }
    }
    }
    */


    Ich habe es mal mit deinem halt versucht mit
    LoadFracVehicles_Data


    //edit
    ich benutze auch schon gar nicht mehr die Tabelle die ich erstellt habe
    Benutze im Moment die du im Tutorial gemacht hast.
    Und da klappt auch alles super mit dem Speicher nur das Problem ist halt das er das Auto nach dem Restart nicht spawnt.

    2 Mal editiert, zuletzt von JOK3R ()


  • public LoadFracVehicles_Data()
    {
    new rows, id, createdVehs;
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    for(new i=0; i<rows; i++)
    {
    id = cache_get_field_content_int(i, "ID");
    if(id < 0 || id >= MAX_FRAC_VEHICLES) continue;
    fcInfo[id][e_modelID] = cache_get_field_content_int(i, "ModelID");
    fcInfo[id][e_x] = cache_get_field_content_float(i, "PosX");
    fcInfo[id][e_y] = cache_get_field_content_float(i, "PosY");
    fcInfo[id][e_z] = cache_get_field_content_float(i, "PosZ");
    fcInfo[id][e_a] = cache_get_field_content_float(i, "PosA");
    fcInfo[id][e_color1] = cache_get_field_content_int(i, "Color1");
    fcInfo[id][e_color2] = cache_get_field_content_int(i, "Color2");
    fcInfo[id][e_fracID] = cache_get_field_content_int(i, "FracID");
    if(fcInfo[id][e_modelID] >= 400 && fcInfo[id][e_modelID] <= 611)
    {
    fcInfo[id][e_vID] = CreateVehicle(fcInfo[id][e_modelID], fcInfo[id][e_x], fcInfo[id][e_y], fcInfo[id][e_z], fcInfo[id][e_a], fcInfo[id][e_color1], fcInfo[id][e_color2], -1);
    }
    else
    {
    printf("[ERROR] Model-ID %d existiert nicht (ID: %d).", fcInfo[id][e_modelID], id);
    }
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");
    createdVehs++;
    if(createdVehs == MAX_FRAC_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_FRAC_VEHICLES) erreicht.");
    }
    return 1;
    }

  • Debugge es bitte so und poste dann was im Server Log steht:
    public LoadFracVehicles_Data()
    {
    printf("LoadFracVehicles_Data aufgerufen.");
    new rows, id, createdVehs;
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    printf("%d Fahrzeuge gefunden.");
    for(new i=0; i<rows; i++)
    {
    id = cache_get_field_content_int(i, "ID");
    printf("id: %d", id);
    if(id < 0 || id >= MAX_FRAC_VEHICLES) continue;
    fcInfo[id][e_modelID] = cache_get_field_content_int(i, "ModelID");
    fcInfo[id][e_x] = cache_get_field_content_float(i, "PosX");
    fcInfo[id][e_y] = cache_get_field_content_float(i, "PosY");
    fcInfo[id][e_z] = cache_get_field_content_float(i, "PosZ");
    fcInfo[id][e_a] = cache_get_field_content_float(i, "PosA");
    fcInfo[id][e_color1] = cache_get_field_content_int(i, "Color1");
    fcInfo[id][e_color2] = cache_get_field_content_int(i, "Color2");
    fcInfo[id][e_fracID] = cache_get_field_content_int(i, "FracID");
    if(fcInfo[id][e_modelID] >= 400 && fcInfo[id][e_modelID] <= 611)
    {
    printf("%d %f %f %f %f %d %d", fcInfo[id][e_modelID], fcInfo[id][e_x], fcInfo[id][e_y], fcInfo[id][e_z], fcInfo[id][e_a], fcInfo[id][e_color1], fcInfo[id][e_color2]);
    fcInfo[id][e_vID] = CreateVehicle(fcInfo[id][e_modelID], fcInfo[id][e_x], fcInfo[id][e_y], fcInfo[id][e_z], fcInfo[id][e_a], fcInfo[id][e_color1], fcInfo[id][e_color2], -1);
    printf("Erstellt: %d", fcInfo[id][e_vID]);
    }
    else
    {
    printf("[ERROR] Model-ID %d existiert nicht (ID: %d).", fcInfo[id][e_modelID], id);
    }
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");
    createdVehs++;
    if(createdVehs == MAX_FRAC_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_FRAC_VEHICLES) erreicht.");
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen