Advertisement
Guest User

Perry_Cox´s Carsystem

a guest
Aug 6th, 2012
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.42 KB | None | 0 0
  1. #include a_samp
  2. #include a_mysql
  3.  
  4. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  5. #define MAX_SERVER_CARS 500
  6.  
  7. enum ServerCars
  8. {
  9. sCarID,
  10. sModelID,
  11. Float:sX,
  12. Float:sY,
  13. Float:sZ,
  14. Float:sA,
  15. sColor1,
  16. sColor2
  17. }
  18. new ServerVeh[MAX_SERVER_CARS][ServerCars];
  19. new ServerVehIDX=0;
  20.  
  21. public OnFilterScriptInit()
  22. {
  23. print("\n--------------------------------------");
  24. print("MySQL carspawner by Perry_Cox");
  25. print("--------------------------------------\n");
  26. mysql_connect("127.0.0.1", "root", "Test", "");//IP/User/Datenbank/Passwort
  27. if(mysql_ping()==1)
  28. {
  29. new string[512],servercarid;
  30. mysql_query("CREATE TABLE IF NOT EXISTS `ServerCars` (`carID` int(11), `carModel` int(11), `Farbe1` int(11), `Farbe2` int(11), `X` float(20), `Y` float(20), `Z` float(20), `A` float(20), PRIMARY KEY (`carID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
  31. mysql_query("SELECT * FROM `ServerCars`");
  32. mysql_store_result();
  33. if(mysql_num_rows() != 0)
  34. {
  35. while(mysql_retrieve_row())
  36. {
  37. mysql_fetch_field_row(string,"carID");
  38. ServerVeh[ServerVehIDX][sCarID] = strval(string);
  39. mysql_fetch_field_row(string,"carModel");
  40. ServerVeh[ServerVehIDX][sModelID] = strval(string);
  41. mysql_fetch_field_row(string,"X");
  42. ServerVeh[ServerVehIDX][sX] = floatstr(string);
  43. mysql_fetch_field_row(string,"Y");
  44. ServerVeh[ServerVehIDX][sY] = floatstr(string);
  45. mysql_fetch_field_row(string,"Z");
  46. ServerVeh[ServerVehIDX][sZ] = floatstr(string);
  47. mysql_fetch_field_row(string,"A");
  48. ServerVeh[ServerVehIDX][sA] = floatstr(string);
  49. mysql_fetch_field_row(string,"Farbe1");
  50. ServerVeh[ServerVehIDX][sColor1] = strval(string);
  51. mysql_fetch_field_row(string,"Farbe2");
  52. ServerVeh[ServerVehIDX][sColor2] = strval(string);
  53. servercarid = AddStaticVehicleEx(ServerVeh[ServerVehIDX][sModelID],ServerVeh[ServerVehIDX][sX],ServerVeh[ServerVehIDX][sY],ServerVeh[ServerVehIDX][sZ],ServerVeh[ServerVehIDX][sA],ServerVeh[ServerVehIDX][sColor1],ServerVeh[ServerVehIDX][sColor2],1000*60*5);
  54. format(string, sizeof(string),"SVR:%d",servercarid);
  55. SetVehicleNumberPlate(servercarid,string);
  56. format(string, sizeof(string), "UPDATE `ServerCars` SET `carID` = %d WHERE `carID` = %d", servercarid, ServerVeh[ServerVehIDX][sCarID]);
  57. ServerVeh[ServerVehIDX][sCarID] = servercarid;
  58. mysql_query(string);
  59. ServerVehIDX++;
  60. }
  61. }
  62. printf("\tEs wurden %d Serverautos geladen",ServerVehIDX);
  63. mysql_free_result();
  64. }
  65. else
  66. {
  67. print("MySQL Keine verbindung möglich");
  68. }
  69. return 1;
  70. }
  71.  
  72. public OnFilterScriptExit()
  73. {
  74. if(mysql_ping())mysql_close();
  75. return 1;
  76. }
  77.  
  78. public OnPlayerCommandText(playerid, cmdtext[])
  79. {
  80. dcmd(newscar,7,cmdtext);
  81. dcmd(spark,5,cmdtext);
  82. dcmd(delscar,7,cmdtext);
  83. return 0;
  84. }
  85.  
  86. dcmd_newscar(playerid,params[])
  87. {
  88. new carid,c1,c2,query[512],serverid;
  89. new Float:vehx,Float:vehy,Float:vehz,Float:veha;
  90. if(sscanf(params,"iii",carid,c1,c2))return SendClientMessage(playerid, 0xFF3A3AFF,"/newscar [CAR-ID] [COLOR11] [COLOR-2]");
  91. if(carid < 400 || carid > 610 ) return SendClientMessage(playerid,0xFF3A3AFF,"Bitte wähle ein Fahrzeug zwischen 400 und 610");
  92. GetPlayerPos(playerid,vehx,vehy,vehz);
  93. GetPlayerFacingAngle(playerid,veha);
  94. if(ServerVehIDX!=MAX_SERVER_CARS)
  95. {
  96. ServerVehIDX++;
  97. serverid=CreateVehicle(carid,vehx,vehy,vehz,veha,c1,c2,1000*60*5);
  98. PutPlayerInVehicle(playerid, serverid, 0);
  99. format(query, sizeof(query),"SVR:%d",serverid);
  100. SetVehicleNumberPlate(serverid,query);
  101. ServerVeh[ServerVehIDX][sCarID]=GetPlayerVehicleID(playerid);
  102. ServerVeh[ServerVehIDX][sModelID]=carid;
  103. ServerVeh[ServerVehIDX][sX]=vehx;
  104. ServerVeh[ServerVehIDX][sY]=vehy;
  105. ServerVeh[ServerVehIDX][sZ]=vehz;
  106. ServerVeh[ServerVehIDX][sA]=veha;
  107. ServerVeh[ServerVehIDX][sColor1]=c1;
  108. ServerVeh[ServerVehIDX][sColor2]=c2;
  109. format(query, sizeof(query), "INSERT INTO ServerCars (carID, carModel, Farbe1, Farbe2, X, Y, Z, A) VALUES ('%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f')", GetPlayerVehicleID(playerid), carid, c1, c2, vehx, vehy, vehz, veha);
  110. mysql_query(query);
  111. mysql_free_result();
  112. format(query, 128, "Du hast ein Car mit der ID: %d erstellt", ServerVeh[ServerVehIDX][sCarID]);
  113. SendClientMessage(playerid,0x008000FF,query);
  114. }
  115. else
  116. {
  117. SendClientMessage(playerid,0xFF3A3AFF,"Es sind bereits 500 Serverautos eingetragen");
  118. }
  119. return 1;
  120. }
  121.  
  122. dcmd_spark(playerid,params[])
  123. {
  124. #pragma unused params
  125. new query[128];
  126. new Float:vehx,Float:vehy,Float:vehz,Float:veha;
  127. new carid = GetPlayerVehicleID(playerid);
  128. GetVehiclePos(carid,vehx,vehy,vehz);
  129. GetVehicleZAngle(carid,veha);
  130. if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
  131. {
  132. for(new i;i<MAX_VEHICLES;i++)
  133. {
  134. if(GetPlayerVehicleID(playerid)==ServerVeh[i][sCarID])
  135. {
  136. format(query, 128, "UPDATE ServerCars SET X = '%f' WHERE carID = '%d'", vehx, ServerVeh[i][sCarID]);
  137. mysql_query(query);
  138. format(query, 128, "UPDATE ServerCars SET Y = '%f' WHERE carID = '%d'", vehy, ServerVeh[i][sCarID]);
  139. mysql_query(query);
  140. format(query, 128, "UPDATE ServerCars SET Z = '%f' WHERE carID = '%d'", vehz, ServerVeh[i][sCarID]);
  141. mysql_query(query);
  142. format(query, 128, "UPDATE ServerCars SET A = '%f' WHERE carID = '%d'", veha, ServerVeh[i][sCarID]);
  143. mysql_query(query);
  144. mysql_free_result();
  145. format(query, 128, "Du hast das Car mit der ID: %d umgeparkt", ServerVeh[i][sCarID]);
  146. SendClientMessage(playerid,0x008000FF,query);
  147. }
  148. }
  149. }
  150. else
  151. {
  152. SendClientMessage(playerid,0xFF3A3AFF,"Du musst der Fahrer des Wagens sein");
  153. }
  154. return 1;
  155. }
  156.  
  157. dcmd_delscar(playerid,params[])
  158. {
  159. #pragma unused params
  160. new query[128];
  161. if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
  162. {
  163. for(new i;i<MAX_VEHICLES;i++)
  164. {
  165. if(GetPlayerVehicleID(playerid)==ServerVeh[i][sCarID])
  166. {
  167. format(query,128,"DELETE FROM `ServerCars` WHERE `carID` = '%d'",ServerVeh[i][sCarID]);
  168. mysql_query(query);
  169. DestroyVehicle(ServerVeh[i][sCarID]);
  170. mysql_free_result();
  171. format(query, 128, "Du hast das Car mit der ID: %d vom Server gelöscht", ServerVeh[i][sCarID]);
  172. SendClientMessage(playerid,0x008000FF,query);
  173. }
  174. }
  175. }
  176. else
  177. {
  178. SendClientMessage(playerid,0xFF3A3AFF,"Du musst der Fahrer des Wagens sein");
  179. }
  180. return 1;
  181. }
  182.  
  183. stock sscanf(sstring[], format[], {Float,_}:...)
  184. {
  185. #if defined isnull
  186. if (isnull(sstring))
  187. #else
  188. if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
  189. #endif
  190. {
  191. return format[0];
  192. }
  193. #pragma tabsize 4
  194. new
  195. formatPos = 0,
  196. sstringPos = 0,
  197. paramPos = 2,
  198. paramCount = numargs(),
  199. delim = ' ';
  200. while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
  201. {
  202. sstringPos++;
  203. }
  204. while (paramPos < paramCount && sstring[sstringPos])
  205. {
  206. switch (format[formatPos++])
  207. {
  208. case '\0':
  209. {
  210. return 0;
  211. }
  212. case 'i', 'd':
  213. {
  214. new
  215. neg = 1,
  216. num = 0,
  217. ch = sstring[sstringPos];
  218. if (ch == '-')
  219. {
  220. neg = -1;
  221. ch = sstring[++sstringPos];
  222. }
  223. do
  224. {
  225. sstringPos++;
  226. if ('0' <= ch <= '9')
  227. {
  228. num = (num * 10) + (ch - '0');
  229. }
  230. else
  231. {
  232. return -1;
  233. }
  234. }
  235. while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  236. setarg(paramPos, 0, num * neg);
  237. }
  238. case 'h', 'x':
  239. {
  240. new
  241. num = 0,
  242. ch = sstring[sstringPos];
  243. do
  244. {
  245. sstringPos++;
  246. switch (ch)
  247. {
  248. case 'x', 'X':
  249. {
  250. num = 0;
  251. continue;
  252. }
  253. case '0' .. '9':
  254. {
  255. num = (num << 4) | (ch - '0');
  256. }
  257. case 'a' .. 'f':
  258. {
  259. num = (num << 4) | (ch - ('a' - 10));
  260. }
  261. case 'A' .. 'F':
  262. {
  263. num = (num << 4) | (ch - ('A' - 10));
  264. }
  265. default:
  266. {
  267. return -1;
  268. }
  269. }
  270. }
  271. while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  272. setarg(paramPos, 0, num);
  273. }
  274. case 'c':
  275. {
  276. setarg(paramPos, 0, sstring[sstringPos++]);
  277. }
  278. case 'f':
  279. {
  280.  
  281. new changestr[16], changepos = 0, strpos = sstringPos;
  282. while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
  283. {
  284. changestr[changepos++] = sstring[strpos++];
  285. }
  286. changestr[changepos] = '\0';
  287. setarg(paramPos,0,_:floatstr(changestr));
  288. }
  289. case 'p':
  290. {
  291. delim = format[formatPos++];
  292. continue;
  293. }
  294. case '\'':
  295. {
  296. new
  297. end = formatPos - 1,
  298. ch;
  299. while ((ch = format[++end]) && ch != '\'') {}
  300. if (!ch)
  301. {
  302. return -1;
  303. }
  304. format[end] = '\0';
  305. if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
  306. {
  307. if (format[end + 1])
  308. {
  309. return -1;
  310. }
  311. return 0;
  312. }
  313. format[end] = '\'';
  314. sstringPos = ch + (end - formatPos);
  315. formatPos = end + 1;
  316. }
  317. case 'u':
  318. {
  319. new
  320. end = sstringPos - 1,
  321. id = 0,
  322. bool:num = true,
  323. ch;
  324. while ((ch = sstring[++end]) && ch != delim)
  325. {
  326. if (num)
  327. {
  328. if ('0' <= ch <= '9')
  329. {
  330. id = (id * 10) + (ch - '0');
  331. }
  332. else
  333. {
  334. num = false;
  335. }
  336. }
  337. }
  338. if (num && IsPlayerConnected(id))
  339. {
  340. setarg(paramPos, 0, id);
  341. }
  342. else
  343. {
  344. #if !defined foreach
  345. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  346. #define __SSCANF_FOREACH__
  347. #endif
  348. sstring[end] = '\0';
  349. num = false;
  350. new
  351. name[MAX_PLAYER_NAME];
  352. id = end - sstringPos;
  353. foreach (Player, playerid)
  354. {
  355. GetPlayerName(playerid, name, sizeof (name));
  356. if (!strcmp(name, sstring[sstringPos], true, id))
  357. {
  358. setarg(paramPos, 0, playerid);
  359. num = true;
  360. break;
  361. }
  362. }
  363. if (!num)
  364. {
  365. setarg(paramPos, 0, INVALID_PLAYER_ID);
  366. }
  367. sstring[end] = ch;
  368. #if defined __SSCANF_FOREACH__
  369. #undef foreach
  370. #undef __SSCANF_FOREACH__
  371. #endif
  372. }
  373. sstringPos = end;
  374. }
  375. case 's', 'z':
  376. {
  377. new
  378. i = 0,
  379. ch;
  380. if (format[formatPos])
  381. {
  382. while ((ch = sstring[sstringPos++]) && ch != delim)
  383. {
  384. setarg(paramPos, i++, ch);
  385. }
  386. if (!i)
  387. {
  388. return -1;
  389. }
  390. }
  391. else
  392. {
  393. while ((ch = sstring[sstringPos++]))
  394. {
  395. setarg(paramPos, i++, ch);
  396. }
  397. }
  398. sstringPos--;
  399. setarg(paramPos, i, '\0');
  400. }
  401. default:
  402. {
  403. continue;
  404. }
  405. }
  406. while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
  407. {
  408. sstringPos++;
  409. }
  410. while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
  411. {
  412. sstringPos++;
  413. }
  414. paramPos++;
  415. }
  416. do
  417. {
  418. if ((delim = format[formatPos++]) > ' ')
  419. {
  420. if (delim == '\'')
  421. {
  422. while ((delim = format[formatPos++]) && delim != '\'') {}
  423. }
  424. else if (delim != 'z')
  425. {
  426. return delim;
  427. }
  428. }
  429. }
  430. while (delim > ' ');
  431. return 0;
  432. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement