Mysql Frage

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
  • Hallöchen Brotfische,


    Ich wollte gerne einen Befehl schreiben der die Fraktionsrangnamen aus der Msysql Datenbank Tabelle heraus läd.
    Angenommen der Befehl heißt "/showrangnames", nur der Leader einer Fraktion kann den Befehl ausführen und dann sollte eigentlich ein Dialog kommen mit den Rangnamen der Fraktion, leider weiß ich nicht genau wie ich das machen soll.


    Mein Code bis jetzt:



    Ich hoffe es kann mir jemand helfen :rolleyes: am besten mit Bespiel oder so damit ich es mir besser vorstellen kann.


    Mit freundlichen Grüßen German_ScripterHD


    //edit:


    Rechtschreibung


    Mit freundlichen Grüßen
    German_ScripterHD

    2 Mal editiert, zuletzt von German_ScripterHD ()

  • Ich leite dich mal zum SA-MP Wiki, wo das Plugin ausführlich ausgeführt wird.


    wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format


    Dort steht auch ein Beispiel. Dies sollte dir weiterhelfen ;).

    Danke für deine Hilfe aber habe es in der zwischen Zeit schon heraus gefunden 8)
    Aber nochmal Danke an euch beide :thumbup:


    //Edit:
    ________________________________________________________________________________________________________________________________________________________


    Nun habe ich folgendes Problem: Sobald ich "/showrangnames" eintippe ist der Dialog bei mir leer..." Aber beim print werden alle richtig ausgeladen... was ist der Fehler?


    Code:



    print:


    C
    [21:46:02] OnGameModeInit - LoadFraktionRangs - wird geladen
    [21:46:02] OnGameModeInit - LoadFraktionRangs - wurde geladen
    [21:46:03] LoadFraktionRangs - wurde aufgerufen
    [21:46:03] Step 1: LoadFraktionRangs - rangname1: Rang1
    [21:46:03] Step 2: LoadFraktionRangs - rangname2: Rang2
    [21:46:03] Step 3: LoadFraktionRangs - rangname3: Rang3
    [21:46:03] Step 4: LoadFraktionRangs - rangname4: Rang4
    [21:46:03] Step 5: LoadFraktionRangs - rangname6: Rang5
    [21:46:03] Step 6: LoadFraktionRangs - rangname6: Rang6
    [21:46:03] LoadFraktionRangs - wurde geladen


    Mit freundlichen Grüßen
    German_ScripterHD

    Einmal editiert, zuletzt von German_ScripterHD ()


  • public LoadFraktionRangs()
    {
    print("LoadFraktionRangs - wurde aufgerufen");
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields);
    if(!num_rows)return print("LoadFraktionRangs - num_rows = 0");
    for(new i = 0; i < num_rows; i++)
    {
    new result[92];
    cache_get_field_content(0, "rangname1", result);
    format(fInfo[i][frang1], 92, result);
    cache_get_field_content(0, "rangname2", result);
    format(fInfo[i][frang2], 92, result);
    cache_get_field_content(0, "rangname3", result);
    format(fInfo[i][frang3], 92, result);
    cache_get_field_content(0, "rangname4", result);
    format(fInfo[i][frang4], 92, result);
    cache_get_field_content(0, "rangname5", result);
    format(fInfo[i][frang5], 92, result);
    cache_get_field_content(0, "rangname6", result);
    format(fInfo[i][frang6], 92, result);

    printf("Step 1: LoadFraktionRangs - rangname1: %s",fInfo[i][frang1]);
    printf("Step 2: LoadFraktionRangs - rangname2: %s",fInfo[i][frang2]);
    printf("Step 3: LoadFraktionRangs - rangname3: %s",fInfo[i][frang3]);
    printf("Step 4: LoadFraktionRangs - rangname4: %s",fInfo[i][frang4]);
    printf("Step 5: LoadFraktionRangs - rangname5: %s",fInfo[i][frang5]);
    printf("Step 6: LoadFraktionRangs - rangname6: %s",fInfo[i][frang6]);
    }
    return print("LoadFraktionRangs - wurde geladen");
    }

    Versuchs mal so.

  • Klappt leider immer noch nicht... beim print wird alles geladen aber beim aufrufen des befehls ist die Liste des Dialogs leer.


    print:

    C
    [22:13:59] LoadFraktionRangs - wurde aufgerufen
    [22:13:59] Step 1: LoadFraktionRangs - rangname1: Rang1
    [22:13:59] Step 2: LoadFraktionRangs - rangname2: Rang2
    [22:13:59] Step 3: LoadFraktionRangs - rangname3: Rang3
    [22:13:59] Step 4: LoadFraktionRangs - rangname4: Rang4
    [22:13:59] Step 5: LoadFraktionRangs - rangname5: Rang5
    [22:13:59] Step 6: LoadFraktionRangs - rangname6: Rang6
    [22:13:59] LoadFraktionRangs - wurde geladen


    Mit freundlichen Grüßen
    German_ScripterHD

  • Es sieht eigentlich alles korrekt aus.

    ocmd:showrangnames(playerid)
    {
    new string[145];
    if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid, -1, "Du bist in keiner Fraktion.");
    if(sInfo[playerid][rang] != 5)return SendClientMessage(playerid, -1, noaccess);
    new fID = sInfo[playerid][fraktion];
    format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s", fInfo[fID][frang1], fInfo[fID][frang2], fInfo[fID][frang3], fInfo[fID][frang4], fInfo[fID][frang5], fInfo[fID][frang6]);
    ShowPlayerDialog(playerid, DIALOG_RANGNAMES, DIALOG_STYLE_LIST, "Fraktionsränge", string, "Ändern", "Schließen");
    return 1;
    }

    Versuchs mal so.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schau mal ob die Ränge dir bei SendClientMessage angezeigt werden.
    Wenn, weißt du wenigsten, dass es an dem Dialog liegt.

    Habe es jetzt so eingebaut:


    C
    ocmd:showrangnames(playerid)
    {
        new string[145];
        if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid, -1, "Du bist in keiner Fraktion.");
        if(sInfo[playerid][rang] != 5)return SendClientMessage(playerid, -1, noaccess);
        new fID = sInfo[playerid][fraktion];
        format(string,sizeof(string),"%s-%s-%s-%s-%s-%s", fInfo[fID][frang1], fInfo[fID][frang2], fInfo[fID][frang3], fInfo[fID][frang4], fInfo[fID][frang5], fInfo[fID][frang6]);                SendClientMessage(playerid,COLOR_GREEN,string);
       ShowPlayerDialog(playerid, DIALOG_RANGNAMES, DIALOG_STYLE_LIST, "Fraktionsränge", string, "Ändern", "Schließen");
        return 1;
    }

    Die SendClientMessage hat mir jetzt folgendes ausgegeben "------" sowie auch der Dialog, das bedeutet es wird "%s" nicht ausgeführt bzw. nicht geladen... warum auch immer, leider bin ich jetzt echt am enden und weiß auch nicht mehr weiter.


    //Edit:


    Problem weiterhin vorhanden!


    Mit freundlichen Grüßen
    German_ScripterHD

    Einmal editiert, zuletzt von German_ScripterHD ()

  • Jetzt hat der print folgendes ergeben:


    C
    [13:55:47] LoadFraktionRangs - wurde aufgerufen
    [13:55:47] Step 1: LoadFraktionRangs - rangname1: 
    [13:55:47] Step 2: LoadFraktionRangs - rangname2: 
    [13:55:47] Step 3: LoadFraktionRangs - rangname3: 
    [13:55:47] Step 4: LoadFraktionRangs - rangname4: 
    [13:55:47] Step 5: LoadFraktionRangs - rangname5: 
    [13:55:47] Step 6: LoadFraktionRangs - rangname6: 
    [13:55:47] LoadFraktionRangs - wurde geladen


    Mit freundlichen Grüßen
    German_ScripterHD