//und das hier dann in den Callback
Ich mache nicht umsonst Kommentare...
//und das hier dann in den Callback
Ich mache nicht umsonst Kommentare...
//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...
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
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
3. Wieso verwendest du stumpf "Name" und "Admin"...offensichtlich müssen da die Spalten Namen aus DEINER Tabelle rein..
forward AdminList(playerid);
public AdminList(playerid)
{
static const rang_namen[][] = {"Zivilist","{00a4b3}Manager","{FF0000}Projektleiter"};
new rows, fields;
cache_get_data(rows, fields);
//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(i, "Name", n);
cache_get_value_name(i, "Admin", 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","");
}
Alles anzeigen
Und du musst dir halt jetzt sicher sein, dass sowohl "Name", als auch "Admin" in deiner Datenbank sich befinden als Spalten..
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"
Dann schau doch, wie du die rows ermittelst.
Dann nur:
new rows;
cache_get_row_count(rows);
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.
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
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
assigned value: '7'
Da ist das Problem, du hast zu viele Ränge.
Musst die quasi mal alle eintragen in das Array:
static const rang_namen[][] = {"0", "1", "2", "3", "4", "5", "6", "7"};
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?
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:
forward AdminList(playerid);
public AdminList(playerid)
{
static const rang_namen[][] = {"Spieler", "Helfer", "Probe Supporter", "Supporter", "Administration", "Developer", "{00a4b3}Managment", "{FF0000}Projektleitung"};
new rows;
cache_get_row_count(rows);
const MAX_ADMINS = 15;
new table[MAX_ADMINS][2], admins[MAX_ADMINS][MAX_PLAYER_NAME];
for(new i; i<rows; i++)
{
cache_get_value_name_int(i, "Admin", table[i][0]);
cache_get_value_name(i, "Name", admins[i]);
table[i][1] = i;
}
SortDeepArray(table, 0, .sort=SORT_DESC);
new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Rang\tName\tOnlinestatus";
for(new i,idx,r,status[32]; i<rows; i++)
{
r = table[i][0], idx = table[i][1];
GetPlayerStatus(admins[idx], status);
format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],admins[idx],status);
}
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
return 1;
}
Alles anzeigen
//Edit:
Benötigt wird diese Include: https://raw.github.com/oscar-b…d-sort/master/md-sort.inc
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:
forward AdminList(playerid);
public AdminList(playerid)
{
static const rang_namen[][] = {"Spieler", "Helfer", "Probe Supporter", "Supporter", "Administration", "Developer", "{00a4b3}Managment", "{FF0000}Projektleitung"};
new rows;
cache_get_row_count(rows);
const MAX_ADMINS = 15;
new table[MAX_ADMINS][2], admins[MAX_ADMINS][MAX_PLAYER_NAME];
for(new i; i<rows; i++)
{
cache_get_value_name_int(i, "Admin", table[i][0]);
cache_get_value_name(i, "Name", admins[i]);
table[i][1] = i;
}
SortDeepArray(table, 0);
new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Rang\tName\tOnlinestatus";
for(new i=rows-1,idx,r,status[32]; i!=-1; i--)
{
r = table[i][0], idx = table[i][1];
GetPlayerStatus(admins[idx], status);
format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[r],admins[idx],status);
}
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay","");
return 1;
}
Alles anzeigen
Funktioniert, jedoch steht dann 3 mal Spieler Allrounder18 in der Liste sonst niemand