Advertisement
Guest User

Dynamic Pickup Creator

a guest
Feb 13th, 2015
757
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.62 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <Dini>
  4.  
  5. //------------------------------------------------------------------------------
  6.  
  7. #define MAX_PICK 1000
  8. #define SAVING_SYSTEM 1
  9.  
  10. //------------------------------------------------------------------------------
  11.  
  12. enum pInfo
  13. {
  14. pPickup,
  15. pID,
  16. pType,
  17. pWorld,
  18. Float:pX,
  19. Float:pY,
  20. Float:pZ
  21. }
  22.  
  23. //------------------------------------------------------------------------------
  24.  
  25. new PickupInfo[MAX_PICK][pInfo];
  26. new pickid, removeid, Started[MAX_PLAYERS], CreatePickups[MAX_PLAYERS], ID, Type;
  27. new Text:Textdraw[10];
  28.  
  29. //------------------------------------------------------------------------------
  30.  
  31. CMD:createpickup(playerid, params[])
  32. {
  33. new string[5];
  34. TextDrawShowForPlayer(playerid, Textdraw[0]);
  35. TextDrawShowForPlayer(playerid, Textdraw[1]);
  36. TextDrawShowForPlayer(playerid, Textdraw[2]);
  37. TextDrawShowForPlayer(playerid, Textdraw[3]);
  38. TextDrawShowForPlayer(playerid, Textdraw[4]);
  39. TextDrawShowForPlayer(playerid, Textdraw[5]);
  40. TextDrawShowForPlayer(playerid, Textdraw[6]);
  41. TextDrawShowForPlayer(playerid, Textdraw[7]);
  42. TextDrawShowForPlayer(playerid, Textdraw[8]);
  43. SelectTextDraw(playerid, 0xFFFFFFFF);
  44. format(string, sizeof(string), "%d", pickid);
  45. TextDrawSetString(Textdraw[9], string);
  46. TextDrawShowForPlayer(playerid, Textdraw[9]);
  47. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  48. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Welcome to {FF0000}HY's Dynamic Pickup Creator{FFFFFF}.");
  49. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Select your option, and press {FF0000}'C' {FFFFFF}to start creating pickups.");
  50. Started[playerid] = 1;
  51. return 1;
  52. }
  53.  
  54. //------------------------------------------------------------------------------
  55.  
  56. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  57. {
  58. if(clickedid == Textdraw[4])
  59. {
  60. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  61. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Please, input below new pickup's ID.");
  62. ShowPlayerDialog(playerid, 1500, DIALOG_STYLE_INPUT, "Pickup ID", "{FFFFFF}Please, input below the new pickup's ID:\n\n{FF0000}WARNING: {FFFFFF}Please, use a valid pickup ID.", "Continue", "Exit");
  63. }
  64. else if(clickedid == Textdraw[6])
  65. {
  66. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  67. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Please, input below new pickup's type.");
  68. ShowPlayerDialog(playerid, 1501, DIALOG_STYLE_INPUT, "Pickup ID", "{FFFFFF}Please, input below the new pickup's type:\n\n{FF0000}WARNING: {FFFFFF}Most used types are between {FF0000}1 & 3{FFFFFF}.", "Continue", "Exit");
  69. }
  70. else if(clickedid == Textdraw[8])
  71. {
  72. #if SAVING_SYSTEM == 1
  73. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  74. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Please, input below the pickup's ID wich you want to delete.");
  75. ShowPlayerDialog(playerid, 1502, DIALOG_STYLE_INPUT, "Remove", "{FFFFFF}Please, input below the new pickup's type:\n\n{FF0000}WARNING: {FFFFFF}Must be a valid pickup ID.", "Continue", "Exit");
  76. #endif
  77. }
  78. return 1;
  79. }
  80.  
  81. //------------------------------------------------------------------------------
  82.  
  83. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  84. {
  85. if(newkeys & KEY_CROUCH)
  86. {
  87. if(Started[playerid] == 1)
  88. {
  89. new string[50];
  90. Started[playerid] = 2;
  91. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  92. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Press {FF0000}'LMB' {FFFFFF}to create pickups, and press {FF0000}'C' {FFFFFF}to edit script.");
  93. format(string, sizeof(string), "Enabled");
  94. TextDrawSetString(Textdraw[3], string);
  95. TextDrawColor(Textdraw[3], 16711935);
  96. TextDrawShowForPlayer(playerid, Textdraw[3]);
  97. CreatePickups[playerid] = 1;
  98. }
  99. else if(Started[playerid] == 2)
  100. {
  101. new string[50];
  102. Started[playerid] = 1;
  103. TextDrawShowForPlayer(playerid, Textdraw[0]);
  104. TextDrawShowForPlayer(playerid, Textdraw[1]);
  105. TextDrawShowForPlayer(playerid, Textdraw[2]);
  106. TextDrawShowForPlayer(playerid, Textdraw[4]);
  107. TextDrawShowForPlayer(playerid, Textdraw[5]);
  108. TextDrawShowForPlayer(playerid, Textdraw[6]);
  109. TextDrawShowForPlayer(playerid, Textdraw[7]);
  110. TextDrawShowForPlayer(playerid, Textdraw[8]);
  111. SelectTextDraw(playerid, 0xFFFFFFFF);
  112. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  113. SendClientMessage(playerid, -1, "{FF0000}[h-Pickups]: {FFFFFF}Now, you can edit the script.");
  114. format(string, sizeof(string), "Pauzed");
  115. TextDrawSetString(Textdraw[3], string);
  116. TextDrawColor(Textdraw[3], -16776961);
  117. TextDrawShowForPlayer(playerid, Textdraw[3]);
  118. CreatePickups[playerid] = 0;
  119. }
  120. }
  121. if(newkeys & KEY_FIRE)
  122. {
  123. if(CreatePickups[playerid] == 1)
  124. {
  125. new Float:X, Float:Y, Float:Z, string[144], file[50];
  126. GetPlayerPos(playerid, X, Y, Z);
  127. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  128. format(string, sizeof(string), "{FF0000}[h-Pickups]: {FFFFFF}Pickup: {FF0000}%d {FFFFFF}created.", pickid);
  129. SendClientMessage(playerid, -1, string);
  130. #if SAVING_SYSTEM == 1
  131. PickupInfo[pickid][pID] = ID;
  132. PickupInfo[pickid][pType] = Type;
  133. PickupInfo[pickid][pWorld] = 0;
  134. PickupInfo[pickid][pX] = X;
  135. PickupInfo[pickid][pY] = Y;
  136. PickupInfo[pickid][pZ] = Z;
  137. PickupInfo[pickid][pPickup] = CreatePickup(PickupInfo[pickid][pID], PickupInfo[pickid][pType], X, Y, Z, 0);
  138. format(file, sizeof(file), "Pickups/%d.ini", pickid);
  139. if(!fexist(file))
  140. {
  141. dini_Create(file);
  142. dini_IntSet(file, "Pickup ID", PickupInfo[pickid][pID]);
  143. dini_IntSet(file, "Pickup Type", PickupInfo[pickid][pType]);
  144. dini_IntSet(file, "Pickup World", PickupInfo[pickid][pWorld]);
  145. dini_FloatSet(file, "Pickup X", PickupInfo[pickid][pX]);
  146. dini_FloatSet(file, "Pickup Y", PickupInfo[pickid][pY]);
  147. dini_FloatSet(file, "Pickup Z", PickupInfo[pickid][pZ]);
  148. }
  149. pickid++;
  150. #endif
  151. #if SAVING_SYSTEM == 2
  152. new pick[144];
  153. new File:filee = fopen("pickups.txt", io_append);
  154. format(pick, sizeof(pick), "CreatePickup(%i, %i, %f, %f, %f, 0);\r\n", PickupInfo[pickid][pID], PickupInfo[pickid][pType], X, Y, Z);
  155. fwrite(filee, pick);
  156. fclose(filee);
  157. #endif
  158. }
  159. }
  160. return 1;
  161. }
  162.  
  163. //------------------------------------------------------------------------------
  164.  
  165. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  166. {
  167. if(dialogid == 1500)
  168. {
  169. if(response)
  170. {
  171. new string[5], mess[100];
  172. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1500, DIALOG_STYLE_INPUT, "Pickup ID", "{FFFFFF}Please, input below the new pickup's ID:\n\n{FF0000}WARNING: {FFFFFF}Write something in box.", "Continue", "Exit");
  173. ID = strval(inputtext);
  174. format(string, sizeof(string), "%d", ID);
  175. TextDrawSetString(Textdraw[5], string);
  176. TextDrawShowForPlayer(playerid, Textdraw[5]);
  177. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  178. format(mess, sizeof(mess), "{FF0000}[h-Pickups]: {FFFFFF}New pickup's ID it's: {FF0000}%d{FFFFFF}.", ID);
  179. SendClientMessage(playerid, -1, mess);
  180. }
  181. }
  182. if(dialogid == 1501)
  183. {
  184. if(response)
  185. {
  186. new string[5], mess[100];
  187. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1501, DIALOG_STYLE_INPUT, "Pickup ID", "{FFFFFF}Please, input below the new pickup's type:\n\n{FF0000}WARNING: {FFFFFF}Most used types are between {FF0000}1 & 3{FFFFFF}.", "Continue", "Exit");
  188. Type = strval(inputtext);
  189. format(string, sizeof(string), "%d", Type);
  190. TextDrawSetString(Textdraw[7], string);
  191. TextDrawShowForPlayer(playerid, Textdraw[7]);
  192. for(new i = 0; i < 16; i++) SendClientMessage(playerid, -1, " ");
  193. format(mess, sizeof(mess), "{FF0000}[h-Pickups]: {FFFFFF}New pickup's type it's: {FF0000}%d{FFFFFF}.", Type);
  194. SendClientMessage(playerid, -1, mess);
  195. }
  196. }
  197. if(dialogid == 1502)
  198. {
  199. if(response)
  200. {
  201. new file[50], string[100];
  202. removeid = strval(inputtext);
  203. format(file, sizeof(file), "Pickups/%d.ini", removeid);
  204. if(!fexist(file))
  205. {
  206. SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}This pickup's ID doesn't exist in data-base.");
  207. }
  208. else
  209. {
  210. DestroyPickup(PickupInfo[removeid][pPickup]);
  211. PickupInfo[removeid][pID] = -1;
  212. PickupInfo[removeid][pType] = -1;
  213. PickupInfo[removeid][pWorld] = -999999999;
  214. PickupInfo[removeid][pX] = 0;
  215. PickupInfo[removeid][pY] = 0;
  216. PickupInfo[removeid][pZ] = 0;
  217. dini_Remove(file);
  218. format(string, sizeof(string), "{FF0000}[h-Pickups]: {FFFFFF}Pickup {FF0000}%d {FFFFFF}has been removed.", removeid);
  219. SendClientMessage(playerid, -1, string);
  220. }
  221. }
  222. }
  223. return 1;
  224. }
  225.  
  226. //------------------------------------------------------------------------------
  227.  
  228. public OnFilterScriptInit()
  229. {
  230. Textdraw[0] = TextDrawCreate(639.599975, 431.579986, "usebox");
  231. TextDrawLetterSize(Textdraw[0], 0.000000, 1.591482);
  232. TextDrawTextSize(Textdraw[0], -3.599999, 0.000000);
  233. TextDrawAlignment(Textdraw[0], 1);
  234. TextDrawColor(Textdraw[0], 0);
  235. TextDrawUseBox(Textdraw[0], true);
  236. TextDrawBoxColor(Textdraw[0], 255);
  237. TextDrawSetShadow(Textdraw[0], 0);
  238. TextDrawSetOutline(Textdraw[0], 0);
  239. TextDrawFont(Textdraw[0], 0);
  240.  
  241. //--------------------------------------------------------------------------
  242.  
  243. Textdraw[1] = TextDrawCreate(646.799865, 431.579986, "usebox");
  244. TextDrawLetterSize(Textdraw[1], 0.000000, 1.508518);
  245. TextDrawTextSize(Textdraw[1], 625.199890, 0.000000);
  246. TextDrawAlignment(Textdraw[1], 1);
  247. TextDrawColor(Textdraw[1], 0);
  248. TextDrawUseBox(Textdraw[1], true);
  249. TextDrawBoxColor(Textdraw[1], 255);
  250. TextDrawSetShadow(Textdraw[1], 0);
  251. TextDrawSetOutline(Textdraw[1], 0);
  252. TextDrawFont(Textdraw[1], 0);
  253.  
  254. //--------------------------------------------------------------------------
  255.  
  256. Textdraw[2] = TextDrawCreate(1.600022, 430.826751, "Creator:");
  257. TextDrawLetterSize(Textdraw[2], 0.449999, 1.600000);
  258. TextDrawAlignment(Textdraw[2], 1);
  259. TextDrawColor(Textdraw[2], -1);
  260. TextDrawSetShadow(Textdraw[2], 0);
  261. TextDrawSetOutline(Textdraw[2], 1);
  262. TextDrawBackgroundColor(Textdraw[2], 51);
  263. TextDrawFont(Textdraw[2], 2);
  264. TextDrawSetProportional(Textdraw[2], 1);
  265.  
  266. //--------------------------------------------------------------------------
  267.  
  268. Textdraw[3] = TextDrawCreate(97.599983, 430.826721, "Pauzed");
  269. TextDrawLetterSize(Textdraw[3], 0.449999, 1.600000);
  270. TextDrawAlignment(Textdraw[3], 1);
  271. TextDrawColor(Textdraw[3], -16776961);
  272. TextDrawSetShadow(Textdraw[3], 0);
  273. TextDrawSetOutline(Textdraw[3], 1);
  274. TextDrawBackgroundColor(Textdraw[3], 51);
  275. TextDrawFont(Textdraw[3], 2);
  276. TextDrawSetProportional(Textdraw[3], 1);
  277.  
  278. //--------------------------------------------------------------------------
  279.  
  280. Textdraw[4] = TextDrawCreate(205.599945, 430.080078, "Pickup ID:");
  281. TextDrawLetterSize(Textdraw[4], 0.449999, 1.600000);
  282. TextDrawAlignment(Textdraw[4], 1);
  283. TextDrawColor(Textdraw[4], -1);
  284. TextDrawSetShadow(Textdraw[4], 0);
  285. TextDrawSetOutline(Textdraw[4], 1);
  286. TextDrawBackgroundColor(Textdraw[4], 51);
  287. TextDrawFont(Textdraw[4], 2);
  288. TextDrawSetProportional(Textdraw[4], 1);
  289. TextDrawSetSelectable(Textdraw[4], true);
  290.  
  291. //--------------------------------------------------------------------------
  292.  
  293. Textdraw[5] = TextDrawCreate(305.600036, 430.080078, "1239");
  294. TextDrawLetterSize(Textdraw[5], 0.449999, 1.600000);
  295. TextDrawAlignment(Textdraw[5], 1);
  296. TextDrawColor(Textdraw[5], -5963521);
  297. TextDrawSetShadow(Textdraw[5], 0);
  298. TextDrawSetOutline(Textdraw[5], 1);
  299. TextDrawBackgroundColor(Textdraw[5], 51);
  300. TextDrawFont(Textdraw[5], 2);
  301. TextDrawSetProportional(Textdraw[5], 1);
  302.  
  303. //--------------------------------------------------------------------------
  304.  
  305. Textdraw[6] = TextDrawCreate(384.000000, 430.080047, "Type:");
  306. TextDrawLetterSize(Textdraw[6], 0.449999, 1.600000);
  307. TextDrawAlignment(Textdraw[6], 1);
  308. TextDrawColor(Textdraw[6], -1);
  309. TextDrawSetShadow(Textdraw[6], 0);
  310. TextDrawSetOutline(Textdraw[6], 1);
  311. TextDrawBackgroundColor(Textdraw[6], 51);
  312. TextDrawFont(Textdraw[6], 2);
  313. TextDrawSetProportional(Textdraw[6], 1);
  314. TextDrawSetSelectable(Textdraw[6], true);
  315.  
  316. //--------------------------------------------------------------------------
  317.  
  318. Textdraw[7] = TextDrawCreate(442.400024, 430.080108, "1");
  319. TextDrawLetterSize(Textdraw[7], 0.449999, 1.600000);
  320. TextDrawAlignment(Textdraw[7], 1);
  321. TextDrawColor(Textdraw[7], -5963521);
  322. TextDrawSetShadow(Textdraw[7], 0);
  323. TextDrawSetOutline(Textdraw[7], 1);
  324. TextDrawBackgroundColor(Textdraw[7], 51);
  325. TextDrawFont(Textdraw[7], 2);
  326. TextDrawSetProportional(Textdraw[7], 1);
  327.  
  328. //--------------------------------------------------------------------------
  329.  
  330. Textdraw[8] = TextDrawCreate(491.199890, 428.586669, "Delete");
  331. TextDrawLetterSize(Textdraw[8], 0.417999, 1.988267);
  332. TextDrawAlignment(Textdraw[8], 1);
  333. TextDrawColor(Textdraw[8], -16776961);
  334. TextDrawSetShadow(Textdraw[8], 0);
  335. TextDrawSetOutline(Textdraw[8], 1);
  336. TextDrawBackgroundColor(Textdraw[8], 51);
  337. TextDrawFont(Textdraw[8], 2);
  338. TextDrawSetProportional(Textdraw[8], 1);
  339. TextDrawSetSelectable(Textdraw[8], true);
  340.  
  341. //--------------------------------------------------------------------------
  342.  
  343. Textdraw[9] = TextDrawCreate(588.799743, 430.826660, "1000");
  344. TextDrawLetterSize(Textdraw[9], 0.449999, 1.600000);
  345. TextDrawAlignment(Textdraw[9], 1);
  346. TextDrawColor(Textdraw[9], 16711935);
  347. TextDrawSetShadow(Textdraw[9], 0);
  348. TextDrawSetOutline(Textdraw[9], 1);
  349. TextDrawBackgroundColor(Textdraw[9], 51);
  350. TextDrawFont(Textdraw[9], 2);
  351. TextDrawSetProportional(Textdraw[9], 1);
  352.  
  353. //--------------------------------------------------------------------------
  354.  
  355. ID = 1239;
  356. Type = 1;
  357.  
  358. //--------------------------------------------------------------------------
  359.  
  360. LoadPickups();
  361. return 1;
  362. }
  363.  
  364. //------------------------------------------------------------------------------
  365.  
  366. stock LoadPickups()
  367. {
  368. new file[50];
  369. for(new i = 0; i < MAX_PICK; i++)
  370. {
  371. format(file, sizeof(file), "Pickups/%d.ini", i);
  372. if(fexist(file))
  373. {
  374. PickupInfo[i][pID] = dini_Int(file, "Pickup ID");
  375. PickupInfo[i][pType] = dini_Int(file, "Pickup Type");
  376. PickupInfo[i][pX] = dini_Float(file, "Pickup X");
  377. PickupInfo[i][pY] = dini_Float(file, "Pickup Y");
  378. PickupInfo[i][pZ] = dini_Float(file, "Pickup Z");
  379. PickupInfo[i][pPickup] = CreatePickup(PickupInfo[i][pID], PickupInfo[i][pType], PickupInfo[i][pX], PickupInfo[i][pY], PickupInfo[i][pZ], 0);
  380. pickid++;
  381. }
  382. }
  383. printf("LOADED PICKUPS: %d", pickid);
  384. return 1;
  385. }
  386.  
  387. //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement