Advertisement
Guest User

Untitled

a guest
Mar 18th, 2015
2,636
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 44.72 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <sscanf2>
  5.  
  6. #include <YSI\y_iterate>
  7. #include <YSI\y_inline>
  8. #include <YSI\y_dialog>
  9. #include <YSI\y_commands>
  10. #include <progress2>
  11. #include <filemanager>
  12.  
  13. #define STEALTH_GREEN 0x33DD1100
  14. #define STEALTH_ORANGE 0xFF880000
  15. #define STEALTH_YELLOW 0xFFFF00AA
  16.  
  17. #define MAX_PB_EDIT 10
  18.  
  19. #define EDIT_STATE_NONE 0
  20. #define EDIT_STATE_OPEN 1
  21.  
  22. #define EDIT_MODE_NONE 0
  23. #define EDIT_MODE_MOVEBAR 1
  24.  
  25. #define DB_SAVE_TYPE_POS 0
  26. #define DB_SAVE_TYPE_WIDTH 1
  27. #define DB_SAVE_TYPE_HEIGHT 2
  28. #define DB_SAVE_TYPE_COLOR 3
  29. #define DB_SAVE_TYPE_MAX 4
  30. #define DB_SAVE_TYPE_BARVALUE 5
  31. #define DB_SAVE_TYPE_DIRECTION 6
  32.  
  33. #define RGBA(%0,%1,%2,%3) ((((%0) & 0xFF) << 24) | (((%1) & 0xFF) << 16) | (((%2) & 0xFF) << 8) | (((%3) & 0xFF) << 0))
  34.  
  35. static PlayerBar:EditBars[MAX_PLAYERS][MAX_PB_EDIT];
  36. static EditState[MAX_PLAYERS];
  37. static EditMode[MAX_PLAYERS];
  38. static CurrEditIndex[MAX_PLAYERS];
  39. static DB:ProjectDB[MAX_PLAYERS];
  40. static msgline[144];
  41. static Float:SavedXY[MAX_PLAYERS][2];
  42.  
  43. static const DirectionNames[4][] = {
  44. "Right",
  45. "Left",
  46. "Up",
  47. "Down"
  48. };
  49.  
  50. static const DirectionEnumNames[4][] = {
  51. "BAR_DIRECTION_RIGHT",
  52. "BAR_DIRECTION_LEFT",
  53. "BAR_DIRECTION_UP",
  54. "BAR_DIRECTION_DOWN"
  55. };
  56.  
  57. static webcolors[4096];
  58. static WebColorsRGBA[216] = {
  59. 0x000000FF,0x000033FF,0x000066FF,0x000099FF,0x0000CCFF,0x0000FFFF,
  60. 0x003300FF,0x003333FF,0x003366FF,0x003399FF,0x0033CCFF,0x0033FFFF,
  61. 0x006600FF,0x006633FF,0x006666FF,0x006699FF,0x0066CCFF,0x0066FFFF,
  62. 0x009900FF,0x009933FF,0x009966FF,0x009999FF,0x0099CCFF,0x0099FFFF,
  63. 0x00CC00FF,0x00CC33FF,0x00CC66FF,0x00CC99FF,0x00CCCCFF,0x00CCFFFF,
  64. 0x00FF00FF,0x00FF33FF,0x00FF66FF,0x00FF99FF,0x00FFCCFF,0x00FFFFFF,
  65. 0x330000FF,0x330033FF,0x330066FF,0x330099FF,0x3300CCFF,0x3300FFFF,
  66. 0x333300FF,0x333333FF,0x333366FF,0x333399FF,0x3333CCFF,0x3333FFFF,
  67. 0x336600FF,0x336633FF,0x336666FF,0x336699FF,0x3366CCFF,0x3366FFFF,
  68. 0x339900FF,0x339933FF,0x339966FF,0x339999FF,0x3399CCFF,0x3399FFFF,
  69. 0x33CC00FF,0x33CC33FF,0x33CC66FF,0x33CC99FF,0x33CCCCFF,0x33CCFFFF,
  70. 0x33FF00FF,0x33FF33FF,0x33FF66FF,0x33FF99FF,0x33FFCCFF,0x33FFFFFF,
  71. 0x660000FF,0x660033FF,0x660066FF,0x660099FF,0x6600CCFF,0x6600FFFF,
  72. 0x663300FF,0x663333FF,0x663366FF,0x663399FF,0x6633CCFF,0x6633FFFF,
  73. 0x666600FF,0x666633FF,0x666666FF,0x666699FF,0x6666CCFF,0x6666FFFF,
  74. 0x669900FF,0x669933FF,0x669966FF,0x669999FF,0x6699CCFF,0x6699FFFF,
  75. 0x66CC00FF,0x66CC33FF,0x66CC66FF,0x66CC99FF,0x66CCCCFF,0x66CCFFFF,
  76. 0x66FF00FF,0x66FF33FF,0x66FF66FF,0x66FF99FF,0x66FFCCFF,0x66FFFFFF,
  77. 0x990000FF,0x990033FF,0x990066FF,0x990099FF,0x9900CCFF,0x9900FFFF,
  78. 0x993300FF,0x993333FF,0x993366FF,0x993399FF,0x9933CCFF,0x9933FFFF,
  79. 0x996600FF,0x996633FF,0x996666FF,0x996699FF,0x9966CCFF,0x9966FFFF,
  80. 0x999900FF,0x999933FF,0x999966FF,0x999999FF,0x9999CCFF,0x9999FFFF,
  81. 0x99CC00FF,0x99CC33FF,0x99CC66FF,0x99CC99FF,0x99CCCCFF,0x99CCFFFF,
  82. 0x99FF00FF,0x99FF33FF,0x99FF66FF,0x99FF99FF,0x99FFCCFF,0x99FFFFFF,
  83. 0xCC0000FF,0xCC0033FF,0xCC0066FF,0xCC0099FF,0xCC00CCFF,0xCC00FFFF,
  84. 0xCC3300FF,0xCC3333FF,0xCC3366FF,0xCC3399FF,0xCC33CCFF,0xCC33FFFF,
  85. 0xCC6600FF,0xCC6633FF,0xCC6666FF,0xCC6699FF,0xCC66CCFF,0xCC66FFFF,
  86. 0xCC9900FF,0xCC9933FF,0xCC9966FF,0xCC9999FF,0xCC99CCFF,0xCC99FFFF,
  87. 0xCCCC00FF,0xCCCC33FF,0xCCCC66FF,0xCCCC99FF,0xCCCCCCFF,0xCCCCFFFF,
  88. 0xCCFF00FF,0xCCFF33FF,0xCCFF66FF,0xCCFF99FF,0xCCFFCCFF,0xCCFFFFFF,
  89. 0xFF0000FF,0xFF0033FF,0xFF0066FF,0xFF0099FF,0xFF00CCFF,0xFF00FFFF,
  90. 0xFF3300FF,0xFF3333FF,0xFF3366FF,0xFF3399FF,0xFF33CCFF,0xFF33FFFF,
  91. 0xFF6600FF,0xFF6633FF,0xFF6666FF,0xFF6699FF,0xFF66CCFF,0xFF66FFFF,
  92. 0xFF9900FF,0xFF9933FF,0xFF9966FF,0xFF9999FF,0xFF99CCFF,0xFF99FFFF,
  93. 0xFFCC00FF,0xFFCC33FF,0xFFCC66FF,0xFFCC99FF,0xFFCCCCFF,0xFFCCFFFF,
  94. 0xFFFF00FF,0xFFFF33FF,0xFFFF66FF,0xFFFF99FF,0xFFFFCCFF,0xFFFFFFFF
  95. };
  96.  
  97. public OnFilterScriptInit()
  98. {
  99. for(new i = 0; i < MAX_PLAYERS; i++)
  100. {
  101. CurrEditIndex[i] = -1;
  102. for(new j = 0; j < MAX_PB_EDIT; j++) EditBars[i][j] = INVALID_PLAYER_BAR_ID;
  103. }
  104.  
  105. for(new i = 0; i < 216; i++) format(webcolors, sizeof(webcolors), "%s{%06x}00000000\n", webcolors, WebColorsRGBA[i] >>> 8);
  106.  
  107. return 1;
  108. }
  109.  
  110. public OnPlayerConnect(playerid)
  111. {
  112. SendClientMessage(playerid, STEALTH_ORANGE, "Type /pbedit to start editing progress bars!");
  113. return 1;
  114. }
  115.  
  116. public OnFilterScriptExit()
  117. {
  118. for(new i = 0; i < MAX_PLAYERS; i++)
  119. {
  120. CleanupPlayer(i);
  121. }
  122. return 1;
  123. }
  124.  
  125. public OnPlayerDisconnect(playerid, reason)
  126. {
  127. CleanupPlayer(playerid);
  128. return 1;
  129. }
  130.  
  131.  
  132. CMD:pbedit(playerid, arg[])
  133. {
  134. if(EditMode[playerid] == EDIT_MODE_MOVEBAR) return SendClientMessage(playerid, STEALTH_YELLOW, "Please finish editing before using any commands");
  135. ProgressProjectEdit(playerid);
  136. return 1;
  137. }
  138.  
  139.  
  140. static ProgressProjectEdit(playerid)
  141. {
  142. switch(EditState[playerid])
  143. {
  144. // No progject is open
  145. case EDIT_STATE_NONE:
  146. {
  147. inline PBNewLoadMenu(pid, dialogid, response, listitem, string:text[])
  148. {
  149. #pragma unused listitem, dialogid, pid, text
  150. if(response)
  151. {
  152. if(listitem == 0) CreateNewProject(playerid);
  153.  
  154. // Open Existing project
  155. else if(listitem == 1)
  156. {
  157. new dir:dHandle = dir_open("./scriptfiles/pbedit/");
  158. new item[40], type;
  159. new line[1024];
  160. new extension[3];
  161. new fcount;
  162.  
  163. // Create a load list
  164. while(dir_list(dHandle, item, type))
  165. {
  166. if(type != FM_DIR)
  167. {
  168. // We need to check extension
  169. if(strlen(item) > 3)
  170. {
  171. format(extension, sizeof(extension), "%s%s", item[strlen(item) - 2],item[strlen(item) - 1]);
  172.  
  173. // File is apparently a db
  174. if(!strcmp(extension, "db"))
  175. {
  176. format(line, sizeof(line), "%s\n%s", item, line);
  177. fcount++;
  178. }
  179. }
  180. }
  181. }
  182.  
  183. // Files were found
  184. if(fcount > 0)
  185. {
  186. inline Select(spid, sdialogid, sresponse, slistitem, string:stext[])
  187. {
  188. #pragma unused slistitem, sdialogid, spid, stext
  189.  
  190. // Player selected project to load
  191. if(sresponse)
  192. {
  193. if(LoadProject(playerid, stext))
  194. {
  195. EditState[playerid] = EDIT_STATE_OPEN;
  196. EditMode[playerid] = EDIT_MODE_NONE;
  197. SendClientMessage(playerid, STEALTH_GREEN, "Project has been loaded");
  198.  
  199. for(new i = 0; i < MAX_PB_EDIT; i++)
  200. {
  201. if(EditBars[playerid][i] != INVALID_PLAYER_BAR_ID)
  202. {
  203. CurrEditIndex[playerid] = i;
  204. break;
  205. }
  206. }
  207. ProgressProjectEdit(playerid);
  208. }
  209. }
  210. }
  211. Dialog_ShowCallback(playerid, using inline Select, DIALOG_STYLE_LIST, "Progress Bar Editor", line, "Ok", "Cancel");
  212. }
  213. // No files found
  214. else
  215. {
  216. inline CreateProject(cpid, cdialogid, cresponse, clistitem, string:ctext[])
  217. {
  218. #pragma unused clistitem, cdialogid, cpid, ctext
  219. if(cresponse) CreateNewProject(playerid);
  220. else ProgressProjectEdit(playerid);
  221. }
  222. Dialog_ShowCallback(playerid, using inline CreateProject, DIALOG_STYLE_MSGBOX, "Progress Bar Editor", "There are no projects to load create a new project?", "Ok", "Cancel");
  223. }
  224. return 1;
  225. }
  226. }
  227. }
  228. Dialog_ShowCallback(playerid, using inline PBNewLoadMenu, DIALOG_STYLE_LIST, "Progress Bar Editor", "New\nLoad", "Ok", "Cancel");
  229. }
  230.  
  231. // Project is open
  232. case EDIT_STATE_OPEN:
  233. {
  234. inline PBEditMenu(pid, dialogid, response, listitem, string:text[])
  235. {
  236. #pragma unused listitem, dialogid, pid, text
  237. if(response)
  238. {
  239. switch(listitem)
  240. {
  241. // Create a new progress bar edit
  242. case 0:
  243. {
  244. new index = CreateProgressBarEdit(playerid);
  245. if(index > -1)
  246. {
  247. CurrEditIndex[playerid] = index;
  248. format(msgline, sizeof(msgline), "A new progress bar has been created Index: %i", index);
  249. SendClientMessage(playerid, STEALTH_GREEN, msgline);
  250. ProgressProjectEdit(playerid);
  251. }
  252. else
  253. {
  254. SendClientMessage(playerid, STEALTH_YELLOW, "Too many progress bars created!");
  255. ProgressProjectEdit(playerid);
  256. }
  257. }
  258.  
  259. // Select a progress bar
  260. case 1:
  261. {
  262. inline PBSelect(spid, sdialogid, sresponse, slistitem, string:stext[])
  263. {
  264. #pragma unused slistitem, sdialogid, spid, stext
  265. if(sresponse)
  266. {
  267. sscanf(stext, "s[144]i", msgline, CurrEditIndex[playerid]);
  268. format(msgline, sizeof(msgline), "You have selected progress bar index %i for editing", CurrEditIndex[playerid]);
  269. SendClientMessage(playerid, STEALTH_GREEN, msgline);
  270. }
  271. ProgressProjectEdit(playerid);
  272. }
  273. new line[256];
  274. for(new i = 0; i < MAX_PB_EDIT; i++)
  275. {
  276. if(EditBars[playerid][i] != INVALID_PLAYER_BAR_ID) format(line, sizeof(line), "%sIndex: %i\n", line, i);
  277. }
  278. Dialog_ShowCallback(playerid, using inline PBSelect, DIALOG_STYLE_LIST, "Progress Bar Editor", line, "Ok", "Cancel");
  279. }
  280.  
  281. // Edit progress bar
  282. case 2:
  283. {
  284. if(CurrEditIndex[playerid] == -1)
  285. {
  286. SendClientMessage(playerid, STEALTH_YELLOW, "You must have a bar selected to use this feature!");
  287. ProgressProjectEdit(playerid);
  288. }
  289. else ProgressProjectPropEdit(playerid);
  290. }
  291.  
  292. // Delete a progress bar
  293. case 3:
  294. {
  295. inline PBDelete(spid, sdialogid, sresponse, slistitem, string:stext[])
  296. {
  297. #pragma unused slistitem, sdialogid, spid, stext
  298. if(sresponse)
  299. {
  300. sscanf(stext, "s[144]i", msgline, CurrEditIndex[playerid]);
  301. format(msgline, sizeof(msgline), "You have deleted progress bar index %i for editing", CurrEditIndex[playerid]);
  302. SendClientMessage(playerid, STEALTH_GREEN, msgline);
  303. new q[128];
  304. format(q, sizeof(q), "DELETE FROM `ProgressBars` WHERE `IndexID` = %i", CurrEditIndex[playerid]);
  305. db_query(ProjectDB[playerid], q);
  306. DestroyPlayerProgressBar(playerid, EditBars[playerid][CurrEditIndex[playerid]]);
  307. EditBars[playerid][CurrEditIndex[playerid]] = INVALID_PLAYER_BAR_ID;
  308. CurrEditIndex[playerid] = -1;
  309. ProgressProjectEdit(playerid);
  310. }
  311. else ProgressProjectEdit(playerid);
  312. }
  313. new line[256];
  314. for(new i = 0; i < MAX_PB_EDIT; i++)
  315. {
  316. if(EditBars[playerid][i] != INVALID_PLAYER_BAR_ID) format(line, sizeof(line), "%sIndex: %i\n", line, i);
  317. }
  318. Dialog_ShowCallback(playerid, using inline PBDelete, DIALOG_STYLE_LIST, "Progress Bar Editor", line, "Ok", "Cancel");
  319.  
  320. }
  321.  
  322. // Export project
  323. case 4:
  324. {
  325. new exportproj[64];
  326.  
  327. // Ask for a map name
  328. inline ExportProject(epid, edialogid, eresponse, elistitem, string:etext[])
  329. {
  330. #pragma unused elistitem, edialogid, epid
  331. if(eresponse)
  332. {
  333. // Was a project name supplied ?
  334. if(!isnull(etext))
  335. {
  336. // Check map name length
  337. if(strlen(etext) >= 20)
  338. {
  339. SendClientMessage(playerid, STEALTH_YELLOW, "Choose a shorter project name to export to...");
  340. return 1;
  341. }
  342.  
  343. // Format the output name
  344. format(exportproj, sizeof(exportproj), "pbedit/%s.txt", etext);
  345.  
  346. // Project exists ask to remove
  347. if(fexist(exportproj))
  348. {
  349. inline RemoveProject(rpid, rdialogid, rresponse, rlistitem, string:rtext[])
  350. {
  351. #pragma unused rlistitem, rdialogid, rpid, rtext
  352.  
  353. // Remove map and export
  354. if(rresponse)
  355. {
  356. fremove(exportproj);
  357. ProjectExport(playerid, exportproj);
  358. }
  359. else ProgressProjectEdit(playerid);
  360. }
  361. Dialog_ShowCallback(playerid, using inline RemoveProject, DIALOG_STYLE_MSGBOX, "Progress Bar Editor", "A export exists with this name replace?", "Ok", "Cancel");
  362. }
  363. // We can start the export
  364. else ProjectExport(playerid, exportproj);
  365. }
  366. else
  367. {
  368. SendClientMessage(playerid, STEALTH_YELLOW, "You can't export a project with no name");
  369. Dialog_ShowCallback(playerid, using inline ExportProject, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a export project name", "Ok", "Cancel");
  370. }
  371. }
  372. else ProgressProjectEdit(playerid);
  373. }
  374. Dialog_ShowCallback(playerid, using inline ExportProject, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a export project name", "Ok", "Cancel");
  375. }
  376.  
  377. // Close project
  378. case 5:
  379. {
  380. CleanupPlayer(playerid);
  381. SendClientMessage(playerid, STEALTH_GREEN, "Your project has been closed!");
  382. }
  383. }
  384. }
  385. }
  386. Dialog_ShowCallback(playerid, using inline PBEditMenu, DIALOG_STYLE_LIST, "Progress Bar Editor", "Create Progress Bar\nSelect Progress Bar\nEdit Progress Bar\nDelete Progress Bar\nExport Progress Bar\nClose Project", "Ok", "Cancel");
  387. }
  388. }
  389. return 1;
  390. }
  391.  
  392. static ProjectExport(playerid, filename[])
  393. {
  394. new File:f = fopen(filename, io_write);
  395. new templine[256], Float:x, Float:y, count;
  396.  
  397. for(new i = 0; i < MAX_PB_EDIT; i++)
  398. {
  399. if(EditBars[playerid][i] != INVALID_PLAYER_BAR_ID)
  400. {
  401. GetPlayerProgressBarPos(playerid, EditBars[playerid][i], x, y);
  402. format(templine, sizeof(templine), "PlayerBar_%i[playerid] = CreatePlayerProgressBar(playerid, %f, %f, %f, %f, %i, %f, %s);\r\n",
  403. count,
  404. x,
  405. y,
  406. GetPlayerProgressBarWidth(playerid, EditBars[playerid][i]),
  407. GetPlayerProgressBarHeight(playerid, EditBars[playerid][i]),
  408. GetPlayerProgressBarColour(playerid, EditBars[playerid][i]),
  409. GetPlayerProgressBarMaxValue(playerid, EditBars[playerid][i]),
  410. DirectionEnumNames[GetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]])]
  411. );
  412.  
  413. fwrite(f, templine);
  414.  
  415. if(GetPlayerProgressBarValue(playerid, EditBars[playerid][i]) > 0.0)
  416. {
  417. format(templine, sizeof(templine), "PlayerBar_%i[playerid] = SetPlayerProgressBarValue(playerid, %f);\r\n",
  418. GetPlayerProgressBarValue(playerid, EditBars[playerid][i]));
  419. fwrite(f, templine);
  420. }
  421. count++;
  422. }
  423. }
  424. fclose(f);
  425. if(count) SendClientMessage(playerid, STEALTH_GREEN, "Project exported!");
  426.  
  427. return 1;
  428. }
  429.  
  430. static LoadProject(playerid, filename[])
  431. {
  432. new file[64];
  433. format(file, sizeof(file), "pbedit/%s", filename);
  434. ProjectDB[playerid] = db_open(file);
  435.  
  436. new DBResult:r = db_query(ProjectDB[playerid], "SELECT * FROM `ProgressBars`");
  437.  
  438. if(db_num_rows(r))
  439. {
  440. new Field[32], index, Float:x, Float:y, Float:w, Float:h, color, Float:bmax, Float:pbv, direction;
  441.  
  442. for(new i = 0; i < db_num_rows(r); i++)
  443. {
  444. db_get_field_assoc(r, "IndexID", Field, 32);
  445. index = strval(Field);
  446.  
  447. db_get_field_assoc(r, "BarX", Field, 32);
  448. x = floatstr(Field);
  449.  
  450. db_get_field_assoc(r, "BarY", Field, 32);
  451. y = floatstr(Field);
  452.  
  453. db_get_field_assoc(r, "BarWidth", Field, 32);
  454. w = floatstr(Field);
  455.  
  456. db_get_field_assoc(r, "BarHeight", Field, 32);
  457. h = floatstr(Field);
  458.  
  459. db_get_field_assoc(r, "BarColor", Field, 32);
  460. color = strval(Field);
  461.  
  462. db_get_field_assoc(r, "BarMaxValue", Field, 32);
  463. bmax = floatstr(Field);
  464.  
  465. db_get_field_assoc(r, "BarProgressValue", Field, 32);
  466. pbv = floatstr(Field);
  467.  
  468. db_get_field_assoc(r, "BarDirection", Field, 32);
  469. direction = strval(Field);
  470.  
  471. EditBars[playerid][index] = CreatePlayerProgressBar(playerid, x, y, w, h, color, bmax, direction);
  472. ShowPlayerProgressBar(playerid, EditBars[playerid][index]);
  473. SetPlayerProgressBarValue(playerid, EditBars[playerid][index], pbv);
  474.  
  475. db_next_row(r);
  476. }
  477. db_free_result(r);
  478. }
  479. else
  480. {
  481. SendClientMessage(playerid, STEALTH_YELLOW, "There was no progress bars to load please make a new project");
  482. db_free_result(r);
  483. db_close(ProjectDB[playerid]);
  484. return 0;
  485. }
  486. return 1;
  487. }
  488.  
  489.  
  490. static CreateNewProject(playerid)
  491. {
  492. inline PBNewProject(npid, ndialogid, nresponse, nlistitem, string:ntext[])
  493. {
  494. #pragma unused nlistitem, ndialogid, npid, ntext
  495. if(nresponse)
  496. {
  497. if(!isnull(ntext))
  498. {
  499. new fname[64];
  500. format(fname, sizeof(fname), "pbedit/%s.db", ntext);
  501.  
  502. if(fexist(fname))
  503. {
  504. inline PBOverWrite(opid, odialogid, oresponse, olistitem, string:otext[])
  505. {
  506. #pragma unused olistitem, odialogid, opid, otext
  507. if(oresponse)
  508. {
  509. fremove(fname);
  510. CreateProgressBarProject(playerid, fname);
  511. SendClientMessage(playerid, STEALTH_GREEN, "You have created a new project!");
  512. ProgressProjectEdit(playerid);
  513. }
  514. else ProgressProjectEdit(playerid);
  515. }
  516. Dialog_ShowCallback(playerid, using inline PBOverWrite, DIALOG_STYLE_MSGBOX, "Progress Bar Editor", "Overwrite?", "Ok", "Cancel");
  517. }
  518. else
  519. {
  520. printf("New project");
  521. CreateProgressBarProject(playerid, fname);
  522. ProgressProjectEdit(playerid);
  523. SendClientMessage(playerid, STEALTH_GREEN, "You have created a new project!");
  524. }
  525. }
  526. else
  527. {
  528. SendClientMessage(playerid, STEALTH_YELLOW, "You need to supply a filename to save to!");
  529. Dialog_ShowCallback(playerid, using inline PBNewProject, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a filename for your project", "Ok", "Cancel");
  530. }
  531. }
  532. else ProgressProjectEdit(playerid);
  533. }
  534. Dialog_ShowCallback(playerid, using inline PBNewProject, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a filename for your project", "Ok", "Cancel");
  535. return 1;
  536. }
  537.  
  538. static ProgressProjectPropEdit(playerid)
  539. {
  540. new Float:x, Float:y;
  541.  
  542. inline PBPropEditMenu(pid, dialogid, response, listitem, string:text[])
  543. {
  544. #pragma unused listitem, dialogid, pid, text
  545. if(response)
  546. {
  547. switch(listitem)
  548. {
  549. // Set X-Position
  550. case 0:
  551. {
  552. inline SetXPos(spid, sdialogid, sresponse, slistitem, string:stext[])
  553. {
  554. #pragma unused slistitem, sdialogid, spid, stext
  555. if(sresponse)
  556. {
  557. if(!isnull(stext))
  558. {
  559. new Float:pos;
  560. if(sscanf(stext, "f", pos))
  561. {
  562. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  563. Dialog_ShowCallback(playerid, using inline SetXPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new X Value", "Ok", "Back");
  564. }
  565. else if(pos < 0.0)
  566. {
  567. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  568. Dialog_ShowCallback(playerid, using inline SetXPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new X Value", "Ok", "Back");
  569. }
  570. else if(pos > 640.0)
  571. {
  572. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 640.0!");
  573. Dialog_ShowCallback(playerid, using inline SetXPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new X Value", "Ok", "Back");
  574. }
  575. else
  576. {
  577. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  578. SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], pos, y);
  579. SendClientMessage(playerid, STEALTH_GREEN, "X Position has been updated");
  580. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_POS);
  581. ProgressProjectPropEdit(playerid);
  582. }
  583. }
  584. else ProgressProjectPropEdit(playerid);
  585. }
  586. else ProgressProjectPropEdit(playerid);
  587. }
  588. Dialog_ShowCallback(playerid, using inline SetXPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new X Value", "Ok", "Back");
  589. }
  590.  
  591. // Set Y Pos
  592. case 1:
  593. {
  594. inline SetYPos(spid, sdialogid, sresponse, slistitem, string:stext[])
  595. {
  596. #pragma unused slistitem, sdialogid, spid, stext
  597. if(sresponse)
  598. {
  599. if(!isnull(stext))
  600. {
  601. new Float:pos;
  602. if(sscanf(stext, "f", pos))
  603. {
  604. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  605. Dialog_ShowCallback(playerid, using inline SetYPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new Y Value", "Ok", "Back");
  606. }
  607. else if(pos < 0.0)
  608. {
  609. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  610. Dialog_ShowCallback(playerid, using inline SetYPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new Y Value", "Ok", "Back");
  611. }
  612. else if(pos > 480.0)
  613. {
  614. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 480.0!");
  615. Dialog_ShowCallback(playerid, using inline SetYPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new Y Value", "Ok", "Back");
  616. }
  617. else
  618. {
  619. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  620. SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, pos);
  621. SendClientMessage(playerid, STEALTH_GREEN, "Y Position has been updated");
  622. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_POS);
  623. ProgressProjectPropEdit(playerid);
  624. }
  625. }
  626. else ProgressProjectPropEdit(playerid);
  627. }
  628. else ProgressProjectPropEdit(playerid);
  629. }
  630. Dialog_ShowCallback(playerid, using inline SetYPos, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new Y Value", "Ok", "Back");
  631. }
  632.  
  633. // Set width
  634. case 2:
  635. {
  636. inline SetWidth(spid, sdialogid, sresponse, slistitem, string:stext[])
  637. {
  638. #pragma unused slistitem, sdialogid, spid, stext
  639. if(sresponse)
  640. {
  641. if(!isnull(stext))
  642. {
  643. new Float:width;
  644. if(sscanf(stext, "f", width))
  645. {
  646. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  647. Dialog_ShowCallback(playerid, using inline SetWidth, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new width Value", "Ok", "Back");
  648. }
  649. else if(width < 0.0)
  650. {
  651. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  652. Dialog_ShowCallback(playerid, using inline SetWidth, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new width Value", "Ok", "Back");
  653. }
  654. else if(width > 640.0)
  655. {
  656. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 640.0!");
  657. Dialog_ShowCallback(playerid, using inline SetWidth, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new width Value", "Ok", "Back");
  658. }
  659. else
  660. {
  661. SetPlayerProgressBarWidth(playerid, EditBars[playerid][CurrEditIndex[playerid]], width);
  662. SendClientMessage(playerid, STEALTH_GREEN, "Width has been updated");
  663. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_WIDTH);
  664. ProgressProjectPropEdit(playerid);
  665. }
  666. }
  667. else ProgressProjectPropEdit(playerid);
  668. }
  669. else ProgressProjectPropEdit(playerid);
  670. }
  671. Dialog_ShowCallback(playerid, using inline SetWidth, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new width Value", "Ok", "Back");
  672. }
  673.  
  674. // Set height
  675. case 3:
  676. {
  677. inline SetHeight(spid, sdialogid, sresponse, slistitem, string:stext[])
  678. {
  679. #pragma unused slistitem, sdialogid, spid, stext
  680. if(sresponse)
  681. {
  682. if(!isnull(stext))
  683. {
  684. new Float:height;
  685. if(sscanf(stext, "f", height))
  686. {
  687. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  688. Dialog_ShowCallback(playerid, using inline SetHeight, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new height Value", "Ok", "Back");
  689. }
  690. else if(height < 0.0)
  691. {
  692. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  693. Dialog_ShowCallback(playerid, using inline SetHeight, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new height Value", "Ok", "Back");
  694. }
  695. else if(height > 640.0)
  696. {
  697. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 640.0!");
  698. Dialog_ShowCallback(playerid, using inline SetHeight, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new height Value", "Ok", "Back");
  699. }
  700. else
  701. {
  702. SetPlayerProgressBarHeight(playerid, EditBars[playerid][CurrEditIndex[playerid]], height);
  703. SendClientMessage(playerid, STEALTH_GREEN, "Height has been updated");
  704. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_HEIGHT);
  705. ProgressProjectPropEdit(playerid);
  706. }
  707. }
  708. else ProgressProjectPropEdit(playerid);
  709. }
  710. else ProgressProjectPropEdit(playerid);
  711. }
  712. Dialog_ShowCallback(playerid, using inline SetHeight, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new height Value", "Ok", "Back");
  713. }
  714.  
  715. // Set Color
  716. case 4:
  717. {
  718. inline SelectColorMet(spid, sdialogid, sresponse, slistitem, string:stext[])
  719. {
  720. #pragma unused slistitem, sdialogid, spid, stext
  721. if(sresponse)
  722. {
  723. switch(slistitem)
  724. {
  725. case 0:
  726. {
  727. inline SelectHexColor(hpid, hdialogid, hresponse, hlistitem, string:htext[])
  728. {
  729. #pragma unused hlistitem, hdialogid, hpid, htext
  730. if(hresponse)
  731. {
  732. new hex;
  733. if(sscanf(htext, "x", hex))
  734. {
  735. SendClientMessage(playerid, STEALTH_YELLOW, "Invalid hex value!");
  736. ProgressProjectPropEdit(playerid);
  737. }
  738. else
  739. {
  740. SetPlayerProgressBarColour(playerid, EditBars[playerid][CurrEditIndex[playerid]], hex);
  741. SendClientMessage(playerid, STEALTH_GREEN, "Color has been updated");
  742. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_COLOR);
  743. ProgressProjectPropEdit(playerid);
  744.  
  745. }
  746. }
  747. else ProgressProjectPropEdit(playerid);
  748. }
  749. Dialog_ShowCallback(playerid, using inline SelectHexColor, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Hex color ( 0x00000000 ) ARGB", "Ok", "Cancel");
  750. }
  751. case 1:
  752. {
  753. new red, green, blue, alpha;
  754. inline SelectRed(redpid, reddialogid, redresponse, redlistitem, string:redtext[])
  755. {
  756. #pragma unused redlistitem, reddialogid, redpid, redtext
  757. if(redresponse)
  758. {
  759. red = strval(redtext);
  760. if(red < 0 || red > 255) Dialog_ShowCallback(playerid, using inline SelectRed, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Red Value <0 - 255>", "Ok", "Cancel");
  761. else
  762. {
  763. inline SelectGreen(greenpid, greendialogid, greenresponse, greenlistitem, string:greentext[])
  764. {
  765. #pragma unused greenlistitem, greendialogid, greenpid, greentext
  766. if(greenresponse)
  767. {
  768. green = strval(greentext);
  769. if(green < 0 || green > 255) Dialog_ShowCallback(playerid, using inline SelectGreen, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Green Value <0 - 255>", "Ok", "Cancel");
  770. else
  771. {
  772. inline SelectBlue(bluepid, bluedialogid, blueresponse, bluelistitem, string:bluetext[])
  773. {
  774. #pragma unused bluelistitem, bluedialogid, bluepid, bluetext
  775. if(blueresponse)
  776. {
  777. blue = strval(bluetext);
  778. if(blue < 0 || blue > 255) Dialog_ShowCallback(playerid, using inline SelectBlue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Blue Value <0 - 255>", "Ok", "Cancel");
  779. else
  780. {
  781. inline SelectAlpha(alphapid, alphadialogid, alpharesponse, alphalistitem, string:alphatext[])
  782. {
  783. #pragma unused alphalistitem, alphadialogid, alphapid, alphatext
  784. if(alpharesponse)
  785. {
  786. if(isnull(alphatext)) alpha = 255;
  787. else alpha = strval(alphatext);
  788. if(alpha < 0 || alpha > 255) Dialog_ShowCallback(playerid, using inline SelectAlpha, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Alpha Value <0 - 255>\nNote: Leaving this empty is full alpha 255", "Ok", "Cancel");
  789. else
  790. {
  791. ProgressProjectPropEdit(playerid);
  792. SetPlayerProgressBarColour(playerid, EditBars[playerid][CurrEditIndex[playerid]], RGBA(red, green, blue, alpha));
  793. SendClientMessage(playerid, STEALTH_GREEN, "Color has been updated");
  794. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_COLOR);
  795. ProgressProjectPropEdit(playerid);
  796. }
  797. }
  798. else ProgressProjectPropEdit(playerid);
  799. }
  800. Dialog_ShowCallback(playerid, using inline SelectAlpha, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Alpha Value <0 - 255>\nNote: Leaving this empty is full alpha 255", "Ok", "Cancel");
  801. }
  802. }
  803. else ProgressProjectPropEdit(playerid);
  804. }
  805. Dialog_ShowCallback(playerid, using inline SelectBlue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Blue Value <0 - 255>", "Ok", "Cancel");
  806. }
  807. }
  808. else ProgressProjectPropEdit(playerid);
  809. }
  810. Dialog_ShowCallback(playerid, using inline SelectGreen, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Green Value <0 - 255>", "Ok", "Cancel");
  811. }
  812. }
  813. else ProgressProjectPropEdit(playerid);
  814. }
  815. Dialog_ShowCallback(playerid, using inline SelectRed, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter Red Value <0 - 255>", "Ok", "Cancel");
  816. }
  817. case 2:
  818. {
  819. inline SelectWebColor(wpid, wdialogid, wresponse, wlistitem, string:wtext[])
  820. {
  821. #pragma unused wlistitem, wdialogid, wpid, wtext
  822. if(wresponse)
  823. {
  824. SetPlayerProgressBarColour(playerid, EditBars[playerid][CurrEditIndex[playerid]], WebColorsRGBA[wlistitem]);
  825. SendClientMessage(playerid, STEALTH_GREEN, "Color has been updated");
  826. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_COLOR);
  827. ProgressProjectPropEdit(playerid);
  828. }
  829. else ProgressProjectPropEdit(playerid);
  830. }
  831. Dialog_ShowCallback(playerid, using inline SelectWebColor, DIALOG_STYLE_LIST, "Progress Bar Editor", webcolors, "Ok", "Cancel");
  832. }
  833. }
  834. }
  835. }
  836. Dialog_ShowCallback(playerid, using inline SelectColorMet, DIALOG_STYLE_LIST, "Progress Bar Editor", "Hex Value\nCombinator\nWeb Colors", "Ok", "Cancel");
  837. }
  838.  
  839. // Set Max value
  840. case 5:
  841. {
  842. inline SetMax(spid, sdialogid, sresponse, slistitem, string:stext[])
  843. {
  844. #pragma unused slistitem, sdialogid, spid, stext
  845. if(sresponse)
  846. {
  847. if(!isnull(stext))
  848. {
  849. new Float:maxv;
  850. if(sscanf(stext, "f", maxv))
  851. {
  852. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  853. Dialog_ShowCallback(playerid, using inline SetMax, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new max Value", "Ok", "Back");
  854. }
  855. else if(maxv < 0.0)
  856. {
  857. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  858. Dialog_ShowCallback(playerid, using inline SetMax, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new max Value", "Ok", "Back");
  859. }
  860. else if(maxv > 640.0)
  861. {
  862. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 640.0!");
  863. Dialog_ShowCallback(playerid, using inline SetMax, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new max Value", "Ok", "Back");
  864. }
  865. else
  866. {
  867. SetPlayerProgressBarMaxValue(playerid, EditBars[playerid][CurrEditIndex[playerid]], maxv);
  868. SendClientMessage(playerid, STEALTH_GREEN, "Max has been updated");
  869. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_MAX);
  870. ProgressProjectPropEdit(playerid);
  871. }
  872. }
  873. else ProgressProjectPropEdit(playerid);
  874. }
  875. else ProgressProjectPropEdit(playerid);
  876. }
  877. Dialog_ShowCallback(playerid, using inline SetMax, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new max Value", "Ok", "Back");
  878. }
  879.  
  880. // Set bar value
  881. case 6:
  882. {
  883. inline SetBarValue(spid, sdialogid, sresponse, slistitem, string:stext[])
  884. {
  885. #pragma unused slistitem, sdialogid, spid, stext
  886. if(sresponse)
  887. {
  888. if(!isnull(stext))
  889. {
  890. new Float:barv;
  891. if(sscanf(stext, "f", barv))
  892. {
  893. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be a float!");
  894. Dialog_ShowCallback(playerid, using inline SetBarValue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new bar Value", "Ok", "Back");
  895. }
  896. else if(barv < 0.0)
  897. {
  898. SendClientMessage(playerid, STEALTH_YELLOW, "Value must not be negative!");
  899. Dialog_ShowCallback(playerid, using inline SetBarValue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new bar Value", "Ok", "Back");
  900. }
  901. else if(barv > 640.0)
  902. {
  903. SendClientMessage(playerid, STEALTH_YELLOW, "Value must be less than 640.0!");
  904. Dialog_ShowCallback(playerid, using inline SetBarValue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new bar Value", "Ok", "Back");
  905. }
  906. else
  907. {
  908. SetPlayerProgressBarValue(playerid, EditBars[playerid][CurrEditIndex[playerid]], barv);
  909. SendClientMessage(playerid, STEALTH_GREEN, "Bar value has been updated");
  910. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_BARVALUE);
  911. ProgressProjectPropEdit(playerid);
  912. }
  913. }
  914. else ProgressProjectPropEdit(playerid);
  915. }
  916. else ProgressProjectPropEdit(playerid);
  917. }
  918. Dialog_ShowCallback(playerid, using inline SetBarValue, DIALOG_STYLE_INPUT, "Progress Bar Editor", "Enter a new bar Value", "Ok", "Back");
  919. }
  920.  
  921. // Set progress bar direction
  922. case 7:
  923. {
  924. inline SetBarDirection(spid, sdialogid, sresponse, slistitem, string:stext[])
  925. {
  926. #pragma unused slistitem, sdialogid, spid, stext
  927. if(sresponse)
  928. {
  929. switch(slistitem)
  930. {
  931. case 0: SetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]], BAR_DIRECTION_RIGHT);
  932. case 1: SetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]], BAR_DIRECTION_LEFT);
  933. case 2: SetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]], BAR_DIRECTION_UP);
  934. case 3: SetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]], BAR_DIRECTION_DOWN);
  935. }
  936. SendClientMessage(playerid, STEALTH_GREEN, "Bar direction has been updated");
  937. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_DIRECTION);
  938. ProgressProjectPropEdit(playerid);
  939. }
  940. else ProgressProjectPropEdit(playerid);
  941. }
  942. Dialog_ShowCallback(playerid, using inline SetBarDirection, DIALOG_STYLE_LIST, "Progress Bar Editor", "Right\nLeft\nUp\nDown", "Ok", "Back");
  943. }
  944.  
  945. // Set XY with keys
  946. case 8:
  947. {
  948. EditMode[playerid] = EDIT_MODE_MOVEBAR;
  949. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], SavedXY[playerid][0], SavedXY[playerid][1]);
  950. // TogglePlayerControllable(playerid, false);
  951. SendClientMessage(playerid, STEALTH_GREEN, "Use the arrow keys to set the position press 'WALK KEY' when finished!");
  952. }
  953. }
  954. }
  955. else ProgressProjectEdit(playerid);
  956. }
  957. new line[256];
  958.  
  959. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  960.  
  961. format(line, sizeof(line), "XPos: %f\nYPos: %f\nWidth: %f\nHeight: %f\nColor: {%06x}XXXXXXXX{FFFFFF}\nMax Value:%f\nBar Value: %f\nDirection: %s\nSet XY with keys",
  962. x,
  963. y,
  964. GetPlayerProgressBarWidth(playerid, EditBars[playerid][CurrEditIndex[playerid]]),
  965. GetPlayerProgressBarHeight(playerid, EditBars[playerid][CurrEditIndex[playerid]]),
  966. GetPlayerProgressBarColour(playerid, EditBars[playerid][CurrEditIndex[playerid]]) >>> 8,
  967. GetPlayerProgressBarMaxValue(playerid, EditBars[playerid][CurrEditIndex[playerid]]),
  968. GetPlayerProgressBarValue(playerid, EditBars[playerid][CurrEditIndex[playerid]]),
  969. DirectionNames[GetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]])]
  970. );
  971.  
  972. Dialog_ShowCallback(playerid, using inline PBPropEditMenu, DIALOG_STYLE_LIST, "Progress Bar Editor", line, "Ok", "Back");
  973. return 1;
  974. }
  975.  
  976.  
  977. public OnPlayerUpdate(playerid)
  978. {
  979. if(EditMode[playerid] == EDIT_MODE_MOVEBAR)
  980. {
  981. new Keys,ud,lr, Float:x, Float:y;
  982.  
  983. GetPlayerKeys(playerid,Keys,ud,lr);
  984.  
  985. if(Keys & KEY_WALK)
  986. {
  987. inline SavePosition(spid, sdialogid, sresponse, slistitem, string:stext[])
  988. {
  989. #pragma unused slistitem, sdialogid, spid, stext
  990. if(sresponse)
  991. {
  992. SendClientMessage(playerid, STEALTH_GREEN, "Position Updated");
  993. UpdateDB(playerid, CurrEditIndex[playerid], DB_SAVE_TYPE_POS);
  994. }
  995. else
  996. {
  997. SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], SavedXY[playerid][0], SavedXY[playerid][1]);
  998. SendClientMessage(playerid, STEALTH_YELLOW, "Position update cancelled");
  999. }
  1000. ProgressProjectPropEdit(playerid);
  1001. }
  1002. EditMode[playerid] = EDIT_MODE_NONE;
  1003. Dialog_ShowCallback(playerid, using inline SavePosition, DIALOG_STYLE_MSGBOX, "Progress Bar Editor", "Update Position?", "Update", "Cancel");
  1004. }
  1005. else
  1006. {
  1007. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  1008.  
  1009. if(ud == KEY_UP) SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y-10.0);
  1010. else if(ud == KEY_DOWN) SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y+10.0);
  1011. if(lr == KEY_LEFT) SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x-10.0, y);
  1012. else if(lr == KEY_RIGHT) SetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x+10.0, y);
  1013.  
  1014. new line[128];
  1015. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  1016. format(line, sizeof(line), "~w~~n~~n~~n~x: %1.f y: %1.f", x, y);
  1017.  
  1018. GameTextForPlayer(playerid, line, 2000, 5);
  1019. }
  1020. }
  1021. return 1;
  1022. }
  1023.  
  1024. static CreateProgressBarProject(playerid, filename[])
  1025. {
  1026. ProjectDB[playerid] = db_open(filename);
  1027. db_query(ProjectDB[playerid], "CREATE TABLE IF NOT EXISTS `ProgressBars` (IndexID INTEGER, BarX REAL, BarY REAL, BarWidth REAL, BarHeight REAL, BarColor INTEGER, BarMaxValue REAL, BarProgressValue REAL, BarDirection INTEGER)");
  1028. EditState[playerid] = EDIT_STATE_OPEN;
  1029. return 1;
  1030. }
  1031.  
  1032. static CreateProgressBarEdit(playerid)
  1033. {
  1034. for(new i = 0; i < MAX_PB_EDIT; i++)
  1035. {
  1036. if(EditBars[playerid][i] == INVALID_PLAYER_BAR_ID)
  1037. {
  1038. EditBars[playerid][i] = CreatePlayerProgressBar(playerid, 320.0, 320.0, 55.5, 3.2, 0xFF1C1CFF, 100.0, BAR_DIRECTION_RIGHT);
  1039. ShowPlayerProgressBar(playerid, EditBars[playerid][i]);
  1040.  
  1041. new q[256];
  1042. format(q, sizeof(q), "INSERT INTO `ProgressBars` (`IndexID`, `BarX`, `BarY`, `BarWidth`, `BarHeight`, `BarColor`, `BarMaxValue`, `BarProgressValue`, `BarDirection`) \
  1043. VALUES(%i, %f, %f, %f, %f, %i, %f, %f, %i)",
  1044. i,
  1045. 320.0,
  1046. 320.0,
  1047. 55.5,
  1048. 3.2,
  1049. 0xFF1C1CFF,
  1050. 100.0,
  1051. 0.0,
  1052. BAR_DIRECTION_RIGHT
  1053. );
  1054.  
  1055. db_query(ProjectDB[playerid], q);
  1056.  
  1057. return i;
  1058. }
  1059. }
  1060. return -1;
  1061. }
  1062.  
  1063. static UpdateDB(playerid, index, type)
  1064. {
  1065. new q[128];
  1066. switch(type)
  1067. {
  1068. case DB_SAVE_TYPE_POS:
  1069. {
  1070. new Float:x, Float:y;
  1071. GetPlayerProgressBarPos(playerid, EditBars[playerid][CurrEditIndex[playerid]], x, y);
  1072. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarX` = %f, `BarY` = %f WHERE `IndexID` = %i",
  1073. x, y, index);
  1074. }
  1075.  
  1076. case DB_SAVE_TYPE_WIDTH:
  1077. {
  1078. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarWidth` = %f WHERE `IndexID` = %i",
  1079. GetPlayerProgressBarWidth(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1080. }
  1081.  
  1082. case DB_SAVE_TYPE_HEIGHT:
  1083. {
  1084. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarHeight` = %f WHERE `IndexID` = %i",
  1085. GetPlayerProgressBarHeight(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1086. }
  1087.  
  1088. case DB_SAVE_TYPE_COLOR:
  1089. {
  1090. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarColor` = %i WHERE `IndexID` = %i",
  1091. GetPlayerProgressBarColour(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1092. }
  1093.  
  1094. case DB_SAVE_TYPE_MAX:
  1095. {
  1096. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarMaxValue` = %f WHERE `IndexID` = %i",
  1097. GetPlayerProgressBarMaxValue(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1098. }
  1099.  
  1100. case DB_SAVE_TYPE_BARVALUE:
  1101. {
  1102. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarProgressValue` = %f WHERE `IndexID` = %i",
  1103. GetPlayerProgressBarValue(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1104. }
  1105.  
  1106. case DB_SAVE_TYPE_DIRECTION:
  1107. {
  1108. format(q, sizeof(q), "UPDATE `ProgressBars` SET `BarDirection` = %i WHERE `IndexID` = %i",
  1109. GetPlayerProgressBarDirection(playerid, EditBars[playerid][CurrEditIndex[playerid]]), index);
  1110. }
  1111. }
  1112.  
  1113. db_query(ProjectDB[playerid], q);
  1114. return 1;
  1115. }
  1116.  
  1117. static CleanupPlayer(playerid)
  1118. {
  1119. if(EditState[playerid] == EDIT_STATE_OPEN)
  1120. {
  1121. db_close(ProjectDB[playerid]);
  1122. CurrEditIndex[playerid] = -1;
  1123. EditState[playerid] = EDIT_STATE_NONE;
  1124. EditMode[playerid] = EDIT_MODE_NONE;
  1125. for(new i = 0; i < MAX_PB_EDIT; i++)
  1126. {
  1127. if(EditBars[playerid][i] != INVALID_PLAYER_BAR_ID) DestroyPlayerProgressBar(playerid, EditBars[playerid][i]);
  1128. EditBars[playerid][i] = INVALID_PLAYER_BAR_ID;
  1129. }
  1130. }
  1131. return 1;
  1132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement