Advertisement
Guest User

Untitled

a guest
Nov 9th, 2012
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.91 KB | None | 0 0
  1. /*
  2. RFT MySql(ReMake) Version 2.0.1
  3. © 2012 by RFT
  4. ______________________________________________________________
  5.  
  6.  
  7. */
  8. #include <a_samp>
  9. #include <a_mysql>
  10.  
  11.  
  12. /*
  13. native r_mysql_debug();
  14. native r_mysql_connect(host[], user[], password[], database[], bool:AutoReconnect);
  15. native r_mysql_connected();
  16. native r_LoadEntrance(table[], where1[], where2[]);
  17. native r_UnloadEntrance();
  18. native r_GetString(field[]);
  19. native r_GetInt(field[]);
  20. native Float:r_GetFloat(field[]);
  21. native r_mysql_SetString(field[], to[]);
  22. native r_mysql_SetInt(field[], to);
  23. native r_mysql_SetFloat(field[], Float:to);
  24. native r_mysql_Insert(table[], string[], format[], {Float,_}:...);
  25. */
  26.  
  27.  
  28.  
  29.  
  30.  
  31. new bool: rAutoConnect;
  32. new bool: rDebugging;
  33. new bool: r_in_use;
  34. new r_in_use_type;
  35. new r_GET[3][64];
  36. new rConnectInfo[4][32];
  37.  
  38.  
  39.  
  40. stock r_mysql_debug()
  41. {
  42. new string[128];
  43. rDebugging = true;
  44. new Day, Month, Year, Minute, Hour;
  45. gettime(Hour, Minute);
  46. getdate(Year, Month, Day);
  47. new File:rFile;
  48. if(fexist("/rSQL/mysql.log"))
  49. {
  50. rFile = fopen("/rSQL/mysql.log", io_append);
  51. }
  52. else
  53. {
  54. rFile = fopen("/rSQL/mysql.log", io_write);
  55. }
  56. fwrite(rFile, "__________________________________________________");
  57. format(string, sizeof(string), "rSQL Debug gestartet am: %02d.%02d.%d Um: %02d:%02d", Day, Month, Year, Hour, Minute);
  58. fwrite(rFile, string);
  59. fwrite(rFile, "__________________________________________________\r\n\n\n");
  60. fclose(rFile);
  61. return 1;
  62. }
  63.  
  64. stock r_mysql_connect(host[], user[], password[], database[], bool:AutoReconnect)
  65. {
  66. new string[128];
  67. if(AutoReconnect == true)
  68. {
  69. rAutoConnect = AutoReconnect;
  70. strmid(rConnectInfo[0], host, 0, strlen(host), 32);
  71. strmid(rConnectInfo[1], user, 0, strlen(user), 32);
  72. strmid(rConnectInfo[2], password, 0, strlen(password), 32);
  73. strmid(rConnectInfo[3], database, 0, strlen(database), 32);
  74. if(rDebugging == true)
  75. {
  76. new Day, Month, Year, Minute, Hour;
  77. gettime(Hour, Minute);
  78. getdate(Year, Month, Day);
  79. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  80. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Auto-Reconnect aktiviert.\r\n", Day, Month, Year, Hour, Minute);
  81. fwrite(rFile, string);
  82. fclose(rFile);
  83. }
  84. }
  85. mysql_connect(host, user, database, password);
  86. if(mysql_ping()!=1)
  87. {
  88. if(rDebugging == true)
  89. {
  90. new Day, Month, Year, Minute, Hour;
  91. gettime(Hour, Minute);
  92. getdate(Year, Month, Day);
  93. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  94. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es konnte keine Verbindung zu %s hergestellt werden...\r\n", Day, Month, Year, Hour, Minute, database);
  95. fwrite(rFile, string);
  96. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wird erneut versucht eine Verbindung zu %s herzustellen...\r\n", Day, Month, Year, Hour, Minute, database);
  97. fwrite(rFile, string);
  98. fclose(rFile);
  99. }
  100. mysql_connect(host, user, database, password);
  101. if(mysql_ping()!=1)
  102. {
  103. if(rDebugging == true)
  104. {
  105. new Day, Month, Year, Minute, Hour;
  106. gettime(Hour, Minute);
  107. getdate(Year, Month, Day);
  108. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  109. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Versuch eine Verbindung zur Datenbank %s herzustellen ist gescheitert.\r\n", Day, Month, Year, Hour, Minute, database);
  110. fwrite(rFile, string);
  111. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Server wird heruntergefahren.\r\n", Day, Month, Year, Hour, Minute);
  112. fwrite(rFile, string);
  113. fclose(rFile);
  114. }
  115. SendRconCommand("exit");
  116. return 1;
  117. }
  118. else
  119. {
  120. if(rDebugging == true)
  121. {
  122. new Day, Month, Year, Minute, Hour;
  123. gettime(Hour, Minute);
  124. getdate(Year, Month, Day);
  125. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  126. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Versuch eine Verbindung zu %s herzustellen war erfolgreich.\r\n", Day, Month, Year, Hour, Minute, database);
  127. fwrite(rFile, string);
  128. fclose(rFile);
  129. }
  130. }
  131. }
  132. else
  133. {
  134. if(rDebugging == true)
  135. {
  136. new Day, Month, Year, Minute, Hour;
  137. gettime(Hour, Minute);
  138. getdate(Year, Month, Day);
  139. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  140. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Verbindung zur Datenbank %s erfolgreich hergestellt.\r\n", Day, Month, Year, Hour, Minute, database);
  141. fwrite(rFile, string);
  142. fclose(rFile);
  143. }
  144. }
  145. return 1;
  146. }
  147.  
  148. stock r_mysql_connected()
  149. {
  150. new string[128];
  151. if(mysql_ping()!=1)
  152. {
  153. if(rAutoConnect == true)
  154. {
  155. if(rDebugging == true)
  156. {
  157. new Day, Month, Year, Minute, Hour;
  158. gettime(Hour, Minute);
  159. getdate(Year, Month, Day);
  160. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  161. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Verbindung zu %s verloren\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  162. fwrite(rFile, string);
  163. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wird erneut versucht eine Verbindung zu %s herzustellen...\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  164. fwrite(rFile, string);
  165. fclose(rFile);
  166. }
  167. mysql_connect(rConnectInfo[0], rConnectInfo[1], rConnectInfo[3], rConnectInfo[2]);
  168. if(mysql_ping()!=1)
  169. {
  170. if(rDebugging == true)
  171. {
  172. new Day, Month, Year, Minute, Hour;
  173. gettime(Hour, Minute);
  174. getdate(Year, Month, Day);
  175. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  176. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Verbindungsaufbau zu %s war erfolgreich.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  177. fwrite(rFile, string);
  178. fclose(rFile);
  179. }
  180. return 1;
  181. }
  182. else
  183. {
  184. if(rDebugging == true)
  185. {
  186. new Day, Month, Year, Minute, Hour;
  187. gettime(Hour, Minute);
  188. getdate(Year, Month, Day);
  189. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  190. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Der erneute Versuch eine Verbindung zu %s herzustellen ist gescheitert.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  191. fwrite(rFile, string);
  192. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Server wird heruntergefahren...\r\n", Day, Month, Year, Hour, Minute);
  193. fwrite(rFile, string);
  194. fclose(rFile);
  195. }
  196. SendRconCommand("exit");
  197. return 1;
  198. }
  199. }
  200. else
  201. {
  202. if(rDebugging == true)
  203. {
  204. new Day, Month, Year, Minute, Hour;
  205. gettime(Hour, Minute);
  206. getdate(Year, Month, Day);
  207. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  208. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Verbindung zu %s verloren\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  209. fwrite(rFile, string);
  210. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Server wird heruntergefahren...\r\n", Day, Month, Year, Hour, Minute);
  211. fwrite(rFile, string);
  212. fclose(rFile);
  213. }
  214. SendRconCommand("exit");
  215. return 1;
  216. }
  217. }
  218. return 1;
  219. }
  220.  
  221. stock r_LoadEntrance(table[], where1[], where2[])
  222. {
  223. r_mysql_connected();
  224. new Query[128], string[128];
  225. if(r_in_use == false)
  226. {
  227. strmid(r_GET[0], table, 0, strlen(table), 64);
  228. strmid(r_GET[1], where1, 0, strlen(where1), 64);
  229. strmid(r_GET[2], where2, 0, strlen(where2), 64);
  230. format(Query, sizeof(Query), "SELECT * FROM %s WHERE `%s` = '%s'", table, where1, where2);
  231. mysql_query(Query);
  232. mysql_store_result();
  233. r_in_use = true;
  234. r_in_use_type = 1;
  235. if(mysql_retrieve_row())
  236. {
  237. return 1;
  238. }
  239. else
  240. {
  241. if(rDebugging == true)
  242. {
  243. new Day, Month, Year, Minute, Hour;
  244. gettime(Hour, Minute);
  245. getdate(Year, Month, Day);
  246. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  247. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Eintrag nicht gefunden.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  248. fwrite(rFile, string);
  249. fclose(rFile);
  250. }
  251. return 0;
  252. }
  253. }
  254. else
  255. {
  256. if(rDebugging == true)
  257. {
  258. new Day, Month, Year, Minute, Hour;
  259. gettime(Hour, Minute);
  260. getdate(Year, Month, Day);
  261. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  262. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Eintrag konnte nicht geladen werden, Es wurde bereits ein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  263. fwrite(rFile, string);
  264. fclose(rFile);
  265. }
  266. return 0;
  267. }
  268. }
  269.  
  270. stock r_UnloadEntrance()
  271. {
  272. r_mysql_connected();
  273. mysql_free_result();
  274. r_in_use_type = 0;
  275. r_in_use = false;
  276. return 1;
  277. }
  278.  
  279. stock r_GetString(field[])
  280. {
  281. r_mysql_connected();
  282. new Load[128], string[128];
  283. if(r_in_use_type == 1)
  284. {
  285. mysql_fetch_field_row(Load, field);
  286. return Load;
  287. }
  288. else
  289. {
  290. if(rDebugging == true)
  291. {
  292. new Day, Month, Year, Minute, Hour;
  293. gettime(Hour, Minute);
  294. getdate(Year, Month, Day);
  295. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  296. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  297. fwrite(rFile, string);
  298. fclose(rFile);
  299. }
  300. return Load;
  301. }
  302. }
  303.  
  304. stock r_GetInt(field[])
  305. {
  306. return strval(r_GetString(field));
  307. }
  308.  
  309. forward Float:r_GetFloat(Var[]);
  310. stock Float:r_GetFloat(Var[])
  311. {
  312. return floatstr(r_GetString(Var));
  313. }
  314.  
  315. stock r_mysql_SetString(field[], to[])
  316. {
  317. r_mysql_connected();
  318. new string[128];
  319. if(r_in_use==true && r_in_use_type == 1)
  320. {
  321. new query[128];
  322. format(query, sizeof(query), "UPDATE %s SET `%s` = '%s' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  323. mysql_query(query);
  324. r_UpdateRow();
  325. return 1;
  326. }
  327. else
  328. {
  329. if(rDebugging == true)
  330. {
  331. new Day, Month, Year, Minute, Hour;
  332. gettime(Hour, Minute);
  333. getdate(Year, Month, Day);
  334. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  335. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  336. fwrite(rFile, string);
  337. fclose(rFile);
  338. }
  339. return 0;
  340. }
  341. }
  342.  
  343. stock r_mysql_SetInt(field[], to)
  344. {
  345. new string[128];
  346. if(r_in_use==true && r_in_use_type == 1)
  347. {
  348. new query[128];
  349. format(query, sizeof(query), "UPDATE %s SET `%s` = '%d' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  350. mysql_query(query);
  351. r_UpdateRow();
  352. return 1;
  353. }
  354. else
  355. {
  356. if(rDebugging == true)
  357. {
  358. new Day, Month, Year, Minute, Hour;
  359. gettime(Hour, Minute);
  360. getdate(Year, Month, Day);
  361. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  362. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  363. fwrite(rFile, string);
  364. fclose(rFile);
  365. }
  366. return 0;
  367. }
  368. }
  369.  
  370. stock r_mysql_SetFloat(field[], Float:to)
  371. {
  372. new string[128];
  373. if(r_in_use==true && r_in_use_type == 1)
  374. {
  375. new query[128];
  376. format(query, sizeof(query), "UPDATE %s SET `%s` = '%f' WHERE `%s` = '%s'", r_GET[0], field, to, r_GET[1], r_GET[2]);
  377. mysql_query(query);
  378. r_UpdateRow();
  379. return 1;
  380. }
  381. else
  382. {
  383. if(rDebugging == true)
  384. {
  385. new Day, Month, Year, Minute, Hour;
  386. gettime(Hour, Minute);
  387. getdate(Year, Month, Day);
  388. new File:rFile = fopen("/rSQL/mysql.log", io_append);
  389. format(string, sizeof(string), "[%02d.%02d.%d][%02d:%02d]: Es wurde kein Eintrag geladen.\r\n", Day, Month, Year, Hour, Minute, rConnectInfo[3]);
  390. fwrite(rFile, string);
  391. fclose(rFile);
  392. }
  393. return 0;
  394. }
  395. }
  396.  
  397. stock r_UpdateRow()
  398. {
  399. r_mysql_connected();
  400. r_UnloadEntrance();
  401. r_LoadEntrance(r_GET[0], r_GET[1], r_GET[2]);
  402. return 1;
  403. }
  404.  
  405. stock r_mysql_Insert(table[], string[], format2[], {Float,_}:...)
  406. {
  407. r_mysql_connected();
  408. new start = 3;
  409. new Query[128];
  410. new Query1[128];
  411. new Query2[128];
  412. new str[10][128];
  413. new in[10];
  414. new Float: pi[10];
  415. new f[10][32];
  416. r_split(string, f, ',');
  417. for(new i = 0; i < strlen(format2); i++)
  418. {
  419. switch(format2[i])
  420. {
  421. case 's':
  422. {
  423. for(new i2 = 0; i2 < 128; i2++)
  424. {
  425. str[i][i2]=getarg(i+start, i2);
  426. if(!getarg(i+start, i2+1))
  427. {
  428. break;
  429. }
  430. }
  431. }
  432. case 'd':
  433. {
  434. in[i]=getarg(i+start, 0);
  435. }
  436. case 'f':
  437. {
  438. pi[i]=Float:getarg(i+start, 0);
  439. }
  440. }
  441. }
  442. for(new i = 0; i < strlen(format2); i++)
  443. {
  444. switch(format2[i])
  445. {
  446. case 's':
  447. {
  448. if(i == 0)
  449. {
  450. format(Query1, sizeof(Query1), "`%s`", f[i]);
  451. format(Query2, sizeof(Query2), "'%s'", str[i]);
  452. }
  453. else
  454. {
  455. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  456. format(Query2, sizeof(Query2), "%s,'%s'", Query2, str[i]);
  457. }
  458. }
  459. case 'd':
  460. {
  461. if(i == 0)
  462. {
  463. format(Query1, sizeof(Query1), "`%s`", f[i]);
  464. format(Query2, sizeof(Query2), "%d", in[i]);
  465. }
  466. else
  467. {
  468. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  469. format(Query2, sizeof(Query2), "%s,%d", Query2, in[i]);
  470. }
  471. }
  472. case 'f':
  473. {
  474. if(i == 0)
  475. {
  476. format(Query1, sizeof(Query1), "`%s`", f[i]);
  477. format(Query2, sizeof(Query2), "%f", pi[i]);
  478. }
  479. else
  480. {
  481. format(Query1, sizeof(Query1), "%s,`%s`", Query1, f[i]);
  482. format(Query2, sizeof(Query2), "%s,%f", Query2, pi[i]);
  483. }
  484. }
  485. }
  486. }
  487. format(Query, sizeof(Query), "INSERT INTO `%s`(%s) VALUES (%s)", table, Query1, Query2);
  488. mysql_query(Query);
  489. return 1;
  490. }
  491.  
  492. stock r_split(const strsrc[], strdest[][], delimiter) //Wiki
  493. {
  494. new i, li;
  495. new aNum;
  496. new len;
  497. while(i <= strlen(strsrc))
  498. {
  499. if(strsrc[i] == delimiter || i == strlen(strsrc))
  500. {
  501. len = strmid(strdest[aNum], strsrc, li, i, 128);
  502. strdest[aNum][len] = 0;
  503. li = i+1;
  504. aNum++;
  505. }
  506. i++;
  507. }
  508. return 1;
  509. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement