Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //INCLUDES
- #include <a_samp>
- #include <ocmd>
- #include <a_mysql>
- #include <sscanf2>
- //DEFINES
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 30
- #define Host "127.0.0.1"
- #define Username "root"
- #define Passwort ""
- #define Database "selfmade"
- //GLOBALE VARIABLEN
- new mycon;
- //ENUMS
- enum {
- Dialog_Reg = 1, // Anpassen, falls notwendig
- Dialog_Login
- }
- enum SpielerInfo
- {
- pName[MAX_PLAYER_NAME+1],
- pMoney,
- Float:pHealth,
- LastLogin[11],
- bool:pLogged
- }
- new PlayerInfo[MAX_PLAYERS][SpielerInfo];
- //Forwards
- forward LoadPlayerDataSequence(playerid, l_step);
- forward KickPlayer(playerid);
- //Main Ausgabe
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- //==================================================//
- public OnGameModeInit()
- {
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- mycon = mysql_connect("127.0.0.1","Username","Database","Passwort");
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close();
- 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);
- PlayerInfo[playerid][pLogged] = 2;
- SpawnPlayer(playerid);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
- new query[60 + MAX_PLAYER_NAME];
- mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `User` WHERE `Name` = '%e'",PlayerInfo[playerid][pName]);
- mysql_function_query(mycon, query, true, "LoadPlayerDataSequence","dd",playerid,1);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(PlayerInfo[playerid][pLogged])
- {
- SavePlayerData(playerid);
- }
- ResetPlayerVariables(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerPos(playerid,-1977.1072,289.4454,35.1719);
- if(PlayerInfo[playerid][pLogged] == 2)
- {
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/mycommand", cmdtext, true, 10) == 0)
- {
- // Do something here
- 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[])
- {
- switch(dialogid)
- {
- case Dialog_Reg:
- {
- if(!response) // Wenn er den 2. Button (Abbrechen) gedrückt wurde
- {
- SendClientMessage(playerid,0xFF0000FF,"Bitte benutzen Sie /q, um das Spiel zu beenden!");
- SetTimerEx("KickPlayer",250,0,"i",playerid);
- return 1;
- }
- if(!strlen(inputtext) || strlen(inputtext) < 5 || strlen(inputtext) > 25) // Für Anfänger (nehmen wir diese!)
- // if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
- {
- // Da die Eingabe wegen Länge oder gar keiner Eingabe fehlgeschlagen ist, bitten wir ihn erneut um eine Eingabe, diesmal mit Hinweis (in Rot!)
- ShowPlayerDialog(playerid, Dialog_Reg, DIALOG_STYLE_PASSWORD, "{00FF00}[Passwort Eingabe - Registrierung]","{FFFFFF}Bitte geben Sie Ihr gewünschtes Passwort ein!\n{FF0000}Bitte zwischen 5 & 25 Zeichen!","Register","Abbrechen");
- return 1;
- }
- new query[128+MAX_PLAYER_NAME], year, month, day;
- getdate(year, month, day);
- format(query,sizeof(query),"%d/%d/%d",day,month,year); // Damit wir keine extra Variable noch extra erstellen müssen
- mysql_format(mycon,query, sizeof(query), "INSERT INTO `User` (`Name`, `Passwort`, `Geld`, `Leben`, `LastLogin`) VALUES('%e','%e',0,100.0,'%e')", PlayerInfo[playerid][pName], inputtext, query);
- mysql_tquery(mycon, query, "", ""); // Hier benutzen wir mysql_tquery, da wir keine Werte aus der Datenbank brauchen, sondern etwas reinschreiben
- PlayerInfo[playerid][pLogged] = true;
- SpawnPlayer(playerid);
- return 1;
- }
- case Dialog_Login:
- {
- if(!response)
- {
- SendClientMessage(playerid,0xFF0000FF,"Bitte benutzen Sie /q, um das Spiel zu beenden!");
- SetTimerEx("KickPlayer",250,0,"i",playerid);
- return 1;
- }
- if(!strlen(inputtext) || strlen(inputtext) < 5 || strlen(inputtext) > 25) // Wie gesagt, Für Anfänger
- // if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25)) // Für Fortgeschrittene
- {
- // Da die Eingabe wegen Länge oder gar keiner Eingabe fehlgeschlagen ist, bitten wir ihn erneut um eine Eingabe, wieder mit Hinweis (in Rot!)
- ShowPlayerDialog(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "{00FF00}[Passwort Eingabe - Loginsequenz]","{FFFFFF}Bitte geben Sie Ihr Passwort ein!\n{FF0000}Es hat mindestens 5 Zeichen!","Login","Abbrechen");
- return 1;
- }
- // So hier müssen wir nun Abfragen ob das Passwort denn dasselbe ist!
- new query[80 + MAX_PLAYER_NAME];
- mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `User` WHERE `Name` = '%e' AND `Passwort` = '%e'",PlayerInfo[playerid][pName],inputtext);
- // Hier ganz einfach, wie beim anderen COUNT, wird hier auch gezählt, ob es diesen Eintrag, wo Name und Passwort gleich sind, gibt!
- mysql_function_query(mycon, query, true, "LoadPlayerDataSequence","dd",playerid,2); // Step 2
- // Das ganze schicken wir ab!
- return 1;
- }
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- public LoadPlayerDataSequence(playerid, l_step)
- {
- switch(l_step)
- {
- case 1:
- {
- // Jetzt gucken wir, ob es einen Eintrag gibt
- new count = cache_get_field_content_int(0,"count"); // Hier holen wir uns den Integer als der "count", die wir temporär in MySQL erstellt haben und stecken sie in die Variable count
- if(count) // Wenn count 1 oder höher ist (Keine Angst, höher als 1 kann sie nicht kommen)
- {
- // Der Eintrag existiert, also lassen wir den Spieler einloggen
- ShowPlayerDialog(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "{00FF00}[Passwort Eingabe - Loginsequenz]","{FFFFFF}Bitte geben Sie Ihr Passwort ein!","Login","Abbrechen");
- return 1;
- }
- else
- {
- // Es gibt keinen Eintrag, also ist er neu und muss sich registrieren
- ShowPlayerDialog(playerid, Dialog_Reg, DIALOG_STYLE_PASSWORD, "{00FF00}[Passwort eingabe - Registrierung]","{FFFFFF}Bitte geben Sie Ihr gewünschtes Passwort ein!","Register","Abbrechen");
- return 1;
- }
- }
- case 2:
- {
- // Jetzt gucken wir, ob es einen Eintrag gibt
- new count = cache_get_field_content_int(0,"count");
- if(count) // Wenn count 1 oder höher ist
- {
- // Der Eintrag existiert, also lassen wir den Spieler nun die Spielerdaten laden und danach den Spieler spawnen
- new query[60 + MAX_PLAYER_NAME];
- mysql_format(mycon,query, sizeof(query), "SELECT * FROM `User` WHERE `Name` = '%e'",PlayerInfo[playerid][pName]);
- mysql_function_query(mycon,query,true,"LoadPlayerDataSequence","dd",playerid,3);
- return 1;
- }
- else
- {
- // Es gibt keinen Eintrag, also ist das Passwort falsch
- ShowPlayerDialog(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "{00FF00}[Passwort Eingabe - Loginsequenz]","{FFFFFF}Bitte geben Sie Ihr richtiges Passwort ein!\n{FF0000}Die vorherige Eingabe war falsch!","Login","Abbrechen");
- return 1;
- }
- }
- case 3:
- {
- // Wir laden nun die Spielerdaten
- // Der Vorteil bei den cache-Funktionen ist, dass sie am Ende kein mysql_free_result brauchen sondern direkt danach den Cache leeren
- PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0,"Geld");
- PlayerInfo[playerid][pHealth] = cache_get_field_content_float(0,"Leben");
- cache_get_field_content(0,"LastLogin",PlayerInfo[playerid][LastLogin]);
- PlayerInfo[playerid][pLogged] = true;
- SpawnPlayer(playerid);
- return 1;
- // Fertig!
- }
- default:
- {
- SendClientMessage(playerid,0xFF0000FF,"Es könnte ein Bug aufgetreten sein! Bitte reconnecten Sie!");
- SetTimerEx("KickPlayer",250,0,"i",playerid);
- return 1;
- }
- }
- return 1;
- }
- stock SavePlayerData(playerid)
- {
- // Hier speichern wir noch die Daten ab
- new query[150 + MAX_PLAYER_NAME];
- new day,month,year; getdate(year,month,day);
- format(PlayerInfo[playerid][LastLogin],11,"%d/%d/%d",day,month,year);
- mysql_format(mycon,query, sizeof(query), "UPDATE `User` SET `Geld` = %d,`Leben` = %.1f,`LastLogin` = '%e' WHERE `Name` = '%e'",PlayerInfo[playerid][pMoney],PlayerInfo[playerid][pHealth],PlayerInfo[playerid][LastLogin],PlayerInfo[playerid][pName]);
- mysql_tquery(mycon,query,"","");
- return 1;
- }
- stock ResetPlayerVariables(playerid)
- {
- // Und hier noch Resetten
- for(new x; SpielerInfo:x < SpielerInfo; ++x) PlayerInfo[playerid][SpielerInfo:x] = 0;
- return 1;
- }
- public KickPlayer(playerid)
- return Kick(playerid);
Advertisement
Add Comment
Please, Sign In to add comment