Gutschein Fehler

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
  • Jeffry:


    Da war der Code der schon eingelöst war und denn ich wieder einlösen kann.


    //


    Jeffry:


    Es wird immer nur die ID 0 ausgelesen.
    Wodran kann dieses Problem liegen ?


    Log:


    [01:25:08] inputtext: 874198866 / 874198866 // Gutscheincode 1
    [01:25:08] i: 0 | ID: 0
    [01:25:08] i: 1 | ID: 1
    [01:25:08] i: 1 | Vorhanden: 1
    [01:25:08] Gutscheincode bereits eingelöst
    [01:25:45] inputtext: 576606666 / 576606666 // Gutscheincode 2
    [01:25:45] i: 0 | ID: 2
    [01:25:45] i: 0 | Vorhanden: 0
    [01:25:45] Gutscheincode bereits eingelöst

    Mit freundlichen Grüßen


    4 Mal editiert, zuletzt von Inquiry ()

  • Ich habe dir doch hier die Funktionen geschrieben, nutze sie doch?
    Dann brauchst du auch keine Variablen im Skript einfügen.
    Verstehe nicht, wieso du nicht die Funktionen von mir nutzen möchtest, wenn ich sie dir bereitstelle.
    Deine Variante ist einfach nur lächerlich.

    Für das Moderationsteam:
    Ich nutze offene WLAN's und bin im Intercafe oder im Hotel. (Vor Ban wegen Multiaccount deswegen bitte eine private Nachricht, um dies zu klären).

  • Jeffry:


    case DIALOG_GUTSCHEINCR:
    {
    if(response)
    {
    new type = listitem+1;
    new string[128];
    for(new i=0; i<sizeof(Gutschein); i++)
    {
    if(Gutschein[i][ID] != 0)continue;
    Gutschein[i][Vorhanden] = 0;
    Gutschein[i][Gutscheintyp] = type;
    Gutschein[i][Gutscheincode] = random(888888888) + random(111111111);
    Gutschein[i][Gutscheincreate] = 1;
    format(query,sizeof(query),"INSERT INTO `script_gutscheine` (Gutscheincreate,Gutscheincode,Vorhanden,EingeloestName,Gutscheintyp,Inhalt) VALUES ('%d','%d','%d','Niemand','%d','%s')",Gutschein[i][Gutscheincreate],Gutschein[i][Gutscheincode],Gutschein[i][Vorhanden],Gutschein[i][Gutscheintyp],GetPremiumStatus(Gutschein[i][Gutscheintyp]));
    mysql_function_query(myCon, query, true,"LoadNewGutschein","i",i);
    format(string,sizeof(string),"Du hast erfolgreich einen Gutscheincode {40A5FE}%s{FFFFFF} erstellt.",GetPremiumStatus(Gutschein[i][Gutscheintyp]));
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string),"Dieser Gutschein {40A5FE}(%d){FFFFFF} ist sofort verwendbar.",Gutschein[i][Gutscheincode]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    return 1;
    }
    }
    if(!response)
    {
    return 1;
    }
    }



    public LoadNewGutschein(i)
    {
    return Gutschein[i][ID] = cache_insert_id(myCon);
    }




    Wenn ich ein Gutschein erstelle mit mehreren ID klappt es aber wenn ich sobald den Server restarte wird nur noch die ID 0 ausgelesen.

    Mit freundlichen Grüßen


    Einmal editiert, zuletzt von Inquiry ()

  • Also, wenn du mehrere Gutscheincodes erstellst klappt alles?
    Aber wenn du den Server neu startest, dann wird nur noch 1 Gutscheincode geladen?


    Habe ich das so richtig verstanden?
    Wenn ja, poste bitte den Code, mit dem du die Gutscheine aus der Datenbank lädst, beim Serverstart.

  • Jeffry:


    Unter OnGameModeInit


    mysql_function_query(myCon, "SELECT * FROM `script_gutscheine`", true, "LoadGutscheine", "");


    LoadGutscheine


    public LoadGutscheine()
    {
    new rows, fields, count;
    cache_get_data(rows, fields);
    for(new i=0;i<rows;i++)
    {
    new GutscheinID = cache_get_field_content_int(i, "id");
    if(GutscheinID < MAX_GUTSCHEIN)
    {
    Gutschein[GutscheinID][ID] = cache_get_field_content_int(i, "id");
    Gutschein[GutscheinID][Gutscheincode] = cache_get_field_content_int(i, "Gutscheincode");
    Gutschein[GutscheinID][Vorhanden] = cache_get_field_content_int(i, "Vorhanden");
    Gutschein[GutscheinID][Gutscheintyp] = cache_get_field_content_int(i, "Gutscheintyp");
    Gutschein[GutscheinID][Gutscheincreate] = cache_get_field_content_int(i, "Gutscheincreate");
    cache_get_field_content(i, "EingeloestName", Gutschein[GutscheinID][EingeloestName], myCon, 50);
    count++;
    }
    }
    printf("[LOAD] Gutscheine geladen: %d/%d", count, MAX_GUTSCHEIN);
    return 1;
    }

    Mit freundlichen Grüßen


  • Hm, das sieht gut aus.


    Kannst du mal zwei verschiedene Varianten durchspielen?
    Einmal kaufst du mehrere Gutscheine und versuchst sie dann einzulösen, also der Teil der geht.
    Und als zweites (entferne vorher alle Gutscheine) erstellst du gleich viele Gutscheine, startest den Server neu, und versuchst dann die Gutscheine einzulösen.


    Von beiden Varianten postest du dann den Log mit den prints.


    Gut wäre auch, wenn du bei der zweiten Variante kurz erläutern könntest, wo der Fehler ist.

  • Jeffry:


    Log:


    Normal wenn server da ist.


    23:13:58] inputtext: 754114141 / 754114141
    [23:13:58] i: 0 | ID: 9
    [23:13:58] i: 0 | Vorhanden: 0
    [23:13:58] i: 0 | Gutscheincode: 754114141
    [23:13:58] OK
    [23:14:16] inputtext: 380072308 / 380072308
    [23:14:16] i: 0 | ID: 9
    [23:14:16] i: 0 | Vorhanden: 0
    [23:14:16] i: 0 | Gutscheincode: 754114141
    [23:14:16] i: 1 | ID: 10
    [23:14:16] i: 1 | Vorhanden: 0
    [23:14:16] i: 1 | Gutscheincode: 380072308
    [23:14:16] OK
    [23:14:33] inputtext: ddd / 0
    [23:14:33] i: 0 | ID: 9
    [23:14:33] i: 0 | Vorhanden: 0
    [23:14:33] i: 0 | Gutscheincode: 754114141
    [23:14:33] i: 1 | ID: 10
    [23:14:33] i: 1 | Vorhanden: 0
    [23:14:33] i: 1 | Gutscheincode: 380072308
    [23:14:33] i: 2 | ID: 11
    [23:14:33] i: 2 | Vorhanden: 0
    [23:14:33] i: 2 | Gutscheincode: 600866404


    Nach dem Server restart


    23:18:13] inputtext: 600866404 / 600866404
    [23:18:13] i: 0 | ID: 0
    [23:18:13] i: 1 | ID: 0
    [23:18:13] i: 2 | ID: 0
    [23:18:13] i: 3 | ID: 0
    [23:18:13] i: 4 | ID: 0
    [23:18:13] i: 5 | ID: 0
    [23:18:13] i: 6 | ID: 0
    [23:18:13] i: 7 | ID: 0
    [23:18:13] i: 8 | ID: 0
    [23:18:13] i: 9 | ID: 0
    [23:18:13] i: 10 | ID: 0
    [23:18:13] i: 11 | ID: 0
    [23:18:13] i: 12 | ID: 0
    [23:18:13] i: 13 | ID: 0
    [23:18:13] i: 14 | ID: 0
    [23:18:13] i: 15 | ID: 0
    [23:18:13] i: 16 | ID: 0
    [23:18:13] i: 17 | ID: 0
    [23:18:13] i: 18 | ID: 0
    [23:18:13] i: 19 | ID: 0
    [23:18:13] i: 20 | ID: 0
    [23:18:13] i: 21 | ID: 0
    [23:18:13] i: 22 | ID: 0
    [23:18:13] i: 23 | ID: 0
    [23:18:13] i: 24 | ID: 0
    [23:18:13] i: 25 | ID: 0
    [23:18:13] i: 26 | ID: 0
    [23:18:13] i: 27 | ID: 0
    [23:18:13] i: 28 | ID: 0
    [23:18:13] i: 29 | ID: 0
    [23:18:13] i: 30 | ID: 0
    [23:18:13] i: 31 | ID: 0
    [23:18:13] i: 32 | ID: 0
    [23:18:13] i: 33 | ID: 0
    [23:18:13] i: 34 | ID: 0
    [23:18:13] i: 35 | ID: 0
    [23:18:13] i: 36 | ID: 0
    [23:18:13] i: 37 | ID: 0
    [23:18:13] i: 38 | ID: 0
    [23:18:13] i: 39 | ID: 0
    [23:18:13] i: 40 | ID: 0
    [23:18:13] i: 41 | ID: 0
    [23:18:13] i: 42 | ID: 0
    [23:18:13] i: 43 | ID: 0
    [23:18:13] i: 44 | ID: 0
    [23:18:13] i: 45 | ID: 0
    [23:18:13] i: 46 | ID: 0
    [23:18:13] i: 47 | ID: 0
    [23:18:13] i: 48 | ID: 0
    [23:18:13] i: 49 | ID: 0
    [23:18:13] Kein Code gefunden
    [23:18:28] inputtext: 754114141 / 754114141
    [23:18:28] i: 0 | ID: 0
    [23:18:28] i: 1 | ID: 0
    [23:18:28] i: 2 | ID: 0
    [23:18:28] i: 3 | ID: 0
    [23:18:28] i: 4 | ID: 0
    [23:18:28] i: 5 | ID: 0
    [23:18:28] i: 6 | ID: 0
    [23:18:28] i: 7 | ID: 0
    [23:18:28] i: 8 | ID: 0
    [23:18:28] i: 9 | ID: 0
    [23:18:28] i: 10 | ID: 0
    [23:18:28] i: 11 | ID: 0
    [23:18:28] i: 12 | ID: 0
    [23:18:28] i: 13 | ID: 0
    [23:18:28] i: 14 | ID: 0
    [23:18:28] i: 15 | ID: 0
    [23:18:28] i: 16 | ID: 0
    [23:18:28] i: 17 | ID: 0
    [23:18:28] i: 18 | ID: 0
    [23:18:28] i: 19 | ID: 0
    [23:18:28] i: 20 | ID: 0
    [23:18:28] i: 21 | ID: 0
    [23:18:28] i: 22 | ID: 0
    [23:18:28] i: 23 | ID: 0
    [23:18:28] i: 24 | ID: 0
    [23:18:28] i: 25 | ID: 0
    [23:18:28] i: 26 | ID: 0
    [23:18:28] i: 27 | ID: 0
    [23:18:28] i: 28 | ID: 0
    [23:18:28] i: 29 | ID: 0
    [23:18:28] i: 30 | ID: 0
    [23:18:28] i: 31 | ID: 0
    [23:18:28] i: 32 | ID: 0
    [23:18:28] i: 33 | ID: 0
    [23:18:28] i: 34 | ID: 0
    [23:18:28] i: 35 | ID: 0
    [23:18:28] i: 36 | ID: 0
    [23:18:28] i: 37 | ID: 0
    [23:18:28] i: 38 | ID: 0
    [23:18:28] i: 39 | ID: 0
    [23:18:28] i: 40 | ID: 0
    [23:18:28] i: 41 | ID: 0
    [23:18:28] i: 42 | ID: 0
    [23:18:28] i: 43 | ID: 0
    [23:18:28] i: 44 | ID: 0
    [23:18:28] i: 45 | ID: 0
    [23:18:28] i: 46 | ID: 0
    [23:18:28] i: 47 | ID: 0
    [23:18:28] i: 48 | ID: 0
    [23:18:28] i: 49 | ID: 0
    [23:18:28] Kein Code gefunden
    [23:18:44] inputtext: 380072308 / 380072308
    [23:18:44] i: 0 | ID: 0
    [23:18:44] i: 1 | ID: 0
    [23:18:44] i: 2 | ID: 0
    [23:18:44] i: 3 | ID: 0
    [23:18:44] i: 4 | ID: 0
    [23:18:44] i: 5 | ID: 0
    [23:18:44] i: 6 | ID: 0
    [23:18:44] i: 7 | ID: 0
    [23:18:44] i: 8 | ID: 0
    [23:18:44] i: 9 | ID: 0
    [23:18:44] i: 10 | ID: 0
    [23:18:44] i: 11 | ID: 0
    [23:18:44] i: 12 | ID: 0
    [23:18:44] i: 13 | ID: 0
    [23:18:44] i: 14 | ID: 0
    [23:18:44] i: 15 | ID: 0
    [23:18:44] i: 16 | ID: 0
    [23:18:44] i: 17 | ID: 0
    [23:18:44] i: 18 | ID: 0
    [23:18:44] i: 19 | ID: 0
    [23:18:44] i: 20 | ID: 0
    [23:18:44] i: 21 | ID: 0
    [23:18:44] i: 22 | ID: 0
    [23:18:44] i: 23 | ID: 0
    [23:18:44] i: 24 | ID: 0
    [23:18:44] i: 25 | ID: 0
    [23:18:44] i: 26 | ID: 0
    [23:18:44] i: 27 | ID: 0
    [23:18:44] i: 28 | ID: 0
    [23:18:44] i: 29 | ID: 0
    [23:18:44] i: 30 | ID: 0
    [23:18:44] i: 31 | ID: 0
    [23:18:44] i: 32 | ID: 0
    [23:18:44] i: 33 | ID: 0
    [23:18:44] i: 34 | ID: 0
    [23:18:44] i: 35 | ID: 0
    [23:18:44] i: 36 | ID: 0
    [23:18:44] i: 37 | ID: 0
    [23:18:44] i: 38 | ID: 0
    [23:18:44] i: 39 | ID: 0
    [23:18:44] i: 40 | ID: 0
    [23:18:44] i: 41 | ID: 0
    [23:18:44] i: 42 | ID: 0
    [23:18:44] i: 43 | ID: 0
    [23:18:44] i: 44 | ID: 0
    [23:18:44] i: 45 | ID: 0
    [23:18:44] i: 46 | ID: 0
    [23:18:44] i: 47 | ID: 0
    [23:18:44] i: 48 | ID: 0
    [23:18:44] i: 49 | ID: 0
    [23:18:44] Kein Code gefunden



    Jeffry kannst Du über TV mal gucken ?
    über Tv gehts besser und schneller.

    Mit freundlichen Grüßen


  • Geht leider grade nicht, da ich erst am Sonntag wieder zu Hause bin, bzw vielleicht morgen Abend wenn es noch reicht.


    Schalte mal den MySQL Debug Modus an und poste was im Log steht, wenn du den Server startest, und die Gutscheine geladen werden sollen, dann schaue ich mir den morgen mal durch, und wenn ich nichts finde schaue ich am Sonntag Mittag mal mit TeamViewer drauf, das ist bestimmt nur eine Kleinigkeit, aber vielleicht gibt der Log da schon Aufschluss drüber, da es wohl darauf hinausläuft, dass beim Laden was schief geht.

  • Jeffry:


    MySQL_Debug:


    Spoiler anzeigen
    [14:46:32] [DEBUG] Calling callback "LoadGutscheine"..
    [14:46:32] [DEBUG] cache_get_data - connection: 1
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "id", connection: 1
    [14:46:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("id")
    [14:46:32] [ERROR] cache_get_field_content_int - invalid datatype
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "id", connection: 1
    [14:46:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("id")
    [14:46:32] [ERROR] cache_get_field_content_int - invalid datatype
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Gutscheincode", connection: 1
    [14:46:32] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Gutscheincode", data: "928669444"
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Vorhanden", connection: 1
    [14:46:32] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Vorhanden", data: "0"
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Gutscheintyp", connection: 1
    [14:46:32] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Gutscheintyp", data: "9"
    [14:46:32] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Gutscheincreate", connection: 1
    [14:46:32] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Gutscheincreate", data: "1"
    [14:46:32] [DEBUG] cache_get_field_content - row: 0, field_name: "EingeloestName", connection: 1, max_len: 50
    [14:46:32] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "EingeloestName", data: "Niemand"
    [14:46:32] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called

    Mit freundlichen Grüßen


  • Da haben wir doch den Fehler.

    Zitat

    [14:46:32] [WARNING] CMySQLResult::GetRowDataByName - field not found ("id")


    Du hast in deiner Tabelle keine Spalte die "id" heißt. Sprich, diese Spalte kann nicht ausgelesen werden. Und mit ziemlicher Wahrscheinlichkeit speicherst du die ID gar nicht beim speichern der Gutscheine.


    Füge eine Spalte id zu deiner Tabelle hinzu und füge das Speichern der ID zu speichern der Gutscheine hinzu.
    Dann sollte es klappen.

  • Jeffry:


    Ich habe die ID gespeichert und er lädt die auch.



    Save


    public SaveGutscheine()
    {
    new count = 0, mainQuery[1537], secondQuery[256];
    for(new i=1;i<MAX_GUTSCHEIN;i++)
    {
    if(Gutschein[i][Gutscheincreate] == 1)
    {
    format(secondQuery, sizeof(secondQuery), "UPDATE `script_gutscheine` SET `Gutscheincode`='%i', `Vorhanden`='%i',`Gutscheintyp`='%i',",
    Gutschein[i][Gutscheincode],Gutschein[i][Vorhanden],Gutschein[i][Gutscheintyp]);
    strcat(mainQuery, secondQuery);
    format(secondQuery, sizeof(secondQuery), "`Gutscheincreate`='%i', `EingeloestName`='%s' WHERE `id`='%d'",
    Gutschein[i][Gutscheincreate],Gutschein[i][EingeloestName],Gutschein[i][ID]);
    strcat(mainQuery, secondQuery);
    mysql_function_query(myCon, mainQuery, false, "", "");
    strdel(mainQuery, 0, sizeof(mainQuery));
    count++;
    }
    }
    printf("[SAVE] Gutscheine wurden gespeichert. (%d/%d)", count, MAX_GUTSCHEIN);
    return 1;
    }


    Load


    public LoadGutscheine()
    {
    new rows, fields, count;
    cache_get_data(rows, fields);
    for(new i=0;i<rows;i++)
    {
    new GutscheinID = cache_get_field_content_int(i, "id");
    if(GutscheinID < MAX_GUTSCHEIN)
    {
    Gutschein[GutscheinID][ID] = cache_get_field_content_int(i, "id");
    Gutschein[GutscheinID][Gutscheincode] = cache_get_field_content_int(i, "Gutscheincode");
    Gutschein[GutscheinID][Vorhanden] = cache_get_field_content_int(i, "Vorhanden");
    Gutschein[GutscheinID][Gutscheintyp] = cache_get_field_content_int(i, "Gutscheintyp");
    Gutschein[GutscheinID][Gutscheincreate] = cache_get_field_content_int(i, "Gutscheincreate");
    cache_get_field_content(i, "EingeloestName", Gutschein[GutscheinID][EingeloestName], myCon, 50);
    count++;
    }
    }
    printf("[LOAD] Gutscheine geladen: %d/%d", count, MAX_GUTSCHEIN);
    return 1;
    }

    Mit freundlichen Grüßen


  • Kannst du mal noch einen Screenshot von der Tabelle in der Datenbank posten (Struktur und Daten)?


    Wenn sich da auch nichts findet, was auf die fehlende id Spalte hinweist, dann muss ich es mir doch mal anschauen indem ich mich draufschalte.