Advertisement
Guest User

Untitled

a guest
Oct 20th, 2011
3,683
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.33 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #if defined O_O
  4. **********************************
  5. * Name: 0Sprites Editor *
  6. * Version: 1.0 *
  7. * Created by: Zh3r0 *
  8. * Date: 18. October. 2011 *
  9. * #Edit, redistribute as you *
  10. * want but keep the credits *
  11. * *
  12. * (C) Zh3r0 2011 *
  13. **********************************
  14.  
  15. CHANGELOG:
  16. 18.X.2011: - Release.
  17. 20.X.2011: - Bug-fixed deletion feature.
  18. #endif
  19.  
  20. stock
  21. bool:FALSE = false;
  22. #define MAX_TEXTDRAWS 90
  23. #define SendClientMessageEx(%0,%1,%2)\
  24. do\
  25. {\
  26. new szString[256];\
  27. format(szString, sizeof(szString), "0{C3C3C3}Sprites:{FFFFFF} " %1, %2);\
  28. SendClientMessage((%0), -1, szString);\
  29. }\
  30. while(FALSE)
  31.  
  32. enum
  33. dialogs_e
  34. {
  35. main = 9946,
  36. spriteshelp,
  37. selectcategory,
  38. addsprite,
  39. insertsprite,
  40. selectsprite,
  41. deletesprite,
  42. setspritesavename,
  43. colormethod,
  44. colorpremade,
  45. colorhex
  46. };
  47. enum
  48. td_e
  49. {
  50. created,
  51. Text:td,
  52. td_name[40],
  53. td_color,
  54. Float:td_x,
  55. Float:td_y,
  56. Float:td_height,
  57. Float:td_width
  58. };
  59.  
  60. new
  61.  
  62. td_editing,
  63. SpritesString[512],
  64. textdraws = -1,
  65. spritelist,
  66. td_i[MAX_TEXTDRAWS][td_e],
  67. sprites[][] =
  68. {
  69. {!#intro1}, {!#intro2}, {!#INTRO3}, {!#intro4},
  70. {!#LD_BEAT}, {!#LD_BUM}, {!#LD_CARD}, {!#LD_CHAT},
  71. {!#LD_DRV}, {!#LD_DUAL}, {!#ld_grav}, {!#LD_NONE},
  72. {!#LD_OTB}, {!#LD_OTB2}, {!#LD_PLAN}, {!#LD_POKE},
  73. {!#LD_POOL}, {!#LD_RACE}, {!#LD_RCE1}, {!#LD_RCE2},
  74. {!#LD_RCE3}, {!#LD_RCE4}, {!#LD_RCE5}, {!#LD_ROUL},
  75. {!#ld_shtr}, {!#LD_SLOT}, {!#LD_SPAC}, {!#LD_TATT},
  76. {!#load0uk}, {!#loadsc0}, {!#loadsc1}, {!#loadsc2},
  77. {!#loadsc3}, {!#loadsc4}, {!#loadsc5}, {!#loadsc6},
  78. {!#loadsc7}, {!#loadsc8}, {!#loadsc9}, {!#loadsc10},
  79. {!#loadsc11}, {!#loadsc12}, {!#loadsc13}, {!#loadsc14},
  80. {!#LOADSCS}, {!#LOADSUK}, {!#outro}, {!#splash1},
  81. {!#splash2}, {!#splash3}
  82. },
  83. LD_BEAT[][] =
  84. {
  85. {!#upr}, {!#upl}, {!#up}, {!#triang}, {!#square},
  86. {!#right}, {!#left}, {!#downr}, {!#downl}, {!#cross},
  87. {!#cring}, {!#circle},{!#chit}
  88. },
  89. LD_BUM[][] =
  90. {
  91. {!#bum2},
  92. {!#bum1},
  93. {!#blkdot}
  94. },
  95. LD_CARD[][] =
  96. {
  97. {!#cdback},
  98. {!#cd9s}, {!#cd9h}, {!#cd9d}, {!#cd9c},
  99. {!#cd8s}, {!#cd8h}, {!#cd8d}, {!#cd8c},
  100. {!#cd7s}, {!#cd7h}, {!#cd7d}, {!#cd7c},
  101. {!#cd6s}, {!#cd6h}, {!#cd6d}, {!#cd6c},
  102. {!#cd5s}, {!#cd5h}, {!#cd5d}, {!#cd5c},
  103. {!#cd4s}, {!#cd4h}, {!#cd4d}, {!#cd4c},
  104. {!#cd3s}, {!#cd3h}, {!#cd3d}, {!#cd3c},
  105. {!#cd2s}, {!#cd2h}, {!#cd2d}, {!#cd2c},
  106. {!#cd1s}, {!#cd1h}, {!#cd1d}, {!#cd1c},
  107. {!#cd13s}, {!#cd13h}, {!#cd13d}, {!#cd13c},
  108. {!#cd12s}, {!#cd12h}, {!#cd12d}, {!#cd12c},
  109. {!#cd11s}, {!#cd11h}, {!#cd11d}, {!#cd11c},
  110. {!#cd10s}, {!#cd10h}, {!#cd10d}, {!#cd10c}
  111. },
  112. LD_CHAT[][] =
  113. {
  114. {!#thumbup}, {!#thumbdn}, {!#goodcha},
  115. {!#dpad_lr}, {!#dpad_64}, {!#badchat}
  116. },
  117. LD_DRV[][] =
  118. {
  119. {!#tvcorn}, {!#tvbase}, {!#silver},
  120. {!#silfly}, {!#silboat}, {!#ribbw},
  121. {!#ribb}, {!#nawtxt}, {!#naward},
  122. {!#golfly}, {!#gold}, {!#goboat},
  123. {!#bronze}, {!#brfly}, {!#bfboat},
  124. {!#blkdot}
  125. },
  126. LD_DUAL[][] =
  127. {
  128. {!#white}, {!#tvcorn}, {!#thrustG},
  129. {!#shoot}, {!#rockshp}, {!#power},
  130. {!#light}, {!#layer}, {!#Health},
  131. {!#ex4}, {!#ex3}, {!#ex2},
  132. {!#ex1}, {!#DUALITY}, {!#dark},
  133. {!#black}, {!#backgnd}
  134. },
  135. ld_grav[][] =
  136. {
  137. {!#tvr}, {!#tvl}, {!#tvcorn},
  138. {!#timer}, {!#thorn}, {!#sky},
  139. {!#playy}, {!#playw}, {!#leaf},
  140. {!#hon}, {!#hive}, {!#hiscorey},
  141. {!#hiscorew},{!#ghost}, {!#flwra},
  142. {!#flwr}, {!#exity}, {!#exitw},
  143. {!#bumble}, {!#beea}, {!#bee2},
  144. {!#bee1}
  145. },
  146. LD_NONE[][] =
  147. {
  148. {!#warp}, {!#tvcorn}, {!#title},
  149. {!#thrust}, {!#shpwarp}, {!#shpnorm},
  150. {!#shoot}, {!#ship3}, {!#ship2},
  151. {!#ship}, {!#light}, {!#force},
  152. {!#explm12}, {!#explm11}, {!#explm10},
  153. {!#explm09}, {!#explm08}, {!#explm07},
  154. {!#explm06}, {!#explm05}, {!#explm04},
  155. {!#explm03}, {!#explm02}, {!#explm01}
  156. },
  157. LD_OTB[][] =
  158. {
  159. {!#yride8}, {!#yride7}, {!#yride6}, {!#yride5}, {!#yride4},
  160. {!#yride3}, {!#yride2}, {!#yride1}, {!#tvr}, {!#tvl},
  161. {!#tvcorn}, {!#trees}, {!#rride8}, {!#rride7}, {!#rride6},
  162. {!#rride5}, {!#rride4}, {!#rride3}, {!#rride2}, {!#rride1},
  163. {!#pride8}, {!#pride7}, {!#pride6}, {!#pride5}, {!#pride4},
  164. {!#pride3}, {!#pride2}, {!#pride1}, {!#pole2}, {!#hrs8},
  165. {!#hrs7}, {!#hrs6}, {!#hrs5}, {!#hrs4}, {!#hrs3},
  166. {!#hrs2}, {!#hrs1}, {!#gride8}, {!#gride7}, {!#gride6},
  167. {!#gride5}, {!#gride4}, {!#gride3}, {!#gride2}, {!#gride1},
  168. {!#fen}, {!#bushes}, {!#bride8}, {!#bride7}, {!#bride6},
  169. {!#bride5}, {!#bride4}, {!#bride3}, {!#bride2}, {!#bride1},
  170. {!#blue}, {!#bckgrnd}
  171. },
  172. LD_OTB2[][] =
  173. {
  174. {!#Ric5}, {!#Ric4}, {!#Ric3}, {!#Ric2}, {!#Ric1},
  175. {!#butnC}, {!#butnBo}, {!#butnB}, {!#butnAo}, {!#butnA},
  176. {!#backbet}
  177. },
  178. LD_PLAN[][] =
  179. {
  180. {!#tvcorn},{!#tvbase},{!#blkdot},{!#AirLogo}
  181. },
  182. LD_POKE[][] =
  183. {
  184. {!#tvcorn}, {!#holdon}, {!#holdoff},
  185. {!#holdmid}, {!#deal}, {!#cdback},
  186. {!#cd9s}, {!#cd9h}, {!#cd9d}, {!#cd9c},
  187. {!#cd8s}, {!#cd8h}, {!#cd8d}, {!#cd8c},
  188. {!#cd7s}, {!#cd7h}, {!#cd7d}, {!#cd7c},
  189. {!#cd6s}, {!#cd6h}, {!#cd6d}, {!#cd6c},
  190. {!#cd5s}, {!#cd5h}, {!#cd5d}, {!#cd5c},
  191. {!#cd4s}, {!#cd4h}, {!#cd4d}, {!#cd4c},
  192. {!#cd3s}, {!#cd3h}, {!#cd3d}, {!#cd3c},
  193. {!#cd2s}, {!#cd2h}, {!#cd2d}, {!#cd2c},
  194. {!#cd1s}, {!#cd1h}, {!#cd1d}, {!#cd1c},
  195. {!#cd13s}, {!#cd13h}, {!#cd13d}, {!#cd13c},
  196. {!#cd12s}, {!#cd12h}, {!#cd12d}, {!#cd12c},
  197. {!#cd11s}, {!#cd11h}, {!#cd11d}, {!#cd11c},
  198. {!#cd10s}, {!#cd10h}, {!#cd10d}, {!#cd10c},
  199. {!#backred}, {!#backcyan}, {!#addcoin}
  200. },
  201. LD_POOL[][] =
  202. {
  203. {!#nib},
  204. {!#ball}
  205. },
  206. LD_RACE[][] =
  207. {
  208. {!#race12}, {!#race11}, {!#race10}, {!#race09}, {!#race08},
  209. {!#race07}, {!#race06}, {!#race05}, {!#race04}, {!#race03},
  210. {!#race02}, {!#race01}, {!#race00}
  211. },
  212. LD_RCE1[][] =
  213. {
  214. {!#race05},{!#race04},{!#race03},{!#race02},{!#race01},{!#race00}
  215. },
  216. LD_RCE2[][] =
  217. {
  218. {!#race11},{!#race10},{!#race09},{!#race08},{!#race07},{!#race06}
  219. },
  220. LD_RCE3[][] =
  221. {
  222. {!#race17},{!#race16},{!#race15},{!#race14},{!#race13},{!#race12}
  223. },
  224. LD_RCE4[][] =
  225. {
  226. {!#race23},{!#race22},{!#race21},{!#race20},{!#race19},{!#race18}
  227. },
  228. LD_ROUL[][] =
  229. {
  230. {!#roulred},
  231. {!#roulgre},
  232. {!#roulbla}
  233. },
  234. ld_shtr[][] =
  235. {
  236. {!#un_c}, {!#un_b}, {!#un_a}, {!#ufo}, {!#tvr}, {!#tvcorn}, {!#splsh},
  237. {!#ship}, {!#ps3}, {!#ps2}, {!#ps1}, {!#pm3}, {!#pm2}, {!#pa},
  238. {!#nmef}, {!#kami}, {!#hi_c}, {!#hi_b}, {!#hi_a}, {!#hbarr}, {!#hbarm},
  239. {!#fstar}, {!#fire}, {!#ex4}, {!#ex3}, {!#ex2}, {!#ex1}, {!#cbarr},
  240. {!#cbarm}, {!#cbarl},{!#bstars}
  241. },
  242. LD_SLOT[][] =
  243. {
  244. {!#r_69}, {!#grapes}, {!#cherry}, {!#bell}, {!#bar2_o}, {!#bar1_o}
  245. },
  246. LD_SPAC[][] =
  247. {
  248. {!#white}, {!#tvcorn}, {!#thrustG}, {!#shoot},
  249. {!#rockshp}, {!#power}, {!#light}, {!#layer},
  250. {!#Health}, {!#ex4}, {!#ex3}, {!#ex2},
  251. {!#ex1}, {!#DUALITY}, {!#dark}, {!#black},
  252. {!#backgnd}
  253. },
  254. LD_TATT[][] =
  255. {
  256. {!#9rasta}, {!#9homby}, {!#9gun2}, {!#9gun}, {!#9crown}, {!#9bullt},
  257. {!#8westsd},{!#8santos},{!#8sa3}, {!#8sa2}, {!#8sa}, {!#8poker},
  258. {!#8gun}, {!#7mary}, {!#7cross3},{!#7cross2},{!#7cross}, {!#6crown},
  259. {!#6aztec}, {!#6africa},{!#6gun}, {!#5gun}, {!#5cross3},{!#5cross2},
  260. {!#5cross}, {!#4weed}, {!#4spider},{!#4rip}, {!#12myfac},{!#12maybr},
  261. {!#12dager},{!#12cross},{!#12bndit},{!#12angel},{!#11jail}, {!#11grove},
  262. {!#11grov3},{!#11grov2},{!#11ggift},{!#11dice2},{!#11dice}, {!#10weed},
  263. {!#10og}, {!#10ls5}, {!#10ls4}, {!#10ls3}, {!#10ls2}, {!#10ls}
  264. },
  265. LOADSCS[][] =
  266. {
  267. {!#nvidia}, {!#eax}, {!#title_pc_EU}, {!#title_pc_US},
  268. {!#laodsc9}, {!#loadsc8}, {!#loadsc7}, {!#loadsc6},
  269. {!#loadsc5}, {!#loadsc4}, {!#loadsc3}, {!#loadsc2},
  270. {!#loadsc14}, {!#loadsc13}, {!#loadsc12}, {!#loadsc11},
  271. {!#loadsc10}, {!#loadsc1}, {!#loadsc0}
  272. },
  273. LOADSUK[][] =
  274. {
  275. {!#loadscuk}, {!#loadsc9}, {!#loadsc8}, {!#loadsc7},
  276. {!#loadsc6}, {!#loadsc5}, {!#loadsc4}, {!#loadsc3},
  277. {!#loadsc2}, {!#loadsc14}, {!#loadsc13}, {!#loadsc12},
  278. {!#loadsc11}, {!#loadsc10}, {!#loadsc1}
  279. };
  280.  
  281. public OnFilterScriptInit()
  282. {
  283. td_editing = -1;
  284. print("0Sprites Editor loaded successfully");
  285. return 1;
  286. }
  287. public OnFilterScriptExit()
  288. {
  289. for(new t; t < MAX_TEXTDRAWS + 1; t++)
  290. {
  291. if(td_i[t][created])
  292. {
  293. TextDrawHideForAll(td_i[t][td]);
  294. TextDrawDestroy(td_i[t][td]);
  295. }
  296. }
  297. return 1;
  298. }
  299.  
  300. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  301. {
  302. switch(dialogid)
  303. {
  304. case deletesprite:
  305. {
  306. if(!response)
  307. return ShowMainDialog(playerid);
  308.  
  309. textdraws--;
  310. ShowMainDialog(playerid);
  311. TextDrawHideForAll(td_i[td_editing][td]);
  312.  
  313. td_i[td_editing][created] = 0;
  314. td_i[td_editing][td_y] = 0.0;
  315. td_i[td_editing][td_x] = 0.0;
  316. td_i[td_editing][td_height] = 0.0;
  317. td_i[td_editing][td_width] = 0.0;
  318. td_i[td_editing][td_color] = RGB(HexToInt(#FF), HexToInt(#FF), HexToInt(#FF), HexToInt(#FF));
  319. format(td_i[td_editing][td_name],30, " ");
  320. td_editing = -1;
  321.  
  322. }
  323. }
  324. if(!response)
  325. {
  326. switch(dialogid)
  327. {
  328. case selectcategory, colormethod, deletesprite, spriteshelp, selectsprite: ShowMainDialog(playerid);
  329. case colorhex,colorpremade: OnDialogResponse(playerid, main, 1, 5, " ");
  330. case addsprite: OnDialogResponse(playerid, main, 1, 1, " ");
  331. }
  332. }
  333. else
  334. {
  335. switch(dialogid)
  336. {
  337. case main:
  338. {
  339. switch(listitem)
  340. {
  341. case (0):
  342. {
  343. new Str[512];
  344. switch(textdraws)
  345. {
  346. case (-1):
  347. {
  348. SendClientMessageEx(playerid, "There are no sprites created.", 0x0);
  349. ShowMainDialog(playerid);
  350. }
  351. default:
  352. {
  353. for(new t; t < MAX_TEXTDRAWS; t++)
  354. {
  355. if(td_i[t][created])
  356. {
  357. format(Str, sizeof(Str), #%s#%d - %s\n, Str, t, td_i[t][td_name]);
  358. }
  359. }
  360. }
  361. }
  362. ShowPlayerDialog(playerid, selectsprite, DIALOG_STYLE_LIST, "Select sprite", Str, "Select", "Back");
  363. }
  364. case 1:
  365. {
  366. new Str[512], szUnpack[8];
  367. Str = #Insert texture name\n;
  368. for(new t; t < sizeof(sprites); t++)
  369. {
  370. strunpack(szUnpack, sprites[t]);
  371. format(Str, sizeof(Str), #%s*%s\n, Str, szUnpack);
  372. }
  373. ShowPlayerDialog(playerid, selectcategory, DIALOG_STYLE_LIST, "Select category", Str, "Select", "Back");
  374. }
  375. case 2:
  376. {
  377. if(td_editing == -1)
  378. {
  379. SendClientMessageEx(playerid, "No sprite has been selected!", 0x0);
  380. ShowMainDialog(playerid);
  381. return 1;
  382. }
  383.  
  384. new Str[512];
  385. format(Str, sizeof(Str), "Are you sure you want to delete sprite id #%d?", td_editing);
  386. ShowPlayerDialog(playerid, deletesprite, DIALOG_STYLE_MSGBOX, "Select sprite", Str, "Select", "Back");
  387.  
  388. }
  389. case 3:
  390. {
  391. if(td_editing == -1)
  392. {
  393. SendClientMessageEx(playerid, "No sprite has been selected!", 0x0);
  394. ShowMainDialog(playerid);
  395. return 1;
  396. }
  397.  
  398. TogglePlayerControllable(playerid, false);
  399. SetPVarInt(playerid, #MovingSprite, 1);
  400. SetPVarInt(playerid, #ResizingSprite, 0);
  401. SendClientMessageEx(playerid, "Moving sprite id {FF0000}%d{FFFFFF}. Use left, right, up and down.", td_editing);
  402. SendClientMessageEx(playerid, "Press {FF0000}enter{FFFFFF} to finish moving.", 0x0);
  403. }
  404. case 4:
  405. {
  406. if(td_editing == -1)
  407. {
  408. SendClientMessageEx(playerid, "No sprite has been selected!", 0x0);
  409. ShowMainDialog(playerid);
  410. return 1;
  411. }
  412.  
  413. TogglePlayerControllable(playerid, false);
  414. SetPVarInt(playerid, #MovingSprite, 0);
  415. SetPVarInt(playerid, #ResizingSprite, 1);
  416. SendClientMessageEx(playerid, "Resizing sprite id {FF0000}%d{FFFFFF}. Use left, right, up and down.", td_editing);
  417. SendClientMessageEx(playerid, "Press {FF0000}enter{FFFFFF} to finish resizing.", 0x0);
  418. }
  419. case 5:
  420. {
  421. if(td_editing == -1)
  422. {
  423. SendClientMessageEx(playerid, "No sprite has been selected!", 0x0);
  424. ShowMainDialog(playerid);
  425. return 1;
  426. }
  427.  
  428. ShowPlayerDialog(playerid, colormethod, DIALOG_STYLE_LIST, "Change color", "Write a hex code\n\
  429. Select a pre-made color",\
  430. #Select, #Back);
  431.  
  432. }
  433. case 6:
  434. {
  435. switch(textdraws)
  436. {
  437. case (-1):
  438. {
  439. SendClientMessageEx(playerid, "There are no sprites created.", 0x0);
  440. ShowMainDialog(playerid);
  441. }
  442. default: ShowPlayerDialog(playerid, setspritesavename, DIALOG_STYLE_INPUT, #Save sprites, "Insert a name for the file:", #Save, #Back);
  443.  
  444.  
  445. }
  446. }
  447. }
  448. }
  449. case setspritesavename:
  450. {
  451. if(inputtext[0] == EOS)
  452. {
  453. ShowPlayerDialog(playerid, setspritesavename, DIALOG_STYLE_INPUT, #Save sprites, "{FF0000}No file name inserted!\n\n\
  454. {a9c4e4}Insert a name for the file:", #Save, #Back);
  455. return 1;
  456. }
  457. if(!IsValidText(inputtext))
  458. {
  459. ShowPlayerDialog(playerid, setspritesavename, DIALOG_STYLE_INPUT, #Save sprites, "{FF0000}Invalid characters:{a9c4e4} \\ / : * \" < > |\n\n\
  460. {a9c4e4}Insert a name for the file:", #Save, #Back);
  461. return 1;
  462. }
  463. if(strlen(inputtext) > 50)
  464. {
  465. ShowPlayerDialog(playerid, setspritesavename, DIALOG_STYLE_INPUT, #Save sprites, "{FF0000}Invalid lenght.\n\n\
  466. {a9c4e4}Insert a name for the file:", #Save, #Back);
  467. return 1;
  468. }
  469.  
  470. new file[50];
  471. format(file, sizeof(file), #%s.txt, inputtext);
  472. new File:spritefile = fopen(file, io_append);
  473. if(spritefile)
  474. {
  475. fclose(spritefile);
  476. fremove(file);
  477. }
  478. spritefile = fopen(file, io_append);
  479. if(spritefile)
  480. {
  481.  
  482. new fStr[512];
  483. fwrite(spritefile, "//0Sprites Editor by Zh3r0\r\n\r\n");
  484. fwrite(spritefile, "#include <a_samp>");
  485. for(new i; i < MAX_TEXTDRAWS; i++)
  486. {
  487. if(td_i[i][created])
  488. {
  489. format(fStr, sizeof(fStr), "new Text:Sprite%d;\r\n", i);
  490. fwrite(spritefile, fStr);
  491. }
  492. }
  493. fwrite(spritefile, "\r\n\r\n");
  494. fwrite(spritefile, "public OnFilterScriptInit()\r\n");
  495. fwrite(spritefile, "{\r\n");
  496.  
  497. for(new i; i < MAX_TEXTDRAWS; i++)
  498. {
  499. if(td_i[i][created])
  500. {
  501. format(fStr, sizeof(fStr), " Sprite%d = TextDrawCreate(%.3f, %.3f, \"%s\");\r\n", i, td_i[i][td_x], td_i[i][td_y], td_i[i][td_name]);
  502. fwrite(spritefile, fStr);
  503. format(fStr, sizeof(fStr), " TextDrawFont(Sprite%d, 4);\r\n", i);
  504. fwrite(spritefile, fStr);
  505. format(fStr, sizeof(fStr), " TextDrawTextSize(Sprite%d, %.3f, %.3f);\r\n", i, td_i[i][td_width], td_i[i][td_height]);
  506. fwrite(spritefile, fStr);
  507. format(fStr, sizeof(fStr), " TextDrawColor(Sprite%d, %d);\r\n\r\n", i, td_i[i][td_color]);
  508. fwrite(spritefile, fStr);
  509.  
  510. }
  511. }
  512. fwrite(spritefile, " return 1;\r\n");
  513. fwrite(spritefile, "}\r\n\r\n\r\n");
  514.  
  515.  
  516. fwrite(spritefile, "public OnFilterScriptExit()\r\n");
  517. fwrite(spritefile, "{\r\n");
  518. for(new i; i < MAX_TEXTDRAWS; i++)
  519. {
  520. if(td_i[i][created])
  521. {
  522. format(fStr, sizeof(fStr), " TextDrawHideForAll(Sprite%d);\r\n", i);
  523. fwrite(spritefile, fStr);
  524. format(fStr, sizeof(fStr), " TextDrawDestroy(Sprite%d);\r\n", i);
  525. fwrite(spritefile, fStr);
  526. }
  527. }
  528. fwrite(spritefile, " return 1;\r\n");
  529. fwrite(spritefile, "}\r\n\r\n\r\n");
  530.  
  531.  
  532. fwrite(spritefile, "public OnPlayerConnect(playerid)\r\n");
  533. fwrite(spritefile, "{\r\n");
  534. for(new i; i < MAX_TEXTDRAWS; i++)
  535. {
  536. if(td_i[i][created])
  537. {
  538. format(fStr, sizeof(fStr), " TextDrawShowForPlayer(playerid,Sprite%d);\r\n", i);
  539. fwrite(spritefile, fStr);
  540. }
  541. }
  542. fwrite(spritefile, " return 1;\r\n");
  543. fwrite(spritefile, "}");
  544. fclose(spritefile);
  545.  
  546. SendClientMessageEx(playerid, "Sprites saved on file: {FF0000}\"scriptfiles\\%s.txt\"", inputtext);
  547. }
  548. else
  549. {
  550. SendClientMessageEx(playerid, "Opening {FF0000}\"SpritesEditor.txt\" {FFFFFF}has failed.", 0x0);
  551. ShowMainDialog(playerid);
  552. }
  553. }
  554.  
  555. case colorhex:
  556. {
  557. //Credits to Zamaroht
  558. if(inputtext[0] == '0' && inputtext[1] == 'x')
  559. {
  560. new red[3], green[3], blue[3], alpha[3];
  561. if(strlen(inputtext) != 8 && strlen(inputtext) != 10)
  562. {
  563. ShowPlayerDialog(playerid, colorhex, DIALOG_STYLE_INPUT, "Insert hex color", "Invalid hex format.\n\
  564. If you need help visit www.colorpicker.com for codes.",\
  565. #Insert, #Back);
  566. return 1;
  567. }
  568. red[0] = inputtext[2]; red[1] = inputtext[3];
  569. green[0] = inputtext[4]; green[1] = inputtext[5];
  570. blue[0] = inputtext[6]; blue[1] = inputtext[7];
  571.  
  572. if(inputtext[8] != '\0')
  573. format(alpha, sizeof(alpha), #%c%c, inputtext[8], inputtext[9]);
  574. else
  575. alpha = #FF;
  576.  
  577. TextDrawHideForAll(td_i[td_editing][td]);
  578. TextDrawDestroy(td_i[td_editing][td]);
  579.  
  580. td_i[td_editing][td] = TextDrawCreate(td_i[td_editing][td_x], td_i[td_editing][td_y], td_i[td_editing][td_name]);
  581. TextDrawFont(td_i[td_editing][td], 4);
  582. TextDrawTextSize(td_i[td_editing][td], td_i[td_editing][td_width],td_i[td_editing][td_height]);
  583. TextDrawColor(td_i[td_editing][td], RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha)));
  584.  
  585. TextDrawShowForAll(td_i[td_editing][td]);
  586. td_i[td_editing][td_color] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
  587. SendClientMessageEx(playerid, "Changed sprite id{FF0000} %d{FFFFFF}'s color.", td_editing);
  588.  
  589. ShowMainDialog(playerid);
  590. }
  591. else
  592. {
  593. ShowPlayerDialog(playerid, colorhex, DIALOG_STYLE_INPUT, "Insert hex color", "Invalid hex format.\n\
  594. If you need help visit www.colorpicker.com for codes.",\
  595. #Insert, #Back);
  596. }
  597.  
  598. }
  599. case colorpremade:
  600. {
  601. new red[3], green[3], blue[3], color[7];
  602. switch(listitem)
  603. {
  604. case 0: color = #Red, red = #FF, green = #00, blue = #00;
  605. case 1: color = #Green, red = #00, green = #FF, blue = #00;
  606. case 2: color = #Blue, red = #00, green = #00, blue = #FF;
  607. case 3: color = #White, red = #FF, green = #FF, blue = #FF;
  608. case 4: color = #Black, red = #00, green = #00, blue = #00;
  609. case 5: color = #Pink, red = #FF, green = #54, blue = #7F;
  610. case 6: color = #Cyan, red = #00, green = #FF, blue = #F2;
  611. case 7: color = #Yellow, red = #FF, green = #FB, blue = #00;
  612. case 8: color = #Orange, red = #FF, green = #84, blue = #00;
  613. }
  614. TextDrawHideForAll(td_i[td_editing][td]);
  615. TextDrawDestroy(td_i[td_editing][td]);
  616.  
  617. td_i[td_editing][td] = TextDrawCreate(td_i[td_editing][td_x], td_i[td_editing][td_y], td_i[td_editing][td_name]);
  618. TextDrawFont(td_i[td_editing][td], 4);
  619. TextDrawTextSize(td_i[td_editing][td], td_i[td_editing][td_width],td_i[td_editing][td_height]);
  620. TextDrawColor(td_i[td_editing][td], RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(#FF)));
  621.  
  622. TextDrawShowForAll(td_i[td_editing][td]);
  623. td_i[td_editing][td_color] = RGB(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(#FF));
  624. SendClientMessageEx(playerid, "Changed sprite id{FF0000} %d{FFFFFF}'s color.", td_editing);
  625.  
  626. ShowMainDialog(playerid);
  627. }
  628. case colormethod:
  629. {
  630. switch(listitem)
  631. {
  632. case 0:
  633. {
  634. ShowPlayerDialog(playerid, colorhex, DIALOG_STYLE_INPUT, "Insert hex color", "Insert your desired hex color:\n\
  635. Note: It must be in 0xFFFFFFFF format.",\
  636. #Insert, #Back);
  637.  
  638.  
  639.  
  640. }
  641. case 1:
  642. {
  643. ShowPlayerDialog(playerid, colorpremade, DIALOG_STYLE_LIST, "Pre-made colors", "{FF0000}Red\n\
  644. {00FF00}Green\n\
  645. {0000FF}Blue\n\
  646. {FFFFFF}White\n\
  647. {C3C3C3}Black\n\
  648. {FF547F}Pink\n\
  649. {00FFF2}Cyan\n\
  650. {FFFB00}Yellow\n\
  651. {FF8400}Orange", \
  652. #Select, #Back);
  653. }
  654. }
  655. }
  656.  
  657. case selectsprite:
  658. {
  659. new d;
  660. for(new t; t < MAX_TEXTDRAWS; t ++)
  661. {
  662. if(td_i[t][created])
  663. {
  664. if(d == listitem)
  665. {
  666. td_editing = t;
  667. SendClientMessageEx(playerid, "Selected sprite id {FF0000}%d{FFFFFF}.", td_editing);
  668. break;
  669. }
  670. d++;
  671. }
  672. }
  673.  
  674. ShowMainDialog(playerid);
  675. }
  676. case addsprite:
  677. {
  678. textdraws++;
  679. new
  680. string[50], szUnpack_[2][30];
  681.  
  682. strunpack(szUnpack_[0], sprites[spritelist-1]);
  683. switch(spritelist)
  684. {
  685. case 1..4, 23, 29..44, 47..50: strdel(SpritesString, 0, 1),format(string, sizeof(string), #%s:%s, szUnpack_[0], SpritesString);
  686. case 5: strunpack(szUnpack_[1], LD_BEAT[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  687. case 6: strunpack(szUnpack_[1], LD_BUM[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  688. case 7: strunpack(szUnpack_[1], LD_CARD[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  689. case 8: strunpack(szUnpack_[1], LD_CHAT[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  690. case 9: strunpack(szUnpack_[1], LD_DRV[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  691. case 10: strunpack(szUnpack_[1], LD_DUAL[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  692. case 11: strunpack(szUnpack_[1], ld_grav[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  693. case 12: strunpack(szUnpack_[1], LD_NONE[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  694. case 13: strunpack(szUnpack_[1], LD_OTB[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  695. case 14: strunpack(szUnpack_[1], LD_OTB2[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  696. case 15: strunpack(szUnpack_[1], LD_PLAN[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  697. case 16: strunpack(szUnpack_[1], LD_POKE[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  698. case 17: strunpack(szUnpack_[1], LD_POOL[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  699. case 18: strunpack(szUnpack_[1], LD_RACE[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  700. case 19: strunpack(szUnpack_[1], LD_RCE1[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  701. case 20: strunpack(szUnpack_[1], LD_RCE2[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  702. case 21: strunpack(szUnpack_[1], LD_RCE3[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  703. case 22: strunpack(szUnpack_[1], LD_RCE4[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  704. case 24: strunpack(szUnpack_[1], LD_ROUL[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  705. case 25: strunpack(szUnpack_[1], ld_shtr[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  706. case 26: strunpack(szUnpack_[1], LD_SLOT[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  707. case 27: strunpack(szUnpack_[1], LD_SPAC[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  708. case 28: strunpack(szUnpack_[1], LD_TATT[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  709. case 45: strunpack(szUnpack_[1], LOADSCS[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  710. case 46: strunpack(szUnpack_[1], LOADSUK[listitem]),format(string, sizeof(string), #%s:%s, szUnpack_[0], szUnpack_[1]);
  711.  
  712. }
  713. for(new i; i < MAX_TEXTDRAWS; i++)
  714. {
  715. if(!td_i[i][created])
  716. {
  717. td_editing = i;
  718. format(td_i[i][td_name], 30, string);
  719.  
  720. td_i[i][td] = TextDrawCreate(250.0, 10.0, string);
  721. TextDrawFont(td_i[i][td], 4);
  722. TextDrawColor(td_i[i][td],0xFFFFFFFF);
  723. TextDrawTextSize(td_i[i][td],100.0,100.0);
  724. TextDrawShowForAll(td_i[i][td]);
  725. ShowMainDialog(playerid);
  726.  
  727. td_i[i][created] = 1;
  728. td_i[i][td_x] = 250.0;
  729. td_i[i][td_y] = 10.0;
  730. td_i[i][td_width] = 100.0;
  731. td_i[i][td_height] = 100.0;
  732. td_i[i][td_color] = RGB(HexToInt(#FF), HexToInt(#FF), HexToInt(#FF), HexToInt(#FF));
  733.  
  734. SendClientMessageEx(playerid, "Created sprite {FF0000}%s{FFFFFF}. Default sprite size: {FF0000}100x100", string);
  735. break;
  736. }
  737. }
  738. }
  739. case selectcategory:
  740. {
  741. new
  742. szUnpack[14];
  743. SpritesString[0] = EOS;
  744. switch(listitem)
  745. {
  746. case (0):
  747. {
  748. SendClientMessageEx(playerid, "This feature will be available on next versions. Stay tuned",0);
  749. ShowMainDialog(playerid);
  750. /*ShowPlayerDialog(playerid, insertsprite, DIALOG_STYLE_INPUT, #Insert texture name, "You need help inserting a texture?\n\
  751. Take a look at: {FFFFFF}/spriteshelp{a9c4e4}",\
  752. #Insert, #Back);*/
  753. }
  754. case 1: SpritesString = #*intro1;
  755. case 2: SpritesString = #*intro2;
  756. case 3: SpritesString = #*intro3;
  757. case 4: SpritesString = #*intro4;
  758. case 5:
  759. {
  760. for(new t; t < sizeof(LD_BEAT); t++)
  761. {
  762. strunpack(szUnpack, LD_BEAT[t]);
  763. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  764. }
  765. }
  766. case 6:
  767. {
  768. for(new t; t < sizeof(LD_BUM); t++)
  769. {
  770. strunpack(szUnpack, LD_BUM[t]);
  771. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  772. }
  773. }
  774. case 7:
  775. {
  776. for(new t; t < sizeof(LD_CARD); t++)
  777. {
  778. strunpack(szUnpack, LD_CARD[t]);
  779. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  780. }
  781. }
  782. case 8:
  783. {
  784. for(new t; t < sizeof(LD_CHAT); t++)
  785. {
  786. strunpack(szUnpack, LD_CHAT[t]);
  787. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  788. }
  789. }
  790. case 9:
  791. {
  792. for(new t; t < sizeof(LD_DRV); t++)
  793. {
  794. strunpack(szUnpack, LD_DRV[t]);
  795. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  796. }
  797. }
  798. case 10:
  799. {
  800. for(new t; t < sizeof(LD_DUAL); t++)
  801. {
  802. strunpack(szUnpack, LD_DUAL[t]);
  803. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  804. }
  805. }
  806. case 11:
  807. {
  808. for(new t; t < sizeof(ld_grav); t++)
  809. {
  810. strunpack(szUnpack, ld_grav[t]);
  811. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  812. }
  813. }
  814. case 12:
  815. {
  816. for(new t; t < sizeof(LD_NONE); t++)
  817. {
  818. strunpack(szUnpack, LD_NONE[t]);
  819. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  820. }
  821. }
  822. case 13:
  823. {
  824. for(new t; t < sizeof(LD_OTB); t++)
  825. {
  826. strunpack(szUnpack, LD_OTB[t]);
  827. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  828. }
  829. }
  830. case 14:
  831. {
  832. for(new t; t < sizeof(LD_OTB2); t++)
  833. {
  834. strunpack(szUnpack, LD_OTB2[t]);
  835. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  836. }
  837. }
  838. case 15:
  839. {
  840. for(new t; t < sizeof(LD_PLAN); t++)
  841. {
  842. strunpack(szUnpack, LD_PLAN[t]);
  843. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  844. }
  845. }
  846. case 16:
  847. {
  848. for(new t; t < sizeof(LD_POKE); t++)
  849. {
  850. strunpack(szUnpack, LD_POKE[t]);
  851. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  852. }
  853. }
  854. case 17:
  855. {
  856. for(new t; t < sizeof(LD_POOL); t++)
  857. {
  858. strunpack(szUnpack, LD_POOL[t]);
  859. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  860. }
  861. }
  862. case 18:
  863. {
  864. for(new t; t < sizeof(LD_RACE); t++)
  865. {
  866. strunpack(szUnpack, LD_RACE[t]);
  867. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  868. }
  869. }
  870. case 19:
  871. {
  872. for(new t; t < sizeof(LD_RCE1); t++)
  873. {
  874. strunpack(szUnpack, LD_RCE1[t]);
  875. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  876. }
  877. }
  878. case 20:
  879. {
  880. for(new t; t < sizeof(LD_RCE2); t++)
  881. {
  882. strunpack(szUnpack, LD_RCE2[t]);
  883. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  884. }
  885. }
  886. case 21:
  887. {
  888. for(new t; t < sizeof(LD_RCE3); t++)
  889. {
  890. strunpack(szUnpack, LD_RCE3[t]);
  891. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  892. }
  893. }
  894. case 22:
  895. {
  896. for(new t; t < sizeof(LD_RCE4); t++)
  897. {
  898. strunpack(szUnpack, LD_RCE4[t]);
  899. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  900. }
  901. }
  902. case 23: SpritesString = #*race24;
  903. case 24:
  904. {
  905. for(new t; t < sizeof(LD_ROUL); t++)
  906. {
  907. strunpack(szUnpack, LD_ROUL[t]);
  908. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  909. }
  910. }
  911. case 25:
  912. {
  913. for(new t; t < sizeof(ld_shtr); t++)
  914. {
  915. strunpack(szUnpack, ld_shtr[t]);
  916. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  917. }
  918. }
  919. case 26:
  920. {
  921. for(new t; t < sizeof(LD_SLOT); t++)
  922. {
  923. strunpack(szUnpack, LD_SLOT[t]);
  924. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  925. }
  926. }
  927. case 27:
  928. {
  929. for(new t; t < sizeof(LD_SPAC); t++)
  930. {
  931. strunpack(szUnpack, LD_SPAC[t]);
  932. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  933. }
  934. }
  935. case 28:
  936. {
  937. for(new t; t < sizeof(LD_TATT); t++)
  938. {
  939. strunpack(szUnpack, LD_TATT[t]);
  940. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  941. }
  942. }
  943. case 29: SpritesString = #*load0uk;
  944. case 30: SpritesString = #*loadsc0;
  945. case 31: SpritesString = #*loadsc1;
  946. case 32: SpritesString = #*loadsc2;
  947. case 33: SpritesString = #*loadsc3;
  948. case 34: SpritesString = #*loadsc4;
  949. case 35: SpritesString = #*loadsc5;
  950. case 36: SpritesString = #*loadsc6;
  951. case 37: SpritesString = #*loadsc7;
  952. case 38: SpritesString = #*loadsc8;
  953. case 39: SpritesString = #*loadsc9;
  954. case 40: SpritesString = #*loadsc10;
  955. case 41: SpritesString = #*loadsc11;
  956. case 42: SpritesString = #*loadsc12;
  957. case 43: SpritesString = #*loadsc13;
  958. case 44: SpritesString = #*loadsc14;
  959. case 45:
  960. {
  961. for(new t; t < sizeof(LOADSCS); t++)
  962. {
  963. strunpack(szUnpack, LOADSCS[t]);
  964. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  965. }
  966. }
  967. case 46:
  968. {
  969. for(new t; t < sizeof(LOADSUK); t++)
  970. {
  971. strunpack(szUnpack, LOADSUK[t]);
  972. format(SpritesString, sizeof(SpritesString), #%s*%s\n, SpritesString, szUnpack);
  973. }
  974. }
  975. case 47: SpritesString = #*outro;
  976. case 48: SpritesString = #*splash1;
  977. case 49: SpritesString = #*splash2;
  978. case 50: SpritesString = #*splash3;
  979. }
  980. spritelist = listitem;
  981. ShowPlayerDialog(playerid, addsprite, DIALOG_STYLE_LIST, #Select Sprite, SpritesString, #Select, #Back);
  982. }
  983. }
  984. }
  985. return 1;
  986. }
  987. public OnPlayerCommandText(playerid, cmdtext[])
  988. {
  989. if(!strcmp(cmdtext, #/spriteshelp, true))
  990. {
  991. new String[1_200],
  992. Str1[] = "{FF0000}How to insert a sprite\n\
  993. 1.{a9c4e4} It must be in a category:texture format.(EX: LD_BEAT:upr){FF0000}\n\
  994. 2.{a9c4e4} If you have trouble inserting one, download TXD Workshop from internet.{FF0000}\n\
  995. 3.{a9c4e4} Open TXD Workshop and go to your San Andreas directory and open folder \"models\\txd\"{FF0000}(Open files with TXD Workshop)\n",
  996.  
  997. Str2[] = "4.{a9c4e4} You will see few files there, file name is the category, and what's inside it's the texture name.{FF0000}\n\
  998. 5.{a9c4e4} Examples: intro1 file has only 1 texture, which is called also intro1.{FF0000}\n\
  999. {a9c4e4}File:{FF0000}LD_BUM {a9c4e4}Texture:{FF0000} bum2, bum1, blkdot\n\
  1000. {a9c4e4}File:{FF0000}LD_RCE1 {a9c4e4}Texture:{FF0000} race05, race04, race03, race02, race01, race00{a9c4e4}\n\n\
  1001. And yet you don't understand? Check the forums.({FF0000}www.forums.sa-mp.com{a9c4e4})\n\n",
  1002.  
  1003. Str3[] = "{FF0000}Category or texture missing from the list?{a9c4e4}\n\
  1004. Please post in the thread where you downloaded 0Sprites Editor, I will add them.\n\n\
  1005. {FF0000}Found a bug? Something went wrong?{a9c4e4}\n\
  1006. Report on the forums in the same thread specified above.";
  1007.  
  1008. strcat(String, Str1, 1_200),strcat(String, Str2, 1_200),strcat(String, Str3, 1_200);
  1009. ShowPlayerDialog(playerid, spriteshelp, DIALOG_STYLE_MSGBOX, #0Sprites editor help center, String, #Back, #);
  1010. return 1;
  1011. }
  1012. if(!strcmp(cmdtext, #/spre, true))
  1013. {
  1014. new cName[30];
  1015. if(td_editing > 0 || td_editing == 0)format(cName, 30, #%s, td_i[td_editing][td_name]);
  1016. else if(td_editing == -1)cName = #No sprite selected!;
  1017.  
  1018.  
  1019. ShowPlayerDialog(playerid, main, DIALOG_STYLE_LIST, cName, #Select sprite\n\
  1020. Add sprite\n\
  1021. Delete sprite\n\
  1022. Move sprite\n\
  1023. Resize sprite\n\
  1024. Color sprite\n\
  1025. Save sprites\n\
  1026. "{FF0000}Close",\
  1027. #Select, #);
  1028. return 1;
  1029. }
  1030. return 0;
  1031. }
  1032.  
  1033. stock MoveTextDraw(Keys, dimension, size)
  1034. {
  1035. TextDrawHideForAll(td_i[td_editing][td]);
  1036. TextDrawDestroy(td_i[td_editing][td]);
  1037.  
  1038. switch(dimension)
  1039. {
  1040. case 0:
  1041. {
  1042. if(size)
  1043. {
  1044. if(Keys != KEY_SPRINT)
  1045. td_i[td_editing][td_y] += 1.5;
  1046. else
  1047. td_i[td_editing][td_y] += 10.5;
  1048. }
  1049. else
  1050. {
  1051. if(Keys != KEY_SPRINT)
  1052. td_i[td_editing][td_y] -= 1.5;
  1053. else
  1054. td_i[td_editing][td_y] -= 10.5;
  1055. }
  1056. }
  1057. case 1:
  1058. {
  1059. if(size)
  1060. {
  1061. if(Keys != KEY_SPRINT)
  1062. td_i[td_editing][td_x] += 1.5;
  1063. else td_i[td_editing][td_x] += 10.5;
  1064. }
  1065. else
  1066. {
  1067. if(Keys != KEY_SPRINT)
  1068. td_i[td_editing][td_x] -= 1.5;
  1069. else
  1070. td_i[td_editing][td_x] -= 10.5;
  1071. }
  1072. }
  1073. case 2:
  1074. {
  1075. if(size)
  1076. {
  1077. if(Keys != KEY_SPRINT)
  1078. td_i[td_editing][td_height] += 1.5;
  1079. else
  1080. td_i[td_editing][td_height] += 10.5;
  1081. }
  1082. else
  1083. {
  1084. if(Keys != KEY_SPRINT)
  1085. td_i[td_editing][td_height] -= 1.5;
  1086. else
  1087. td_i[td_editing][td_height] -= 10.5;
  1088. }
  1089. }
  1090. case 3:
  1091. {
  1092. if(size)
  1093. {
  1094. if(Keys != KEY_SPRINT)
  1095. td_i[td_editing][td_width] += 1.5;
  1096. else
  1097. td_i[td_editing][td_width] += 10.5;
  1098. }
  1099. else
  1100. {
  1101. if(Keys != KEY_SPRINT)
  1102. td_i[td_editing][td_width] -= 1.5;
  1103. else
  1104. td_i[td_editing][td_width] -= 10.5;
  1105. }
  1106. }
  1107. }
  1108.  
  1109. td_i[td_editing][td] = TextDrawCreate(td_i[td_editing][td_x], td_i[td_editing][td_y], td_i[td_editing][td_name]);
  1110. TextDrawFont(td_i[td_editing][td], 4);
  1111. TextDrawTextSize(td_i[td_editing][td], td_i[td_editing][td_width], td_i[td_editing][td_height]);
  1112. TextDrawColor(td_i[td_editing][td], td_i[td_editing][td_color]);
  1113. TextDrawShowForAll(td_i[td_editing][td]);
  1114.  
  1115. }
  1116. public OnPlayerUpdate(playerid)
  1117. {
  1118. new Keys, ud, lr;
  1119. GetPlayerKeys(playerid, Keys, ud, lr);
  1120.  
  1121. if(ud > 0)
  1122. {
  1123. if(GetPVarInt(playerid, #MovingSprite))MoveTextDraw(Keys, 0, 1); //Increase Y coords
  1124. else if(GetPVarInt(playerid, #ResizingSprite))MoveTextDraw(Keys, 2, 1); //Increase Heght Size
  1125. }
  1126. else if(ud < 0)
  1127. {
  1128. if(GetPVarInt(playerid, #MovingSprite))MoveTextDraw(Keys, 0, 0); //Decrease Y coords
  1129. else if(GetPVarInt(playerid, #ResizingSprite))MoveTextDraw(Keys, 2, 0); //Decrease Heght Size
  1130. }
  1131. else if(lr > 0)
  1132. {
  1133. if(GetPVarInt(playerid, #MovingSprite))MoveTextDraw(Keys, 1, 1); //Increase Y coords
  1134. else if(GetPVarInt(playerid, #ResizingSprite))MoveTextDraw(Keys, 3, 1); //Increase Width Size
  1135. }
  1136. else if(lr < 0)
  1137. {
  1138. if(GetPVarInt(playerid, #MovingSprite))MoveTextDraw(Keys, 1, 0); //Decrease X coords
  1139. else if(GetPVarInt(playerid, #ResizingSprite))MoveTextDraw(Keys, 3, 0); //Decrease Width Size
  1140. }
  1141.  
  1142. return 1;
  1143. }
  1144. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1145. {
  1146. if(GetPVarInt(playerid, #MovingSprite) || GetPVarInt(playerid, #ResizingSprite))
  1147. {
  1148. if(newkeys & KEY_SECONDARY_ATTACK)
  1149. {
  1150. SetPVarInt(playerid, #MovingSprite, 0);
  1151. SetPVarInt(playerid, #ResizingSprite, 0);
  1152. TogglePlayerControllable(playerid, true);
  1153. SetTimerEx(#ShowMainDialog, 500, false, #i, playerid);
  1154. SendClientMessageEx(playerid, "Finished moving/resizing sprite id: {FF0000}%d", td_editing);
  1155. }
  1156. }
  1157. return 1;
  1158. }
  1159. //by Zh3r0.
  1160. stock IsValidText(text[])
  1161. {
  1162. new Invalid;
  1163. for(new i, l = strlen(text); i != l; i++ )
  1164. {
  1165. switch(text[i])
  1166. {
  1167. case ':', '/', '\\', '"', '?', '*', '<', '>', '|': {Invalid = 1; break;}
  1168. }
  1169. }
  1170. if(Invalid) return false;
  1171. return 1;
  1172. }
  1173.  
  1174.  
  1175. stock RGB( red, green, blue, alpha )
  1176. {
  1177. return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
  1178. }
  1179. stock HexToInt(string[])
  1180. {
  1181. if (string[0]==0) return 0;
  1182. new i;
  1183. new cur=1;
  1184. new res=0;
  1185. for (i=strlen(string);i>0;i--) {
  1186. if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  1187. cur=cur*16;
  1188. }
  1189. return res;
  1190. }
  1191. forward ShowMainDialog(playerid);
  1192. public ShowMainDialog(playerid) return OnPlayerCommandText(playerid, #/spre);
  1193.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement