Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #include <sscanf>
- #include <a_http>
- #define MYSQL_HOST "localhost"
- #define MYSQL_USER "root"
- #define MYSQL_PASSWORD ""
- #define MYSQL_DATABASE "Cars"
- #define MAX_CARS 100
- #define CC_DIALOG 501
- #define KE_DIALOG 502
- #define VE_DIALOG 503
- #define SC_DIALOG 504
- #define VERSION "1.2.1"
- // ---------------------------------------------------------------------------------------------------------------------------------------
- enum cardata {
- owner[24],
- Float:x,
- Float:y,
- Float:z,
- Float:r,
- c1,
- c2,
- plate[20],
- model,
- car,
- price,
- mod[18],
- };
- new Car[MAX_CARS][cardata];
- new bool:IsFreezedByCar[MAX_PLAYERS char];
- new spoiler[20]= {
- 1000,1001,1002,1003,1014,1015,1016,1023,1058,
- 1060,1049,1050,1138,1139,1146,1147,1158,1162,
- 1163,1164};
- new nitro[3] = {1008,1009,1010};
- new frontbumper[23]= {
- 1117,1152,1153,1155,1157,1160,1165,1167,1169,
- 1170,1171,1172,1173,1174,1175,1179,1181,1182,
- 1185,1188,1189,1192,1193};
- new rbumper[22]= {
- 1140,1141,1148,1149,1150,1151,1154,1156,1159,
- 1161,1166,1168,1176,1177,1178,1180,1183,1184,
- 1186,1187,1190,1191};
- new exhaust[28]= {
- 1018,1019,1020,1021,1022,1028,1029,1037,1043,
- 1044,1045,1046,1059,1064,1065,1066,1089,1092,
- 1104,1105,1113,1114,1126,1127,1129,1132,1135,
- 1136};
- new bventr[2]= {1042,1044};
- new bventl[2]= {1043,1045};
- new bscoop[4]= {1004,1005,1011,1012};
- new rscoop[13]= {
- 1006,1032,1033,1035,1038,1053,1054,1055,1061,
- 1067,1068,1088,1091};
- new lskirt[21]= {
- 1007,1026,1031,1036,1039,1042,1047,1048,1056,
- 1057,1069,1070,1090,1093,1106,1108,1118,1119,
- 1133,1122,1134};
- new rskirt[21]= {
- 1017,1027,1030,1040,1041,1051,1052,1062,1063,
- 1071,1072,1094,1095,1099,1101,1102,1107,1120,
- 1121,1124,1137};
- new hydraulics= 1087;
- new base= 1086;
- new rbbars[2]= {1109,1110};
- new fbbars[2]= {1115,1116};
- new wheels[17]= {
- 1025,1073,1074,1075,1076,1077,1078,1079,1080,
- 1081,1082,1083,1084,1085,1096,1097,1098};
- new light[2]= {1013,1024};
- forward UpdateCheck(index, response_code, data[]);
- // ---------------------------------------------------------------------------------------------------------------------------------------
- stock Float:mysql_GetFloatWithInt(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);
- format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, Is);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_float(sqlfloat);
- mysql_free_result();
- return sqlfloat;
- }
- public OnFilterScriptInit()
- {
- print(" [MyCars] Loading....");
- printf(" [MyCars] Loaded v%s, MyCars by 946ben", VERSION);
- mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
- if(mysql_ping() == 1) print(" [MyCars] Verbindung zur Datenbank hergestellt!");
- else {
- print(" [MyCars] Keine Datenbank-Verbindung möglich. Server wird beendet");
- SendRconCommand("exit");
- return 1;
- }
- new query[805];
- format(query, 805, "CREATE %s IF NOT EXISTS `cars` (`id` int(5) NOT NULL AUTO_INCREMENT,`owner` varchar(20) NOT NULL,`x` double NOT NULL, `y` double NOT NULL, `z` double NOT NULL, `r` double NOT NULL, `c1` int(2) NOT NULL, `c2` int(2) NOT NULL, `plate` varchar(118) NOT NULL, `model` int(3) NOT NULL, `price` int(10) NOT NULL, `mod1` int(4) NOT NULL, `mod2` int(4) NOT NULL, `mod3` int(4) NOT NULL,", "TABLE");
- format(query, 805, "%s `mod4` int(4) NOT NULL, `mod5` int(4) NOT NULL, `mod6` int(4) NOT NULL, `mod7` int(4) NOT NULL, `mod8` int(4) NOT NULL, `mod9` int(4) NOT NULL, `mod10` int(4) NOT NULL, `mod11` int(4) NOT NULL, `mod12` int(4) NOT NULL, `mod13` int(4) NOT NULL, `mod14` int(4) NOT NULL, `mod15` int(4) NOT NULL, `mod16` int(4) NOT NULL, `mod17` int(4) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;", query);
- mysql_query(query);
- HTTP(1,HTTP_GET,"www.946bens-mods.square7.ch/MyCars_Version.txt","","UpdateCheck");
- LoadCars();
- return 1;
- }
- public OnFilterScriptExit()
- {
- DestroyCars();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- IsFreezedByCar[playerid] = false;
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- if(IsMyCar(vehicleid) && !ispassenger)
- {
- new string[128], id;
- id = GetMyCarID(vehicleid);
- if(!strmatch(Car[id][owner], "Niemand")) format(string, 128, "[MyCars] Dieses Auto gehört %s", Car[id][owner]);
- else format(string, 128, "[MyCars] Dieses Auto ist steht zum Verkauf. Tippe /buyveh zum Kaufen! Preis: %d$", Car[id][price]);
- SendClientMessage(playerid, 0x008080FF, string);
- }
- return 1;
- }
- public OnPlayerStateChange(playerid,newstate,oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER)
- {
- new id;
- id = GetPlayerVehicleID(playerid);
- if(IsMyCar(id))
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- if(!strmatch(Car[GetMyCarID(id)][owner], name))
- {
- TogglePlayerControllable(playerid, 0);
- IsFreezedByCar[playerid] = true;
- }
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_SECONDARY_ATTACK && IsFreezedByCar[playerid] == true)
- {
- TogglePlayerControllable(playerid, 1);
- IsFreezedByCar[playerid] = false;
- RemovePlayerFromVehicle(playerid);
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == CC_DIALOG) {
- if(!response) return 1;
- if(listitem == 0) {
- ShowPlayerDialog(playerid, KE_DIALOG, DIALOG_STYLE_INPUT, "Kennzeichen ändern", "Tippe hier das neue Kennzeichen ein:", "Ändern", "Abbrechen");
- }
- if(listitem == 1) {
- new string[256], id, mycar;
- id = GetPlayerVehicleID(playerid);
- mycar = GetMyCarID(id);
- format(string, 256, "Bist du dir sicher, dass du das\nAuto verkaufen willst?\nDu bekommst dafür %d$", Car[mycar][price]/2);
- ShowPlayerDialog(playerid, VE_DIALOG, DIALOG_STYLE_MSGBOX, "Auto verkaufen", string, "Ja", "Nein");
- }
- return 1;
- }
- if(dialogid == KE_DIALOG) {
- if(!response) return 1;
- if(strlen(inputtext) > 20) return SendClientMessage(playerid, 0x9B0000FF, "Das Kennzeichen darf maximal 20 Zeichen lang sein!");
- new id, mycar, query[128], string[128];
- id = GetPlayerVehicleID(playerid);
- mycar = GetMyCarID(id);
- format(Car[mycar][plate], 20, "%s", inputtext[0]);
- format(query, 128, "UPDATE `Cars` SET `plate` = '%s' WHERE `id` = '%d';", Car[mycar][plate], mycar);
- mysql_query(query);
- SetVehicleNumberPlate(id, Car[mycar][plate]);
- format(string, 128, "Neues Kennzeichen: %s", Car[mycar][plate]);
- SendClientMessage(playerid, 0x00FFB4FF, string);
- return 1;
- }
- if(dialogid == VE_DIALOG) {
- if(!response) return 1;
- new id, mycar, query[128];
- id = GetPlayerVehicleID(playerid);
- mycar = GetMyCarID(id);
- format(Car[mycar][owner], 24, "%s", "Niemand");
- format(query, 128, "UPDATE `Cars` SET `owner` = '%s' WHERE `id` = '%d';", Car[mycar][owner], mycar);
- mysql_query(query);
- GivePlayerMoney(playerid, Car[mycar][price]/2);
- RemovePlayerFromVehicle(playerid);
- return 1;
- }
- return 0;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- new mycar, query[128];
- mycar = GetMyCarID(vehicleid);
- Car[mycar][c1] = color1;
- Car[mycar][c2] = color2;
- format(query, 128, "UPDATE `Cars` SET `c1` = '%d' WHERE `id` = '%d';", Car[mycar][c1], mycar);
- mysql_query(query);
- format(query, 128, "UPDATE `Cars` SET `c2` = '%d' WHERE `id` = '%d';", Car[mycar][c2], mycar);
- mysql_query(query);
- return 1;
- }
- public OnVehicleMod(playerid,vehicleid,componentid)
- {
- if(!IsMyCar(vehicleid)) return 1;
- new slot = GetComponentSlot(componentid);
- new query[128], mycar;
- mycar = GetMyCarID(vehicleid);
- Car[mycar][mod][slot]=componentid;
- format(query, 128, "UPDATE `Cars` SET `mod1` = '%d' WHERE `id` = '%d';", slot,Car[mycar][mod][slot], mycar);
- mysql_query(query);
- return 1;
- }
- public UpdateCheck(index, response_code, data[])
- {
- if(response_code == 200) {
- if(!strmatch(data, "1.2")) {
- print("\n [MyCars] Es ist eine neue Version verfügbar");
- printf(" [MyCars] Aktuelle Version %s, verwendete Version %s", data, VERSION);
- printf(" [MyCars] http://goo.gl/eRZ3q\n");
- }
- }
- else print("\n [MyCars] Konnte keine Verbindung zu Update-Server aufbauen\n");
- return 1;
- }
- // ---------------------------------------------------------------------------------------------------------------------------------------
- stock LoadCars()
- {
- new i;
- new xx,tinstring[6];
- for(; i<=MAX_CARS; i++) {
- format(Car[i][owner], 24, "%s", mysql_GetStringWithInt("Cars", "owner", "id", i));
- Car[i][x] = mysql_GetFloatWithInt("Cars", "x", "id", i);
- Car[i][y] = mysql_GetFloatWithInt("Cars", "y", "id", i);
- Car[i][z] = mysql_GetFloatWithInt("Cars", "z", "id", i);
- Car[i][r] = mysql_GetFloatWithInt("Cars", "r", "id", i);
- Car[i][c1] = mysql_GetIntWithInt("Cars", "c1", "id", i);
- Car[i][c2] = mysql_GetIntWithInt("Cars", "c2", "id", i);
- format(Car[i][plate], 20, "%s", mysql_GetStringWithInt("Cars", "plate", "id", i));
- Car[i][model] = mysql_GetIntWithInt("Cars", "model", "id", i);
- Car[i][price] = mysql_GetIntWithInt("Cars", "price", "id", i);
- Car[i][car] = AddStaticVehicleEx(Car[i][model], Car[i][x], Car[i][y], Car[i][z], Car[i][r], Car[i][c1], Car[i][c2], -1);
- SetVehicleNumberPlate(Car[i][car], Car[i][plate]);
- //printf("i = %d, owner = %s, x = %f, y = %f, z = %f, r = %f, c1 = %d, c2 = %d, plate = %s, model = %d, price = %d, car = %d", i, Car[i][owner], Car[i][x], Car[i][y], Car[i][z], Car[i][r], Car[i][c1], Car[i][c2], Car[i][plate], Car[i][model], Car[i][price], Car[i][car]);
- xx=1;
- for(;xx!=18;xx++) format(tinstring,6,"mod%d",xx), Car[i][mod][xx] = mysql_GetIntWithInt("Cars", tinstring, "id", i);
- AddTuning(i);
- }
- return 1;
- }
- stock DestroyCars()
- {
- new i;
- for(; i<=MAX_CARS; i++) {
- DestroyVehicle(Car[i][car]);
- }
- return 1;
- }
- stock CreateCar(cmodel, Float:cx, Float:cy, Float:cz, Float:cr, cc1, cc2, cprice)
- {
- new query[300], tempplate, id;
- tempplate = random(500);
- format(query, 300, "INSERT INTO `cars` (`id`, `owner`, `x`, `y`, `z`, `r`, `c1`, `c2`, `plate`, `model`, `price`) VALUES (NULL, 'Niemand', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d', '%d');", cx, cy, cz, cr, cc1, cc2, tempplate, cmodel, cprice);
- mysql_query(query);
- id = mysql_GetIntWithInt("Cars", "id", "plate", tempplate);
- format(query, 300, "UPDATE `cars` SET `plate` = 'UNBOUGHT' WHERE `id` = '%d';", id);
- mysql_query(query);
- format(Car[id][owner], 24, "%s", "Niemand");
- Car[id][x] = cx;
- Car[id][y] = cy;
- Car[id][z] = cz;
- Car[id][r] = cr;
- Car[id][c1] = cc1;
- Car[id][c2] = cc2;
- Car[id][price] = cprice;
- format(Car[id][plate], 20, "%s", "UNBOUGHT");
- Car[id][car] = AddStaticVehicleEx(cmodel, cx, cy, cz, cr, cc1, cc2, -1);
- SetVehicleNumberPlate(Car[id][car], "UNBOUGHT");
- new xx=1;
- for(;xx!=18;xx++) Car[id][mod][xx] = 0;
- return 1;
- }
- stock GetMyCarID(vehicleid)
- {
- new i;
- for(;i<=MAX_CARS;i++)
- {
- if(Car[i][car] == vehicleid) return i;
- }
- return -1;
- }
- stock IsMyCar(vehicleid)
- {
- new i;
- for(;i<=MAX_CARS;i++)
- {
- if(Car[i][car] == vehicleid) return 1;
- }
- return 0;
- }
- stock AddTuning(mycar)
- {
- new vehicleid = Car[mycar][car];
- if(vehicleid == INVALID_VEHICLE_ID) return 0;
- new xx=1;
- for(;xx!=18;xx++) { if(Car[mycar][mod][xx]!=0) AddVehicleComponent(vehicleid,Car[mycar][mod][xx]); }
- return 1;
- }
- // ---------------------------------------------------------------------------------------------------------------------------------------
- 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);
- 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);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_row(Get);
- 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);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_float(sqlfloat);
- mysql_free_result();
- return sqlfloat;
- }
- stock mysql_GetIntWithInt(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);
- format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, Is);
- mysql_query(query);
- mysql_store_result();
- new sqlint = mysql_fetch_int();
- mysql_free_result();
- return sqlint;
- }
- stock mysql_GetStringWithInt(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);
- format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, Is);
- mysql_query(query);
- mysql_store_result();
- mysql_fetch_row(Get);
- return Get;
- }
- stock strmatch(const String1[], const String2[])
- {
- if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1)))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- stock splitEvery(const strsrc[], strdest[][], delimiter)
- {
- new i, li;
- new aNum;
- new len;
- new num = 1;
- while(i <= strlen(strsrc)){
- if(num==delimiter || i==strlen(strsrc)){
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- num = 0;
- aNum++;
- }
- i++;
- num++;
- }
- return 1;
- }
- stock split(const strsrc[], strdest[][], delimiter = '|')
- {
- new i, li, aNum, len, srclen = strlen(strsrc);
- while(i <= srclen)
- {
- if (strsrc[i] == delimiter || i == srclen)
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i + 1;
- aNum++;
- }
- i++;
- }
- }
- stock GetComponentSlot(componentid)
- {
- new i;
- for(i=0; i<20; i++)if(spoiler[i]==componentid) return 1;
- for(i=0; i<3; i++)if(nitro[i]==componentid) return 2;
- for(i=0; i<23; i++)if(frontbumper[i]==componentid) return 3;
- for(i=0; i<22; i++)if(rbumper[i]==componentid) return 4;
- for(i=0; i<28; i++)if(exhaust[i]==componentid) return 5;
- for(i=0; i<2; i++)if(bventr[i]==componentid) return 6;
- for(i=0; i<2; i++)if(bventl[i]==componentid) return 7;
- for(i=0; i<4; i++)if(bscoop[i]==componentid) return 8;
- for(i=0; i<13; i++)if(rscoop[i]==componentid) return 9;
- for(i=0; i<21; i++)if(lskirt[i]==componentid) return 10;
- for(i=0; i<21; i++)if(rskirt[i]==componentid) return 11;
- if(hydraulics==componentid) return 12;
- if(base==componentid) return 13;
- for(i=0; i<2; i++)if(rbbars[i]==componentid) return 14;
- for(i=0; i<2; i++)if(fbbars[i]==componentid) return 15;
- for(i=0; i<17; i++)if(wheels[i]==componentid) return 16;
- for(i=0; i<2; i++)if(light[i]==componentid) return 17;
- return 0;
- }
- // ---------------------------------------------------------------------------------------------------------------------------------------
- COMMAND:createcar(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du hast keine Berechtigung");
- new Float:cx, Float:cy, Float:cz, Float:cr, cmodel, cc1, cc2, cprice;
- if(sscanf(params, "dddd",cmodel, cc1, cc2, cprice)) return SendClientMessage(playerid,0x008080FF, "/createcar [Model] [Farbe] [Farbe] [Preis]");
- GetPlayerPos(playerid, cx, cy, cz);
- GetPlayerFacingAngle(playerid, cr);
- CreateCar(cmodel, cx, cy, cz, cr, cc1, cc2, cprice);
- return 1;
- }
- COMMAND:buyveh(playerid,params[])
- {
- new id, money, name[MAX_PLAYER_NAME], query[128];
- id = GetPlayerVehicleID(playerid);
- id = GetMyCarID(id);
- money = GetPlayerMoney(playerid);
- GetPlayerName(playerid, name, 20);
- if(!strmatch(Car[id][owner], "Niemand")) return SendClientMessage(playerid, 0x9B0000FF, "Dieses Auto gehört schon jemandem!");
- if(money < Car[id][price]) return SendClientMessage(playerid, 0x9B0000FF, "Du hast nicht genug Geld!");
- format(Car[id][owner], MAX_PLAYER_NAME, "%s", name);
- format(query, 128, "UPDATE `Cars` SET `owner` = '%s' WHERE `id` = '%d';", Car[id][owner], id);
- mysql_query(query);
- GivePlayerMoney(playerid, -Car[id][price]);
- TogglePlayerControllable(playerid, 1);
- return SendClientMessage(playerid, 0x00FFB4FF, "Dieses Auto gehört nun dir");
- }
- COMMAND:configcar(playerid,params[])
- {
- new id, mycar, name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- id = GetPlayerVehicleID(playerid);
- mycar = GetMyCarID(id);
- if(!strmatch(Car[mycar][owner], name)) return SendClientMessage(playerid, 0x9B0000FF, "Das ist nicht dein Auto!");
- ShowPlayerDialog(playerid, CC_DIALOG, DIALOG_STYLE_LIST, "Auto konfigurieren", "Kennzeichen\nVerkaufen", "Auswählen", "Abbrechen");
- return 1;
- }
- COMMAND:park(playerid,params[])
- {
- new query[128], Float:px, Float:py, Float:pz, Float:pr, id, mycar;
- id = GetPlayerVehicleID(playerid);
- mycar = GetMyCarID(id);
- GetVehiclePos(id, px, py, pz);
- GetVehicleZAngle(id, pr);
- Car[mycar][x] = px;
- Car[mycar][y] = py;
- Car[mycar][z] = pz;
- Car[mycar][r] = pr;
- format(query, 128, "UPDATE `Cars` SET `x` = '%f' WHERE `id` = '%d';", Car[mycar][x], mycar);
- mysql_query(query);
- format(query, 128, "UPDATE `Cars` SET `y` = '%f' WHERE `id` = '%d';", Car[mycar][y], mycar);
- mysql_query(query);
- format(query, 128, "UPDATE `Cars` SET `z` = '%f' WHERE `id` = '%d';", Car[mycar][z], mycar);
- mysql_query(query);
- format(query, 128, "UPDATE `Cars` SET `r` = '%f' WHERE `id` = '%d';", Car[mycar][r], mycar);
- mysql_query(query);
- return SendClientMessage(playerid, 0x008080FF, "[MyCars] Fahrzeug geparkt");
- }
- COMMAND:gimmemoney(playerid,params[])
- {
- if(IsPlayerAdmin(playerid)) GivePlayerMoney(playerid, 1000000);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement