Advertisement
Guest User

UPDATE

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