Advertisement
Guest User

Untitled

a guest
Jun 16th, 2015
675
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.15 KB | None | 0 0
  1. /*
  2.     trablon's Fire Fight System for RolePlay servers..
  3.                         v0.1
  4.  
  5. */
  6. //====================================================================[includes]
  7. #include <a_samp>
  8. //=====================================================================[defines]
  9. #define FILTERSCRIPT
  10.  
  11. #define HOLDING(%0) \
  12.     ((newkeys & (%0)) == (%0))
  13.  
  14. #define RELEASED(%0) \
  15.     (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  16.    
  17. #define SCM SendClientMessage
  18.  
  19. #define COLOR_FLASH      0xFF000080
  20. #define COLOR_RED        0xAA3333AA
  21. #define COLOR_GREY       0xAFAFAFAA
  22. #define COLOR_GREEN      0x9EC73DAA
  23. #define COLOR_LIGHTRED   0xFF6347AA
  24. #define COLOR_LIGHTGREEN 0x9ACD32AA
  25. #define COLOR_GREEN2     0x36A71700
  26. //====================================================================[forwards]
  27. forward FireTimer();
  28. forward DestroyFireforPlayer(playerid);
  29. forward SetTimeforFire();
  30. //=====================================================================[pragmas]
  31. //=======================================================================[enums]
  32. //========================================================================[news]
  33. new
  34.     firenews = -1,
  35.     Text3D:firetimergo[10],
  36.     firehp[10],
  37.     fireobjects[10],
  38.     totalfirepos,
  39.     Iminfire[MAX_PLAYERS],
  40.     dutyforfireman[MAX_PLAYERS],
  41.     firemancash[MAX_PLAYERS],
  42.     firemanonduty[MAX_PLAYERS]
  43.     ;
  44. new Float:FirePosforIdlewood[10][3] = {
  45. {1937.5554,-1763.3531,13.3828}, // Area 0 - Idlewood
  46. {1945.7601,-1765.4830,13.3828},
  47. {1945.0408,-1774.3759,13.3906},
  48. {1945.1576,-1784.9263,13.3828},
  49. {1937.9746,-1785.5255,13.3906},
  50. {1932.7399,-1778.2761,13.3828},
  51. {1925.2346,-1779.3983,17.9766},
  52. {1929.7230,-1789.8518,13.3828},
  53. {1941.6704,-1784.5291,13.3906},
  54. {1951.5349,-1780.0042,13.5469}
  55. };
  56. // =============================================================================
  57. #if defined FILTERSCRIPT
  58.  
  59. public OnFilterScriptInit()
  60. {
  61.     SetTimer("SetTimeforFire",1000,true); // If you want to import to your gamemode, just add it all to your main global timer for players.
  62.     return 1;
  63. }
  64.  
  65. public OnFilterScriptExit()
  66. {
  67.     return 1;
  68. }
  69.  
  70. #else
  71. #endif
  72.  
  73. public OnPlayerSpawn(playerid)
  74. {
  75.  
  76.     return 1;
  77. }
  78. public OnPlayerConnect(playerid)
  79. {
  80.     Iminfire[playerid] = 0; dutyforfireman[playerid] = 0; firemanonduty[playerid] = 0;
  81.     return 1;
  82. }
  83. public OnPlayerDisconnect(playerid, reason)
  84. {
  85.     Iminfire[playerid] = 0; dutyforfireman[playerid] = 0; firemanonduty[playerid] = 0;
  86.     return 1;
  87. }
  88. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  89. {
  90.     if (HOLDING(KEY_FIRE))
  91. {
  92.     for(new i; i < 10; i++)
  93. {
  94.     if(IsPlayerInRangeOfPoint(playerid, 3.0, FirePosforIdlewood[i][0],FirePosforIdlewood[i][1],FirePosforIdlewood[i][2]))
  95. {
  96.     Iminfire[playerid] = SetTimerEx("DestroyFireforPlayer", 3000, false, "i", playerid);
  97. }
  98. }
  99. }
  100.  
  101.     if (RELEASED(KEY_FIRE) && GetPlayerWeapon(playerid) == 42 && dutyforfireman[playerid] == 1)
  102. {
  103.     KillTimer(Iminfire[playerid]);
  104. }
  105.     return 1;
  106. }
  107. public SetTimeforFire()
  108. {
  109.     if(totalfirepos == 10)
  110. {
  111.     for(new i; i < MAX_PLAYERS; i++)
  112. {
  113.     if(dutyforfireman[i] == 1)
  114. {
  115.     SCM(i,COLOR_LIGHTGREEN,"* Fire in the idlewood has gone for now, all fire fighters have paid due to their effort.");
  116.     GivePlayerMoney(i,firemancash[i]);
  117.     firemancash[i] = 0;
  118.     dutyforfireman[i] = 0;
  119. }
  120. }
  121.     totalfirepos = 0;
  122. }
  123.     return true;
  124. }
  125.  
  126. public FireTimer()
  127. {
  128.     new str[128];
  129.     for(new i; i < 10; i++)
  130. {
  131.     firehp[i] = 100;
  132.     format(str,sizeof(str),"{FF0004}Fire Area: #%d",firehp);
  133.     fireobjects[i] = CreateObject(18691,FirePosforIdlewood[i][0],FirePosforIdlewood[i][1],FirePosforIdlewood[i][2]-3,0.0000,0.0000,0.0000);
  134.     firetimergo[i] = Create3DTextLabel(str,-1,FirePosforIdlewood[i][0],FirePosforIdlewood[i][1],FirePosforIdlewood[i][2],0,0);
  135.     firenews = 0;
  136. }
  137.     for(new i; i < MAX_PLAYERS; i++)
  138. {
  139.     if(firemanonduty[i] == 1)
  140. {
  141.     SCM(i,COLOR_FLASH,"* There are fires in the Idlewood!");
  142. }
  143.  
  144. }
  145.     return 1;
  146. }
  147.  
  148. public DestroyFireforPlayer(playerid)
  149. {
  150.     new str[128];
  151.     for(new i; i < 10; i++)
  152. {
  153.     if(IsPlayerInRangeOfPoint(playerid, 3.0, FirePosforIdlewood[i][0],FirePosforIdlewood[i][1],FirePosforIdlewood[i][2]))
  154. {
  155.     if(firehp[i] == 100 || firehp[i] < 100 )
  156. {
  157.     firehp[i] -= 1;
  158.     firemancash[playerid] += firehp[i];
  159.     format(str,sizeof(str),"{FF0004}Fire Area: #%d",firehp[i]);
  160.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  161. }
  162.  
  163.     if(firehp[i] < 80)
  164. {
  165.     firehp[i] -= 1;
  166.     firemancash[playerid] += firehp[i];
  167.     format(str,sizeof(str),"{FF7700}Fire Area: #%d",firehp[i]);
  168.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  169. }
  170.  
  171.     if(firehp[i] < 60)
  172. {
  173.     firehp[i] -= 1;
  174.     firemancash[playerid] += firehp[i];
  175.     format(str,sizeof(str),"{FFB300}Fire Area: #%d",firehp[i]);
  176.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  177. }
  178.  
  179.     if(firehp[i] < 40)
  180. {
  181.     firehp[i] -= 1;
  182.     firemancash[playerid] += firehp[i];
  183.     format(str,sizeof(str),"{FFCC00}Fire Area: #%d",firehp[i]);
  184.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  185. }
  186.  
  187.     if(firehp[i] < 20)
  188. {
  189.     firehp[i] -= 1;
  190.     firemancash[playerid] += firehp[i];
  191.     format(str,sizeof(str),"{BFFF00}Fire Area: #%d",firehp[i]);
  192.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  193. }
  194.  
  195.     if(firehp[i] < 10)
  196. {
  197.     firehp[i] -= 1;
  198.     firemancash[playerid] += firehp[i];
  199.     format(str,sizeof(str),"{1EFF00}Fire Area: #%d",firehp[i]);
  200.     Update3DTextLabelText(firetimergo[i], COLOR_RED, str);
  201. }
  202.  
  203.     if(firehp[i] == 0)
  204. {
  205.     Delete3DTextLabel(firetimergo[i]);
  206.     DestroyObject(fireobjects[i]);
  207.     totalfirepos++;
  208.     SCM(playerid,COLOR_GREY,"* Fire has gone.");
  209. }
  210.  
  211. }
  212. }
  213.     return 1;
  214. }
  215.  
  216. public OnPlayerCommandText(playerid, cmdtext[])
  217. {
  218.     if(!strcmp(cmdtext, "/duty", true))
  219. {
  220.     if(firenews == -1) return SCM(playerid,COLOR_LIGHTRED,"* There is no fire from any area yet.");
  221.     dutyforfireman[playerid] = 1;
  222.     firemanonduty[playerid] = 1;
  223.     GivePlayerWeapon(playerid,6,1);
  224.     GivePlayerWeapon(playerid,42,9999);
  225.     SCM(playerid,COLOR_GREEN2,"* You are on your duty.");
  226.     return 1;
  227. }
  228.  
  229.     if(!strcmp(cmdtext, "/startfire", true))
  230. {
  231.     FireTimer();
  232.     return 1;
  233. }
  234.     return 0;
  235. }
  236. // =============================================================================
  237. //======================================================================[stocks]
  238. //=========================================================================[END]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement