Advertisement
Guest User

Update DPP by Shomy

a guest
Nov 16th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.11 KB | None | 0 0
  1. //=-=-=-=-=-=-=-=-=-= DINAMICNO KREIRANJE PICKUPA BY SHOMY =-=-=-=-=-=-=-=-=-=//
  2.  
  3. // = INCLUDE = //
  4.  
  5. #include < a_samp >
  6. #include < YSI\y_ini >
  7. #include < YSI\y_commands >
  8. #include < sscanf2 >
  9.  
  10. // = DEFINE = //
  11.  
  12. #undef MAX_PICKUPS
  13. #define MAX_PICKUPS 250
  14. #define PFile "/Pickups/%d.ini"
  15. #define SCM SendClientMessage
  16.  
  17. // = ENUM = //
  18.  
  19. enum pInfo
  20. {
  21. Float:UlazX,
  22. Float:UlazY,
  23. Float:UlazZ,
  24. Float:IzlazX,
  25. Float:IzlazY,
  26. Float:IzlazZ,
  27. Model,
  28. pInterior,
  29. pText[80],
  30. BojaTexta,
  31. pVWU,
  32. pVWI
  33. }
  34.  
  35. // = NEW = //
  36.  
  37. new PickupInfo[MAX_PICKUPS][pInfo];
  38. new Text3D:label[sizeof(PickupInfo)];
  39. new ipickup,upickup,PravljeniPickupIzlaz,PravljeniPickup;
  40.  
  41. // = PUBLICS = //
  42.  
  43. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  44. {
  45. if(newkeys == KEY_SECONDARY_ATTACK )
  46. {
  47. for(new i; i < MAX_PICKUPS; i++)
  48. {
  49. if(IsPlayerInRangeOfPoint(playerid, 2.5, PickupInfo[i][UlazX], PickupInfo[i][UlazY], PickupInfo[i][UlazZ]))
  50. {
  51. SetPlayerPos(playerid, PickupInfo[i][IzlazX], PickupInfo[i][IzlazY], PickupInfo[i][IzlazZ]);
  52. SetPlayerInterior(playerid, PickupInfo[i][pInterior]);
  53. SetPlayerVirtualWorld(playerid, PickupInfo[i][pVWI]);
  54. }
  55. else if(IsPlayerInRangeOfPoint(playerid, 2.5, PickupInfo[i][IzlazX], PickupInfo[i][IzlazY], PickupInfo[i][IzlazZ]))
  56. {
  57. SetPlayerPos(playerid, PickupInfo[i][UlazX], PickupInfo[i][UlazY], PickupInfo[i][UlazZ]);
  58. SetPlayerInterior(playerid, 0);
  59. SetPlayerVirtualWorld(playerid, PickupInfo[i][pVWU]);
  60. }
  61. }
  62. }
  63. return 1;
  64. }
  65. public OnFilterScriptInit()
  66. {
  67. for(new id = 0; id < sizeof(PickupInfo); id++)
  68. {
  69. new pFile[50];
  70. format(pFile, sizeof(pFile), PFile, id);
  71. if(fexist(pFile))
  72. {
  73. INI_ParseFile(pFile, "UcitajPickups", .bExtra = true, .extra = id);
  74. upickup = CreatePickup(PickupInfo[id][Model], 1, PickupInfo[id][UlazX], PickupInfo[id][UlazY], PickupInfo[id][UlazZ], -1);
  75. ipickup = CreatePickup(PickupInfo[id][Model], 1, PickupInfo[id][IzlazX], PickupInfo[id][IzlazY], PickupInfo[id][IzlazZ], -1);
  76. new str[80];
  77. format(str,sizeof(str), "%s", PickupInfo[id][pText]);
  78. label[upickup] = Create3DTextLabel(str, PickupInfo[PravljeniPickup][BojaTexta], PickupInfo[id][UlazX], PickupInfo[id][UlazY], PickupInfo[id][UlazZ], 10.0, 0, 0);
  79. }
  80. }
  81. return 1;
  82. }
  83. public OnPlayerPickUpPickup(playerid, pickupid)
  84. {
  85. if(pickupid == upickup) return 0;
  86. if(pickupid == ipickup) return 0;
  87. if(pickupid == PravljeniPickupIzlaz) return 0;
  88. return 1;
  89. }
  90. forward UcitajPickups(id, name[], value[]);
  91. public UcitajPickups(id, name[], value[])
  92. {
  93. INI_Float("Ulaz X", PickupInfo[id][UlazX]);
  94. INI_Float("Ulaz Y", PickupInfo[id][UlazY]);
  95. INI_Float("Ulaz Z", PickupInfo[id][UlazZ]);
  96. INI_Float("Izlaz X", PickupInfo[id][IzlazX]);
  97. INI_Float("Izlaz Y", PickupInfo[id][IzlazY]);
  98. INI_Float("Izlaz Z", PickupInfo[id][IzlazZ]);
  99. INI_Int("Model", PickupInfo[id][Model]);
  100. INI_Int("Interior", PickupInfo[id][pInterior]);
  101. INI_Int("Text", PickupInfo[id][pText]);
  102. INI_Int("Boja Texta", PickupInfo[id][BojaTexta]);
  103. INI_Int("Virtual World Ulaz", PickupInfo[id][pVWU]);
  104. INI_Int("Virtual World Izlaz", PickupInfo[id][pVWI]);
  105. return 1;
  106. }
  107.  
  108. // = CMDS = //
  109.  
  110. YCMD:kreirajpickup(playerid, params[], help)
  111. {
  112. #pragma unused help
  113. if(IsPlayerAdmin(playerid))
  114. {
  115. new model,text[80],inte,Float:iX,Float:iY,Float:iZ,Float:X,Float:Y,Float:Z,bt,vw;
  116. if(sscanf(params, "ds[80]dfffdd", model, text, bt, iX, iY, iZ, inte, vw))
  117. {
  118. SCM(playerid, -1, "Koristite /kreirajpickup [Model] [Text] [Boja texta] [Izlaz X] [Izlaz Y] [Izlaz Z] [Interior] [Virtual World]");
  119. SCM(playerid, -1, "Boja 1 - Bela || Boja 2 - Crvena || Boja 3 - Plava || Boja 4 - Narandzasta || Boja 5 - Roza");
  120. SCM(playerid, -1, "Boja 6 - Crna || Boja 7 - Zelena || Boja 8 - Ljubicasta || Boja 9 - Tamno Plava || Boja 10 - Zuta");
  121. }
  122. else if(model > 19999 || model < 1) return SCM(playerid, -1, "Model ne moze biti manji od 1 ili veci od 19999");
  123. GetPlayerPos(playerid, X,Y,Z);
  124. PravljeniPickup = CreatePickup(model, 1, X,Y,Z, -1);
  125. new str[80];
  126. format(str,sizeof(str), "%s", text);
  127. if(bt < 1 || bt > 10) return SCM(playerid, -1, "Boja texta ne moze biti manji od 1 ili veci od 10 !");
  128. if(bt == 1) { label[PravljeniPickup] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0xFFFFFFFF; }
  129. if(bt == 2) { label[PravljeniPickup] = Create3DTextLabel(str, 0xFF1414FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0xFF1414FF; }
  130. if(bt == 3) { label[PravljeniPickup] = Create3DTextLabel(str, 0x6EF0FFFF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0x6EF0FFFF; }
  131. if(bt == 4) { label[PravljeniPickup] = Create3DTextLabel(str, 0xFF8000FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0xFF8000FF; }
  132. if(bt == 5) { label[PravljeniPickup] = Create3DTextLabel(str, 0xFF0090FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0xFF0090FF; }
  133. if(bt == 6) { label[PravljeniPickup] = Create3DTextLabel(str, 0x000000FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0x000000FF; }
  134. if(bt == 7) { label[PravljeniPickup] = Create3DTextLabel(str, 0x09FF00FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0x09FF00FF; }
  135. if(bt == 8) { label[PravljeniPickup] = Create3DTextLabel(str, 0x9900FFFF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0x9900FFFF; }
  136. if(bt == 9) { label[PravljeniPickup] = Create3DTextLabel(str, 0x0008FFFF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0x0008FFFF; }
  137. if(bt == 10) { label[PravljeniPickup] = Create3DTextLabel(str, 0xF2FF00FF, X,Y,Z, 10.0, 0, 0); PickupInfo[PravljeniPickup][BojaTexta] = 0xF2FF00FF; }
  138. PravljeniPickupIzlaz = CreatePickup(model, 1, iX,iY,iZ, -1);
  139. PickupInfo[PravljeniPickup][UlazX] = X;
  140. PickupInfo[PravljeniPickup][UlazY] = Y;
  141. PickupInfo[PravljeniPickup][UlazZ] = Z;
  142. PickupInfo[PravljeniPickup][IzlazX] = iX;
  143. PickupInfo[PravljeniPickup][IzlazY] = iY;
  144. PickupInfo[PravljeniPickup][IzlazZ] = iZ;
  145. PickupInfo[PravljeniPickup][Model] = model;
  146. PickupInfo[PravljeniPickup][pInterior] = inte;
  147. PickupInfo[PravljeniPickup][pText] = text;
  148. PickupInfo[PravljeniPickup][pVWU] = GetPlayerVirtualWorld(playerid);
  149. PickupInfo[PravljeniPickup][pVWI] = vw;
  150. SavePickup(PravljeniPickup);
  151. }
  152. else return SCM(playerid, -1, "Niste RCON Admin !");
  153. return 1;
  154. }
  155. YCMD:movepickup(playerid, params[], help)
  156. {
  157. #pragma unused help
  158. if(IsPlayerAdmin(playerid))
  159. {
  160. new pFile[50], id, Float:iX,Float:iY,Float:iZ,Float:X,Float:Y,Float:Z, inte, vw;
  161. if(sscanf(params, "dfffdd", id, iX, iY, iZ, inte, vw)) return SCM(playerid, -1, "Koristite /movepickup [ID] [Izlaz X] [Izlaz Y] [Izlaz Z] [Interior] [Virtual World]");
  162. format(pFile,sizeof(pFile), PFile, id);
  163. if(fexist(pFile))
  164. {
  165. GetPlayerPos(playerid, X,Y,Z);
  166. DestroyPickup(id);
  167. Delete3DTextLabel(label[id]);
  168. PravljeniPickup = CreatePickup(PickupInfo[id][Model], 1, X,Y,Z, -1);
  169. new str[80];
  170. format(str,sizeof(str), "%s", PickupInfo[id][pText]);
  171. label[PravljeniPickup] = Create3DTextLabel(str, PickupInfo[PravljeniPickup][BojaTexta], X,Y,Z, 10.0, 0, 0);
  172. PravljeniPickupIzlaz = CreatePickup(PickupInfo[id][Model], 1, iX,iY,iZ, -1);
  173. PickupInfo[PravljeniPickup][UlazX] = X;
  174. PickupInfo[PravljeniPickup][UlazY] = Y;
  175. PickupInfo[PravljeniPickup][UlazZ] = Z;
  176. PickupInfo[PravljeniPickup][IzlazX] = iX;
  177. PickupInfo[PravljeniPickup][IzlazY] = iY;
  178. PickupInfo[PravljeniPickup][IzlazZ] = iZ;
  179. PickupInfo[PravljeniPickup][pInterior] = inte;
  180. PickupInfo[PravljeniPickup][pVWU] = GetPlayerVirtualWorld(playerid);
  181. PickupInfo[PravljeniPickup][pVWI] = vw;
  182. SavePickup(PravljeniPickup);
  183. }
  184. else return SCM(playerid, -1, "Taj ID Pickupa ne postoji !");
  185. }
  186. else return SCM(playerid, -1, "Niste RCON Admin !");
  187. return 1;
  188. }
  189. YCMD:unistipickup(playerid, params[], help)
  190. {
  191. #pragma unused help
  192. if(IsPlayerAdmin(playerid))
  193. {
  194. new pFile[50], id, str[20];
  195. if(sscanf(params, "d", id)) return SCM(playerid, -1, "Koristite /unistipickup [ID]");
  196. format(pFile,sizeof(pFile), PFile, id);
  197. if(fexist(pFile))
  198. {
  199. fremove(pFile);
  200. DestroyPickup(id);
  201. Delete3DTextLabel(label[id]);
  202. format(str,sizeof(str), "Unistili ste pickup ID %d.", id);
  203. SCM(playerid, -1, str);
  204. }
  205. else return SCM(playerid, -1, "Taj ID Pickupa ne postoji !");
  206. }
  207. else return SCM(playerid, -1, "Niste RCON Admin !");
  208. return 1;
  209. }
  210. YCMD:infopickup(playerid, params[], help)
  211. {
  212. #pragma unused help
  213. if(IsPlayerAdmin(playerid))
  214. {
  215. for(new id; id < MAX_PICKUPS; id++)
  216. {
  217. if(IsPlayerInRangeOfPoint(playerid, 2.0, PickupInfo[id][UlazX],PickupInfo[id][UlazY],PickupInfo[id][UlazZ]))
  218. {
  219. new pFile[50];
  220. format(pFile, sizeof(pFile), PFile, id);
  221. if(fexist(pFile))
  222. {
  223. new str[165];
  224. format(str,sizeof(str), "Pickup ID - %d | Model - %d | Pozicija Ulaza - %f,%f,%f | Pozicija Izlaza - %f,%f,%f", id, PickupInfo[id][Model], PickupInfo[id][UlazX],PickupInfo[id][UlazY],PickupInfo[id][UlazZ], PickupInfo[id][IzlazX],PickupInfo[id][IzlazY],PickupInfo[id][IzlazZ]);
  225. SCM(playerid, -1, str);
  226. }
  227. }
  228. }
  229. }
  230. return 1;
  231. }
  232.  
  233. // = STOCK = //
  234.  
  235. stock SavePickup(id)
  236. {
  237. new pFile[100];
  238. format(pFile,sizeof(pFile), PFile, id);
  239. new INI:File = INI_Open(pFile);
  240. INI_WriteFloat(File, "Ulaz X", PickupInfo[id][UlazX]);
  241. INI_WriteFloat(File, "Ulaz Y", PickupInfo[id][UlazY]);
  242. INI_WriteFloat(File, "Ulaz Z", PickupInfo[id][UlazZ]);
  243. INI_WriteFloat(File, "Izlaz X", PickupInfo[id][IzlazX]);
  244. INI_WriteFloat(File, "Izlaz Y", PickupInfo[id][IzlazY]);
  245. INI_WriteFloat(File, "Izlaz Z", PickupInfo[id][IzlazZ]);
  246. INI_WriteInt(File, "Model", PickupInfo[id][Model]);
  247. INI_WriteInt(File, "Interior", PickupInfo[id][pInterior]);
  248. INI_WriteInt(File, "Text", PickupInfo[id][pText]);
  249. INI_WriteInt(File, "Boja Texta", PickupInfo[id][BojaTexta]);
  250. INI_WriteInt(File, "Virtual World Ulaz", PickupInfo[id][pVWU]);
  251. INI_WriteInt(File, "Virtual World Izlaz", PickupInfo[id][pVWI]);
  252. INI_Close(File);
  253. return 1;
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement