Guten Morgen,
ich habe schon seit längerem das Problem, das nichts aus der Spielerdatei gelesen wird.
Ich arbeite mit Dini von Mr.Monat.
Es wird nur Level und Passwort ausgelesen.
Hier wie es in der Spielerdatei aussieht und darunter wie es ingame aussieht:
Es wird nichts aus der Spielerdatei gelesen
- _iBenny_
- 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
-
-
hast du die Stocks auch dafür angepasst?
-
Hier
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}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,BLAU,"Erfolgreich registriert.");
SetPlayerScore(playerid,1);
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))
{
SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
return 1;
}
else
{
LoadAccount(playerid);
SendClientMessage(playerid,BLAU,"Falsches Passwort.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","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 bist vom Server gebannt.");
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"));
dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
}
return 1;
}stock isPlayerAnAdmin(playerid,rang)
{
if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
return 0;
}stock isPlayerInFrakt(playerid,fraktid)
{
if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
return 0;
}Unter Onplayerdiconnect:
public OnPlayerDisconnect(playerid, reason)
{
//Login
if(GetPVarInt(playerid,"loggedin")==1)
{
SpielerSpeichern(playerid);
}
return 1;
}Hier der restart Befehl z.B.
if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
{
if(isPlayerAnAdmin(playerid,3))
{
SendRconCommand("gmx");
return 1;
}
SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
return 1;
} -
Also hier mal die Stocks:
//Spieler Speichern
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.ini",name);
if(dini_Exists(Spielerdatei))
{
dini_IntSet(Spielerdatei,"Adminlevel",sSpieler[playerid][Adminlevel]);
}
}
return 1;
}Dann beim Login diesen Stock:
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
if(dini_Exists(Spielerdatei))
{
sSpieler[playerid][Adminlevel] = dini_Int(Spielerdatei,"Adminlevel");
}
SetPVarInt(playerid,"loggedin",1);
SpawnPlayer(playerid);
return 1;
}und registrieren:
stock Register(playerid,key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
dini_Create(Spielerdatei);
dini_Set(Spielerdatei,"Passwort",key);
dini_IntSet(Spielerdatei,"Adminlevel",0);
SpawnPlayer(playerid);
return 1;
}Das "SpielerRegistrieren", natürlich beim ersten Connect auf dem Server.
SpielerLaden bei jedem Login bzw. OnplayerConnect,
und zu guter letzt, SpielerSpeichern bei OnPlayerDisconnect, so lädt es die Spielerdateien.
MfG
-
und wenn ich das ersetze geht es?
-
versuch das mal so
if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
{
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
{
SendRconCommand("gmx");
return 1;
}
return 1;
}sollte so gehen du hattest nur ein fehler im Befehl gehabt
so währe der richtig gewesen
if(strcmp(cmdtext,"/restart",true)==0)//Den Server restarten.
{
if(!isPlayerAnAdmin(playerid,3))
{
SendRconCommand("gmx");
return 1;
}
else
{
SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
}
return 1;
} -
/restart geht jetzt, aber wieso nicht /spawn
if(strcmp(cmdtext,"/spawn",true)==0)//Teleportiert den Admin zum Spawn.
{
if(isPlayerAnAdmin(playerid,3))
{
SetPlayerPos(playerid,475.0953,-1771.5754,13.7163);
SendClientMessage(playerid,0xFFFF00FF,"Du wurdest Teleportiert");
}
else
{
SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
}
return 1;
}
Adminlevel wird jetzt zwar ausgelesen, aber fraktion usw. nicht.Hier der /stats Befehl:
if(strcmp(cmdtext,"/stats",true)==0)//Zeigt die Spielerstatistiken an
{
new string[128];
new fraktname[64];
switch(GetPVarInt(playerid,"Fraktion"))
{
case 0:{fraktname="Keine";}
case 1:{fraktname=fraktname1;}
case 2:{fraktname=fraktname2;}
case 3:{fraktname=fraktname3;}
case 4:{fraktname=fraktname4;}
case 5:{fraktname=fraktname5;}
case 6:{fraktname=fraktname6;}
case 7:{fraktname=fraktname7;}
case 8:{fraktname=fraktname8;}
case 9:{fraktname=fraktname9;}
case 10:{fraktname=fraktname10;}
case 11:{fraktname=fraktname11;}
case 12:{fraktname=fraktname12;}
case 13:{fraktname=fraktname13;}
case 14:{fraktname=fraktname14;}
}
//1 reihe
format(string,sizeof(string),"[Name: %s]\n[Level: %i]\n[Adminlevel: %i]\n[Fraktion: %s]\n[Geld: %i]\n[Konto: %i]",SpielerName(playerid),GetPlayerScore(playerid),GetPVarInt(playerid,"Adminlevel"),fraktname),dini_Int(accFormat, "Konto");
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"OK","Statistiken","","");
return 1;
}PS: mein /stats Befehl sieht ingame so aus:
-
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Statistiken",string,"OK","Abbrechen");
So müsste der Dialog aussehen, weil du ja den string ausgeben willst
-
Danke, aber zum eigentlichen Problem /restart geht jetz, aber /spawn und das Fraktionsys und das Geld?
-
breadfish.de
Hat das Thema geschlossen.