Aber dann werden doch auch die Spieler aufgelistet die keinen Adminrang haben
Blödsinn. Dafür hast du doch die Abfrage:
sI[i][pAdminDuty]
Verstehst du denn überhaupt den Code, den du da fabrizierst?
Aber dann werden doch auch die Spieler aufgelistet die keinen Adminrang haben
Blödsinn. Dafür hast du doch die Abfrage:
sI[i][pAdminDuty]
Verstehst du denn überhaupt den Code, den du da fabrizierst?
ja natürlich, das ist schwachsinn. Jeder Spieler hat in seinem Enum bool:pAdminDuty also jeder Spieler wird dann als Admin aufgelistet der nicht im Dienst ist.
Enum:
enum SpielerDaten {
p_ID,
pName[MAX_PLAYER_NAME],
pPasswort[65],
pGeschlecht,
pGeburtsdatum[11],
pTutorial,
pLevel,
pBarGeld,
pSpawnChange,
pSkin,
pAdmin,
pPerso,
pFraktion,
pFraktionRang,
bool:pLoggedIn,
bool:pPersoBeantragt,
bool:pPersoAbholbar,
bool:pAdminDuty,
};
Blödsinn. Dafür hast du doch die Abfrage:sI[i][pAdminDuty]
Verstehst du denn überhaupt den Code, den du da fabrizierst?
Du verstehst ihn anscheinend genau so wenig wie er.
@Marcel_Colbetti:
Ersetz die zweite for loop hiermit: if(sI[i][pAdmin] > 0)
Du verstehst ihn anscheinend genau so wenig wie er.
@Marcel_Colbetti:
Ersetz die zweite for loop hiermit: if(sI[i][pAdmin] > 0)
Wieso verwendet er bitte zwei for schleifen ? Das wäre mit einer noch einfacher o.o
Das sollte wohl ausreichen:
ocmd:admins(playerid, params[]) {
new d_info[512], count;
for(new i; i < MAX_PLAYERS; i++) {
if(sI[i][pAdminDuty] == true && sI[i][pAdmin] > 0) { // Wobei " && sI[i][pAdmin] > 0 " nicht nötig ist, da ja nur Admins Duty sein können, vermute ich
format(d_info, sizeof(d_info), "%s"HTML_ROT"%s ( %s )\n", d_info, sI[i][pName], GetAdminRangName(sI[i][pAdmin]));
count++;
} else if(sI[i][pAdminDuty] == false && sI[i][pAdmin] > 0) {
format(d_info, sizeof(d_info), "%s"HTML_WEIS"%s ( %s )\n", d_info, sI[i][pName], GetAdminRangName(sI[i][pAdmin]));
count++;
}
}
if(count == 0) format(d_info, sizeof d_info, "Keine Administratoren online");
ShowPlayerDialog(playerid, D_USER_ADMINLIST, DIALOG_STYLE_MSGBOX, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Adminliste", d_info, "Schliesen", "");
return 1;
}
Alles anzeigen
//Edit: Das kann man alles noch verkürzen, aber das sollte für dich ausreichen, damit du es verstehst.
//Edit 2:
Das wäre die verkürzte Möglichkeit:
ocmd:admins(playerid, params[]) {
new d_info[512], count;
for(new i; i < MAX_PLAYERS; i++) {
if(sI[i][pAdmin] > 0) {
format(d_info, sizeof(d_info), "%s%s%s ( %s )\n", d_info, (sI[i][pAdminDuty] == true ? (HTML_ROT) : (HTML_WEIS)), sI[i][pName], GetAdminRangName(sI[i][pAdmin]));
count++;
}
}
if(count == 0) format(d_info, sizeof d_info, "Keine Administratoren online");
ShowPlayerDialog(playerid, D_USER_ADMINLIST, DIALOG_STYLE_MSGBOX, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Adminliste", d_info, "Schliesen", "");
return 1;
}
Alles anzeigen
Das wäre die verkürzte Möglichkeit:
Man könnte das sogar noch weiter auf die Spitze treiben, indem man den Zähler "count" weg lässt, und prüft, ob etwas im String steht.
Da dann in der Schleife mit dem if praktisch nur noch eine Anweisung (format) steht, liest es sich auch in einer Zeile problemlos.
ocmd:admins(playerid, params[]) {
new d_info[512];
for(new i; i < MAX_PLAYERS; i++) if(sI[i][pAdmin] > 0) format(d_info, sizeof(d_info), "%s%s%s ( %s )\n", d_info, (sI[i][pAdminDuty] == true ? (HTML_ROT) : (HTML_WEIS)), sI[i][pName], GetAdminRangName(sI[i][pAdmin]));
if(!strlen(d_info)) format(d_info, sizeof d_info, "Keine Administratoren online");
return ShowPlayerDialog(playerid, D_USER_ADMINLIST, DIALOG_STYLE_MSGBOX, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Adminliste", d_info, "Schliesen", "");
}
Heyy, ich hätte noch eine Frage. Und zwar warum wird in die Tabelle nix eingetragen?
stock CreateFraktionTabelle()
{
new query[1024];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"fraktionen` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Kasse` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SafeWaffenteile` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SafeDrogen` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SafeSpice` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang0` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang1` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang2` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang3` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang4` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang5` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Rang6` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Member` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `MaxMember` int(11) NOT NULL", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
mysql_pquery(handle, query);
CreateFraktionData();
return 1;
}
stock CreateFraktionData()
{
new query[2048];
format(query, sizeof(query), "INSERT INTO `"SQL_DTAG"fraktionen` (`ID`, `Kasse`, `SafeWaffenteile`, `SafeDrogen`, `SafeSpice`, `Rang0`, `Rang1`, `Rang2`, `Rang3`, `Rang4`, `Rang5`, `Rang6`, `Member`, `MaxMember`) VALUES");
format(query, sizeof(query), "%s (0, 0, 0, 0, 0, '', '', '', '', '', '', '', 0, 1000000),", query);
format(query, sizeof(query), "%s (1, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (2, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (3, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'Vize Präsident', 'Präsident', 0, 12),", query);
format(query, sizeof(query), "%s (4, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'Arzt', 'Oberarzt', 0, 12),", query);
format(query, sizeof(query), "%s (5, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (6, 1000000, 0, 0, 0, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (7, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (8, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (9, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (10, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (11, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (12, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (13, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (14, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12),", query);
format(query, sizeof(query), "%s (15, 500000, 20000, 500, 1000, 'Rang0', 'Rang1', 'Rang2', 'Rang3', 'Ausbilder', 'CoLeader', 'Leader', 0, 12);", query);
mysql_pquery(handle, query);
}
Alles anzeigen
Die Tabelle wird jedoch erstellt. Aber nix eingetragen
Im MySQL Log steht nix
Wird die Funktion auch aufgerufen?
Hab mein Fehler gefunden
hab ein return vergessen ![]()
Wie macht man ein Tutorial nach dem spawnen?
Möchte das mal erklärt bekommen, damit ich sowas selbst kann.^^
MfG
PrimeTV.
Warum wird die Datenbank nicht erstellt?
MySQL Log spruckt nix aus.
stock CreateAccountTabelle()
{
new query[2048], query2[256];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Spielername` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Passwort` varchar(65) NOT NULL,", query);
format(query, sizeof(query), "%s `Geschlecht` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geburtsdatum` varchar(11) NOT NULL,,", query);
format(query, sizeof(query), "%s `Tutorial` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Level` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geld` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SpawnChange` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Skin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Admin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Perso` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Fraktion` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `FraktionRang` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `LastIP` varchar(16) NOT NULL", query);
format(query, sizeof(query), "%s ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", query);
mysql_pquery(handle, query);
format(query2, sizeof(query2), "ALTER TABLE `"SQL_DTAG"accounts`");
format(query2, sizeof(query2), "%s ADD PRIMARY KEY (`ID`);", query2);
mysql_pquery(handle, query2);
return 1;
}
Alles anzeigen
CreateAccountTabelle steht unter OnGameModeInit
printe dir den Query..und führe ihn evtl in einem SQL-Interpreter(wie z.B. PHPMyAdmin) aus...dann bekommste ein direktes Feedback ![]()
Kann mir jemand sagen wieso kein Dialog kommt wenn ich in die Class-Selection komme
SetPlayerCameraPos(playerid,1224.8322,-1814.9604,16.5938);
SetPlayerCameraLookAt(playerid,1253.8043,-1835.7151,13.3885);
if(!uInfo[playerid][pLoggedIn])
{
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", uInfo[playerid][zName]);
mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
}
public OnUserCheck(playerid)
{
new string[256];
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid,plname,sizeof(plname));
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
format(string, sizeof(string), "{FAFAFA}Wilkommen bei uns: {87FF00}%s \n{FAFAFA}Schön, dass du zu uns gefunden hast. Gib nun bitte ein Passwort ein.\nDenk jedoch dran: Gebe dein Passwort nie weiter.",plname);
ShowPlayerDialog(playerid,dREGISTER,DIALOG_STYLE_PASSWORD,"Registrierung",string,"Regist...","Abbrechen");
}
else
{
format(string, sizeof(string), "{FAFAFA}Wilkommen zurück: {87FF00}%s \n{FAFAFA}Schön das du wieder zu uns gefunden hast.\nLogge dich nun bitte mit deinem Passwort ein:",plname);
ShowPlayerDialog(playerid,dLOGIN,DIALOG_STYLE_PASSWORD,"Login",string,"Login","Abbrechen");
}
return 1;
}
hab auch schon mysql_log unter OnGameModeInit aber mir wird keine Log Datei ausgegeben
Schonmal unter OnUserCheck printen lassen ob es überhaupt aufgerufen wird?
moin wollte nh tür ertllen die aufgeht wie in echt und nicht nach oben unten oder links rechts aber i.wie klappt das nicht im pastbin code ist das wie ich es versucht habe
pastebin habe andre türen tore genauso erstellt die funktionieren auch gehn allerdings auch nach oben nzw unten offen
wenn ich denn befehl eingeben passiert einfach nix.
freu mich über hilfe
Also ich bin mal so frei und zeige dir einige Fehler von dir auf:
So, ich bin mal freundlich und gebe dir sowohl die richtigen Koordinaten, als auch die richtige Struktur:
//Das was oben ist kannst du so lasssen :)
//Befehl so anpassen:
ocmd:pdtor(playerid,params[])
{
if(Spieler[playerid][pFraktion] != 1) return SendClientMessage(playerid,-1,"Sie gehören nicht zum LSPD!"); //Zum Beispiel
if(IsPlayerInRangeOfPoint(playerid,7.0,1588.8745,-1633.5090,13.3828))
{
MoveObject(obj,1582.58142+0.01, -1638.05237, 12.37578,0.01,0,0,90);
SetTimer("pddoorclose",3000,0);
}
return 1;
}
//Die public-Funktion:
public pddoorclose()
{
MoveObject(obj,1582.58142, -1638.05237, 12.37578,0.01,0.00000, 0.00000, 0.00000);
return 1;
}
Alles anzeigen
mfg. ![]()
Warum wird der Primary Key nicht gesetzt?
stock CreateAccountTabelle()
{
new query[2048], query2[256];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (");
format(query, sizeof(query), "%s `ID` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Spielername` varchar(32) NOT NULL,", query);
format(query, sizeof(query), "%s `Passwort` varchar(65) NOT NULL,", query);
format(query, sizeof(query), "%s `Geschlecht` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geburtsdatum` varchar(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Tutorial` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Level` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Geld` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `SpawnChange` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Skin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Admin` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Perso` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `Fraktion` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `FraktionRang` int(11) NOT NULL,", query);
format(query, sizeof(query), "%s `LastIP` varchar(16) NOT NULL", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", query);
mysql_pquery(handle, query);
format(query2, sizeof(query2), "ALTER TABLE `"SQL_DTAG"accounts`");
format(query2, sizeof(query2), "%s ADD PRIMARY KEY (`ID`);", query2);
mysql_pquery(handle, query2);
return 1;
}
Alles anzeigen
%s `ID` int(11) NOT NULL,
Ändere die Zeile doch einfach zu:
Was ist an der Abfrage falsch?
Wenn ich diese benutze kommt die SERVER_KEINADMIN Message aber ich kann trotzdem den Befehl eingeben wenn ich kein admin bin.
stock IsAdmin(playerid, ar)
{
if(sI[playerid][pAdmin] < ar)return SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN);
return 1;
}
Mach lieber so etwas:
#define IsNoAdmin(%0,%1) (sI[%0][pAdmin] < (%1))
#define NO_ADMIN SendClientMessage(playerid, COLOR_FEHLER, SERVER_KEINADMIN)
//Und dann im Skript:
if(IsNoAdmin(playerid, 3)) return NO_ADMIN;
Wenn du es lieber auf deine Art machen willst, dann musst du unterschiedliche Werte returnen ![]()