[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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

  • //und das hier dann in den Callback
    static const rang_namen[][] = {"Zivilist","{00a4b3}Manager","{FF0000}Projektleiter"};
    //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    new string[256] = "Rang\tName\tOnlinestatus",status[32];
    for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    {
    cache_get_field_content(i, "name", n);
    cache_get_field_content(i, "rang", r);
    GetPlayerStatus(n, status);
    format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    }
    ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    return 1;
    }


    Das?

  • Das?

    ...ich bin mir gerade nicht sicher, ob das ein Scherz sein soll oder nicht...


    Aber in dem Code gab es nur 2 Kommentare...die klar gekennzeichnet sind...die sich auf die Positionen des Codes beziehen...


    ..also JA natürlich dieser Code... xD


    Was du auch am Code selbst ablesen kannst...da ist von cache Funktionen und rows die Rede...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke.


    Da kommen dise Fehler

    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(303) : error 017: undefined symbol "cache_get_field_content"
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(304) : error 017: undefined symbol "cache_get_field_content"

  • Da kommen dise Fehler

    Jaa....natürlich musst du das an deine MySQL Version anpassen.


    Schau mal welche Funktionen du in DEINEM Skript verwendest und verändere diese... (Schau einfach bei z.B. deinem Login/Register System)


    Das solltest du schon hinbekommen ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habs jetzt so gemacht.
    Ich hab aus deinem Vrochlag resulitert dass es so gehn könnte.



    ocmd:admins(playerid)
    {
    //Hier die mysql_tquery abfrage rein
    mysql_tquery(handle,"SELECT Name, Admin FROM `accounts`", "AdminList", "d", playerid);
    //und das hier dann in den Callback
    static const rang_namen[][] = {"Zivilist","{00a4b3}Manager","{FF0000}Projektleiter"};
    //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    new string[256] = "Rang\tName\tOnlinestatus",status[32],rows;
    for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    {
    cache_get_value_name_int(i, "Name", SpielerDaten[playerid][pName]);
    cache_get_value_name_int(i, "Admin", SpielerDaten[playerid][pAdmin]);
    GetPlayerStatus(n, status);
    format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    }
    ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    }



    forward AdminList(playerid);
    public AdminList(playerid)
    {
    static const rang_namen[][] = {"Zivilist","{00a4b3}Manager","{FF0000}Projektleiter"};
    //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    new string[256] = "Rang\tName\tOnlinestatus",status[32],rows;
    for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    {
    cache_get_value_name_int(i, "Name", SpielerDaten[playerid][pName]);
    cache_get_value_name_int(i, "Admin", SpielerDaten[playerid][pAdmin]);
    GetPlayerStatus(n, status);
    format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    }
    ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    }


    Da kommt aber nur ne leere Liste

  • Da kommt aber nur ne leere Liste

    Ich habe soo viele Fragen...


    1. Wie hast du denn in dem Kontext rows deklariert? Du musst das doch erstmal abfragen.


    2. Wieso verwendest du _int? Das sind keine ints? und was soll das mit den SpielerDaten da :D


    3. Wieso verwendest du stumpf "Name" und "Admin"...offensichtlich müssen da die Spalten Namen aus DEINER Tabelle rein..


    Und du musst dir halt jetzt sicher sein, dass sowohl "Name", als auch "Admin" in deiner Datenbank sich befinden als Spalten..

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 1. rows hab ich deklariert weil vorhin n error kam
    2. _int dachte ich mir könnt stimmen. War ohl uberlegt.
    3. Die beiden Namen stimmen so


    Ich verwende die 41-4 MySQL Version.


    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(300) : error 017: undefined symbol "cache_get_data"C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(306) : error 035: argument type mismatch (argument 3)C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(299) : warning 203: symbol is never used: "fields"

  • Okay.


    Muss ich also das geamte callback im Befehl nochmals chreibn oder kann ich das verkürzen damit ichs net doppelt hab?


    Jetzt steht bei jedem User in der Liste Projektleiter, was muss ich an noch machen dass bei nem Manger Manager steht?
    Was muss ich machen, damit nur die Teammitglieder aufgelistet werden?


    Woran kann es liegen, das mit der Server sagt der Befehl exisitiert nicht obwohl er funktioniert?


    edit: cache_get_value_name(i, "Admin", n); Hir r oder n? Bei r komt der Fehler argument type mismatch (argument 3).

  • Achso deinen Query natürlich so schreiben:


    mysql_tquery(handle,"SELECT Name, Admin FROM `accounts` WHERE `Admin`>0", "AdminList", "d", playerid);


    Und du musst return 1; einfach darunter packen.


    Und den ganzen Code, der muss nur im Callback stehen, im Command steht nur das mysql_tquery :)


    cache_get_value_name_int(i, "Admin", r);


    Muss das außerdem natürlich sein, sry..



    Das sollte eigentlich alle deine Probleme lösen.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Jetzt kommt garnichtsmehr wenn nur das tquery im Befehl steht und wenn alles drin steht kommt ne leere Liste.


    edit:


    tquery
    mysql_tquery(handle,"SELECT Name, Admin FROM `accounts` WHERE `Admin`>0", "AdminList", "d", playerid);


    callback

    forward AdminList(playerid);
    public AdminList(playerid)
    {
    static const rang_namen[][] = {"Spieler","{FF0000}Projektleitung","{00a4b3}Managment"};
    new rows;
    cache_get_row_count(rows);
    //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    new string[1024] = "Rang\tName\tOnlinestatus",status[32];
    for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    {
    cache_get_value_name_int(i, "Admin", r);
    cache_get_value_name(i, "Name", n);
    GetPlayerStatus(n, status);
    format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    }
    ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    return 1;
    }

  • wenn nur das tquery im Befehl steht

    Es soll nur das im Befehl stehen.


    printe eventuell mal rows oder schau in den mysql Log.


    Eigentlich sieht das richtig aus.


    Vorrausgesetzt in der Datenbank steht, dass Admin ein Integer ist ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • new rows;
    printf(%r); oder wie schreib ich das?


    MySQL Log sagt mir folgendes.

    01/14/19 23:16:43] [DEBUG] cache_get_row_count(0x03D3A944) (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:300)
    [01/14/19 23:16:43] [DEBUG] cache_get_row_count: return value: '1' (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:300)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name_int(0, "Admin", 0x03D3985C) (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:305)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name_int: assigned value: '7' (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:305)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name_int: return value: '1' (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:305)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name(0, "Name", 0x03D39860, 24) (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:306)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name: assigned value: 'Crafti1995' (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:306)
    [01/14/19 23:16:43] [DEBUG] cache_get_value_name: return value: '1' (C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:306)
    [01/14/19 23:16:43] [DEBUG] AMX callback executed with error '4'
    [01/14/19 23:16:43] [INFO] Callback successfully executed.


    Und bei Admin steht INT in der DB

  • Danke, jetzt werden mir nur die Nummern angezeigt, jedoch durcheinander.


    Kann man es mit GetAdminRangNamen machen anstatt der Zahlenreihe, bzw. was msste ich machen damit die Namen statt den Zahlen da stehn?


    Wie kann ichs machen, dass dDie Ränge geördnet da stehn? also Projektleiter Projektleiter Manager Manager usw?


    stock GetAdminRangName(playerid){ new string[50]; switch(SpielerDaten[playerid][pAdmin]) { case 0: string = "Spieler"; case 1: string = "Helfer"; case 2: string = "Probe Supporter"; case 3: string = "Supporter"; case 4: string = "Administration"; case 5: string = "Developer"; case 6: string = "Management"; case 7: string = "Projektleitung"; } return string;}

  • bzw. was msste ich machen damit die Namen statt den Zahlen da stehn?

    Ist das ein Scherz? :D


    Offensichtlich einfach nur die Namen darein schreiben anstatt der Zahlen...das war ja nur ein Beispiel.



    Wie kann ichs machen, dass dDie Ränge geördnet da stehn?

    Das ist etwas komplizierter, da du die ja sortieren musst, hier mal ein Beispiel:



    //Edit:
    Benötigt wird diese Include: https://raw.github.com/oscar-b…d-sort/master/md-sort.inc


    Thread: https://forum.sa-mp.com/showthread.php?t=343172

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke, jetzt kommt



    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : error 017: undefined symbol "SA_4sort"
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : warning 215: expression has no effect
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : error 001: expected token: ";", but found "sizeof"
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : warning 215: expression has no effect
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : error 029: invalid expression, assumed zero
    C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc(310) : fatal error 107: too many error messages on one line


    wegen folgender Zeile.
    SortDeepArray(table, 0, .sort=SORT_DESC);

  • Okay...interessant.


    Hmm schreibs so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S