Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

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

  • Du solltest dir dringend nochmal die Grundlagen durchlesen und in Ruhe, erst mal ein den Basics feilen, bevor du direkt so große Sachen machen willst :)

    SELECT Name,Admin FROM `accounts` So müsstest du das machen, da du ja auch noch den Namen von dem Spieler benötigst, wie du in meinem Skript siehst.

    Und anstatt OnQueryLoaded brauchst einen eigenen Callback.

    C-Quellcode

    1. mysql_tquery(handle,"SELECT Name, Admin FROM `accounts`", "AdminList", "d", playerid);
    2. forward AdminList(playerid);
    3. public AdminList(playerid)
    4. {
    5. //Das hier ist dann der Callback, hier dann den anderen Code rein
    6. }


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • PAWN-Quellcode

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


    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...


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Danke.

    Da kommen dise Fehler

    PAWN-Quellcode

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

    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 ^^


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Habs jetzt so gemacht.
    Ich hab aus deinem Vrochlag resulitert dass es so gehn könnte.

    PAWN-Quellcode

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


    PAWN-Quellcode

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


    Da kommt aber nur ne leere Liste
  • Allrounder18 schrieb:

    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..

    C-Quellcode

    1. forward AdminList(playerid);
    2. public AdminList(playerid)
    3. {
    4. static const rang_namen[][] = {"Zivilist","{00a4b3}Manager","{FF0000}Projektleiter"};
    5. new rows, fields;
    6. cache_get_data(rows, fields);
    7. //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    8. new string[256] = "Rang\tName\tOnlinestatus",status[32],rows;
    9. for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    10. {
    11. cache_get_value_name(i, "Name", n);
    12. cache_get_value_name(i, "Admin", r);
    13. GetPlayerStatus(n, status);
    14. format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    15. }
    16. ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    17. }
    Alles anzeigen
    Und du musst dir halt jetzt sicher sein, dass sowohl "Name", als auch "Admin" in deiner Datenbank sich befinden als Spalten..


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

  • 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.

    PAWN-Quellcode

    1. 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).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Allrounder18 ()

  • Achso deinen Query natürlich so schreiben:

    PAWN-Quellcode

    1. 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 :)

    PAWN-Quellcode

    1. cache_get_value_name_int(i, "Admin", r);


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


    Das sollte eigentlich alle deine Probleme lösen.


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Jetzt kommt garnichtsmehr wenn nur das tquery im Befehl steht und wenn alles drin steht kommt ne leere Liste.

    edit:

    tquery

    PAWN-Quellcode

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


    callback

    PAWN-Quellcode

    1. forward AdminList(playerid);
    2. public AdminList(playerid)
    3. {
    4. static const rang_namen[][] = {"Spieler","{FF0000}Projektleitung","{00a4b3}Managment"};
    5. new rows;
    6. cache_get_row_count(rows);
    7. //Rang 0 = Zivilist, Rang 1 = Manager, Rang 2 = Projektleiter
    8. new string[1024] = "Rang\tName\tOnlinestatus",status[32];
    9. for(new i,n[MAX_PLAYER_NAME],r; i<rows; i++)
    10. {
    11. cache_get_value_name_int(i, "Admin", r);
    12. cache_get_value_name(i, "Name", n);
    13. GetPlayerStatus(n, status);
    14. format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],n,status);
    15. }
    16. ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    17. return 1;
    18. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Allrounder18 ()

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

    MySQL Log sagt mir folgendes.

    PAWN-Quellcode

    1. 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)
    2. [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)
    3. [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)
    4. [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)
    5. [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)
    6. [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)
    7. [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)
    8. [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)
    9. [01/14/19 23:16:43] [DEBUG] AMX callback executed with error '4'
    10. [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?

    PAWN-Quellcode

    1. 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;}
  • Neu

    Allrounder18 schrieb:

    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.


    Allrounder18 schrieb:

    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:


    C-Quellcode

    1. forward AdminList(playerid);
    2. public AdminList(playerid)
    3. {
    4. static const rang_namen[][] = {"Spieler", "Helfer", "Probe Supporter", "Supporter", "Administration", "Developer", "{00a4b3}Managment", "{FF0000}Projektleitung"};
    5. new rows;
    6. cache_get_row_count(rows);
    7. const MAX_ADMINS = 15;
    8. new table[MAX_ADMINS][2], admins[MAX_ADMINS][MAX_PLAYER_NAME];
    9. for(new i; i<rows; i++)
    10. {
    11. cache_get_value_name_int(i, "Admin", table[i][0]);
    12. cache_get_value_name(i, "Name", admins[i]);
    13. table[i][1] = i;
    14. }
    15. SortDeepArray(table, 0, .sort=SORT_DESC);
    16. new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Rang\tName\tOnlinestatus";
    17. for(new i,idx,r,status[32]; i<rows; i++)
    18. {
    19. r = table[i][0], idx = table[i][1];
    20. GetPlayerStatus(admins[idx], status);
    21. format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],admins[idx],status);
    22. }
    23. ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
    24. return 1;
    25. }
    Alles anzeigen
    //Edit:
    Benötigt wird diese Include: raw.github.com/oscar-broman/md-sort/master/md-sort.inc

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


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