Advertisement
Guest User

Untitled

a guest
Jul 25th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.88 KB | None | 0 0
  1. #include <YSI\y_hooks>
  2.  
  3. /*
  4. ######## ######## ######## #### ## ## ######## ######
  5. ## ## ## ## ## ### ## ## ## ##
  6. ## ## ## ## ## #### ## ## ##
  7. ## ## ###### ###### ## ## ## ## ###### ######
  8. ## ## ## ## ## ## #### ## ##
  9. ## ## ## ## ## ## ### ## ## ##
  10. ######## ######## ## #### ## ## ######## ######
  11. */
  12.  
  13. #define MAX_FIRE_ACCEPTIONS (5)
  14.  
  15. #define DEFAULT_FIRE_HEALTH 250.0
  16. #define FIRE_STREAM_DISTANCE 85.0
  17. #define FIRE_STREAM_DISTANCE_INT 9.5
  18. #define PI 3.14159265359
  19.  
  20. // Fire Types
  21. #define FIRE_TYPE_NORMAL (0)
  22. #define FIRE_TYPE_CAR (1)
  23. #define FIRE_TYPE_HOUSE (2)
  24. #define FIRE_TYPE_BIZNIS (3)
  25.  
  26.  
  27. /*
  28. ## ## ### ######## ######
  29. ## ## ## ## ## ## ## ##
  30. ## ## ## ## ## ## ##
  31. ## ## ## ## ######## ######
  32. ## ## ######### ## ## ##
  33. ## ## ## ## ## ## ## ##
  34. ### ## ## ## ## ######
  35. */
  36. enum E_FIRE_DATA
  37. {
  38. Float:fiPosX,
  39. Float:fiPosY,
  40. Float:fiPosZ,
  41. fiType,
  42. fiAccepted,
  43. fiTime,
  44. fiFlames
  45. }
  46. static stock
  47. FireInfo[ MAX_FIRES ][ E_FIRE_DATA ];
  48.  
  49. enum E_FLAME_DATA
  50. {
  51. fFireId,
  52. Float:fPosX,
  53. Float:fPosY,
  54. Float:fPosZ,
  55. Float:fHealth,
  56. fViwo,
  57. fInterior,
  58. fFireObject,
  59. fSmokeObject
  60. }
  61. static stock
  62. FlameInfo[ MAX_FLAMES ][ E_FLAME_DATA ];
  63.  
  64. new
  65. Text3D:Test[ MAX_FLAMES ],
  66. PlayerText:FireLocationTd[MAX_PLAYERS] = { PlayerText:INVALID_TEXT_DRAW, ... },
  67. PlayerText:FireTimeTd[MAX_PLAYERS] = { PlayerText:INVALID_TEXT_DRAW, ... },
  68. PlayerText:FireMissionTd[MAX_PLAYERS] = { PlayerText:INVALID_TEXT_DRAW, ... };
  69.  
  70. new
  71. Bit1: gr_PlayerRamDoor <MAX_PLAYERS>,
  72. Bit8: gr_PlayerRamDoorCnt<MAX_PLAYERS>;
  73.  
  74. static stock
  75. bool:PlayerInFireCP[ MAX_PLAYERS ],
  76. PlayerFireCP[ MAX_PLAYERS ],
  77. PlayerFireTime[ MAX_PLAYERS ],
  78. PlayerFireTimer[ MAX_PLAYERS ],
  79. PlayerAcceptedFire[ MAX_PLAYERS ];
  80.  
  81. /*
  82. ###### ######## ####### ###### ## ##
  83. ## ## ## ## ## ## ## ## ##
  84. ## ## ## ## ## ## ##
  85. ###### ## ## ## ## #####
  86. ## ## ## ## ## ## ##
  87. ## ## ## ## ## ## ## ## ##
  88. ###### ## ####### ###### ## ##
  89. */
  90. ///////////////////////////////////////////////////////////
  91.  
  92. stock ResetFireArrays(playerid)
  93. {
  94. DestroyFireManTDs(playerid);
  95.  
  96. PlayerInFireCP[ playerid ] = false;
  97. DestroyDynamicCP( PlayerFireCP[ playerid ] );
  98. PlayerFireTime[ playerid ] = 0;
  99. KillTimer( PlayerFireTimer[ playerid ] );
  100. PlayerAcceptedFire[ playerid ] = -1;
  101.  
  102. Bit1_Set( gr_PlayerRamDoor, playerid, false );
  103. Bit8_Set( gr_PlayerRamDoorCnt, playerid, 0 );
  104. }
  105.  
  106. /*
  107. d88888b db .d8b. .88b d88. d88888b .d8888.
  108. 88' 88 d8' `8b 88'YbdP`88 88' 88' YP
  109. 88ooo 88 88ooo88 88 88 88 88ooooo `8bo.
  110. 88~~~ 88 88~~~88 88 88 88 88~~~~~ `Y8b.
  111. 88 88booo. 88 88 88 88 88 88. db 8D
  112. YP Y88888P YP YP YP YP YP Y88888P `8888Y'
  113. */
  114. stock static GetFlameId()
  115. {
  116. new
  117. flameid = -1;
  118. for(new i=0; i < MAX_FLAMES; i++) {
  119. if( !FlameInfo[ i ][ fHealth ] && FlameInfo[ i ][ fPosX ] == 0.0 ) {
  120. flameid = i;
  121. break;
  122. }
  123. }
  124. return flameid;
  125. }
  126.  
  127. stock CreateServerFlame(fireid, Float:X, Float:Y, Float:Health = DEFAULT_FIRE_HEALTH, Interior, VirtualWorld)
  128. {
  129. new
  130. flameid = GetFlameId();
  131. if( flameid == -1 ) return 0;
  132.  
  133. new
  134. Float:Z;
  135. MapAndreas_FindZ_For2DCoord(X, Y, Z);
  136.  
  137. // Enum set
  138. FlameInfo[ flameid ][ fPosX ] = X;
  139. FlameInfo[ flameid ][ fPosY ] = Y;
  140. FlameInfo[ flameid ][ fPosZ ] = Z;
  141. FlameInfo[ flameid ][ fViwo ] = VirtualWorld;
  142. FlameInfo[ flameid ][ fInterior ] = Interior;
  143. FlameInfo[ flameid ][ fHealth ] = Health;
  144. FlameInfo[ flameid ][ fFireId ] = fireid;
  145.  
  146. // Streamer
  147. FlameInfo[ flameid ][ fFireObject ] = CreateDynamicObject(18691, FlameInfo[ flameid ][ fPosX ], FlameInfo[ flameid ][ fPosY ], FlameInfo[ flameid ][ fPosZ ], 0.0, 0.0, 0.0, FlameInfo[ flameid ][ fViwo ], FlameInfo[ flameid ][ fInterior ], -1, FIRE_STREAM_DISTANCE );
  148. FlameInfo[ flameid ][ fSmokeObject ] = CreateDynamicObject(18727, FlameInfo[ flameid ][ fPosX ], FlameInfo[ flameid ][ fPosY ], FlameInfo[ flameid ][ fPosZ ], 0.0, 0.0, 0.0, FlameInfo[ flameid ][ fViwo ], FlameInfo[ flameid ][ fInterior ], -1, FIRE_STREAM_DISTANCE-5.0 );
  149.  
  150. new
  151. tmpString[64];
  152. format(tmpString, 64, "%f", FlameInfo[ flameid ][ fHealth ]);
  153. Test[ flameid ] = Create3DTextLabel(tmpString, -1, X, Y, Z, 20.0, VirtualWorld, 0);
  154.  
  155. // Iterator
  156. Iter_Add(Flames, flameid);
  157. return 1;
  158. }
  159.  
  160. stock DestroyServerFlame(flameid)
  161. {
  162. FireInfo[ FlameInfo[ flameid ][ fFireId ] ][ fiFlames ]--;
  163. if( !FireInfo[ FlameInfo[ flameid ][ fFireId ] ][ fiFlames ] ) {
  164. foreach(new playerid : Player) {
  165. if( IsFDMember(playerid) ) {
  166. if( PlayerAcceptedFire[ playerid ] == FlameInfo[ flameid ][ fFireId ] ) {
  167. if( PlayerInFireCP[ playerid ] ) {
  168. GameTextForPlayer(playerid, "~g~+150$", 1500, 1);
  169. AC_GivePlayerMoney(playerid, 150);
  170. } else {
  171. DestroyFireManTDs(playerid);
  172. KillTimer( PlayerFireTimer[ playerid ] );
  173. PlayerFireTime[ playerid ] = 0;
  174. DestroyDynamicCP( PlayerFireCP[playerid] );
  175. }
  176. ResetFireArrays(playerid);
  177. }
  178. }
  179. }
  180. }
  181.  
  182. // Enum set
  183. FlameInfo[ flameid ][ fFireId ] = -1;
  184. FlameInfo[ flameid ][ fPosX ] = 0.0;
  185. FlameInfo[ flameid ][ fPosY ] = 0.0;
  186. FlameInfo[ flameid ][ fPosZ ] = 0.0;
  187. FlameInfo[ flameid ][ fViwo ] = 0;
  188. FlameInfo[ flameid ][ fInterior ] = 0;
  189. FlameInfo[ flameid ][ fHealth ] = 0.0;
  190.  
  191. // Streamer
  192. DestroyDynamicObject( FlameInfo[ flameid ][ fFireObject ] );
  193. FlameInfo[ flameid ][ fFireObject ] = INVALID_OBJECT_ID;
  194.  
  195. DestroyDynamicObject( FlameInfo[ flameid ][ fSmokeObject ] );
  196. FlameInfo[ flameid ][ fSmokeObject ] = INVALID_OBJECT_ID;
  197.  
  198. // Iterator
  199. Iter_Remove(Flames, flameid);
  200. return 1;
  201. }
  202.  
  203. /*
  204. d88888b d888888b d8888b. d88888b .d8888.
  205. 88' `88' 88 `8D 88' 88' YP
  206. 88ooo 88 88oobY' 88ooooo `8bo.
  207. 88~~~ 88 88`8b 88~~~~~ `Y8b.
  208. 88 .88. 88 `88. 88. db 8D
  209. YP Y888888P 88 YD Y88888P `8888Y'
  210. */
  211. stock static GetFireId()
  212. {
  213. new
  214. fireid = -1;
  215. for( new i = 0; i < MAX_FIRES; i++ )
  216. {
  217. if( FireInfo[ i ][ fiPosX ] == 0.0 && FireInfo[ i ][ fiPosY ] == 0.0 ) {
  218. fireid = i;
  219. break;
  220. }
  221. }
  222. return fireid;
  223. }
  224.  
  225. stock GetXYInFrontOfXY(Float:X, Float:Y, Float:angle, &Float:x, &Float:y, Float:distance)
  226. {
  227. x = X + (distance * floatsin(-angle, degrees));
  228. y = Y + (distance * floatcos(-angle, degrees));
  229. }
  230.  
  231. stock CreateServerFire(Float:X, Float:Y, Float:Z, type, time, bool:callFireMen)
  232. {
  233. // Getting Id
  234. new
  235. fireid = GetFireId();
  236. if( fireid == -1 ) return 0;
  237.  
  238. // Enum
  239. FireInfo[ fireid ][ fiPosX ] = X;
  240. FireInfo[ fireid ][ fiPosY ] = Y;
  241. FireInfo[ fireid ][ fiPosZ ] = Z;
  242. FireInfo[ fireid ][ fiType ] = type;
  243. FireInfo[ fireid ][ fiAccepted ] = 0;
  244. FireInfo[ fireid ][ fiTime ] = time;
  245. Iter_Add(Fires, fireid);
  246.  
  247. // Kreiranje pozara u krugu
  248. switch( type )
  249. {
  250. case FIRE_TYPE_NORMAL: {
  251. new
  252. Float:radius = floatsqroot( floatpower(X, 2) + floatpower(Y, 2) + floatpower(Z, 2) ),
  253. Float: fX,
  254. Float: fY;
  255.  
  256. CreateServerFlame(fireid, X, Y, 50.0, 0, 0);
  257. for( new i = 1; i < 11; i++ ) {
  258. fX = ( ( PI * minrand(1, i) ) * floatcos( radius / minrand(1, i + 2), degrees) ) + X;
  259. fY = ( ( PI * minrand(1, i) ) * floatsin( radius / minrand(1, i - 1), degrees) ) + Y;
  260.  
  261. CreateServerFlame(fireid, fX, fY, 50.0, 0, 0);
  262. }
  263. FireInfo[ fireid ][ fiFlames ] = 10;
  264. }
  265. case FIRE_TYPE_CAR: {
  266. CreateExplosion(X, Y, Z, 10, 15.0);
  267.  
  268. new
  269. Float:radius = floatsqroot( floatpower(X, 2) + floatpower(Y, 2) + floatpower(Z, 2) ),
  270. Float: fX,
  271. Float: fY;
  272.  
  273. CreateServerFlame(fireid, X, Y, DEFAULT_FIRE_HEALTH, 0, 0);
  274. for( new i = 1; i < 5; i++ ) {
  275. fX = ( ( PI * minrand(1, i) ) * floatcos( radius / minrand(1, i + 1), degrees) ) + X;
  276. fY = ( ( PI * minrand(1, i) ) * floatsin( radius / minrand(1, i), degrees) ) + Y;
  277.  
  278. CreateServerFlame(fireid, fX, fY, DEFAULT_FIRE_HEALTH, 0, 0);
  279. }
  280. FireInfo[ fireid ][ fiFlames ] = 4;
  281. }
  282. case FIRE_TYPE_HOUSE: {
  283.  
  284. new
  285. Float: fX,
  286. Float: fY,
  287. Float: tmpX = 0.6404,
  288. Float: tmpY = 0.1608,
  289. Float: fAngle;
  290.  
  291. CreateServerFlame(fireid, X, Y, DEFAULT_FIRE_HEALTH, 0, 0);
  292. for( new i = 1; i < 10; i++ )
  293. {
  294. fAngle = atan2( tmpX - X, tmpY - Y) - 180.0;
  295. GetXYInFrontOfXY(X, Y, fAngle, fX, fY, 2.0 );
  296.  
  297. fX += ( ( PI * minrand(1, i) ) * floatcos( fAngle / minrand(1, i + 1), degrees) );
  298. fY += ( ( PI * minrand(1, i) ) * floatsin( fAngle / minrand(1, i), degrees) );
  299.  
  300. CreateServerFlame(fireid, fX, fY, DEFAULT_FIRE_HEALTH, 0, 0);
  301. }
  302. FireInfo[ fireid ][ fiFlames ] = 9;
  303. }
  304. case FIRE_TYPE_BIZNIS: {
  305. new
  306. Float: fX,
  307. Float: fY,
  308. Float: tmpX = 0.6404,
  309. Float: tmpY = 0.1608,
  310. Float: fAngle;
  311.  
  312. CreateServerFlame(fireid, X, Y, DEFAULT_FIRE_HEALTH, 0, 0);
  313. for( new i = 1; i < 10; i++ )
  314. {
  315. fAngle = atan2( tmpX - X, tmpY - Y) - 180.0;
  316. GetXYInFrontOfXY(X, Y, fAngle, fX, fY, 2.0 );
  317.  
  318. fX += ( ( PI * minrand(1, i) ) * floatcos( fAngle / minrand(1, i + 1), degrees) );
  319. fY += ( ( PI * minrand(1, i) ) * floatsin( fAngle / minrand(1, i), degrees) );
  320.  
  321. CreateServerFlame(fireid, fX, fY, DEFAULT_FIRE_HEALTH, 0, 0);
  322. }
  323. FireInfo[ fireid ][ fiFlames ] = 9;
  324. }
  325. }
  326.  
  327. // Calling
  328. if( callFireMen ) {
  329. new
  330. tmpString[ 128 ];
  331.  
  332. new seconds = ( FireInfo[ fireid ][ fiTime ] / 1000 ) % 60;
  333. new minutes = ( FireInfo[ fireid ][ fiTime ] / ( 1000 * 60 ) ) % 60;
  334.  
  335. switch( type ) {
  336. case FIRE_TYPE_NORMAL:
  337. format( tmpString, sizeof(tmpString), "[CENTRALA]: Pozor sve jedinice, imamo obican pozar na lokaciji %s (vrijeme %02d:%02d)! Kucajte /accept fire %d za odaziv.",
  338. GetXYZZoneName( FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ] ),
  339. minutes,
  340. seconds,
  341. fireid
  342. );
  343. case FIRE_TYPE_CAR:
  344. format( tmpString, sizeof(tmpString), "[CENTRALA]: Pozor sve jedinice, imamo zapaljeno vozilo na lokaciji %s (vrijeme %02d:%02d)! Kucajte /accept fire %d za odaziv.",
  345. GetXYZZoneName( FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ] ),
  346. minutes,
  347. seconds,
  348. fireid
  349. );
  350. case FIRE_TYPE_HOUSE:
  351. format( tmpString, sizeof(tmpString), "[CENTRALA]: Pozor sve jedinice, imamo zapaljenu kucu na lokaciji %s (vrijeme %02d:%02d)! Kucajte /accept fire %d za odaziv.",
  352. GetXYZZoneName( FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ] ),
  353. minutes,
  354. seconds,
  355. fireid
  356. );
  357. case FIRE_TYPE_BIZNIS:
  358. format( tmpString, sizeof(tmpString), "[CENTRALA]: Pozor sve jedinice, imamo zapaljeni biznis na lokaciji %s (vrijeme %02d:%02d)! Kucajte /accept fire %d za odaziv.",
  359. GetXYZZoneName( FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ] ),
  360. minutes,
  361. seconds,
  362. fireid
  363. );
  364. }
  365.  
  366. foreach(new playerid : Player) {
  367. if( IsFDMember(playerid) ) {
  368. SendClientMessage( playerid, TEAM_BLUE_COLOR, tmpString );
  369. }
  370. }
  371. }
  372. return 1;
  373. }
  374.  
  375. stock DestroyServerFire(fireid)
  376. {
  377. // Enum
  378. FireInfo[ fireid ][ fiPosX ] = 0.0;
  379. FireInfo[ fireid ][ fiPosY ] = 0.0;
  380. FireInfo[ fireid ][ fiPosZ ] = 0.0;
  381. FireInfo[ fireid ][ fiType ] = 0;
  382. FireInfo[ fireid ][ fiAccepted ] = 0;
  383. FireInfo[ fireid ][ fiTime ] = 0;
  384.  
  385. Iter_Remove(Fires, fireid);
  386.  
  387. foreach(new flameid : Flames) {
  388. if( FlameInfo[ flameid ][ fFireId ] == fireid ) {
  389. DestroyServerFlame(flameid);
  390.  
  391. foreach(new playerid : Player) {
  392. if( IsFDMember(playerid) ) {
  393. if( PlayerAcceptedFire[ playerid ] == FlameInfo[ flameid ][ fFireId ] ) {
  394. DestroyFireManTDs(playerid);
  395. KillTimer( PlayerFireTimer[ playerid ] );
  396. PlayerFireTime[ playerid ] = 0;
  397. DestroyDynamicCP( PlayerFireCP[playerid] );
  398. ResetFireArrays(playerid);
  399. }
  400. }
  401. }
  402. }
  403. }
  404. return 1;
  405. }
  406.  
  407. stock static DestroyFireManTDs(playerid)
  408. {
  409. if( PlayerText:FireLocationTd[playerid] != PlayerText:INVALID_TEXT_DRAW ) {
  410. PlayerTextDrawDestroy(playerid, FireLocationTd[playerid] );
  411. FireLocationTd[playerid] = PlayerText:INVALID_TEXT_DRAW;
  412. }
  413. if( PlayerText:FireTimeTd[playerid] != PlayerText:INVALID_TEXT_DRAW ) {
  414. PlayerTextDrawDestroy(playerid, FireTimeTd[playerid] );
  415. FireTimeTd[playerid] = PlayerText:INVALID_TEXT_DRAW;
  416. }
  417. if( PlayerText:FireMissionTd[playerid] != PlayerText:INVALID_TEXT_DRAW ) {
  418. PlayerTextDrawDestroy(playerid, FireMissionTd[playerid] );
  419. FireMissionTd[playerid] = PlayerText:INVALID_TEXT_DRAW;
  420. }
  421. return 1;
  422. }
  423.  
  424. stock CreateFireManTDs(playerid)
  425. {
  426. DestroyFireManTDs(playerid);
  427.  
  428. FireLocationTd[playerid] = CreatePlayerTextDraw(playerid, 523.500122, 354.480010, "Lokacija: Las Venturas");
  429. PlayerTextDrawLetterSize(playerid, FireLocationTd[playerid], 0.323050, 1.076399);
  430. PlayerTextDrawAlignment(playerid, FireLocationTd[playerid], 2);
  431. PlayerTextDrawColor(playerid, FireLocationTd[playerid], -16776961);
  432. PlayerTextDrawSetShadow(playerid, FireLocationTd[playerid], 0);
  433. PlayerTextDrawSetOutline(playerid, FireLocationTd[playerid], 1);
  434. PlayerTextDrawBackgroundColor(playerid, FireLocationTd[playerid], 51);
  435. PlayerTextDrawFont(playerid, FireLocationTd[playerid], 3);
  436. PlayerTextDrawSetProportional(playerid, FireLocationTd[playerid], 1);
  437. PlayerTextDrawShow(playerid, FireLocationTd[playerid]);
  438.  
  439. FireTimeTd[playerid] = CreatePlayerTextDraw(playerid, 521.899963, 332.919647, "VRIJEME: 00:00");
  440. PlayerTextDrawLetterSize(playerid, FireTimeTd[playerid], 0.576150, 2.158880);
  441. PlayerTextDrawAlignment(playerid, FireTimeTd[playerid], 2);
  442. PlayerTextDrawColor(playerid, FireTimeTd[playerid], -1);
  443. PlayerTextDrawSetShadow(playerid, FireTimeTd[playerid], 0);
  444. PlayerTextDrawSetOutline(playerid, FireTimeTd[playerid], 1);
  445. PlayerTextDrawBackgroundColor(playerid, FireTimeTd[playerid], 51);
  446. PlayerTextDrawFont(playerid, FireTimeTd[playerid], 3);
  447. PlayerTextDrawSetProportional(playerid, FireTimeTd[playerid], 1);
  448. PlayerTextDrawShow(playerid, FireTimeTd[playerid]);
  449.  
  450.  
  451. FireMissionTd[playerid] = CreatePlayerTextDraw(playerid, 521.599853, 316.679840, "Fire mission #500");
  452. PlayerTextDrawLetterSize(playerid, FireMissionTd[playerid], 0.449999, 1.600000);
  453. PlayerTextDrawAlignment(playerid, FireMissionTd[playerid], 2);
  454. PlayerTextDrawColor(playerid, FireMissionTd[playerid], -16776961);
  455. PlayerTextDrawSetShadow(playerid, FireMissionTd[playerid], 0);
  456. PlayerTextDrawSetOutline(playerid, FireMissionTd[playerid], 1);
  457. PlayerTextDrawBackgroundColor(playerid, FireMissionTd[playerid], 51);
  458. PlayerTextDrawFont(playerid, FireMissionTd[playerid], 3);
  459. PlayerTextDrawSetProportional(playerid, FireMissionTd[playerid], 1);
  460. PlayerTextDrawShow(playerid, FireMissionTd[playerid]);
  461. }
  462.  
  463. stock AcceptFireManCall(playerid, fireid)
  464. {
  465. if( FireInfo[ fireid ][ fiAccepted ] >= MAX_FIRE_ACCEPTIONS ) return SendClientMessage(playerid, COLOR_RED, "[GRESKA]: Dovoljno je vatrogasaca prihvatilo poziv!");
  466. if( !Iter_Contains(Flames, fireid) ) return SendClientMessage( playerid, COLOR_RED, "[GRESKA]: Krivi id pozara!");
  467.  
  468. // TextDraws
  469. CreateFireManTDs(playerid);
  470.  
  471. new
  472. tmpString[ 32 ];
  473.  
  474. format( tmpString, 32, "Lokacija: %s",
  475. GetXYZZoneName(FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ])
  476. );
  477. PlayerTextDrawSetString(playerid, FireLocationTd[playerid], tmpString);
  478.  
  479. format( tmpString, 32, "Fire mission #%d",
  480. fireid
  481. );
  482. PlayerTextDrawSetString(playerid, FireMissionTd[playerid], tmpString);
  483.  
  484. new seconds = ( FireInfo[ fireid ][ fiTime ] / 1000 ) % 60;
  485. new minutes = ( FireInfo[ fireid ][ fiTime ] / ( 1000 * 60 ) ) % 60;
  486.  
  487. format( tmpString, 32, "VRIJEME: %02d:%02d",
  488. minutes,
  489. seconds
  490. );
  491. PlayerTextDrawSetString(playerid, FireTimeTd[playerid], tmpString);
  492.  
  493. // Timer
  494. PlayerFireTime[ playerid ] = ( FireInfo[ fireid ][ fiTime ] / 1000 );
  495. PlayerFireTimer[playerid] = SetTimerEx("FireTimer", 1000, true, "i", playerid);
  496.  
  497. foreach(new i : Houses)
  498. TogglePlayerDynamicCP(playerid, HouseInfo[ i ][ hEnterCP ], false);
  499.  
  500. PlayerInFireCP[ playerid ] = false;
  501. PlayerAcceptedFire[ playerid ] = fireid;
  502. PlayerFireCP[playerid] = CreateDynamicCP(FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ], 8.0, -1, -1, playerid, 1000.0);
  503. return 1;
  504. }
  505.  
  506. /*
  507. ## ## ####### ####### ## ##
  508. ## ## ## ## ## ## ## ##
  509. ## ## ## ## ## ## ## ##
  510. ######### ## ## ## ## #####
  511. ## ## ## ## ## ## ## ##
  512. ## ## ## ## ## ## ## ##
  513. ## ## ####### ####### ## ##
  514. */
  515.  
  516. forward FireTimer(playerid);
  517. public FireTimer(playerid)
  518. {
  519. PlayerFireTime[ playerid ]--;
  520. new seconds = ( ( PlayerFireTime[ playerid ] * 1000 ) / 1000 ) % 60 ;
  521. new minutes = ( ( PlayerFireTime[ playerid ] * 1000 ) / ( 1000 * 60 ) ) % 60;
  522.  
  523. static
  524. tmpString[ 32 ];
  525. format( tmpString, 32, "VRIJEME: %02d:%02d",
  526. minutes,
  527. seconds
  528. );
  529. PlayerTextDrawSetString(playerid, FireTimeTd[playerid], tmpString);
  530.  
  531. if( !PlayerFireTime[ playerid ] ) {
  532.  
  533. DestroyFireManTDs(playerid);
  534. KillTimer( PlayerFireTimer[ playerid ] );
  535. PlayerFireTime[ playerid ] = 0;
  536. DestroyDynamicCP( PlayerFireCP[playerid] );
  537.  
  538. SendClientMessage( playerid, COLOR_RED, "[INFO]: Niste stigli na vrijeme, stoga nista od bonusa za ovaj pozar!" );
  539. }
  540. }
  541.  
  542. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  543. {
  544. if( checkpointid == PlayerFireCP[playerid])
  545. {
  546. DestroyFireManTDs(playerid);
  547. KillTimer( PlayerFireTimer[ playerid ] );
  548. PlayerFireTime[ playerid ] = 0;
  549. DestroyDynamicCP( PlayerFireCP[playerid] );
  550. PlayerInFireCP[ playerid ] = true;
  551. GameTextForPlayer(playerid, "~w~Zapocni gasenje za bonus!", 2000, 1);
  552.  
  553. foreach(new i : Houses)
  554. TogglePlayerDynamicCP(playerid, HouseInfo[ i ][ hEnterCP ], true);
  555. }
  556. #if defined FIRE_OnPlayerEnterDynamicCP
  557. FIRE_OnPlayerEnterDynamicCP(playerid, checkpointid);
  558. #endif
  559. return 1;
  560. }
  561. #if defined _ALS_OnPlayerEnterDynamicCP
  562. #undef OnPlayerEnterDynamicCP
  563. #else
  564. #define _ALS_OnPlayerEnterDynamicCP
  565. #endif
  566. #define OnPlayerEnterDynamicCP FIRE_OnPlayerEnterDynamicCP
  567. #if defined FIRE_OnPlayerEnterDynamicCP
  568. forward FIRE_OnPlayerEnterDynamicCP(playerid, checkpointid);
  569. #endif
  570.  
  571. hook OnPlayerUpdate(playerid)
  572. {
  573. if( PlayerTick[ playerid ][ ptFire ] < gettime() ) {
  574. if( GetPlayerWeapon(playerid) == WEAPON_FIREEXTINGUISHER ) {
  575. new
  576. newkeys, l, u;
  577. GetPlayerKeys(playerid, newkeys, l, u);
  578. if( HOLDING(KEY_FIRE) ) {
  579. foreach(new flameid : Flames)
  580. {
  581. if( ( GetPlayerDistanceFromPoint(playerid, FlameInfo[ flameid ][ fPosX ], FlameInfo[ flameid ][ fPosY ], FlameInfo[ flameid ][ fPosZ ]) <= 3.5 )
  582. && IsPlayerAimingAt(playerid, FlameInfo[ flameid ][ fPosX ], FlameInfo[ flameid ][ fPosY ], FlameInfo[ flameid ][ fPosZ ], 4.0) )
  583. {
  584. new
  585. Float:PosX, Float:PosY, Float:PosZ;
  586. GetPlayerPos(playerid, PosX, PosY, PosZ);
  587.  
  588. if( ( FlameInfo[ flameid ][ fPosZ ] - PosZ ) <= 0.0 ) {
  589. FlameInfo[flameid][fHealth] -= 5.0;
  590.  
  591. new string[32];
  592. format( string, sizeof(string), "%.2f", FlameInfo[ flameid ][ fHealth ] );
  593. Update3DTextLabelText(Test[ flameid ], COLOR_WHITE, string);
  594.  
  595. if( FlameInfo[flameid][fHealth] <= 0.0 ) {
  596. Delete3DTextLabel(Test[ flameid ]);
  597. DestroyServerFlame(flameid);
  598. }
  599. PlayerTick[ playerid ][ ptFire ] = gettime();
  600. return 1;
  601. }
  602. }
  603. }
  604. }
  605. }
  606. }
  607. return 1;
  608. }
  609.  
  610. /*
  611. ###### ## ## ########
  612. ## ## ### ### ## ##
  613. ## #### #### ## ##
  614. ## ## ### ## ## ##
  615. ## ## ## ## ##
  616. ## ## ## ## ## ##
  617. ###### ## ## ########
  618. */
  619.  
  620. CMD:startfire(playerid, params[])
  621. {
  622. if( PlayerInfo[ playerid ][ pAdmin ] < 3 && PlayerInfo[ playerid ][ pLeader ] != 2 ) return SendClientMessage( playerid, COLOR_RED, "[GRESKA]: Niste LSFD lider ili admin 3+!" );
  623.  
  624. new
  625. Float:X, Float:Y, Float:Z, time;
  626.  
  627. if( sscanf( params, "i", time ) ) return SendClientMessage( playerid, COLOR_RED, "KORISTENJE: /startfire [time (u sekundama)]");
  628.  
  629. GetPlayerPos(playerid, X, Y, Z);
  630. CreateServerFire(X, Y, Z, FIRE_TYPE_NORMAL, time * 1000, true);
  631. return 1;
  632. }
  633.  
  634. CMD:destroyfire(playerid, params[])
  635. {
  636. if( PlayerInfo[ playerid ][ pAdmin ] < 3 && PlayerInfo[ playerid ][ pLeader ] != 2 ) return SendClientMessage( playerid, COLOR_RED, "[GRESKA]: Niste LSFD lider ili admin 3+!" );
  637. foreach(new fireid : Fires) {
  638. if( IsPlayerInRangeOfPoint(playerid, 10.0, FireInfo[ fireid ][ fiPosX ], FireInfo[ fireid ][ fiPosY ], FireInfo[ fireid ][ fiPosZ ] ) )
  639. DestroyServerFire(fireid);
  640. }
  641. return 1;
  642. }
  643.  
  644. CMD:firecar(playerid, params[])
  645. {
  646. if( PlayerInfo[ playerid ][ pAdmin ] < 3 && PlayerInfo[ playerid ][ pLeader ] != 2 ) return SendClientMessage( playerid, COLOR_RED, "[GRESKA]: Niste LSFD lider ili admin 3+!" );
  647. SetTimerEx("BlowUpVehicle", 5000, false, "i", GetPlayerVehicleID(playerid));
  648. SendClientMessage(playerid, COLOR_ORANGE, "[INFO]: Imate 5 sekundi dok vam nije eksplodiralo vozilo!");
  649. return 1;
  650. }
  651.  
  652. CMD:firehouse(playerid, params[])
  653. {
  654. if( PlayerInfo[ playerid ][ pAdmin ] < 3 && PlayerInfo[ playerid ][ pLeader ] != 2 ) return SendClientMessage( playerid, COLOR_RED, "[GRESKA]: Niste LSFD lider ili admin 3+!" );
  655. new
  656. houseid;
  657. if( sscanf( params, "i", houseid) ) return SendClientMessage(playerid, -1, "KORISTENJE: /firehouse [houseid]");
  658. HouseInfo[ houseid ][ hDoorCrashed ] = true;
  659. CreateServerFire(HouseInfo[ houseid ][ hEnterX ], HouseInfo[ houseid ][ hEnterY ], HouseInfo[ houseid ][ hEnterZ ], FIRE_TYPE_HOUSE, 1200000, true);
  660. return 1;
  661. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement