#include <a_samp>
#include <dini>
#include <Dudb>
#pragma unused ret_memcpy
#pragma unused strtok
#pragma unused loggedin
#pragma unused pInfo
#pragma tabsize 0
main()
{
print("\n----------------------------------");
print(" Herzlich Wilkommen auf .::[ German Realive at GRL ]::.");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("German Realive");
AddPlayerClass(0,1108.7482,-1796.7314,16.5938,86.7707,0,0,0,0,0,0); // position;
AddPlayerClass(1,1108.7482,-1796.7314,16.5938,86.7707,25,0,0,0,0,0); // position
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid,1108.4147,-1796.7128,16.5938);
SetPlayerFacingAngle(playerid,86.7707);
SetPlayerCameraPos(playerid,1108.4147,-1796.7128,16.5938);
SetPlayerCameraLookAt(playerid,1108.4147,-1796.7128,16.5938);
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].");
}
}
new string[256];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername,sizeof(playername));
format(string, sizeof(string), "Willkomen %s auf German Realive at GRL ",playername);
SendClientMessage(playerid, 0xF0F0F0FF,string);
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 OnPlayerDeath(playerid, killerid, reason)
{
SendClientMessage(killerid,0xFFFF00FF,"Sie haben einen Mord begannen");
SendClientMessage(playerid,0xFFFF00FF,"[Sie sind Tod [Mord/Unfall]");
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new spieler[MAX_PLAYER_NAME];
if(strcmp(cmdtext, "/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((cmdtext))); // 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;
}
new loggedin[MAX_PLAYERS];//Das bei den defines hinschreiben
if(strcmp(cmdtext, "/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((cmdtext))) // 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;
}
if (strcmp("/help", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0x00B9FFFF,"••••Account•••• /stats /login /changepass /buylevel /rules");
SendClientMessage(playerid,0xF0F0F0FF,"••••Allgemeines•••• /pay /time /buy /showperso /id /drink /shwolicenses /members");
SendClientMessage(playerid,0xF0F0F0FF,"••••Allgemeines•••• /buygun /skill /licenses /lotto /spawnchange");
SendClientMessage(playerid,0xF0F0F0FF,"••••Allgemeines•••• /showfinances /cancel /accept /eject /usedrugs /contract /fill /filllcar /get fuel");
SendClientMessage(playerid,0xF0F0F0FF,"••••Allgemeines•••• /shwome /lehrer /showoilprice /gebietinfo /tognews /togfam");
SendClientMessage(playerid,0xF0F0F0FF,"••••Anderes•••• /rentcar /rentbike /hangup /call /househelp /renthelp /leaderhelp");
SendClientMessage(playerid,0xF0F0F0FF,"••••Anderes•••• /cookhelp /fishhelp /ganghelp /onlinehelp");
SendClientMessage(playerid,0xF0F0F0FF,"••••Chat•••• /(A)dmin /(sup)port /(s)shout /(c)lose /(f)amily /me");
SendClientMessage(playerid,0xF0F0F0FF,"••••Bank•••• /givecheck /usecheck /dropcheck /balance /withdraw /deposit /wiretransfare");
return 1;
}
if (strcmp("/rules", cmdtext, true, 10) ==0)
{
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0xF50000FF," _________________________________________________________________");
SendClientMessage(playerid,0xF50000FF,"| Für Informationen zu den Regeln schaue doch mal im Forum vorbei ");
SendClientMessage(playerid,0xF50000FF,"| http://german-realive-at-grl.dyndns.org/wcf2/ ");
SendClientMessage(playerid,0xF50000FF,"|_________________________________________________________________");
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0xF50000FF," ");
SendClientMessage(playerid,0xF50000FF," ");
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
enum Info
{
passwort[128],
skin,
};
new pInfo[MAX_PLAYERS][Info];
new bool:loggedin[MAX_PLAYERS];
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;
}