Clansystem lädt falsch

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Clansystem lädt falsch

    Ich habe folgendes Problem:
    Ich erstelle 3 Clans und lade die Clans. Alles klappt perfekt.
    Nun lösche ich aber Clan 2. Jetzt ist alles um eine ID verschoben und die Clans werden bei den Spielern also falsch angezeigt.

    C-Quellcode

    1. mysql_tquery(dbhandle, "SELECT * FROM `Clans`", "LoadClans", "");
    2. void LoadClans()
    3. {
    4. new rows = cache_num_rows(), j;
    5. for(new i = 0; i < rows; i++)
    6. {
    7. j = i+1;
    8. Clan[j][cID] = cache_get_field_content_int(i,"ID",dbhandle);
    9. cache_get_field_content(i,"name",Clan[j][cName],dbhandle,32);
    10. cache_get_field_content(i,"Leader",Clan[j][cLeader],dbhandle,32);
    11. Clan[j][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
    12. Clan[j][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
    13. Clan[j][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
    14. Clan[j][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
    15. Clan[j][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
    16. Clan[j][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
    17. Clan[j][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
    18. Clan[j][cHouseKey] = cache_get_field_content_int(i,"Housekey",dbhandle);
    19. cache_get_field_content(i,"Farbe",Clan[j][cFarbe],dbhandle,11);
    20. new Float:kd = floatdiv(Clan[j][cSiege],Clan[j][cNiederlagen]);
    21. Clan[j][Winrate] = kd;
    22. momentaneClans++;
    23. }
    24. return 1;
    25. }
    Alles anzeigen
  • Jeffry schrieb:

    Du musst die ID des Clans auch aus der Datenbank lesen, und anstatt i+1 der Variable j zuweisen.

    C-Quellcode

    1. public LoadClans()
    2. {
    3. new string[128];
    4. for(new i = 0; i < MAX_CLANS; i++)
    5. {
    6. format(string, sizeof(string),"SELECT * FROM `Clans` WHERE `ID` = '%d'", i);
    7. mysql_query(dbhandle,string);
    8. mysql_store_result();
    9. if(mysql_num_rows() != 0)
    10. {
    11. mysql_fetch_row(string);
    12. Clan[i][cID] = cache_get_field_content_int(i,"ID",dbhandle);
    13. cache_get_field_content(i,"name",Clan[i][cName],dbhandle,32);
    14. printf("Schleife: %d, cID: %d, cName: %s",i,Clan[i][cID],Clan[i][cName]);
    15. cache_get_field_content(i,"Leader",Clan[i][cLeader],dbhandle,32);
    16. Clan[i][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
    17. Clan[i][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
    18. Clan[i][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
    19. Clan[i][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
    20. Clan[i][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
    21. Clan[i][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
    22. Clan[i][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
    23. Clan[i][cHouseKey] = cache_get_field_content_int(i,"Housekey",dbhandle);
    24. cache_get_field_content(i,"Farbe",Clan[i][cFarbe],dbhandle,11);
    25. new Float:kd = floatdiv(Clan[i][cSiege],Clan[i][cNiederlagen]);
    26. Clan[i][Winrate] = kd;
    27. momentaneClans++;
    28. }
    29. mysql_free_result();
    30. }
    31. printf("[LOAD] %d/%d Clans geladen",momentaneClans,MAX_CLANS);
    32. return 1;
    33. }
    Alles anzeigen
    Ausgabe:
    [17:51:50] Schleife: 1, cID: 0, cName: NULL
    [17:51:50] Schleife: 3, cID: 0, cName: NULL

    Funktioniert wohl nicht ganz.
  • Warum hast du es jetzt so komisch geschrieben?

    C-Quellcode

    1. mysql_tquery(dbhandle, "SELECT * FROM `Clans`", "LoadClans", "");
    2. forward LoadClans();
    3. public LoadClans()
    4. {
    5. new rows = cache_num_rows(), j;
    6. for(new i = 0; i < rows; i++)
    7. {
    8. j = cache_get_field_content_int(i,"ID",dbhandle);
    9. Clan[j][cID] = cache_get_field_content_int(i,"ID",dbhandle);
    10. cache_get_field_content(i,"name",Clan[j][cName],dbhandle,32);
    11. cache_get_field_content(i,"Leader",Clan[j][cLeader],dbhandle,32);
    12. Clan[j][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
    13. Clan[j][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
    14. Clan[j][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
    15. Clan[j][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
    16. Clan[j][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
    17. Clan[j][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
    18. Clan[j][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
    19. Clan[j][cHouseKey] = cache_get_field_content_int(i,"Housekey",dbhandle);
    20. cache_get_field_content(i,"Farbe",Clan[j][cFarbe],dbhandle,11);
    21. new Float:kd = floatdiv(Clan[j][cSiege],Clan[j][cNiederlagen]);
    22. Clan[j][Winrate] = kd;
    23. momentaneClans++;
    24. printf("Schleife: %d, cID: %d, cName: %s",i,Clan[j][cID],Clan[j][cName]);
    25. }
    26. printf("[LOAD] %d/%d Clans geladen",momentaneClans,MAX_CLANS);
    27. return 1;
    28. }
    Alles anzeigen