Habe mir das Login/Register System von MrMonat basiert auf Dini geholt. Alles funktioniert super nur die Adminbefehle
beziehungsweise alle Befehle zeigen an SERVER : UNKNOWN COMMAND an. Hier alles benötigte. Im Serverlog kommt kein Fehler sowie das Script ohne Warnings/Errors compiled
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid))return 1;
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(dini_Exists(Spielerdatei))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden somit kannst du nun dein Passwort eingeben","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib nun dein gewünschtes Passwort ein!","Register","Abbrechen");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
SpielerSpeichern(playerid);
}
return 1;
}
//STOCKS LOGIN
stock Register(playerid,key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_Create(Spielerdatei);
dini_Set(Spielerdatei,"Passwort",key);
SendClientMessage(playerid,GELB,"Erfolgreich registriert.");
SetPlayerScore(playerid,0);
SetPVarInt(playerid,"loggedin",1);
return 1;
}
stock Login(playerid,key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
{
LoadAccount(playerid);
SendClientMessage(playerid,GELB,"Erfolgreich eingeloggt.");
return 1;
}
else
{
SendClientMessage(playerid,GELB,"Fehlerhaftes Passwort bitte neu eingeben");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden somit kannst du dich nun mit deinem Passwort einloggen","Login","Abbrechen");
return 1;
}
}
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
if(GetPVarInt(playerid,"Baned")==1)
{
SendClientMessage(playerid,ROT,"Du wurdest von unserem Server ausgeschlossen melde dich doch per Teamspeak bei einem Administrator");
Kick(playerid);
}
SetPVarInt(playerid,"loggedin",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
}
return 1;
}
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
//STOCK ADMIN
stock IsPlayerAnAdmin(playerid,level)
{
if(GetPVarInt(playerid,"Adminlevel")>=level) return 1;
return 0;
}
//OCMDBEFEHLE ADMIn
ocmd:kick(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
new pID, reason[128],string[128];
if(IsPlayerAnAdmin(pID,1)) return SendClientMessage(playerid,GELB,"Du kannst keinen Administrator kicken");
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"/kick [Spieler] [Grund]");
format(string,sizeof(string),"CaneBot: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
SendClientMessageToAll(GELB,string);
Kick(pID);
return 1;
}
ocmd:ban(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
new pID, reason[128],string[128];
if(IsPlayerAnAdmin(pID,1)) return SendClientMessage(playerid,GELB,"Du kannst keinen Administrator bannen");
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"/ban [Spieler] [Grund]");
format(string,sizeof(string),"CaneBot: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
SendClientMessageToAll(GELB,string);
SetPVarInt(pID,"Baned",1);
Kick(pID);
return 1;
}
ocmd:setadmin(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,0))return SendClientMessage(playerid,ROT,"Du hast keine Rechte um diesen Befehl auszuführen");
new pID, rank;
if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,BLAU,"/setadmin [Spieler] [Level] | Um Level einzusehen /level");
if(rank<0||rank>5)return SendClientMessage(playerid,ROT,"Maximaler Rank liegt bei 5");
SetPVarInt(pID,"Adminlevel",rank);
SendClientMessage(playerid,GELB,"Ausgewählter Spieler wurde zum Admin befördert");
SpielerSpeichern(pID);
return 1;
}
ocmd:gethere(playerid,params[])
{
new string[128],player;
if(sscanf(params,"u",player))return SendClientMessage(playerid,GELB,"/gethere [Spieler]");
if(IsPlayerAnAdmin(playerid,1))
{
new sendername[MAX_PLAYER_NAME],playername[MAX_PLAYER_NAME];
GetPlayerName(player,sendername,sizeof sendername);
GetPlayerName(playerid,playername,sizeof playername);
format(string,sizeof string,"Teammitglied %s hat dich zu sich geportet.",playername);
SendClientMessage(player,GELB,string);
format(string,sizeof string,"Du hast %s zu dir geportet.",sendername);
SendClientMessage(playerid,GELB,string);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInAnyVehicle(player))
{
new autoid = GetPlayerVehicleID(player);
SetVehiclePos(autoid, X, Y+4, Z);
}
else
{
SetPlayerPos(player,X,Y+2,Z);
}
}
else
{
SendClientMessage(playerid, GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
}
return 1;
}
ocmd:goto(playerid,params[])
{
new string[128],player;
if(sscanf(params,"u",player))return SendClientMessage(playerid,GELB,"/goto [Spieler]");
if(IsPlayerAnAdmin(playerid,1))
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(player,sendername,sizeof sendername);
format(string,sizeof string,"Du hast dich zu %s geportet.",sendername);
SendClientMessage(playerid,BLAU,string);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(player,X,Y,Z);
if(IsPlayerInAnyVehicle(playerid))
{
new autoid = GetPlayerVehicleID(playerid);
SetVehiclePos(autoid, X, Y+4, Z);
}
else
{
SetPlayerPos(playerid,X,Y+2,Z);
}
}
else
{
SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
}
return 1;
}
ocmd:setskin(playerid,params[])
{
new skinid1,pID,string[128];
if(sscanf(params,"ud",pID,skinid1))return SendClientMessage(playerid, GELB,"/setskin [Spieler] [Skinnummer]");
if(IsPlayerAnAdmin(playerid,1))
{
SetPlayerSkin(pID,skinid1);
format(string,sizeof(string),"Ein Teammitglied hat dir den Skin %d zugewiesen!",skinid1);
SendClientMessage(pID,GELB,string);
}
else
{
SendClientMessage(playerid,ROT,"Du hast keine Rechte um diesen Befehl auszuführen");
}
return 1;
}
ocmd:newcar(playerid,params[])
{
new Float:vehx,Float:vehy,Float:vehz;
new vehid,cc1,cc2,string[128];
if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, GELB,"/newcar [Autonummer] [Farbe 1] [Farbe 2]");
if(IsPlayerAnAdmin(playerid,1))
{
GetPlayerPos(playerid,vehx,vehy,vehz);
new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);
SetVehicleNumberPlate(carid,"Adminauto");
PutPlayerInVehicle(playerid, carid, 0);
format(string,sizeof(string),"Du hast dir ein Auto gespawnt! (FahrzeugID :%d)",GetVehicleModel(GetPlayerVehicleID(playerid)));
SendClientMessage(playerid,GELB,string);
}
else
{
SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
}
return 1;
}
ocmd:wetter(playerid,params[])
{
new weatherid1,string[80];
if(sscanf(params,"i",weatherid1))return SendClientMessage(playerid,GELB,"/wetter [Wetternummer]");
if(IsPlayerAnAdmin(playerid,1))
{
SetWeather(weatherid1);
format(string,sizeof(string),"Du hast das Wetter in die Nummer %d geändert!",weatherid1);
SendClientMessage(playerid,GELB,string);
}
else
{
SendClientMessage(playerid, GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
}
return 1;
}
ocmd:aduty(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
{
new string[128],string2[128];
new adminname[30];
switch(GetPVarInt(playerid,"Adminlevel"))
{
case 0:{adminname="Nein";}
case 1:{adminname="{00FF5A}Supporter";}
case 2:{adminname="{572B54}Moderator";}
case 3:{adminname="{858BBB}Super Moderator";}
case 4:{adminname="{0000FF}Administrator";}
case 5:{adminname="{FF0000}System-Administrator";}
}
#pragma unused params
if(GetPVarInt(playerid,"AdminDuty"))
{
SetPlayerColor(playerid,WEISS);
ResetPlayerWeapons(playerid);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
format(string,sizeof(string),"Teammitglied %s hat den Admindienst als %s beendet ",SpielerName(playerid),adminname);
SendClientMessageToAll(BLAU,string);
DeletePVar(playerid,"AdminDuty");
return 1;
}
else
{
SetPlayerColor(playerid,GELB);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,15000);
format(string2,sizeof(string2),"Teammitglied %s hat den Admindiest als %s begonnen",SpielerName(playerid),adminname);
SendClientMessageToAll(GELB,string2);
SendClientMessage(playerid,ROT,"[LOGGED] Das im negativen Sinne Benutzen des Admindienstes kann Folgen haben [LOGGED]");
SetPVarInt(playerid,"AdminDuty",1);
}
return 1;
}
}
ocmd:gmx(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,GELB,"Du hast keine Rechte um diesen Befehl auszuführen");
SendRconCommand("gmx");
GameTextForAll("| Server Restart |",5000,6);
return 1;
}