Wenn schon, dann Co-, technischer und Webmasterleiter 
Beiträge von JAYMC
- 
					
- 
					DeMaX: Kritik angenommen. Wird in's überarbeitete Design einfliesen. 
- 
					/sign true story 
- 
					// This is a comment 
 // uncomment the line below if you want to write a filterscript
 //#define FILTERSCRIPT#include <a_samp> 
 #include <a_mysql>#define SQL_HOST "127.0.0.1" 
 #define SQL_USER "root"
 #define SQL_PASS ""
 #define SQL_DATA "samp"#define DIALOG_REGISTER (1) 
 #define DIALOG_LOGIN (2)enum SpielerDaten 
 {
 pName[MAX_PLAYER_NAME],
 pLevel,
 pGeld,
 pKills,
 pTode,
 Float:pHealth
 }
 new SpielerInfo[MAX_PLAYERS][SpielerDaten];#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 public OnGameModeInit() 
 {
 mysql_debug(1);
 Connect_To_Database();// 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 OnGameModeExit() 
 {
 return 1;
 }public OnPlayerRequestClass(playerid, classid) 
 {
 if(GetPVarInt(playerid,"Eingeloggt") == 0) //Als erstes fragen wir ab ob der Spieler schon eingeloggt ist oder nicht, damit wir nicht bei jeder Skin Auswahl uns neu Einloggen müssen.
 {
 if(mysql_CheckAccount(playerid) == 0)//Wir überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
 {
 SendClientMessage(playerid, 0xFFFFFFFF,"________-> Willkommen auf auf meinem Server <-________");
 SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde nicht gefunden, bitte Registriere dich!");
 ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Bitte Gib ein Passwort an:","Register","Exit");
 }
 else if(mysql_CheckAccount(playerid) == 1)//Falls doch zeigen wir den Dialog zum Einloggen.
 {
 SendClientMessage(playerid, 0xFFFFFFFF,"________-> Willkommen auf auf meinem Server <-________");
 SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde gefunden, bitte Log dich nun ein!");
 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen");
 }
 }return 1; 
 /*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) 
 {
 return 1;
 }public OnPlayerDisconnect(playerid, reason) 
 {
 SavePlayer(playerid);
 DeletePVar(playerid,"Eingeloggt");return 1; 
 }public OnPlayerSpawn(playerid) 
 {
 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_REGISTER:
 {
 if(response)
 {
 if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
 {
 ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
 return 1;
 }
 else
 {
 CreateAccount(playerid, inputtext); //Account wird erstellt
 SetPVarInt(playerid,"Eingeloggt",1); //Die variable wird auf 1 gesetzt, damit wir nun die Skin Auswahl benutzen können ohne wieder nach unserem Passwort gefragt zu werden.
 SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
 return 1;
 }
 }
 else
 {
 Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
 }
 }
 case DIALOG_LOGIN:
 {
 if(response)
 {
 if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
 {
 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
 return 1;
 }
 else
 {
 new SpielerName[MAX_PLAYER_NAME];
 GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
 if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und überprüfen es mit dem angegebenen passwort.
 {
 SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwörter übereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen können.
 LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
 SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
 return 1;
 }
 else
 {
 //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
 return 1;
 }
 }
 }
 else
 {
 Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
 }
 }
 }return 1; 
 }public OnPlayerClickPlayer(playerid, clickedplayerid, source) 
 {
 return 1;
 }stock LoadPlayer(playerid) 
 {
 if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
 {
 GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable SpielerInfo[playerid][pName]
 SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "level", "name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
 SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "money", "name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.print(SpielerInfo[playerid][pName]); 
 print(SpielerInfo[playerid][pLevel]);
 print(SpielerInfo[playerid][pGeld]);
 }
 return 1;
 }stock SavePlayer(playerid) 
 {
 if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
 {
 if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
 {
 //Nun speichern wir die Daten in der Datenbank.
 mysql_SetInt("accounts", "level", SpielerInfo[playerid][pLevel], "name", SpielerInfo[playerid][pName]);
 mysql_SetInt("accounts", "money", SpielerInfo[playerid][pGeld], "name", SpielerInfo[playerid][pName]);
 }
 }
 return 1;
 }stock Connect_To_Database() 
 {
 mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
 if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
 {
 //Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
 print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
 return true;
 }
 else
 {
 //Falls nicht wird erneut versucht eine Verbindung aufzubauen.
 print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
 print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
 mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
 if(mysql_ping() == 1)
 {
 print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
 return true;
 }
 else
 {
 //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
 print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
 print("<-| [MYSQL] Der Server wird nun beendet!");
 SendRconCommand("exit");
 return true;
 }
 }
 }stock mysql_CheckAccount(playerid) 
 {
 new Query[128],Name[MAX_PLAYER_NAME],count;
 GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
 mysql_real_escape_string(Name, Name);
 format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `name` = '%s'", Name);
 print(Query);
 mysql_query(Query);
 mysql_store_result();
 count = mysql_num_rows();
 mysql_free_result();
 return count;
 }stock CreateAccount(playerid, pass[]) 
 {
 new query[256],Name[MAX_PLAYER_NAME];
 GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
 mysql_real_escape_string(Name,Name);
 mysql_real_escape_string(pass,pass);
 format(query, sizeof(query), "INSERT INTO `accounts` (`name`, `password`) VALUES ('%s', '%s')", Name, pass);
 print(query);
 mysql_query(query);
 return true;
 }stock mysql_ReturnPasswort(Name[]) 
 {
 new query[130], Get[130];
 mysql_real_escape_string(Name, Name);
 format(query, 128, "SELECT `password` FROM `accounts` WHERE `name` = '%s'", Name);
 print(query);
 mysql_query(query);
 mysql_store_result();
 mysql_fetch_row(Get);
 mysql_free_result();
 return Get;
 }stock mysql_GetInt(Table[], Field[], Where[], Is[]) 
 {
 new query[128];
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Is, Is);
 format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
 print(query);
 mysql_query(query);
 mysql_store_result();
 new sqlint = mysql_fetch_int();
 mysql_free_result();
 return sqlint;
 }stock mysql_GetString(Table[], Field[], Where[], Is[]) 
 {
 new query[128], Get[128];
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Is, Is);
 format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
 print(query);
 mysql_query(query);
 mysql_store_result();
 mysql_fetch_row(Get);
 mysql_free_result();
 return Get;
 }stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[]) 
 {
 new query[128], Float:sqlfloat;
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Is, Is);
 format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
 print(query);
 mysql_query(query);
 mysql_store_result();
 mysql_fetch_float(sqlfloat);
 mysql_free_result();
 return sqlfloat;
 }stock mysql_SetInt(Table[], Field[], To, Where[], Where2[]) 
 {
 new query[128];
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Where2, Where2);
 format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
 print(query);
 mysql_query(query);
 return true;
 }stock mysql_SetString(Table[], Field[], To[], Where[], Where2[]) 
 {
 new query[128];
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(To, To);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Where2, Where2);
 format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
 print(query);
 mysql_query(query);
 return true;
 }stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[]) 
 {
 new query[128];
 mysql_real_escape_string(Table, Table);
 mysql_real_escape_string(Field, Field);
 mysql_real_escape_string(Where, Where);
 mysql_real_escape_string(Where2, Where2);
 format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
 print(query);
 mysql_query(query);
 return true;
 }DB ist auf latin1-charset. /edit: MySQL-Batch SQLCREATE TABLE `accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL, `password` varchar(128) NOT NULL, `level` int(11) NOT NULL DEFAULT '1', `money` int(11) NOT NULL DEFAULT '0', `health` float NOT NULL DEFAULT '100', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
- 
					Bei mir funzt das irgendwie nicht, der ließt sich da beim geld en smiley mit ner 9 dahinter aus. 
 in der log lässt er dann den smiley raus
 [22:52:52] 9
 [22:52:52] 9gestern hatte ich, wo ich uff utf8 war, nur 
 [21:50:03] ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
 [21:50:03] ÿÿÿÿÿÿÿÿÿÿÿÿ
 [21:50:03] ÿÿÿÿÿÿÿÿ
 [21:50:03] ÿÿÿÿWo ist mein Fehler? /edit: ich habe das script beim oberen eintrag 1:1 kopiert un zwar in ein blank-script von pawno. 
 
		 
		
		
	