Papadopolis

Untitled

Dec 9th, 2013
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.06 KB | None | 0 0
  1. #include <a_mysql>
  2.  
  3. #if defined _dini_included
  4. #endinput
  5. #endif
  6.  
  7. #define _dini_included
  8. #define FAIL -1
  9. #define MAX_STRING 128
  10.  
  11. #pragma library dutils
  12.  
  13. #include <dutils>
  14. #include <a_samp>
  15.  
  16. new
  17. Escape[2][128],
  18. Storage[128],
  19. myQuery[128],
  20. Table[128],
  21. ID[128]
  22. ;
  23.  
  24. stock GetPrimaryKey(table[]){
  25. new chave[24];
  26. if(strcmp(table,"contas_rpg",false)==0) format(chave,24,"NICK");
  27. else if(strcmp(table,"contas_mgs",false)==0) format(chave,24,"NOME");
  28. else if(strcmp(table,"postais",false)==0) format(chave,24,"NICK");
  29. else if(strcmp(table,"casas",false)==0) format(chave,24,"NUMERO");
  30. else if(strcmp(table,"veiculos",false)==0) format(chave,24,"PLACA");
  31. else if(strcmp(table,"propriedades",false)==0) format(chave,24,"NUMERO");
  32. //else if(strcmp(table,"propriedades",false)==0) format(chave,24,"MOCHILAS");
  33. else format(chave,24,"ID");
  34. return chave;
  35. }
  36.  
  37. stock dini_Exists(filename[]) {
  38. //print("dini_Exists");
  39. if(explode(Escape, filename, "/")==FAIL){
  40. explode(Escape, filename, ".");
  41. Table = Escape[0];
  42. format(myQuery, sizeof(myQuery),"SELECT * FROM %s",Table);
  43. }
  44. else {
  45. Table = Escape[0];
  46. explode(Escape, Escape[1], ".");
  47. ID = Escape[0];
  48. format(myQuery, sizeof(myQuery),"SELECT * FROM %s WHERE %s='%s'",Table,GetPrimaryKey(Table),ID);
  49. }
  50. //printf("[DEBUG] %s",myQuery);
  51. //SendClientMessageToAll(0xFF000000, myQuery);
  52. mysql_query(myQuery);
  53. mysql_store_result();
  54. if(mysql_num_rows() > 0) {
  55. mysql_free_result();
  56. return true;
  57. }
  58. mysql_free_result();
  59. return false;
  60. }
  61.  
  62. stock dini_Remove(filename[]) {
  63. //print("dini_Remove");
  64. if(explode(Escape, filename, "/")==FAIL){
  65. explode(Escape, filename, ".");
  66. Table = Escape[0];
  67. format(myQuery, sizeof(myQuery),"DELETE * FROM %s",Table);
  68. }
  69. else {
  70. Table = Escape[0];
  71. explode(Escape, Escape[1], ".");
  72. ID = Escape[0];
  73. format(myQuery, sizeof(myQuery),"DELETE * FROM %s WHERE %s = '%s'", Table,GetPrimaryKey(Table),ID);
  74. }
  75. //printf("[DEBUG] %s",myQuery);
  76. //SendClientMessageToAll(0xFF000000, myQuery);
  77. mysql_query(myQuery);
  78. mysql_store_result();
  79. if(mysql_num_rows() > 0) {
  80. mysql_free_result();
  81. return true;
  82. }
  83. mysql_free_result();
  84. return false;
  85. }
  86.  
  87. stock dini_Create(filename[]) {
  88. //print("dini_Create");
  89. if(explode(Escape, filename, "/")==FAIL){
  90. explode(Escape, filename, ".");
  91. Table = Escape[0];
  92. format(myQuery,sizeof(myQuery),"CREATE TABLE %s (ID INT(3))", Table);
  93. }
  94. else {
  95. Table = Escape[0];
  96.  
  97. format(myQuery,sizeof(myQuery),"SELECT * FROM %s", Table);
  98. mysql_query(myQuery);
  99. mysql_store_result();
  100. if(!mysql_num_rows()){
  101. format(myQuery,sizeof(myQuery),"CREATE TABLE %s (ID INT(3))", Table);
  102. mysql_query(myQuery);
  103. }
  104.  
  105. mysql_free_result();
  106. set(filename,Escape[1]);
  107. explode(Escape, filename, ".");
  108. ID = Escape[0];
  109. format(myQuery, sizeof(myQuery),"INSERT INTO '%s' ('%s') VALUES('%s')", Table,GetPrimaryKey(Table),ID); //INSERT INTO veiculos (Placa) VALUES 20
  110. }
  111. //printf("[DEBUG] %s",myQuery);
  112. //SendClientMessageToAll(0xFF000000, myQuery);
  113. mysql_query(myQuery);
  114. return true;
  115. }
  116.  
  117. stock dini_PRIVATE_ExtractKey(line[]) {
  118. //print("dini_PRIVATE_ExtractKey");
  119. new tmp[MAX_STRING];
  120. tmp[0]=0;
  121. if (strfind(line,"=",true)==-1) return tmp;
  122. set(tmp,strlower(ret_memcpy(line,0,strfind(line,"=",true))));
  123. return tmp;
  124. }
  125.  
  126. stock dini_PRIVATE_ExtractValue(line[]) {
  127. //print("dini_PRIVATE_ExtractValue");
  128. new tmp[MAX_STRING];
  129. tmp[0]=0;
  130. if (strfind(line,"=",true)==-1) {
  131. return tmp;
  132. }
  133. set(tmp,ret_memcpy(line,strfind(line,"=",true)+1,strlen(line)));
  134. return tmp;
  135. }
  136.  
  137. stock dini_Set(filename[],key[],value[]) {
  138. //print("dini_Set");
  139. if(explode(Escape, filename, "/")==FAIL){
  140. explode(Escape, filename, ".");
  141. Table = Escape[0];
  142.  
  143. format(myQuery,sizeof(myQuery),"SELECT %s FROM %s", key, Table);
  144. mysql_query(myQuery);
  145. mysql_store_result();
  146. if(!mysql_num_rows()){
  147. format(myQuery, sizeof(myQuery), "ALTER TABLE %s ADD COLUMN '%s' VARCHAR(50)",Table,key);
  148. mysql_query(myQuery);
  149. }
  150.  
  151. format(myQuery, sizeof(myQuery),"UPDATE %s SET %s = '%s'",Table,key,value); //UPDATE brazucas SET Automacao 1
  152. }
  153. else {
  154. Table = Escape[0];
  155.  
  156. format(myQuery,sizeof(myQuery),"SELECT %s FROM %s", key, Table);
  157. mysql_query(myQuery);
  158. mysql_store_result();
  159. if(!mysql_num_rows()){
  160. format(myQuery, sizeof(myQuery), "ALTER TABLE %s ADD COLUMN '%s' VARCHAR(50)",Table,key);
  161. mysql_query(myQuery);
  162. }
  163.  
  164. explode(Escape, Escape[1], ".");
  165. ID = Escape[0];
  166. format(myQuery, sizeof(myQuery),"UPDATE %s SET %s = '%s' WHERE %s = '%s'", Table,key,value,GetPrimaryKey(Table),ID);
  167. }
  168. //printf("[DEBUG] %s",myQuery);
  169. //SendClientMessageToAll(0xFF000000, myQuery);
  170. mysql_query(myQuery);
  171. return false;
  172. }
  173.  
  174. stock dini_IntSet(filename[],key[],value) {
  175. //print("dini_IntSet");
  176. new valuestring[MAX_STRING];
  177. format(valuestring,sizeof(valuestring),"%d",value);
  178. return dini_Set(filename,key,valuestring);
  179. }
  180.  
  181. stock dini_Int(filename[],key[]) {
  182. print("dini_Int");
  183. return strval(dini_Get(filename,key));
  184. }
  185.  
  186. stock dini_FloatSet(filename[],key[],Float:value) {
  187. //print("dini_FloatSet");
  188. new valuestring[MAX_STRING];
  189. format(valuestring,sizeof(valuestring),"%f",value);
  190. return dini_Set(filename,key,valuestring);
  191. }
  192.  
  193. stock Float:dini_Float(filename[],key[]) {
  194. //print("dini_Float");
  195. return floatstr(dini_Get(filename,key));
  196. }
  197.  
  198. stock dini_Bool(filename[],key[]) {
  199. //print("dini_Bool");
  200. return strval(dini_Get(filename,key));
  201. }
  202.  
  203. stock dini_BoolSet(filename[],key[],value) {
  204. //print("dini_BoolSet");
  205. new valuestring[MAX_STRING];
  206. format(valuestring,sizeof(valuestring),"%d",value);
  207. return dini_Set(filename,key,valuestring);
  208. }
  209.  
  210. stock dini_Unset(filename[],key[]) {
  211. //print("dini_Unset");
  212. dini_Set(filename,key,"");
  213. return false;
  214. }
  215.  
  216. stock dini_Get(filename[],key[]) {
  217. //print("dini_Get");
  218. if(explode(Escape, filename, "/")==FAIL){
  219. explode(Escape, filename, ".");
  220. Table = Escape[0];
  221. format(myQuery, sizeof(myQuery),"SELECT %s FROM %s",key,Table);
  222. }
  223. else {
  224. Table = Escape[0];
  225. explode(Escape, Escape[1], ".");
  226. ID = Escape[0];
  227. format(myQuery, sizeof(myQuery),"SELECT %s FROM %s WHERE %s = '%s'", key,Table,GetPrimaryKey(Table),ID);
  228. }
  229. //printf("[DEBUG] %s",myQuery);
  230. //SendClientMessageToAll(0xFF000000, myQuery);
  231. mysql_query(myQuery);
  232. mysql_store_result();
  233. Storage = "\0";
  234. if(mysql_num_rows() > 0) {
  235. while(mysql_fetch_row(myQuery)) {
  236. mysql_fetch_field_row(Storage, key);
  237. }
  238. }
  239. mysql_free_result();
  240. return Storage;
  241. }
  242.  
  243.  
  244. stock dini_Isset(filename[],key[]) {
  245. //print("dini_Isset");
  246. if(explode(Escape, filename, "/")==FAIL){
  247. explode(Escape, filename, ".");
  248. Table = Escape[0];
  249. format(myQuery, sizeof(myQuery),"SELECT %s FROM %s",key,Table);
  250. }
  251. else {
  252. Table = Escape[0];
  253. explode(Escape, Escape[1], ".");
  254. ID = Escape[0];
  255. format(myQuery, sizeof(myQuery),"SELECT %s FROM %s WHERE %s = '%s'", key,Table,GetPrimaryKey(Table),ID);
  256. }
  257. //printf("[DEBUG] %s",myQuery);
  258. //SendClientMessageToAll(0xFF000000, myQuery);
  259. mysql_query(myQuery);
  260. mysql_store_result();
  261. Storage = "\0";
  262. if(mysql_num_rows() > 0) {
  263. while(mysql_fetch_row(myQuery)) {
  264. mysql_fetch_field_row(Storage, key);
  265. }
  266. }
  267. mysql_free_result();
  268. if(strlen(Storage)) return true;
  269. return false;
  270. }
  271.  
  272. ret_memcpy(source[],index=0,numbytes) {
  273. new tmp[MAX_STRING];
  274. new i=0;
  275. tmp[0]=0;
  276. if (index>=strlen(source)) return tmp;
  277. if (numbytes+index>=strlen(source)) numbytes=strlen(source)-index;
  278. if (numbytes<=0) return tmp;
  279. for (i=index;i<numbytes+index;i++) {
  280. tmp[i-index]=source[i];
  281. if (source[i]==0) return tmp;
  282. }
  283. tmp[numbytes]=0;
  284. return tmp;
  285. }
  286.  
  287. stock RemoveLineFromFile(line[],filename[]){
  288. //print("RemoveLineFromFile");
  289. new aLineFromTheFile[MAX_STRING];
  290. new aLineToRemove[MAX_STRING];
  291. format(aLineToRemove,MAX_STRING,"%s\r\n",line);
  292. new File:f = fopen(filename, io_read);
  293. new File:temp = fopen("temp.txt", io_write);
  294. while (fread(f, aLineFromTheFile)){
  295. if(strcmp(aLineFromTheFile,aLineToRemove,true)==0){
  296. continue;
  297. }
  298. fwrite(temp, aLineFromTheFile);
  299. }
  300. fclose(f);
  301. fclose(temp);
  302. f = fopen(filename, io_write);
  303. temp = fopen("temp.txt", io_read);
  304. while (fread(temp, aLineFromTheFile))
  305. {
  306. fwrite(f, aLineFromTheFile);
  307. }
  308. fclose(f);
  309. fclose(temp);
  310. fremove("temp.txt");
  311. }
  312.  
  313. /*
  314.  
  315. stock isNumeric(const string[]) {
  316. new length=strlen(string);
  317. if (length==0) return false;
  318. for (new i = 0; i < length; i++) {
  319. if (
  320. (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
  321. || (string[i]=='-' && i!=0) // A '-' but not at first.
  322. || (string[i]=='+' && i!=0) // A '+' but not at first.
  323. ) return false;
  324. }
  325. if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
  326. return true;
  327. }
  328.  
  329. stock set(dest[],source[]) {
  330. new count = strlen(source);
  331. new i=0;
  332. for (i=0;i<count;i++) {
  333. dest[i]=source[i];
  334. }
  335. dest[count]=0;
  336. }
  337.  
  338. stock strtok(const string[], &index,seperator=' ')
  339. {
  340. new length = strlen(string);
  341. new offset = index;
  342. new result[MAX_STRING];
  343. while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  344. {
  345. result[index - offset] = string[index];
  346. index++;
  347. }
  348.  
  349. result[index - offset] = EOS;
  350. if ((index < length) && (string[index] == seperator))
  351. {
  352. index++;
  353. }
  354. return result;
  355. }
  356.  
  357. stock explode(aExplode[][], const sSource[], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[]){
  358. new
  359. iNode,
  360. iPointer,
  361. iPrevious = -1,
  362. iDelimiter = strlen(sDelimiter);
  363.  
  364. while(iNode < iVertices){
  365. iPointer = strfind(sSource, sDelimiter, false, iPointer);
  366.  
  367. if(iPointer == -1){
  368. strmid(aExplode[iNode], sSource, iPrevious, strlen(sSource), iLength);
  369. break;
  370. }
  371. else {
  372. strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength);
  373. }
  374.  
  375. iPrevious = (iPointer += iDelimiter);
  376. ++iNode;
  377. }
  378. return iPrevious;
  379. }
  380. */
Advertisement
Add Comment
Please, Sign In to add comment