mysql_pquery(1, "INSERT INTO `accounts` (`Name`, `Passwort`,`RPName`,`Alter`,`Geschlecht`,`Geburtsdatum`) VALUES ('Allrounder18, MD5('*****'),'Mark_Mayr','97','1','20.10.1995')", "OnUserRegister", "d")
Meinst du das? Dasist aus dem MySQL Log
Edit:
mysql_pquery(1, "INSERT INTO `accounts` (`Name`, `Passwort`,`RPName`,`Alter`,`Geschlecht`,`Geburtsdatum`) VALUES ('Allrounder18, MD5('*****'),'Mark_Mayr','97','1','20.10.1995')", "OnUserRegister", "d")
Meinst du das? Dasist aus dem MySQL Log
Edit:
Hallo!
printf("%d",RegisterInfo[playerid][register_Alter]);
format(RegisterInfo[playerid][register_Name],64,"%s",inputtext);
new query[256];
mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`RPName`,`Alter`,`Geschlecht`,`Geburtsdatum`) VALUES ('%e', MD5('%e'),'%e','%d','%d','%e')", SpielerDaten[playerid][player_Name], RegisterInfo[playerid][register_Passwort],
RegisterInfo[playerid][register_Name],RegisterInfo[playerid][register_Alter],RegisterInfo[playerid][register_Geschlecht],RegisterInfo[playerid][register_Geburtsdatum]);
Ich habe das Problem, dass in der DB immer ein falsches Alter steht. Im Print steht das richtige Alter.
Was ist da falsch?
Super, danke hat geklappt. Jetzt wird nichts mehr angezeigt wenn ich zb auf Helferverwalter geh.
Edit: Soll heißen, wenn ich auf einen Rang klicke wo keine Member den Rang haben kommt keine Fehlermeldung und auch wenn ich auf einen Rang klicke wo Member den Rang haben komt kein Dialog mit den Membern.
Edit: Fehler soweit behoben.
Okay.
Aber warum wird mir in der Liste nix angezeigt?
Edit: Was ich vergas zu erwähnen, die Namen sollen aus allen 4 Verwalterspalten ausgelesen werden.
Edit: Problem erstmal gelöst.
Edit: nächster Fehler:
Immer wenn ich bei menem Dialog auf Abbrechen geh, kommt "Aktuell ist kein Teamverwalter vorhanden."
public VerwalterList(playerid, verwalterid)
{
new rows;
cache_get_row_count(rows);
new dialogcaption[128],verwaltername[32];
switch(verwalterid)
{
case 1: verwaltername = "Helferverwalter";
case 2: verwaltername = "Firmenverwalter";
case 3: verwaltername = "Bizverwalter";
case 4: verwaltername = "Fraktionsverwalter";
case 5: verwaltername = "Parteiverwalter";
case 6: verwaltername = "Hausverwalter";
case 7: verwaltername = "Charakterbeauftragten";
case 8: verwaltername = "Eventmanager";
case 9: verwaltername = "Teamverwalter";
default: verwaltername = "";
}
printf("ID: %d Name: %s", verwalterid, verwaltername);
if(rows == 0)
{
new string[64];
format(string, sizeof(string),"Fehler: Aktuell gibt es keine %s!", verwaltername);
return SendClientMessage(playerid, ROT, string);
}
const MAX_ADMINS = 15;
new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Name\tOnlinestatus\n";
for(new i, admin[24], status[32]; i<rows; i++)
{
cache_get_value_name(i, "Name", admin);
GetPlayerStatus(admin, status);
format(string,sizeof(string),"%s\n%s\t%s",string,admin,status);
}
format(dialogcaption, sizeof(dialogcaption), ""#HTML_ROT""#SERVERNAME""#HTML_WEISS" - %s", verwaltername);
ShowPlayerDialog(playerid, 13, DIALOG_STYLE_TABLIST_HEADERS, dialogcaption ,string ,"Abbrechen", "");
return 1;
}
Mein OnDialogResponse
https://pastebin.com/j7HEqbcu
Wo liegt hier der Fehler?
Es funktioniert nicht weil dann da kommt /makeverwalter SpielerID TeamRang Spalte.
Wie gesagt, ich möchte wenn der Spieler den Verwalterrang 0 hat, dassdie Nachicht kommt das man ihn nicht nochmal entlassen kann wenn er schon entlassen ist. Heißt, wenn zb. in Spalte 1 der User entlassen wurde, kannste ihn net nochmal entlassen aus der Spalte.
Edit: Das Proble hat sich gelöst.
Jetzt möchte ich aber einen Befehl mahcen /verwalter der folgendermaßen aufgebaut ist
Tamverwalter
Eventmanager
etc
Wen man auf den Namen klickt sollen die Spieler aufgelistet werden mti dem ang
Nur werden mi die Spieler nicht angezeigt in der Liste.
Der Befehl
ocmd:verwalter(playerid,params[])
{
return ShowPlayerDialog(playerid,DIALOG_Verwalter,DIALOG_STYLE_LIST,""#HTML_ROT""#SERVERNAME" "#HTML_WEISS"| Verwalter",""#HTML_WEISS"1\n2\n3\n4\n5\n6\n7\n8\n9","Ok","Abbrechen");
}
Der Dialog
switch(listitem)
{
case 0://Allgemeine - Hilfe
{
mysql_tquery(handle,"SELECT Name FROM `accounts` WHERE Verwalter1 = 1 OR Verwalter2 = 1 OR Verwalter3 = 1 OR Verwalter4 = 1", "VerwalterList", "d", playerid);
}
Die VerwalterList
public VerwalterList(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0) return SendClientMessage(playerid,ROT,"Fehler: Aktuell gibt es keine Verwalter!");
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(i, "Name", admins[i]);
table[i][1] = i;
}
SortDeepArray(table, 0);
new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Name\tOnlinestatus";
for(new i=MAX_ADMINS-1,idx,r,status[32]; i!=-1; i--)
{
r = table[i][0], idx = table[i][1];
if(r == 0) continue;
GetPlayerStatus(admins[idx], status);
format(string,sizeof(string),"%s\n%s\t%s",string,admins[idx],status);
}
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, ""#HTML_ROT""#SERVERNAME""#HTML_WEISS" - Verwalter",string,"Abbrechen","");
return 1;
}
Die Spielernamen sollten nach dem Alphabet geordnet sein in der Liste
Was genau mach ich falsch, dass die Namen nicht angezeigt werden?
Hi!
Die mysql_static.so muss als erstes hin.
MfG
Das funktioniert eben nicht.
Die sscanf Zeile löschen? Das bringt nix.
Edit: Fail, falsche Zeile gelöscht. Warum sollte ch die Zeile Löschen wenn ich es aber so haben möchte?
Wenn ich es so mache wie du meinst klappts net.
Ich hab jetzt mal bei
if(sscanf(params,"uii",pID, verwid, spalte))return makeverwalter;
das ! entfernt, dann kommt der Sieler hat den Rag nicht mher wenn ich /makeverwalte Spieleri Rang Spalte eingeb.
ocmd:makeverwalter(playerid, params[])
{
//if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
new pID, verwid, spalte, string[128];
new bool:exists;
if(verwid(spalte) == 0)) return SendClientMessage(playerid, GRAU, "Der Spieler hat den Rang nicht mehr.");
if(!iPAA(playerid,5))
{
if(sscanf(params, "uii", pID, verwid, spalte))return makeverwalter;
spalte--;
//if(adminid < 2)return SCM(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
if(IPN(pID))return 1;
//if(IsPlayerNPC(pID))return 1;
//if(!Eingeloggt[pID])return SCM(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
//if(SD[pID][pIntro] < 1)return SCM(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
if(verwid == 0)
{
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "Du hast %s %s aus dem Teamposten %s entlassen", string,SD[pID][pName], string);
SCM(playerid, BLAU, string);
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GVRN(pID,spalte));
SCM(pID, BLAU, string);
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "AdmCMD: %s %s hat %s %s den Rang %s entzogen!", string,SD[playerid][pName],string, SD[pID][pName],GVRN(pID,spalte));
SAM(BLAU, string);
SD[pID][pVerwalter][spalte] = 0;
SUS(pID);
return 1;
}
//new bool:exists;
for(new verwalter = 0; verwalter < 4; verwalter ++)
{
if(SD[pID][pVerwalter][verwalter] == verwid) exists = true;
}
if(exists) return SendClientMessage(playerid, GRAU, "Der Spieler hat diesen Rang bereits.");
if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
format(string,sizeof(string), GVRN(pID,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GVRN(pID,spalte));
SCM(playerid, BLAU, string);
format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GVRN(playerid,spalte),SD[playerid][pName],GVRN(pID,spalte));
SCM(pID, BLAU, string);
format(string,sizeof(string), GVRN(pID,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GVRN(pID,spalte));
SAM(BLAU,string);
SUS(pID);
return 1;
}
else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
return 1;
}
Edit: Der Versuch wirft n Fehler
if(verwid(spalte) == 0)) return SendClientMessage(playerid, GRAU, "Der Spieler hat den Rang nicht mehr.");
So habe ich es versucht. Ich möchte dass diese Meldung kommt, wenn in den Feldern der Rang 0 steht.
Ich hab mit der Vorlage schon einiges versucht, jedoch klappts nicht.
Müsste so klappen:
new bool:exists;for(new verwalter = 0; verwalter < 4; verwalter ++){if(SD[pID][pVerwalter][verwalter] == verwid) exists = true;}if(exists) return SendClientMessage(playerid, GRAU, "Der Spieler hat diesen Rang bereits.");
Hier wurde es gemacht, das ne Meldung kommt wenn der Spieer den Rang schon hat. Ich möchte es noch so haben, dass ne eldung kommt wenn ihm der Rang weggenommen wurde und an ihn nochmal wegnimmt.
Danke, klingt interesant.
edoch wäre es mir lieber wenn man es so achen könnte wie @FineTime nur halt andersrum.
Danke. Ich werds probieren.
Edit: Danke, hat geklappt.
Wa müsste ich machen, dass wen man versucht jemand den Rang wegzunehmen eine Nachricht kommt, dass der Spieler den Rang nicht mehr hat?
Danke, ich werd's ausprobieren sobald ich zuhause bin.
Edit: Kommt das ganz oben in den Befehl?
Oh danke.
Wie mache ich es jetzt, dass ich jeden Rang nur 1 mal vergeben kann?
Also, dass wenn ich in Spalte 1 den Rang 4 hab, dass dieser in Spalte 2 den Rang nicht nochmal vergeben kan, bzw. dass es i eienr Spalte den Rang net doppelt geben kann?
Das ist meine aktuelle For Schleife
for(new verwalter=1; verwalter < 4; verwalter ++)
Du meinst so?
if(sscanf(params, "uii", pID, verwid, spalte--))return makeadmin;
Mit dem ; komt n Error wie du meintest. So funktioniert es aber leider nicht
Und wie überarbeite ich das kosmetisch?
Wegen der 3 war nur so n Gedanke aber es würd kein Sinn ergeben.
ocmd:makeverwalter(playerid, params[])
{
//if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
new pID, verwid, spalte, string[128];
if(!iPAA(playerid,5))
{
if(sscanf(params, "uii", pID, verwid, spalte))return makeadmin;
//if(adminid < 2)return SCM(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
if(IPN(pID))return 1;
//if(IsPlayerNPC(pID))return 1;
//if(!Eingeloggt[pID])return SCM(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
//if(SD[pID][pIntro] < 1)return SCM(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
if(verwid == 0)
{
for(new verwalter=1; verwalter < 4; verwalter ++)
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "Du hast %s %s aus dem Teamposten %s entlassen", string,SD[pID][pName], string);
SCM(playerid, BLAU, string);
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GVRN(pID,spalte));
SCM(pID, BLAU, string);
format(string,sizeof(string), GVRN(playerid,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "AdmCMD: %s %s hat %s %s den Rang %s entzogen!", string,SD[playerid][pName],string, SD[pID][pName],GVRN(pID,spalte));
SAM(BLAU, string);
SD[pID][pVerwalter][spalte] = 0;
SUS(pID);
return 1;
}
if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
format(string,sizeof(string), GVRN(pID,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GVRN(pID,spalte));
SCM(playerid, BLAU, string);
format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GVRN(playerid,spalte),SD[playerid][pName],GVRN(pID,spalte));
SCM(pID, BLAU, string);
format(string,sizeof(string), GVRN(pID,spalte));
SD[pID][pVerwalter][spalte] = verwid;
format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GVRN(pID,spalte));
SAM(BLAU,string);
SUS(pID);
return 1;
}
else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
return 1;
}
So sieht der Befehl aktuell aus. Jedoch ist Verwalter1 0 anstatt1 und Verwalter4 3 anstatt 4. Ist das normal?