BE-Shomy

BEast - Shomy

Mar 12th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.89 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < YSI\y_commands >
  4. #include < sscanf2 >
  5.  
  6. #define MAX_DRVECE 50
  7. #define DRVO_FILE "/Drva/%d.ini"
  8.  
  9. #define SCM SendClientMessage
  10.  
  11. // 19315
  12.  
  13. enum jInfo {
  14.  
  15. Float:dPosX,
  16. Float:dPosY,
  17. Float:dPosZ,
  18. Float:dRotX,
  19. Float:dRotY,
  20. Float:dRotZ,
  21. Float:sPosX,
  22. Float:sPosY,
  23. Float:sPosZ,
  24. Float:sRotX,
  25. Float:sRotY,
  26. Float:sRotZ,
  27. Float:CP1X,
  28. Float:CP1Y,
  29. Float:CP1Z,
  30. Float:CP2X,
  31. Float:CP2Y,
  32. Float:CP2Z,
  33. Float:CP3X,
  34. Float:CP3Y,
  35. Float:CP3Z,
  36. dObjID,
  37. bool:dSruseno,
  38. dID
  39. }
  40.  
  41. new DrvoInfo[ MAX_DRVECE ][ jInfo ], KreiraDrvo[ MAX_PLAYERS ], bool:KreiraPaloDrvo[ MAX_PLAYERS ], SeceDrvo[ MAX_PLAYERS ], bool:IsekoDrvo[ MAX_PLAYERS ], KreiraCP[ MAX_PLAYERS ], SeceDrvoUKomade[ MAX_PLAYERS ];
  42.  
  43. forward OcitajDrvo(id, name[], value[]);
  44. public OcitajDrvo(id, name[], value[]) {
  45.  
  46. INI_Float("Lokacija_X", DrvoInfo[ id ][ dPosX ]);
  47. INI_Float("Lokacija_Y", DrvoInfo[ id ][ dPosY ]);
  48. INI_Float("Lokacija_Z", DrvoInfo[ id ][ dPosZ ]);
  49. INI_Float("Rotacija_X", DrvoInfo[ id ][ dRotX ]);
  50. INI_Float("Rotacija_Y", DrvoInfo[ id ][ dRotY ]);
  51. INI_Float("Rotacija_Z", DrvoInfo[ id ][ dRotZ ]);
  52. INI_Float("Palo_Lokacija_X", DrvoInfo[ id ][ sPosX ]);
  53. INI_Float("Palo_Lokacija_Y", DrvoInfo[ id ][ sPosY ]);
  54. INI_Float("Palo_Lokacija_Z", DrvoInfo[ id ][ sPosZ ]);
  55. INI_Float("Palo_Rotacija_X", DrvoInfo[ id ][ sRotX ]);
  56. INI_Float("Palo_Rotacija_Y", DrvoInfo[ id ][ sRotY ]);
  57. INI_Float("Palo_Rotacija_Z", DrvoInfo[ id ][ sRotZ ]);
  58. INI_Float("Checkpoint1_X", DrvoInfo[ id ][ CP1X ]);
  59. INI_Float("Checkpoint1_Y", DrvoInfo[ id ][ CP1Y ]);
  60. INI_Float("Checkpoint1_Z", DrvoInfo[ id ][ CP1Z ]);
  61. INI_Float("Checkpoint2_X", DrvoInfo[ id ][ CP2X ]);
  62. INI_Float("Checkpoint2_Y", DrvoInfo[ id ][ CP2Y ]);
  63. INI_Float("Checkpoint2_Z", DrvoInfo[ id ][ CP2Z ]);
  64. INI_Float("Checkpoint3_X", DrvoInfo[ id ][ CP3X ]);
  65. INI_Float("Checkpoint3_Y", DrvoInfo[ id ][ CP3Y ]);
  66. INI_Float("Checkpoint3_Z", DrvoInfo[ id ][ CP3Z ]);
  67. INI_Int("Object_ID", DrvoInfo[ id ][ dObjID ]);
  68. return 1;
  69. }
  70. public OnGameModeInit() {
  71.  
  72. for(new i; i < MAX_DRVECE; i++) {
  73. new dFile[ 60 ];
  74. format(dFile, sizeof(dFile), DRVO_FILE, i);
  75. if(fexist(dFile)) {
  76. INI_ParseFile(dFile, "OcitajDrvo", .bExtra = true, .extra = i);
  77. DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ],DrvoInfo[ i ][ dRotX ],DrvoInfo[ i ][ dRotY ],DrvoInfo[ i ][ dRotZ ], 300.0);
  78. }
  79. }
  80. return 1;
  81. }
  82. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  83.  
  84. if(response == EDIT_RESPONSE_FINAL) {
  85. if(KreiraDrvo[ playerid ] != 0) {
  86. new i = KreiraDrvo[ playerid ];
  87. if(!KreiraPaloDrvo[ playerid ]) {
  88. DrvoInfo[ i ][ dPosX ] = fX;
  89. DrvoInfo[ i ][ dPosY ] = fY;
  90. DrvoInfo[ i ][ dPosZ ] = fZ;
  91. DrvoInfo[ i ][ dRotX ] = fRotX;
  92. DrvoInfo[ i ][ dRotY ] = fRotY;
  93. DrvoInfo[ i ][ dRotZ ] = fRotZ;
  94. DestroyObject(DrvoInfo[ i ][ dID ]);
  95. DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],fX,fY,fZ, fRotX, fRotY, fRotZ, 300.0);
  96. EditObject(playerid, DrvoInfo[ i ][ dID ]);
  97. SCM(playerid, -1, "Sada sacuvajte kordinate palog drveta.");
  98. KreiraPaloDrvo[ playerid ] = true;
  99. }
  100. else {
  101. DrvoInfo[ i ][ sPosX ] = fX;
  102. DrvoInfo[ i ][ sPosY ] = fY;
  103. DrvoInfo[ i ][ sPosZ ] = fZ;
  104. DrvoInfo[ i ][ sRotX ] = fRotX;
  105. DrvoInfo[ i ][ sRotY ] = fRotY;
  106. DrvoInfo[ i ][ sRotZ ] = fRotZ;
  107. SCM(playerid, -1, "Sada sacuvajte pozicije 3 CP, dugme Y.");
  108. SCM(playerid, -1, "CPovi se koriste za secenje drveta u komade.");
  109. SCM(playerid, -1, "Za vise informacija, javiti se Shomiju.");
  110. SaveDrvo(i);
  111. KreiraPaloDrvo[ playerid ] = false;
  112. KreiraCP[ playerid ] = 1;
  113. }
  114. }
  115. }
  116. return 1;
  117. }
  118. forward SecaTimer(playerid);
  119. public SecaTimer(playerid) {
  120.  
  121. new i = SeceDrvo[ playerid ];
  122. MoveObject(DrvoInfo[ i ][ dID ],DrvoInfo[ i ][ sPosX ],DrvoInfo[ i ][ sPosY ],DrvoInfo[ i ][ sPosZ ], 1.0, DrvoInfo[ i ][ sRotX ],DrvoInfo[ i ][ sRotY ],DrvoInfo[ i ][ sRotZ ]);
  123. ClearAnimations(playerid);
  124. TogglePlayerControllable(playerid, true);
  125. SCM(playerid, -1, "Isecite drvo na komade.");
  126. SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP1X ], DrvoInfo[ i ][ CP1Y ], DrvoInfo[ i ][ CP1Z ], 1.5);
  127. DrvoInfo[ i ][ dSruseno ] = true;
  128. SeceDrvoUKomade[ playerid ] = 1;
  129. return 1;
  130. }
  131. forward DrvoKomadiTimer(playerid);
  132. public DrvoKomadiTimer(playerid) {
  133.  
  134. new i = SeceDrvo[ playerid ];
  135. if(SeceDrvoUKomade[ playerid ] == 1) {
  136. SeceDrvoUKomade[ playerid ]++;
  137. SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP2X ], DrvoInfo[ i ][ CP2Y ], DrvoInfo[ i ][ CP2Z ], 1.5);
  138. TogglePlayerControllable(playerid, true);
  139. }
  140. else if(SeceDrvoUKomade[ playerid ] == 2) {
  141. SeceDrvoUKomade[ playerid ]++;
  142. SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP3X ], DrvoInfo[ i ][ CP3Y ], DrvoInfo[ i ][ CP3Z ], 1.5);
  143. TogglePlayerControllable(playerid, true);
  144. }
  145. else if(SeceDrvoUKomade[ playerid ] == 3) {
  146. SeceDrvoUKomade[ playerid ] = 0;
  147. TogglePlayerControllable(playerid, true);
  148. IsekoDrvo[ playerid ] = true;
  149. SCM(playerid, -1, "Utovarite drvo u kamion ( LMB )");
  150. DestroyObject(DrvoInfo[ i ][ dID ]);
  151. SetPlayerAttachedObject(playerid, 1, 1463, 1,0.20,0.36,0.0,0.0,90.0, 0.0, 0.4, 0.3, 0.6);
  152. ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
  153. GivePlayerWeapon(playerid, 9, 0);
  154. }
  155. return 1;
  156. }
  157. forward ApplyAnim(playerid);
  158. public ApplyAnim(playerid) {
  159. if(SeceDrvoUKomade[ playerid ] == 0) return ApplyAnimation(playerid,"CHAINSAW","WEAPON_csaw",4.1,1,0,0,0,30000);
  160. else return ApplyAnimation(playerid,"CHAINSAW","WEAPON_csaw",4.1,1,0,0,0,15000);
  161. }
  162. public OnPlayerEnterCheckpoint(playerid) {
  163.  
  164. if(SeceDrvoUKomade[ playerid ] == 1) {
  165. if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
  166. SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
  167. TogglePlayerControllable(playerid, false);
  168. DisablePlayerCheckpoint(playerid);
  169. SetTimerEx("ApplyAnim", 500, false, "i", playerid);
  170.  
  171. }
  172. else if(SeceDrvoUKomade[ playerid ] == 2) {
  173. if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
  174. SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
  175. TogglePlayerControllable(playerid, false);
  176. DisablePlayerCheckpoint(playerid);
  177. SetTimerEx("ApplyAnim", 500, false, "i", playerid);
  178. }
  179. else if(SeceDrvoUKomade[ playerid ] == 3) {
  180. if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
  181. SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
  182. TogglePlayerControllable(playerid, false);
  183. DisablePlayerCheckpoint(playerid);
  184. SetTimerEx("ApplyAnim", 500, false, "i", playerid);
  185. }
  186. return 1;
  187. }
  188. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
  189.  
  190. if(newkeys == KEY_YES) {
  191. if(KreiraDrvo[ playerid ] != 0) {
  192. new Float:X, Float:Y, Float:Z, i = KreiraDrvo[ playerid ];
  193. GetPlayerPos(playerid, X,Y,Z);
  194. if(KreiraCP[ playerid ] == 1) {
  195. DrvoInfo[ i ][ CP1X ] = X;
  196. DrvoInfo[ i ][ CP1Y ] = Y;
  197. DrvoInfo[ i ][ CP1Z ] = Z;
  198. KreiraCP[ playerid ] = 2;
  199. SCM(playerid, -1, "Sada sacuvajte kordinate 2. CP-a.");
  200. }
  201. else if(KreiraCP[ playerid ] == 2) {
  202. DrvoInfo[ i ][ CP2X ] = X;
  203. DrvoInfo[ i ][ CP2Y ] = Y;
  204. DrvoInfo[ i ][ CP2Z ] = Z;
  205. KreiraCP[ playerid ] = 3;
  206. SCM(playerid, -1, "Sada sacuvajte kordinate 3. CP-a.");
  207. }
  208. else if(KreiraCP[ playerid ] == 3) {
  209. DrvoInfo[ i ][ CP3X ] = X;
  210. DrvoInfo[ i ][ CP3Y ] = Y;
  211. DrvoInfo[ i ][ CP3Z ] = Z;
  212. KreiraCP[ playerid ] = 0;
  213. SCM(playerid, -1, "Zavrsili ste kreiranje drveta.");
  214. DestroyObject(DrvoInfo[ i ][ dID ]);
  215. DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ],DrvoInfo[ i ][ dRotX ],DrvoInfo[ i ][ dRotY ],DrvoInfo[ i ][ dRotZ ], 300.0);
  216. SaveDrvo(i);
  217. KreiraDrvo[ playerid ] = 0;
  218. }
  219. }
  220. }
  221. return 1;
  222. }
  223. public OnPlayerSpawn(playerid) {
  224.  
  225. PreloadAnimLib(playerid,"BOMBER");
  226. PreloadAnimLib(playerid,"RAPPING");
  227. PreloadAnimLib(playerid,"SHOP");
  228. PreloadAnimLib(playerid,"BEACH");
  229. PreloadAnimLib(playerid,"SMOKING");
  230. PreloadAnimLib(playerid,"FOOD");
  231. PreloadAnimLib(playerid,"ON_LOOKERS");
  232. PreloadAnimLib(playerid,"DEALER");
  233. PreloadAnimLib(playerid,"CRACK");
  234. PreloadAnimLib(playerid,"CARRY");
  235. PreloadAnimLib(playerid,"CHAINSAW");
  236. PreloadAnimLib(playerid,"COP_AMBIENT");
  237. PreloadAnimLib(playerid,"PARK");
  238. PreloadAnimLib(playerid,"INT_HOUSE");
  239. PreloadAnimLib(playerid,"FOOD" );
  240. PreloadAnimLib(playerid,"PED" );
  241. return 1;
  242. }
  243.  
  244. YCMD:kreirajdrvo(playerid, params[], help) {
  245.  
  246. #pragma unused help
  247.  
  248. new i = NextDrvoID(MAX_DRVECE), Float:X, Float:Y, Float:Z, obj;
  249. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  250. if(KreiraDrvo[ playerid ] != 0) return SCM(playerid, -1, "Vec kreirate drvo.");
  251. if(sscanf(params, "d", obj)) return SCM(playerid, -1, "/kreirajdrvo [Object ID]");
  252. SCM(playerid, -1, "Zapoceli ste kreiranje drveta.");
  253. GetPlayerPos(playerid, X,Y,Z);
  254. DrvoInfo[ i ][ dID ] = CreateObject(obj,X+3,Y+3,Z, 0.0, 0.0, 0.0, 300.0);
  255. EditObject(playerid, DrvoInfo[ i ][ dID ]);
  256. DrvoInfo[ i ][ dObjID ] = obj;
  257. KreiraDrvo[ playerid ] = i;
  258. return 1;
  259. }
  260. YCMD:seci(playerid, params[], help) {
  261.  
  262. for(new i; i < MAX_DRVECE; i++) {
  263. if(IsPlayerInRangeOfPoint(playerid, 5.0, DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ])) {
  264. if(DrvoInfo[ i ][ dSruseno ]) return SCM(playerid, -1, "To drvo je vec sruseno.");
  265. if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
  266. SetTimerEx("SecaTimer", 30000, false, "i", playerid);
  267. SeceDrvo[ playerid ] = i;
  268. ClearAnimations(playerid);
  269. SetTimerEx("ApplyAnim", 500, false, "i", playerid);
  270. TogglePlayerControllable(playerid, false);
  271. }
  272. }
  273. return 1;
  274. }
  275. YCMD:test(playerid, params[], help) return GivePlayerWeapon(playerid, 9, 500);
  276. stock NextDrvoID(const len) {
  277. new id = (-1);
  278. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  279. provjera = ( loop+1 );
  280. format( Data_, ( sizeof Data_ ), DRVO_FILE, provjera );
  281. if(!fexist(Data_)) {
  282. id = ( provjera );
  283. break; } }
  284. return ( id );
  285. }
  286. stock SaveDrvo(id) {
  287. new jFile[ 60 ];
  288. format(jFile, sizeof(jFile), DRVO_FILE, id);
  289. new INI:File = INI_Open(jFile);
  290. INI_WriteFloat(File, "Lokacija_X", DrvoInfo[ id ][ dPosX ]);
  291. INI_WriteFloat(File, "Lokacija_Y", DrvoInfo[ id ][ dPosY ]);
  292. INI_WriteFloat(File, "Lokacija_Z", DrvoInfo[ id ][ dPosZ ]);
  293. INI_WriteFloat(File, "Rotacija_X", DrvoInfo[ id ][ dRotX ]);
  294. INI_WriteFloat(File, "Rotacija_Y", DrvoInfo[ id ][ dRotY ]);
  295. INI_WriteFloat(File, "Rotacija_Z", DrvoInfo[ id ][ dRotZ ]);
  296. INI_WriteFloat(File, "Palo_Lokacija_X", DrvoInfo[ id ][ sPosX ]);
  297. INI_WriteFloat(File, "Palo_Lokacija_Y", DrvoInfo[ id ][ sPosY ]);
  298. INI_WriteFloat(File, "Palo_Lokacija_Z", DrvoInfo[ id ][ sPosZ ]);
  299. INI_WriteFloat(File, "Palo_Rotacija_X", DrvoInfo[ id ][ sRotX ]);
  300. INI_WriteFloat(File, "Palo_Rotacija_Y", DrvoInfo[ id ][ sRotY ]);
  301. INI_WriteFloat(File, "Palo_Rotacija_Z", DrvoInfo[ id ][ sRotZ ]);
  302. INI_WriteFloat(File, "Checkpoint1_X", DrvoInfo[ id ][ CP1X ]);
  303. INI_WriteFloat(File, "Checkpoint1_Y", DrvoInfo[ id ][ CP1Y ]);
  304. INI_WriteFloat(File, "Checkpoint1_Z", DrvoInfo[ id ][ CP1Z ]);
  305. INI_WriteFloat(File, "Checkpoint2_X", DrvoInfo[ id ][ CP2X ]);
  306. INI_WriteFloat(File, "Checkpoint2_Y", DrvoInfo[ id ][ CP2Y ]);
  307. INI_WriteFloat(File, "Checkpoint2_Z", DrvoInfo[ id ][ CP2Z ]);
  308. INI_WriteFloat(File, "Checkpoint3_X", DrvoInfo[ id ][ CP3X ]);
  309. INI_WriteFloat(File, "Checkpoint3_Y", DrvoInfo[ id ][ CP3Y ]);
  310. INI_WriteFloat(File, "Checkpoint3_Z", DrvoInfo[ id ][ CP3Z ]);
  311. INI_WriteInt(File, "Object_ID", DrvoInfo[ id ][ dObjID ]);
  312. INI_Close(File);
  313. }
  314. stock PreloadAnimLib(playerid, animlib[])
  315. ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
Advertisement
Add Comment
Please, Sign In to add comment