Beiträge von The Sensei

    Wie funktioniert das, dass ich bei cfraktion Leerzeichen bei [Namen] machen kann?
    also z.B. "/cfraktion San Andreas Medical Department SAMD 1 0 128 -1"






    @The Sensei Ich müsste die Version R41 benutzen wenn mich nicht alles täuscht ^^

    Die Funktionen heißen so.
    cache_get_value_name_int(i, "FID", fInfo[i][fid]);
    cache_get_value_name(i, "Name", fInfo[i][f_name], 256);
    cache_get_value_name(i, "Shortname", fInfo[i][f_shortname], 64);
    cache_get_value_name_float(i, "X", fInfo[i][f_x]);
    cache_get_value_name_float(i, "Y", fInfo[i][f_y]);
    cache_get_value_name_float(i, "Z", fInfo[i][f_z]);
    cache_get_value_name_float(i, "R", fInfo[i][f_r]);
    cache_get_value_name_int(i, "Inter", fInfo[i][f_inter]);
    cache_get_value_name_int(i, "World", fInfo[i][f_world]);
    cache_get_value_name_int(i, "Typ", fInfo[i][f_typ]);
    cache_get_value_name_int(i, "Cop", fInfo[i][f_cop]);
    cache_get_value_name_int(i, "Leaderskin", fInfo[i][f_leaderskin]);
    cache_get_value_name_int(i, "Kasse", fInfo[i][f_kasse]);
    cache_get_value_name_int(i, "Mats", fInfo[i][f_mats]);
    cache_get_value_name_int(i, "Drogen", fInfo[i][f_drogen]);
    cache_get_value_name(i, "Color", fInfo[i][f_color], 64);


    Max_Frak ist definiert mit 20.Ist das so falsch?

    Mein Enum sieht so aus:
    #define MAX_FRAC 20enum fraktEnum{fid,f_name[256],f_shortname[64],Float:f_x,Float:f_y,Float:f_z,Float:f_r,f_inter,f_world,f_typ,f_cop,f_leaderskin,f_kasse,f_mats,f_drogen,f_color[64]}new fInfo[MAX_FRAC][fraktEnum];




    Welche MySQL Version besitzt du?

    Max_Frak ist definiert mit 20.
    Ist das so falsch?

    Erhöh die Länge deines Querys auf 512 o.ä. Sollte das immer noch nicht klappen, lass dir den Query per printf() ausgeben und führe in manuell durch, dann solltest du einen aufschlussreichen Fehlercode bekommen

    Er gibt das aus bei MySQL: #1136 - Column count doesn't match value count at row 1
    Er schickt diese Nachricht format(string,sizeof(string), "Du hast erfolgreich die Fraktion %s(F-ID: %d) erstellt.", fname, i); solange ab bis MAX_FRAC erreicht wurde. Kann es daran liegen?

    Wenn du die sscanf Funktion nutzt, anstelle dem Plugin, versuche es so:
    if(sscanf(params,"ssddds",fname,fshortname,typ,cop,skinid,farbcode))return SCM(playerid, -1, "Tippe: /cfraktion [name] [abkürzung] [typ 0=Neutral 1=Staat] [cop 0=Nein 1=Ja] [leaderskin-id] [farbcode(HTML)]");

    Kannst du dir mal die Query anschauen dass System speichert nicht.
    @Jeffry

    Hey,
    irgendjemand eine Idee, warum mir immer angezeigt wird. /cfraktion [name] bla bla bla?
    Keine Warnings oder Errors.
    ocmd:cfraktion(playerid, params[])
    {
    new fname[256],query[256],fshortname[64],string[256],skinid,typ,cop,farbcode[64];
    if(!isPlayerAnAdmin(playerid,4))return SCM(playerid, ERROR_FARBE, ERROR_ADMIN);
    if(sscanf(params,"s[256]s[16]ddds[56]",fname,fshortname,typ,cop,skinid,farbcode))return SCM(playerid, -1, "Tippe: /cfraktion [name] [abkürzung] [typ 0=Neutral 1=Staat] [cop 0=Nein 1=Ja] [leaderskin-id] [farbcode(HTML)]");
    for(new i=0; i<MAX_FRAC; i++)
    {
    new Float:x, Float:y, Float:z, Float:r, interior, visualworld;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, r);
    interior = GetPlayerInterior(playerid);
    visualworld = GetPlayerVirtualWorld(playerid);
    fInfo[i][fid] = i;
    fInfo[i][f_name] = fname;
    fInfo[i][f_shortname] = fshortname;
    fInfo[i][f_x] = x;
    fInfo[i][f_y] = y;
    fInfo[i][f_z] = z;
    fInfo[i][f_r] = r;
    fInfo[i][f_inter] = interior;
    fInfo[i][f_world] = visualworld;
    fInfo[i][f_typ] = typ;
    fInfo[i][f_cop] = cop;
    fInfo[i][f_leaderskin] = skinid;
    fInfo[i][f_kasse] = 0;
    fInfo[i][f_mats] = 0;
    fInfo[i][f_drogen] = 0;
    fInfo[i][f_color] = farbcode;
    format(query, sizeof(query), "INSERT INTO Fractions (FID, Name, Shortname, X, Y, Z, R, Inter, World, Typ, Cop, Leaderskin, Kasse, Mats, Drogen, Color) VALUES ('%d', '%s', '%s', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d', '%d', '%d', '%s')",
    i, fInfo[i][f_name], fInfo[i][f_shortname], fInfo[i][f_x], fInfo[i][f_y], fInfo[i][f_z], fInfo[i][f_r], fInfo[i][f_inter], fInfo[i][f_world], fInfo[i][f_typ], fInfo[i][f_cop], fInfo[i][f_leaderskin], fInfo[i][f_kasse], fInfo[i][f_mats], fInfo[i][f_drogen], fInfo[i][f_color]); format(string,sizeof(string), "Du hast erfolgreich die Fraktion %s(F-ID: %d) erstellt.", fname, i);
    mysql_tquery(handle, query);
    SCM(playerid, BABYBLAU, string);
    }
    return 1;
    }

    funktioniert. Hat an MAX_FRAC gelegen -.-

    Geändert und funktioniert leider immer noch nicht.
    Hier die Datenbank Struktur. Wie gesagt, würde gerne alle Fraktionen Laden und in der dem entsprechenden ID Speichern und sie so über das Enum immer aufrufen.


    @Jeffry
    Hier das FrakEnum.
    #define MAX_FRAC 20
    enum fraktEnum{
    fid,
    f_name[256],
    f_shortname[256],
    Float:f_x,
    Float:f_y,
    Float:f_z,
    Float:f_r,
    f_inter,
    f_world,
    f_leaderskin,
    f_kasse,
    f_mats,
    f_drogen,
    f_color
    }
    new fInfo[][fraktEnum];



    Hier die Funktion:
    forward LoadFractions_Data();
    public LoadFractions_Data()
    {
    new rows, i;
    rows = cache_num_rows();
    for(i=0; i < rows; i++)
    {
    cache_get_value_name_int(i, "FID", fInfo[i][fid]);
    cache_get_value_name(i, "Name", fInfo[i][f_name], 256);
    cache_get_value_name(i, "Shortname", fInfo[i][f_shortname], 64);
    cache_get_value_name_float(i, "X", fInfo[i][f_x]);
    cache_get_value_name_float(i, "Y", fInfo[i][f_y]);
    cache_get_value_name_float(i, "Z", fInfo[i][f_z]);
    cache_get_value_name_float(i, "R", fInfo[i][f_r]);
    cache_get_value_name_int(i, "Inter", fInfo[i][f_inter]);
    cache_get_value_name_int(i, "World", fInfo[i][f_world]);
    cache_get_value_name_int(i, "Leaderskin", fInfo[i][f_leaderskin]);
    cache_get_value_name_int(i, "Kasse", fInfo[i][f_kasse]);
    cache_get_value_name_int(i, "Mats", fInfo[i][f_mats]);
    cache_get_value_name_int(i, "Drogen", fInfo[i][f_drogen]);
    cache_get_value_name(i, "Color", fInfo[i][f_color], 64);
    printf("ID:%d Name:%s", i, fInfo[i][f_name]);
    }
    for(new o; o < MAX_FRAC; o++) printf("Name:%s", fInfo[o][f_name]);
    return 1;
    }


    Immer noch der selbe Fehler wie oben genannt.

    Geprintet wird das
    Ist immer noch nicht richtig :<

    Wie soll das gehen, i ist immer null, weil du es ausserhalb der schleife benutzt.


    for(new o; o < MAX_FRAC; o++) printf("Name:%s", fInfo[o][f_name]);


    Zum ausprobieren, versuch dies.

    Geprintet wird das:


    Code:
    forward LoadFractions_Data();
    public LoadFractions_Data()
    {
    new rows, i;
    rows = cache_num_rows();
    for(new o; o < MAX_FRAC; o++) printf("Name:%s", fInfo[o][f_name]);
    {
    cache_get_value_name_int(i, "FID", fInfo[i][fid]);
    cache_get_value_name(i, "Name", fInfo[i][f_name], 256);
    cache_get_value_name(i, "Shortname", fInfo[i][f_shortname], 64);
    cache_get_value_name_float(i, "X", fInfo[i][f_x]);
    cache_get_value_name_float(i, "Y", fInfo[i][f_y]);
    cache_get_value_name_float(i, "Z", fInfo[i][f_z]);
    cache_get_value_name_float(i, "R", fInfo[i][f_r]);
    cache_get_value_name_int(i, "Inter", fInfo[i][f_inter]);
    cache_get_value_name_int(i, "World", fInfo[i][f_world]);
    cache_get_value_name_int(i, "Leaderskin", fInfo[i][f_leaderskin]);
    cache_get_value_name_int(i, "Kasse", fInfo[i][f_kasse]);
    cache_get_value_name_int(i, "Mats", fInfo[i][f_mats]);
    cache_get_value_name_int(i, "Drogen", fInfo[i][f_drogen]);
    cache_get_value_name(i, "Color", fInfo[i][f_color], 64);
    printf("ID:%d Name:%s", i, fInfo[i][f_name]);
    }
    printf("Name:%s I:%d", fInfo[i][f_name], i);
    printf("[FRAKTIONS] %d/%d Fraktionen geladen.", rows, MAX_FRAC);
    return 1;
    }

    Das scheint denn allerdings an einer anderen Stelle in die Konsole geschrieben zu werden, da du in deinem Code ja nur den Namen ausgibst und nirgends "ID:, Name:" printest

    forward LoadFractions_Data();
    public LoadFractions_Data()
    {
    new rows, i;
    rows = cache_num_rows();
    for(i=0; i<rows; i++)
    {
    cache_get_value_name_int(i, "FID", fInfo[i][fid]);
    cache_get_value_name(i, "Name", fInfo[i][f_name], 256);
    cache_get_value_name(i, "Shortname", fInfo[i][f_shortname], 64);
    cache_get_value_name_float(i, "X", fInfo[i][f_x]);
    cache_get_value_name_float(i, "Y", fInfo[i][f_y]);
    cache_get_value_name_float(i, "Z", fInfo[i][f_z]);
    cache_get_value_name_float(i, "R", fInfo[i][f_r]);
    cache_get_value_name_int(i, "Inter", fInfo[i][f_inter]);
    cache_get_value_name_int(i, "World", fInfo[i][f_world]);
    cache_get_value_name_int(i, "Leaderskin", fInfo[i][f_leaderskin]);
    cache_get_value_name_int(i, "Kasse", fInfo[i][f_kasse]);
    cache_get_value_name_int(i, "Mats", fInfo[i][f_mats]);
    cache_get_value_name_int(i, "Drogen", fInfo[i][f_drogen]);
    cache_get_value_name(i, "Color", fInfo[i][f_color], 64);
    printf("ID:%d Name:%s", i, fInfo[i][f_name]);
    }
    printf("Name:%s", fInfo[i][f_name]);
    printf("[FRAKTIONS] %d/%d Fraktionen geladen.", rows, MAX_FRAC);
    return 1;
    }


    Hier der Code. Er printet Name:%s nicht.

    In der Schleife funktioniert es so wie es soll. Bloß außerhalb nicht. Da printet er nichts.
    Vielleicht hilft eine Erklärung für was ich es benutzen will. Will damit z.B. Bei OnPlayerSpawn den Spawn setzen es funktioniert aber immer nur der letzte Datensatz in dem Falle San Andreas Order Department. @>Apple