Zeig mal den Code bitte.
HSA Multi - Einfach und schnell speichern! v. 2.2.0
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
-
-
public OnPlayerConnect(playerid)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",name);
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.hsa",name);
if(fexist(Spielerdatei))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Schön das du wieder da bist","Dein Account wurde wieder gefunden.Bitte gib das Passwort ein.","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT," Du musst dich Regestrieren"," Hallo und Herzlich Wilkommen auf meinem Server. Bitte gib das gewünschte Passwort ein.","Regestrieren","Abbrechen");
}
return 1;
}
stock Register(playerid,key[])
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.",SpielerName);
setString:Spielerdatei("Passwort",key);
SendClientMessage(playerid,Grau,"Du hast dich erfolgreich regestriert.Viel Spaß beim Zocken!");
SetPlayerScore(playerid,2);
setInt:Spielerdatei("Geld",500);
setInt:Spielerdatei("Adminlevel",0);
setInt:Spielerdatei("Leader",0);
setInt:Spielerdatei("Fraktion",0);
setInt:Spielerdatei("Banned",0);
setInt:Spielerdatei("fRank",0);
SetPVarInt(playerid,"loggedin",1);
return 1;
}stock Login(playerid,key[])
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
if(!strcmp(key,getString:Spielerdatei("Passwort"), false))
{
LoadAccount(playerid);
SendClientMessage(playerid,Grau,"Erfolgreich eingeloogt");
return 1;
}
else
{
SendClientMessage(playerid,Grau,"Falsches Passwort.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Wilkommen Zurück","Dein Account wurde wieder gefunden.Bitte gib das Passwort ein.","Login","Abbrechen");
return 1;
}}
stock LoadAccount(playerid)
{
new SpielerDatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,MAX_PLAYER_NAME);
SetPlayerScore(playerid,getInt:SpielerDatei("Level"));
GivePlayerMoney(playerid,getInt:SpielerDatei("Geldboerse"));
SetPVarInt(playerid,"Fraktion",getInt:SpielerDatei("Fraktion"));
SetPVarInt(playerid,"fRank",getInt:SpielerDatei("fRank"));
SetPVarInt(playerid,"Adminlevel",getInt:SpielerDatei("Adminlevel"));
SetPVarInt(playerid,"loggedin",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new SpielerDatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,MAX_PLAYER_NAME);
setInt:SpielerDatei("Level",GetPlayerScore(playerid));
setInt:SpielerDatei("Geld",GetPlayerMoney(playerid));
setInt:SpielerDatei("Fraktion",GetPVarInt(playerid,"Fraktion"));
setInt:SpielerDatei("fRank",GetPVarInt(playerid,"fRank"));
setInt:SpielerDatei("Adminlevel",GetPVarInt(playerid,"Adminlevel"));
setInt:SpielerDatei("Banned",GetPVarInt(playerid,"Banned"));
setInt:SpielerDatei("Leader",GetPVarInt(playerid,"Leader"));
setInt:SpielerDatei("Geschlecht",GetPVarInt(playerid,"Geschlecht"));
Save(SpielerDatei);
}
return 1;
} -
Zitat
Aber mir werden irgendwie 2 hsa dateien erstell.
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",name);
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.hsa",name);
Fällt es dir selber auf? -
Ja aber wenn ich es weg nehme werden immer noch 2 datein erstellt eine ohne namen und eine mit dem spielernamen aber da ist nichts drinne
-
Ich habe ein Problem. Erstmal ich finde dein Speichersystem echt klasse. 10/10
Nun zum Problem:
Ich möchte 1. Dateien in .ini und nicht in .HSA (auch nicht in .ini.hsa ^^) Datein speichern.
Ich weiß nur nicht ob das möglich ist.
Zum zweiten:
stock Register(playerid,key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"A/%s.ini",name);
setString:Spielerdatei("Passwort",key);
SetPlayerScore(playerid,1);
GivePlayerMoney(playerid,1000);
setInt:Spielerdatei("Geld",1000);
setInt:Spielerdatei("Adminlevel",0);
setInt:Spielerdatei("Fraktion",0);
setInt:Spielerdatei("Geschlecht",0);
setInt:Spielerdatei("Alter",0);
setInt:Spielerdatei("Verwarnungen",0);
setInt:Spielerdatei("Leader",0);
setInt:Spielerdatei("Baned",0);
setInt:Spielerdatei("FRank",0);
setInt:Spielerdatei("Respektpunkte",0);
setInt:Spielerdatei("Perso",0);
setInt:Spielerdatei("Skin",0);
setInt:Spielerdatei("Muted",0);
setInt:Spielerdatei("Wanteds",0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
er erstellt zwar die Datei, aber er beschreibt sie nicht.
Ich hoffe man kann mir schnell helfen =)
MFG.
//E Rechtschreibung muss ein -
Zitat
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",name);
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.hsa",name);
Fällt es dir selber auf?
hahahahNice Include sehr einfach gemacht und super nützlich
10/10 -
Eine Frage wenn ich jetzt die Datei in einem Ordner hab muss ich dann einfach "/Ordner/Datensatzname" verwenden?
-
@midomen: Ja genau.
@Topic:
HSA wurde geupdated auf 2.2.0
Damit wurde ein ggf. auftretender Fehler behoben. -
Ich finde diese Speicherart echt toll und sie läuft schnell.
Seid dem ich sie Kenne, benutze ich sie bei jeden Selfmade und schreibe Godfathers auf
diese Speichertart um.
sie lohnt sich echt und ist auch sehr schnell und einfach zu benutzen.
Danke Hauke! -
-
Hay Leute ich find dein System echt klasse und einfach aber ich habe trozdem ein Problem. Und zwar Mit Speichern klappt alles aber mit dem Laden nicht. Ich möchte bei meinem Register und Login halt ganz normal speichern und laden . Das speichern klappt die datei ist erstellt aber wenn ich mich einloggen will kommt wieder das Regestrierenfenster obwohl schon eine Acc datei besteht. Ich zeig euch mal den code
public OnPlayerConnect(playerid)
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
if(fexist(Spielerdatei))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde wiedergefunden. Bitte gib nun dein Passwort ein.","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Regestrieren","Herzlich Wilkommen auf meinem Server. Dieser Server befindet sich zurzeit in der Aufbau Phase.\nGib bitte das gewünschte Passwort ein.","Regestrieren","Abbrechen");
}
return 1;
}stock Register(playerid,key[])
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
setString:Spielerdatei("Passwort",key);
SetPlayerScore(playerid,1);
GivePlayerMoney(playerid,500);
SendClientMessage(playerid,0x00A5FFFF,"Du hast dich erfolgreich Regestriert.");
return 1;
}stock Login(playerid,key[])
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
if(!strcmp(key,getString:Spielerdatei("Passwort"), false))
{
LoadAccount(playerid);
SendClientMessage(playerid,0x00B9FFFF,"Du hast dich erfolgreich eingeloggt.");
return 1;
}
else
{
SendClientMessage(playerid,0xFF0023FF,"Falsches Passwort!");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde wiedergefunden. Bitte gib nun dein Passwort ein.","Login","Abbrechen");
return 1;
}}
stock LoadAccount(playerid)
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
SetPlayerScore(playerid,getInt:Spielerdatei("Level"));
GivePlayerMoney(playerid,getInt:Spielerdatei("Money"));
SetPVarInt(playerid,"Adminlevel",getInt:Spielerdatei("Adminlevel"));
return 1;
}stock SaveAccount(playerid)
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s",SpielerName);
setInt:Spielerdatei("Level",GetPlayerScore(playerid));
setInt:Spielerdatei("Money",GetPlayerMoney(playerid));
setInt:Spielerdatei("Adminlevel",GetPVarInt(playerid,"Adminlevel"));
Save(Spielerdatei);
return 1;
}Ich hoffe mir kann jemand helfen Danke schonmal
-
Du musst die Endung hinzufügen:
public OnPlayerConnect(playerid)
{
new Spielerdatei[64];
new SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.hsa",SpielerName);
if(fexist(Spielerdatei))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde wiedergefunden. Bitte gib nun dein Passwort ein.","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Regestrieren","Herzlich Wilkommen auf meinem Server. Dieser Server befindet sich zurzeit in der Aufbau Phase.\nGib bitte das gewünschte Passwort ein.","Regestrieren","Abbrechen");
}
return 1;
}
Ich denke ich werde noch eine HSA spezifische FileExists Funktion schreiben. Die kommt dann in der nächsten Version dazu -
Bei der Speicherart werden die Variablen die man Speichern möchte aber im Scriptfiles Ordner gespeichert oder?
-
Bei der Speicherart werden die Variablen die man Speichern möchte aber im Scriptfiles Ordner gespeichert oder?
Eigendlich söllten sie das tuhen, ja. -
Gibt es ein fertiges Login System mit der Include?
-
Gibt es ein fertiges Login System mit der Include?
Hilft dir das weiter?
http://easy-scripting.net/index.php?page=Thread&threadID=537MfG.
-
Habe es schon hinbekommen
Allerdings zeigt er mir die Spielerdatei so komisch an. HSA zeigt komische Zeichen an -
Ist schon alt hier aber es funktioniert sehr gut für ein Fraktionskassen System danke für den Include