Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***********************************************************
- * LA FS Fahrschulsystem (c) 2013 by Logan *
- * Qualifikationssystem für Skripting Battle Turnier 2013 *
- * Die einzelnen Prüfungen kosten absichtlich kein Geld *
- **********************************************************/
- #define FILTERSCRIPT //für Leute, die ZCMD benutzen
- //SPEICHERUNGSART WÄHLEN
- #define SAVE 1 //1 entspricht MySQL,2 entspricht SQLITE
- // ======================================================
- //Zwingend benötigte Includes
- #include <a_samp>
- // =======================================================
- //Je nach gewählter Speicherungsart werden benötigte Sachen deklariert bzw. definiert
- #if SAVE == 1
- #include <a_mysql> //Achtung, du benötigst mindestens R7 des MySQL Plugins von BlueG. Frühere Versionen funktionieren nicht!
- #define SQL_HOST "anpassen" //anpassen
- #define SQL_USER "anpassen" //anpassen
- #define SQL_PASS "anpassen" //anpassen
- #define SQL_DATA "anpassen" //an den Namen der Datenbank anpassen
- new dbhandle; //DBHandle für MySQL Verbindung
- #elseif SAVE == 2
- new DB:database; //Um die ID der SQLite Datenbank zwischenzuspeichern
- #else
- #error SAVE besitzt einen ungueltigen Wert. Nur 1 oder 2 ist moeglich!
- #endif
- #define TABLE "fsauto" //Name der Tabelle anpassbar (für SQLite oder MySQL Tabelle)
- #define GRÜN 0x008000FF
- // =================================================================================
- // Dialog Enum
- enum
- {
- DIALOG_FS = 400 //Wenn schon benutzt, dann abändern
- };
- // ===================================================================================
- // NICHT ÜBER DIE LINIE WEITER EDITIEREN, WENN IHR KEIN PAWN KÖNNT!
- // ====== DO NOT EDIT ========== DO NOT EDIT =========== DO NOT EDIT ======== DO NOT EDIT ======= DO NOT EDIT ==============
- // ====== DO NOT EDIT ========== DO NOT EDIT =========== DO NOT EDIT ======== DO NOT EDIT ======= DO NOT EDIT ==============
- // ====== DO NOT EDIT ========== DO NOT EDIT =========== DO NOT EDIT ======== DO NOT EDIT ======= DO NOT EDIT ==============
- // ====== DO NOT EDIT ========== DO NOT EDIT =========== DO NOT EDIT ======== DO NOT EDIT ======= DO NOT EDIT ==============
- // ====== DO NOT EDIT ========== DO NOT EDIT =========== DO NOT EDIT ======== DO NOT EDIT ======= DO NOT EDIT ==============
- enum eSpielerInfo
- {
- pName[MAX_PLAYER_NAME+1], //+1 da der NULL Terminator ja auch eine Zelle benötigt, damit es wirklich 24 Zellen sind und nicht 23 ;)
- pAuto,
- pBike,
- pLKW
- }
- enum eFahrStationen
- {
- Float:fX,
- Float:fY,
- Float:fZ,
- Float:fnextX,
- Float:fnextY,
- Float:fnextZ,
- Float:fRad
- }
- enum eFahrInfo
- {
- bool:fAktiv,
- fCheckpoint,
- fVehicleid,
- fArt
- }
- new SpielerInfo[MAX_PLAYERS][eSpielerInfo];
- new Fahrstationen[][eFahrStationen] = {
- {-2034.5909,-73.4294,34.7546,-1947.0322,-67.1409,25.4910,7.0},
- {-1947.0322,-67.1409,25.4910,-1811.2249,-118.6313,5.0517,7.0},
- {-1811.2249,-118.6313,5.0517,-1797.6959,17.7970,14.5378,7.0},
- {-1797.6959,17.7970,14.5378,-1802.4938,226.8123,14.5299,7.0},
- {-1802.4938,226.8123,14.5299,-1742.1429,303.8414,6.6218,7.0},
- {-1742.1429,303.8414,6.6218,-1846.1176,413.7618,16.5772,7.0},
- {-1846.1176,413.7618,16.5772,-1831.0403,520.2454,31.7044,7.0},
- {-1831.0403,520.2454,31.7044,-1894.1261,653.0386,37.4152,7.0},
- {-1894.1261,653.0386,37.4152,-1917.9962,737.7111,44.8738,7.0},
- {-1917.9962,737.7111,44.8738,-1990.4030,735.8693,44.8770,7.0},
- {-1990.4030,735.8693,44.8770,-2007.9432,664.3254,42.6214,7.0},
- {-2007.9432,664.3254,42.6214,-2008.8557,420.4761,34.5927,7.0},
- {-2008.8557,420.4761,34.5927,-2009.5245,157.9915,27.1160,7.0},
- {-2009.5245,157.9915,27.1160,-2009.9578,37.3618,32.3767,7.0},
- {-2009.9578,37.3618,32.3767,-2091.1091,10.5349,34.7473,7.0},
- {-2091.1091,10.5349,34.7473,-2090.7344,-64.7782,34.7507,7.0},
- {-2090.7344,-64.7782,34.7507,-2053.1812,-73.6055,34.7365,7.0},
- {-2053.1812,-73.6055,34.7365,-2023.1753,-97.6587,34.7504,7.0},
- {-2023.1753,-97.6587,34.7504,0.0,0.0,0.0,7.0}
- };
- new Fahren[MAX_PLAYERS][eFahrInfo];
- // =============================================================================
- // CALLBACKS
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" LA FS by Logan successfully loaded.");
- print("--------------------------------------\n");
- #if SAVE == 1
- dbhandle = mysql_connect(SQL_HOST,SQL_USER,SQL_DATA,SQL_PASS);
- if(mysql_ping())
- printf("Die MySQL-Verbindung wurde erfolgreich aufgebaut.\n(Host: %s,Datenbank: %s)",SQL_HOST,SQL_DATA);
- else {
- print("[LAFS] [ERROR]: Die MySQL-Verbindung ist fehlgeschlagen.\nBitte passe die MySQL Zugangsdaten im Filterscript an!\nDer Server wird heruntergefahren!");
- SendRconCommand("exit");
- }
- CreateTableIfNotExist();
- #elseif SAVE == 2
- database = db_open("la_fs.db");
- print("[LAFS]: SQLite-Verbindung zur Datebank la_fs hergestellt");
- CreateTableIfNotExist();
- #endif
- AddStaticPickup(1239,1,-2046.4668,-97.4066,35.1641,-1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i;i!=MAX_PLAYERS;i++) {
- if(!IsPlayerConnected(i))continue;
- if(GetPVarInt(i,"logged") != 1)continue;
- SavePlayer(i);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(GetPVarInt(playerid,"logged") == 0 && !IsPlayerNPC(playerid)) {
- GetPlayerName(playerid,SpielerInfo[playerid][pName],MAX_PLAYER_NAME+1);
- mysql_real_escape_string(SpielerInfo[playerid][pName],SpielerInfo[playerid][pName]);
- new str[120];
- #if SAVE == 1
- format(str,sizeof str,"SELECT `ID` FROM `"TABLE"` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
- mysql_function_query(dbhandle,str,true,"CheckAccount","i",playerid);
- #else
- new DBResult:result;
- format(str,sizeof str,"SELECT `ID` FROM `"TABLE"` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
- result = db_query(database,str);
- new count = db_num_rows(result);
- db_free_result(result);
- if(count == 1) {
- format(str,sizeof str,"SELECT `Auto`,`Bike`,`LKW` FROM `"TABLE"` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
- result = db_query(database,str);
- db_get_field_assoc(result,"Auto",str,3);
- SpielerInfo[playerid][pAuto] = strval(str);
- db_get_field_assoc(result,"Bike",str,3);
- SpielerInfo[playerid][pBike] = strval(str);
- db_get_field_assoc(result,"LKW",str,3);
- SpielerInfo[playerid][pLKW] = strval(str);
- db_free_result(result);
- SetPVarInt(playerid,"logged",1);
- }
- else {
- format(str,sizeof str,"INSERT INTO `"TABLE"` (`Name`) VALUES ('%s')",SpielerInfo[playerid][pName]);
- db_query(database,str);
- SetPVarInt(playerid,"logged",1);
- }
- #endif
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
- {
- if(newkeys & KEY_SECONDARY_ATTACK && IsPlayerInRangeOfPoint(playerid,3,-2046.4668,-97.4066,35.1641) && !IsPlayerInAnyVehicle(playerid)) //ENTER TASTE
- {
- if(Fahren[playerid][fAktiv] == true)return SendClientMessage(playerid,-1,"Du bist derzeit noch in einer Fahrstunde!");
- ShowPlayerDialog(playerid,DIALOG_FS,DIALOG_STYLE_LIST,"Automatische Fahrschule - Scheinart","Autoschein\nMotorradschein\nLKW-Schein","OK","Abbrechen");
- }
- return 1;
- }
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- if(response) {
- switch(dialogid) {
- case DIALOG_FS: {
- switch(listitem) {
- case 0: {
- if(SpielerInfo[playerid][pAuto])return SendClientMessage(playerid,-1,"Du besitzt bereits den Autoschein!");
- Fahren[playerid][fVehicleid] = CreateVehicle(405,-2072.4856,-83.1894,34.8911,180.6287,1,1,-1);
- PutPlayerInVehicle(playerid,Fahren[playerid][fVehicleid],0);
- Fahren[playerid][fCheckpoint] = 0;
- Fahren[playerid][fArt] = 0;
- Fahren[playerid][fAktiv] = true;
- SendClientMessage(playerid,-1,"Fahrstunde gestartet, fahre nun die Checkpoints ab!");
- SetPlayerRaceCheckpoint(playerid,0,Fahrstationen[0][fX],Fahrstationen[0][fY],Fahrstationen[0][fZ],Fahrstationen[0][fnextX],Fahrstationen[0][fnextY],Fahrstationen[0][fnextZ],Fahrstationen[0][fRad]);
- }
- case 1: {
- if(SpielerInfo[playerid][pBike])return SendClientMessage(playerid,-1,"Du besitzt bereits den Motorradschein!");
- Fahren[playerid][fVehicleid] = CreateVehicle(461,-2072.4856,-83.1894,34.8911,180.6287,1,1,-1);
- PutPlayerInVehicle(playerid,Fahren[playerid][fVehicleid],0);
- Fahren[playerid][fCheckpoint] = 0;
- Fahren[playerid][fArt] = 1;
- Fahren[playerid][fAktiv] = true;
- SendClientMessage(playerid,-1,"Fahrstunde gestartet, fahre nun die Checkpoints ab!");
- SetPlayerRaceCheckpoint(playerid,0,Fahrstationen[0][fX],Fahrstationen[0][fY],Fahrstationen[0][fZ],Fahrstationen[0][fnextX],Fahrstationen[0][fnextY],Fahrstationen[0][fnextZ],Fahrstationen[0][fRad]);
- }
- case 2: {
- if(SpielerInfo[playerid][pLKW])return SendClientMessage(playerid,-1,"Du besitzt bereits den LKW-Schein!");
- Fahren[playerid][fVehicleid] = CreateVehicle(578,-2072.4856,-83.1894,34.8911,180.6287,1,1,-1);
- PutPlayerInVehicle(playerid,Fahren[playerid][fVehicleid],0);
- Fahren[playerid][fCheckpoint] = 0;
- Fahren[playerid][fArt] = 2;
- Fahren[playerid][fAktiv] = true;
- SendClientMessage(playerid,-1,"Fahrstunde gestartet, fahre nun die Checkpoints ab!");
- SetPlayerRaceCheckpoint(playerid,0,Fahrstationen[0][fX],Fahrstationen[0][fY],Fahrstationen[0][fZ],Fahrstationen[0][fnextX],Fahrstationen[0][fnextY],Fahrstationen[0][fnextZ],Fahrstationen[0][fRad]);
- }
- }
- }
- }
- }
- return 0; //wg Filterscript
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- if(Fahren[playerid][fAktiv] == true) {
- Fahren[playerid][fCheckpoint]++;
- DisablePlayerRaceCheckpoint(playerid);
- new nextcp = Fahren[playerid][fCheckpoint];
- if(nextcp == sizeof Fahrstationen) {
- new Float:hp;
- Fahren[playerid][fAktiv] = false;
- GetVehicleHealth(GetPlayerVehicleID(playerid),hp);
- DestroyVehicle(GetPlayerVehicleID(playerid));
- if(hp >= 900) {
- GameTextForPlayer(playerid,"~g~Bestanden",3000,4);
- switch(Fahren[playerid][fArt]) {
- case 0: SpielerInfo[playerid][pAuto] = 1;
- case 1: SpielerInfo[playerid][pBike] = 1;
- case 2: SpielerInfo[playerid][pLKW] = 1;
- }
- }
- else {
- SendClientMessage(playerid,-1,"Du bist durchgefallen, weil du das Fahrzeug zu arg beschädigt hast!");
- }
- }
- else if((sizeof Fahrstationen - nextcp) == 1) {
- SetPlayerRaceCheckpoint(playerid,1,Fahrstationen[nextcp][fX],Fahrstationen[nextcp][fY],Fahrstationen[nextcp][fZ],Fahrstationen[nextcp][fnextX],Fahrstationen[nextcp][fnextY],Fahrstationen[nextcp][fnextZ],Fahrstationen[nextcp][fRad]);
- }
- else {
- SetPlayerRaceCheckpoint(playerid,0,Fahrstationen[nextcp][fX],Fahrstationen[nextcp][fY],Fahrstationen[nextcp][fZ],Fahrstationen[nextcp][fnextX],Fahrstationen[nextcp][fnextY],Fahrstationen[nextcp][fnextZ],Fahrstationen[nextcp][fRad]);
- }
- }
- return 1;
- }
- public OnPlayerStateChange(playerid,newstate,oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER && Fahren[playerid][fAktiv] == false) {
- new model = GetVehicleModel(GetPlayerVehicleID(playerid));
- if((IsCar(model) && SpielerInfo[playerid][pAuto] != 1) || (IsBike(model) && SpielerInfo[playerid][pBike] != 1) || (IsLKW(model) && SpielerInfo[playerid][pLKW] != 1)) {
- SetPlayerDrunkLevel(playerid,6000);
- SendClientMessage(playerid,-1,"Du hast keinen Fuehrerschein und kannst nicht richtig fahren!");
- }
- }
- else if(Fahren[playerid][fAktiv] == false && (SpielerInfo[playerid][pAuto] != 1 || SpielerInfo[playerid][pBike] != 1 || SpielerInfo[playerid][pLKW] != 1)) {
- SetPlayerDrunkLevel(playerid,0);
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid,vehicleid)
- {
- if(Fahren[playerid][fAktiv] == true) {
- SendClientMessage(playerid,-1,"Du bist durchgefallen, weil du dein Fahrzeug verlassen hast!");
- Fahren[playerid][fAktiv] = false;
- DestroyVehicle(GetPlayerVehicleID(playerid));
- DisablePlayerRaceCheckpoint(playerid);
- }
- return 1;
- }
- public OnVehicleDeath(vehicleid,killerid) //Die Killerid kann auch jmd. anderes sein, da ich die playerid nicht migeliefert bekomme, kann ichs nicht anders "abchecken"
- {
- for(new i;i!=MAX_PLAYERS;i++) {
- if(!IsPlayerConnected(i))continue;
- if(Fahren[i][fAktiv] == false)continue;
- if(Fahren[i][fVehicleid] != vehicleid)continue;
- DestroyVehicle(Fahren[i][fVehicleid]);
- Fahren[i][fAktiv] = false;
- SendClientMessage(i,-1,"Du bist durchgefallen, weil du dein Fahrzeug zerstoert hast!");
- DisablePlayerRaceCheckpoint(i);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- if(!IsPlayerNPC(playerid)) {
- SavePlayer(playerid);
- }
- else if(Fahren[playerid][fAktiv] == true) {
- DestroyVehicle(GetPlayerVehicleID(playerid));
- Fahren[playerid][fAktiv] = false;
- DisablePlayerRaceCheckpoint(playerid);
- }
- return 1;
- }
- public OnPlayerCommandText(playerid,cmdtext[])
- {
- if(!strcmp(cmdtext,"/fs",true)) {
- SetPlayerPos(playerid,-2046.4668,-97.4066,35.1641);
- }
- return 0;
- }
- // ======================================================================================================
- // THREADED QUERYS
- #if SAVE == 1
- forward CheckAccount(playerid);
- public CheckAccount(playerid)
- {
- new rows,fields;
- cache_get_data(rows,fields);
- new query[130];
- if(!rows) {
- format(query,sizeof query,"INSERT INTO `"TABLE"` (`Name`) VALUES ('%s')",SpielerInfo[playerid][pName]);
- mysql_function_query(dbhandle,query,false,"","");
- }
- else {
- format(query,sizeof query,"SELECT `Auto`,`Bike`,`LKW` FROM `"TABLE"` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
- mysql_function_query(dbhandle,query,true,"LoadAccount","i",playerid);
- }
- return 1;
- }
- forward LoadAccount(playerid);
- public LoadAccount(playerid)
- {
- new store[20];
- cache_get_field_content(0,"Auto",store,dbhandle); SpielerInfo[playerid][pAuto] = strval(store);
- cache_get_field_content(0,"Bike",store,dbhandle); SpielerInfo[playerid][pBike] = strval(store);
- cache_get_field_content(0,"LKW",store,dbhandle); SpielerInfo[playerid][pLKW] = strval(store);
- return 1;
- }
- #endif
- // =========================================================================================================
- // METHODEN
- CreateTableIfNotExist()
- {
- new str[400]; //Muss so groß sein, da MySQL Query 350 Zeichen hat
- #if SAVE == 1
- str = "CREATE TABLE IF NOT EXISTS `"TABLE"` ("; //Formatieren des Strings für die Tabellenerstellung bei Nichtexistenz
- strcat(str,"`ID` int(3) NOT NULL AUTO_INCREMENT,");
- strcat(str,"`Name` varchar(24) COLLATE latin1_german1_ci NOT NULL,");
- strcat(str,"`Auto` tinyint(2) NOT NULL DEFAULT '0',");
- strcat(str,"`Bike` tinyint(2) NOT NULL DEFAULT '0',");
- strcat(str,"`LKW` tinyint(2) NOT NULL DEFAULT '0',");
- strcat(str,"PRIMARY KEY (`ID`)");
- strcat(str,") ENGINE=MyISAM DEFAULT CHARSET=latin1");
- strcat(str," COLLATE=latin1_german1_ci AUTO_INCREMENT=1;");
- mysql_function_query(dbhandle,str,false,"",""); //Abschicken des Querys zur Tabellenerstellung
- #else
- str = "CREATE TABLE IF NOT EXISTS `"TABLE"` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT,`Name` TEXT(24),`Auto` INTEGER,`Bike` INTEGER,`LKW` INTEGER);"; //Query für SQLite Table
- db_query(database,str); //Abschicken des Querys
- #endif
- return 1;
- }
- SavePlayer(playerid)
- {
- new query[128];
- #if SAVE == 1
- format(query,sizeof query,"UPDATE `"TABLE"` SET `Name` = '%s',`Auto` = '%d',`Bike` = '%d',`LKW` = '%d' WHERE `Name` = '%s'",
- SpielerInfo[playerid][pName],SpielerInfo[playerid][pAuto],SpielerInfo[playerid][pBike],SpielerInfo[playerid][pLKW],SpielerInfo[playerid][pName]);
- mysql_function_query(dbhandle,query,false,"","");
- #else
- format(query,sizeof query,"UPDATE `"TABLE"` SET `Name` = '%s',`Auto` = '%d',`Bike` = '%d',`LKW` = '%d' WHERE `Name` = '%s'",
- SpielerInfo[playerid][pName],SpielerInfo[playerid][pAuto],SpielerInfo[playerid][pBike],SpielerInfo[playerid][pLKW],SpielerInfo[playerid][pName]);
- db_query(database,query);
- #endif
- return 1;
- }
- IsBike(modelid)
- {
- switch(modelid) {
- case 448,461..463,468,471,481,509,510,521..523,581,586: return 1;
- }
- return 0;
- }
- IsCar(modelid)
- {
- switch(modelid) {
- case 416,445,602,485,568,429,499,424,536,496,504,422,609,498,401,575,518,402,541,482,438,457,527,483,524,415,542,589,480,596,599,597,598,578,
- 507,562,585,419,587,490,533,544,565,455,530,526,466,604,492,474,434,502,503,494,579,545,411,546,559,508,571,400,403,517,410,551,500,418,
- 572,423,516,582,467,404,514,603,600,413,426,436,547,489,441,594,479,534,505,442,440,475,543,605,495,567,428,405,458,580,439,561,409,560,
- 550,506,601,574,566,549,420,459,576,583,451,558,540,491,412,478,421,529,555,456,554,477: return 1;
- }
- return 0;
- }
- IsLKW(modelid)
- {
- switch(modelid) {
- case 524,578,455,403,443,514,515,408,573,406: return 1;
- }
- return 0;
- }
- // ==================================================================================================
Add Comment
Please, Sign In to add comment