Hey Leute,
da ich mich nun an Mysql ran machen will habe ich eine einfache Frage bestimmt für euch leicht zu lösen für mich Problematisch.
Bei Dini konnte man ja einen switch erstellen heißt
switch rank(GetPVarInt"Adminlevel")
{
case 1:{rank="Spieler"}
case 2:{rank="Supporter"}
}
So und wie kann ich das nun mit MYsql machen ?
switch zwischen Ränke mit mysql
- Linsing
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Den Switch kann man generell machen, der hat nichts mit Dini zu tun. Habe aberein ähnliches Problem momentan, hoffe hier mit auf Lösung zu finden.
-
Ja swtich aber ich meine ich will in diesem Switch in der Tabelle "accounts" "Adminlevel" auslesen.
Darum geht es. -
Ich habe solch ein voll-dynamisches MySQL Fraktionssystem erstellt
So, die Rangnamen lässt du sicherlich in einem Enum o.ä. speichern, und laden.
So schaut des bei mir aus/******************************************************
Diese Funktion gibt den Rang eines Spielers in
einem Integer wieder
*******************************************************/
stock GetPlayerRangID(playerid)
{
return SpielerInfo[playerid][pRang];
}/******************************************************
Diese Funktion gibt den Rang eines Spielers in
einem String wieder
*******************************************************/
stock GetPlayerRangName(playerid)
{
new name[Max_Rangname];
switch(SpielerInfo[playerid][pRang])
{
case 0:{format(name,2,"-");}
case 1:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname1]);}
case 2:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname2]);}
case 3:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname3]);}
case 4:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname4]);}
case 5:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname5]); }
case 6:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangnameLeader]);}
}
return name;
}So habe ich das ganz oben
//Defines und Enum für die Fraktionen
#define Max_Fraktionen 12 //Anzahl der Fraktionen( Standartmäßig: 11 )
#define Max_Ranggehalt 15000 //Maximaler Gehalt pro Rang
#define Max_Frakname 30 //Maximale Länge des Namen der Fraktion (Standard 30)
#define Max_Rangname 15 //Maximale Länge eines Rangnamens (Standard 15)enum FrakDaten
{
pFraktionsname[Max_Frakname],
pRangname1[Max_Rangname],
pRangname2[Max_Rangname],
pRangname3[Max_Rangname],
pRangname4[Max_Rangname],
pRangname5[Max_Rangname],
pRangnameLeader[Max_Rangname],
pFraktionskasse,
pRang1_Skin,
pRang2_Skin,
pRang3_Skin,
pRang4_Skin,
pRang5_Skin,
pRangLeader_Skin,
pRang1_Gehalt,
pRang2_Gehalt,
pRang3_Gehalt,
pRang4_Gehalt,
pRang5_Gehalt,
pRangLeader_Gehalt,
Float:pSpawnPosX,
Float:pSpawnPosY,
Float:pSpawnPosZ,
pSpawnInterior
};new FraktionInfo[Max_Fraktionen][FrakDaten];
Hoffe das hilft dir
Lg
-
Ich habe solch ein voll-dynamisches MySQL Fraktionssystem erstellt
So, die Rangnamen lässt du sicherlich in einem Enum o.ä. speichern, und laden.
So schaut des bei mir aus/******************************************************
Diese Funktion gibt den fraktionsgehalt einese Spielers
wieder (integer)
*******************************************************/
stock GetPlayerFrakGehalt(playerid)
{
new gehalt;
switch(SpielerInfo[playerid][pRang])
{
case 1:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRang1_Gehalt];}
case 2:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRang2_Gehalt];}
case 3:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRang3_Gehalt];}
case 4:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRang4_Gehalt];}
case 5:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRang5_Gehalt];}
case 6:{gehalt=FraktionInfo[GetPlayerFrakID(playerid)][pRangLeader_Gehalt];}
}
return gehalt;
}/******************************************************
Diese Funktion gibt den Rang eines Spielers in
einem Integer wieder
*******************************************************/
stock GetPlayerRangID(playerid)
{
return SpielerInfo[playerid][pRang];
}So habe ich das ganz oben
//Defines und Enum für die Fraktionen
#define Max_Fraktionen 12 //Anzahl der Fraktionen( Standartmäßig: 11 )
#define Max_Ranggehalt 15000 //Maximaler Gehalt pro Rang
#define Max_Frakname 30 //Maximale Länge des Namen der Fraktion (Standard 30)
#define Max_Rangname 15 //Maximale Länge eines Rangnamens (Standard 15)enum FrakDaten
{
pFraktionsname[Max_Frakname],
pRangname1[Max_Rangname],
pRangname2[Max_Rangname],
pRangname3[Max_Rangname],
pRangname4[Max_Rangname],
pRangname5[Max_Rangname],
pRangnameLeader[Max_Rangname],
pFraktionskasse,
pRang1_Skin,
pRang2_Skin,
pRang3_Skin,
pRang4_Skin,
pRang5_Skin,
pRangLeader_Skin,
pRang1_Gehalt,
pRang2_Gehalt,
pRang3_Gehalt,
pRang4_Gehalt,
pRang5_Gehalt,
pRangLeader_Gehalt,
Float:pSpawnPosX,
Float:pSpawnPosY,
Float:pSpawnPosZ,
pSpawnInterior
};new FraktionInfo[Max_Fraktionen][FrakDaten];
Hoffe das hilft dir
Lg
1. Voll Dynamisch sieht man da nichts
2. Das hat was mit Mysql zu tun?@Threadersteller less es einfach zuerst in ein enum wie es der Vorposter hoffentlich gemacht hat(was man aber nicht sieht)
und verwende dann switch -
Nun habe ich das so
switch(SpielerInfo[playerid][pAdminlevel])
{
case 0:{rank="Spieler"}
case 1:{rank=adminrank1}
case 2:{rank=adminrank2}
case 3:{rank=adminrank3}
case 4:{rank=adminrank4}
case 5:{rank=adminrank5}
case 6:{rank=adminrank6}
}
Aber da bekomme ich die Fehler:
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(175) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(176) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(177) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(178) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(179) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(180) : error 006: must be assigned to an array
C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(181) : error 006: must be assigned to an array -
Wie der Fehler schon sagt, benötigst du einen Array(=Tabelle) für rank.
-
Aber das Array "switch" ist doch da....
-
rank=adminrank4
Da scheint was nicht zu stimmen.
Zeig mal bitte die Stelle wo die beiden Variablen erstellt werden. -
#define adminrank1 "Supporter"
#define adminrank2 "Moderator"
#define adminrank3 "Super Moderator"
#define adminrank4 "Admin"
#define adminrank5 "Fulladmin"
#define adminrank6 "Scripter"
switch(SpielerInfo[playerid][pAdminlevel])
{
case 0:{rank="Spieler";}
case 1:{rank=adminrank1;}
case 2:{rank=adminrank2;}
case 3:{rank=adminrank3;}
case 4:{rank=adminrank4;}
case 5:{rank=adminrank5;}
case 6:{rank=adminrank6;}
} -
-
Und wie hast du rank deklariert?
-
new rank;
-
-
Habe ähnliches Problem, bekomme es grad nicht gelöst. Er schreibt in den Chat "[...] wurde zum Gebannt ernannt". Warum liest er Level 0 aus?
ocmd:setlevel(playerid,params[])
{
new player,level,sname[MAX_PLAYER_NAME],s1[64+MAX_PLAYER_NAME],s2[64+MAX_PLAYER_NAME],rangname[16];
pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]);
if(pInfo[playerid][pLevel] == 5)
{
if(sscanf(params,"ui",player,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]");
{if(IsPlayerConnected(player))
{
GetPlayerName(player,sname,sizeof(sname));
mysql_SetInt("spieler", "Level",level, "Name", sname);
SetPlayerScore(player,level);
pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[player][pName]);
switch(pInfo[player][pLevel])
{
case 0: { rangname="Gebannt"; }
case 1: { rangname="Spieler"; }
case 2: { rangname="Supporter"; }
case 3: { rangname="Co-Admin"; }
case 4: { rangname="Admin"; }
case 5: { rangname="Headadmin"; }
}
format(s1,sizeof(s1),"[Server]: Du hast %s zum %s ernannt", sname,rangname);
format(s2,sizeof(s2),"[Server]: %s ist nun %s", sname,rangname);
SendClientMessage(playerid,COLOR_LIGHTBLUE,s1);
SendClientMessageToAll(COLOR_LIGHTBLUE,s2);
}
else
{
SendClientMessage(playerid,COLOR_RED,"[Fehler]: Dieser Spieler ist nicht Online");
}
}
}
return 1;
} -
breadfish.de
Hat das Thema geschlossen.