#include <a_samp>
#include <dini>
#include <Dudb>
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
enum Info
{
passwort[128], // 128 steht für die maximale länge des passworts
skin,
};
new pInfo[MAX_PLAYERS][Info];
new bool:loggedin[MAX_PLAYERS];
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
new name[128], save[128]; // Dies machen wir um den Namen vom Spieler aufzuschreiben || Hiermit können wir sagen, dass etwas gespeichert werden soll
GetPlayerName(playerid,name,sizeof(name)); // Dies sagt, er soll( vom Spieler, den namen, in der größe name aufschreiben)
format(save,sizeof(save),"/Spieler/%s.ini",name); // Hier wird gechekt, wo der Spieler gespeichert ist, bzw. wo ein Spieler angelegt werden soll.
if(dini_Exists(save)) // Hier wird geprüft, ob die Datei des Spielers schon existiert.
{ // Wenn ja, sende einen Text und lade den Skin und das Geld
SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
SendClientMessage(playerid, 0xFFFFFFAA, "Dein Account wurde wiedererkannt.");
SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt einloggen.");
SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /login [passwort].");
GivePlayerMoney(playerid,dini_Int(save,"Geld")); // Hier wird das geld dem Spieler gegeben, was er vorher hatte
SetPlayerSkin(playerid,dini_Int(save,"Skin")); // Hier wird der Skin des Spielers geladen
}
else
{
if(!dini_Exists(save)) // Wenn kein Spieler mit dem Namen existiert
{ //Sende einen Text
SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
SendClientMessage(playerid, 0xFFFFFFAA, "Du hast noch keinen Account.");
SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt registrieren.");
SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /register [passwort].");
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new name[128], save[128];// Gleiche
GetPlayerName(playerid,name,sizeof(name)); // wie
format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
if(dini_Exists(save)) // steht
{
dini_IntSet(save,"Geld",GetPlayerMoney(playerid)); // speichert das aktuelle Geld, was der Spieler zum schluss hatte
dini_IntSet(save,"Skin",GetPlayerSkin(playerid)); // speichert den aktuellen Skin, welchne der Spieler zum schluss hatte
}
return 1;
}
public OnPlayerSpawn(playerid)
{
new name[128], save[128];// Gleiche
GetPlayerName(playerid,name,sizeof(name)); // wie
format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
if(loggedin[playerid] == false) //Wenn er nicht eingeloggt ist
{
SendClientMessage(playerid, 0xAA3333AA, "Du musst dich Einloggen bevor du spawnst!");
Kick(playerid); // Kicke den Spieler
}
SetPlayerSkin(playerid,dini_Int(save,"Skin")); //lade und setze den gespeicherten Skin
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
new spieler[MAX_PLAYER_NAME];
if(strcmp(strget(cmdtext,0), "/register", true) == 0)
{
new save[40]; // Erstelle einen neuen String "save", wobei 40 Wörter verwendet werden können.
GetPlayerName(playerid,spieler,sizeof(spieler));
format(save, sizeof(save),"Spieler/%s.ini",spieler); //Speicherort
if(!dini_Exists(save)) // wenn der Spieler sich regestriert und es noch keine .ini Datei mit seinem Namen gibt
{
dini_Create(save); // Erstelle eine Neue .ini Datei
dini_IntSet(save,"passwort",udb_hash(strget(cmdtext,1))); // Setze in die .ini Datei(save,"dass passwort", welches er eingegeben hat) || das udb_hash verschlüsselt das Passwort in der .ini. Dazu benötigen wir die oben angegebene Include DUBD.
SendClientMessage(playerid, 0x33AA33AA, "***Dein Account wurde erfolgreich registriert***");
SendClientMessage(playerid, 0x33AA33AA, "***Nutze /login [Passwort] um dich einzuloggen***");
}
else
{
if(dini_Exists(save)) // Wenn beim regestrieren die Datei schon besteht
{
SendClientMessage(playerid, 0xAA3333AA, "Der Account ist bereits registriert");
}
}
return 1;
}
if(strcmp(strget(cmdtext,0), "/login", true) == 0)
{
new save[40], s2[256]; //gleiche wie oben
GetPlayerName(playerid,spieler,sizeof(spieler));
format(save,sizeof(save),"Spieler/%s.ini",spieler);
if(dini_Exists(save)) // wenn Datei existiert
{
s2=dini_Get(save,"passwort"); // lade das Passwort
if(strval(s2)==udb_hash(strget(cmdtext,1))) // wenn die Eingabe nach /login mit dem Passwort von der registration übereinstimmt
{
loggedin[playerid] = true; //sage dem Server, dass der Spieler eingeloggt ist.
SendClientMessage(playerid, 0x33CCFFAA, "***Du hast dich erfolgreich eingeloggt***");
SpawnPlayer(playerid);
}
else // wenn das passwort nicht stimmt
{
SendClientMessage(playerid, 0xAA3333AA, "Passwort Falsch!");
}
}
return 1;
}
stock strget(strx[], pos, search = ' ')
{
new arg, ret[128], idxx;
for (new i = 0; i < strlen(strx); i++)
{
if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10)
{
arg++;
if (arg == pos + 1)
{
ret[i-idxx] = EOS;
return ret;
}
else if (arg == pos)
idxx= i+1;
}
else if (arg == pos)
ret[i - idxx] = strx[i];
}
return ret;
}
Alles anzeigen
Das hier habe ich hier im forum bekommen.
Ich habe es alles so eingefügt wie es da stand und nur errors:
Also wenn es geht, würde ich das gerne als filterscript laufen lassen.
Wenn das hier jemand verbessern könnte, währe das sehr nett.