Advertisement
Guest User

Dinamicno kreiranje pickupa sa Ulaz/Izlaz By Shomy

a guest
Nov 15th, 2017
594
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 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. }
  31.  
  32. // = NEW = //
  33.  
  34. new PickupInfo[MAX_PICKUPS][pInfo];
  35. new Text3D:label[sizeof(PickupInfo)];
  36. new ipickup,upickup,PravljeniPickupIzlaz;
  37.  
  38. // = PUBLICS = //
  39.  
  40. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  41. {
  42. if(newkeys == KEY_SECONDARY_ATTACK )
  43. {
  44. for(new i; i < MAX_PICKUPS; i++)
  45. {
  46. if(IsPlayerInRangeOfPoint(playerid, 2.5, PickupInfo[i][UlazX], PickupInfo[i][UlazY], PickupInfo[i][UlazZ]))
  47. {
  48. SetPlayerPos(playerid, PickupInfo[i][IzlazX], PickupInfo[i][IzlazY], PickupInfo[i][IzlazZ]);
  49. SetPlayerInterior(playerid, PickupInfo[i][pInterior]);
  50. }
  51. else if(IsPlayerInRangeOfPoint(playerid, 2.5, PickupInfo[i][IzlazX], PickupInfo[i][IzlazY], PickupInfo[i][IzlazZ]))
  52. {
  53. SetPlayerPos(playerid, PickupInfo[i][UlazX], PickupInfo[i][UlazY], PickupInfo[i][UlazZ]);
  54. SetPlayerInterior(playerid, 0);
  55. }
  56. }
  57. }
  58. return 1;
  59. }
  60. public OnFilterScriptInit()
  61. {
  62. for(new id = 0; id < sizeof(PickupInfo); id++)
  63. {
  64. new pFile[50];
  65. format(pFile, sizeof(pFile), PFile, id);
  66. if(fexist(pFile))
  67. {
  68. INI_ParseFile(pFile, "UcitajPickups", .bExtra = true, .extra = id);
  69. upickup = CreatePickup(PickupInfo[id][Model], 1, PickupInfo[id][UlazX], PickupInfo[id][UlazY], PickupInfo[id][UlazZ], -1);
  70. ipickup = CreatePickup(PickupInfo[id][Model], 1, PickupInfo[id][IzlazX], PickupInfo[id][IzlazY], PickupInfo[id][IzlazZ], -1);
  71. new str[80];
  72. format(str,sizeof(str), "%s", PickupInfo[id][pText]);
  73. label[upickup] = Create3DTextLabel(str, 0xFFFFFFFF, PickupInfo[id][UlazX], PickupInfo[id][UlazY], PickupInfo[id][UlazZ], 10.0, 0, 0);
  74. }
  75. }
  76. return 1;
  77. }
  78. public OnPlayerPickUpPickup(playerid, pickupid)
  79. {
  80. if(pickupid == upickup) return 0;
  81. if(pickupid == ipickup) return 0;
  82. if(pickupid == PravljeniPickupIzlaz) return 0;
  83. return 1;
  84. }
  85. forward UcitajPickups(id, name[], value[]);
  86. public UcitajPickups(id, name[], value[])
  87. {
  88. INI_Float("Ulaz X", PickupInfo[id][UlazX]);
  89. INI_Float("Ulaz Y", PickupInfo[id][UlazY]);
  90. INI_Float("Ulaz Z", PickupInfo[id][UlazZ]);
  91. INI_Float("Izlaz X", PickupInfo[id][IzlazX]);
  92. INI_Float("Izlaz Y", PickupInfo[id][IzlazY]);
  93. INI_Float("Izlaz Z", PickupInfo[id][IzlazZ]);
  94. INI_Int("Model", PickupInfo[id][Model]);
  95. INI_Int("Interior", PickupInfo[id][pInterior]);
  96. INI_Int("Text", PickupInfo[id][pText]);
  97. return 1;
  98. }
  99.  
  100. // = CMD = //
  101.  
  102. YCMD:kreirajpickup(playerid, params[], help)
  103. {
  104. #pragma unused help
  105. if(IsPlayerAdmin(playerid))
  106. {
  107. new model,text[80],inte,Float:iX,Float:iY,Float:iZ,Float:X,Float:Y,Float:Z, PravljeniPickup;
  108. if(sscanf(params, "ds[80]fffd", model, text, iX, iY, iZ,inte)) return SCM(playerid, -1, "Koristite /kreirajpickup [Model] [Text] [Izlaz X] [Izlaz Y] [Izlaz Z] [Interior]");
  109. if(model > 19999 || model < 1) return SCM(playerid, -1, "Model ne moze biti manji od 1 ili veci od 19999");
  110. GetPlayerPos(playerid, X,Y,Z);
  111. PravljeniPickup = CreatePickup(model, 1, X,Y,Z, -1);
  112. new str[80];
  113. format(str,sizeof(str), "%s", text);
  114. label[PravljeniPickup] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 10.0, 0, 0);
  115. PravljeniPickupIzlaz = CreatePickup(model, 1, iX,iY,iZ, -1);
  116. PickupInfo[PravljeniPickup][UlazX] = X;
  117. PickupInfo[PravljeniPickup][UlazY] = Y;
  118. PickupInfo[PravljeniPickup][UlazZ] = Z;
  119. PickupInfo[PravljeniPickup][IzlazX] = iX;
  120. PickupInfo[PravljeniPickup][IzlazY] = iY;
  121. PickupInfo[PravljeniPickup][IzlazZ] = iZ;
  122. PickupInfo[PravljeniPickup][Model] = model;
  123. PickupInfo[PravljeniPickup][pInterior] = inte;
  124. PickupInfo[PravljeniPickup][pText] = text;
  125. SavePickup(PravljeniPickup);
  126. }
  127. else return SCM(playerid, -1, "Niste RCON Admin !");
  128. return 1;
  129. }
  130.  
  131. // = STOCK = //
  132.  
  133. stock SavePickup(id)
  134. {
  135. new pFile[100];
  136. format(pFile,sizeof(pFile), PFile, id);
  137. new INI:File = INI_Open(pFile);
  138. INI_WriteFloat(File, "Ulaz X", PickupInfo[id][UlazX]);
  139. INI_WriteFloat(File, "Ulaz Y", PickupInfo[id][UlazY]);
  140. INI_WriteFloat(File, "Ulaz Z", PickupInfo[id][UlazZ]);
  141. INI_WriteFloat(File, "Izlaz X", PickupInfo[id][IzlazX]);
  142. INI_WriteFloat(File, "Izlaz Y", PickupInfo[id][IzlazY]);
  143. INI_WriteFloat(File, "Izlaz Z", PickupInfo[id][IzlazZ]);
  144. INI_WriteInt(File, "Model", PickupInfo[id][Model]);
  145. INI_WriteInt(File, "Interior", PickupInfo[id][pInterior]);
  146. INI_WriteInt(File, "Text", PickupInfo[id][pText]);
  147. INI_Close(File);
  148. return 1;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement