[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
@Kaliber
Ich hab da och keine Variable.Ahh jaa okay
C//Pack oben in dein Skript #define IsPlayerAFK(%0) ((gettime()-AFK[%0])>5) //Das auch oben irgendwo hin new AFK[MAX_PLAYERS]; //Und das unter OnPlayerUpdate AFK[playerid] = gettime();
So jetzt hast ein AFK System
Und dann den Befehl so:
C
Alles anzeigenocmd:admins(playerid) { static const projektleiter[][] = {"Allrounder18"}; //Alle Projektleiter static const manager[][] = {"Kolho", "Flo20"}; //Alle Manager new string[256] = "Rang\tName\tOnlinestatus"; for(new i; i<sizeof(projektleiter); i++) { format(string,sizeof(string),"%s\n{FF0000}Projektleiter\t%s\t%s",string,projektleiter[i],GetPlayerStatus(projektleiter[i])); } for(new i; i<sizeof(manager); i++) { format(string,sizeof(string),"%s\n{00a4b3}Manager\t%s\t%s",string,manager[i],GetPlayerStatus(manager[i])); } ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay",""); return 1; } stock GetPlayerStatus(const name[]) { static const state[][] = {"{FF0000}Offline","{40FF00}Online","{FF0048}AFK"}; for(new i=GetPlayerPoolSize(),n[MAX_PLAYER_NAME]; i!=-1; i--) { if(IsPlayerNPC(i) || !GetPlayerName(i,n,MAX_PLAYER_NAME) || strcmp(name,n) != 0) continue; return state[IsPlayerAFK(i) ? 2 : 1]; } return state[0]; }
Also die Tickets hab ich aus dem Befehl weggelassen, weil ich da keine Infos hatte.Wenn du die noch haben magst, kannst du es gerne selbst probieren oder mir sagen, in welcher Variable du die speicherst, welchen Wert das haben soll, wenn der Spieler offline ist.
-
Danke, ich bekom folgendeFehler.
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(33) : error 001: expected token: "-identifier-", but found "state"
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(37) : error 001: expected token: "-identifier-", but found "["
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(37) : error 029: invalid expression, assumed zero
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(37) : warning 215: expression has no effect
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(37) : error 001: expected token: ";", but found "]"
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc(37) : fatal error 107: too many error messages on one line -
Danke, ich bekom folgendeFehler.
Ohh, jaa da war ja was, state ist ja ein Keyword

Dann nehmen wir halt Deutsch
C
Alles anzeigenstock GetPlayerStatus(const name[]) { static const status[][] = {"{FF0000}Offline","{40FF00}Online","{FF0048}AFK"}; for(new i=GetPlayerPoolSize(),n[MAX_PLAYER_NAME]; i!=-1; i--) { if(IsPlayerNPC(i) || !GetPlayerName(i,n,MAX_PLAYER_NAME) || strcmp(name,n) != 0) continue; return status[IsPlayerAFK(i) ? 2 : 1]; } return status[0]; } -
Ich hab alles geschrieben wie du meintest, edoch wnn ichd e Befehl eingeb kommt nix.
-
Ich hab alles geschrieben wie du meintest, edoch wnn ichd e Befehl eingeb kommt nix.
Hast du crashdetect drinnen?
Vielleicht meckert der wegen der String-Größe mach mal:
new string[512] = "Rang\tName\tOnlinestatus";
-
Den String hab ich geändert, an dem liegts net.
Crashdetect ist in der cfg drine ja, aber es gibt nichts aus.edit: Oh, sry ich hab was nicht mitkopiert.
Bei Onlnestatus wird nichts angezeigt. -
Hast du denn auch das ShowPlayerDialog eingefügt, so wie ich das gezeigt hatte?
Hab den Beitrag nochmal nacheditiert.
Kannst du ja auch einfach mal kurz davor den String printen

-
So funktioniert ja alles.
Bei Onlnestatus wird nichts angezeigt. -
Okay...dafuq, die Funktion will kein Array returnen...
Dämlicher Pawn Compiler

Dann mach es so:
C
Alles anzeigenocmd:admins(playerid) { static const projektleiter[][] = {"Allrounder18"}; //Alle Projektleiter static const manager[][] = {"Kolho", "Flo20"}; //Alle Manager new string[256] = "Rang\tName\tOnlinestatus",status[32]; for(new i; i<sizeof(projektleiter); i++) { GetPlayerStatus(projektleiter[i], status); format(string,sizeof(string),"%s\n{FF0000}Projektleiter\t%s\t%s",string,projektleiter[i],status); } for(new i; i<sizeof(manager); i++) { GetPlayerStatus(manager[i], status); format(string,sizeof(string),"%s\n{00a4b3}Manager\t%s\t%s",string,manager[i],status); } ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay",""); return 1; } stock GetPlayerStatus(const name[],out[]) { static const status[][] = {"{FF0000}Offline","{40FF00}Online","{FF0048}AFK"}; for(new i=GetPlayerPoolSize(),n[MAX_PLAYER_NAME]; i!=-1; i--) { if(IsPlayerNPC(i) || !GetPlayerName(i,n,MAX_PLAYER_NAME) || strcmp(name,n) != 0) continue; return format(out,32,status[IsPlayerAFK(i) ? 2 : 1]); } return format(out,32,status[0]); } -
-
Danke, hat geklappt.
Wäre es irgendwie möglich die Namen und Räge ingame einzufügen in die Liste?edit: Nach wievielen Minuten würde dann da AFK stehn?
-
Wäre es irgendwie möglich die Namen und Räge ingame einzufügen in die Liste?
Ja klar, wenn du das willst.
Das kannst du ja dann beliebig setzen.
Und das sähe dann so aus:
C
Alles anzeigenocmd:admins(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]; for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !SpielerInfo[i][pAdminRang]) continue; GetPlayerStatus(projektleiter[i], status); format(string,sizeof(string),"%s\n%s\t%s\t%s",string,rang_namen[SpielerInfo[i][pAdminRang]],projektleiter[i],status); } ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",string,"Okay",""); return 1; }//Edit:
Schau dir doch das Makro an, es sind 5 Sekunden. -
Dann kommt folgendes.
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/spielerbefehle.inc(88) : error 017: undefined symbol "projektleiter"
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/spielerbefehle.inc(88) : warning 215: expression has no effect
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/spielerbefehle.inc(88) : error 001: expected token: ";", but found "]"
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/spielerbefehle.inc(88) : error 029: invalid expression, assumed zero
C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/spielerbefehle.inc(88) : fatal error 107: too many error messages on one line -
Mir fällt gerade ein, da du das offline machen magst, kannst du das so nicht direkt machen.
Du musst ne query Abfrage machen aus der Datenbank, wo alle Admins gespeichert sind.
Und dann sowas wie:
C
Alles anzeigenocmd:admins(playerid) { //Hier die mysql_tquery abfrage rein //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; } -
Meinst du ungefähr so?
mysql_tquery(handle,"SELECT Admin FROM `accounts`", "OnQueryLoaded", "d", playerid);
Was ich anstatt OnQueryLoaded", "d", playerid); scheiben müsste weiß ich net.Admin ist eben wo drin steht welcher Admin rang es ist.
-
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.
-
Okay, welchen Code meinst du der ins Calback gehört?
-
//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...
