Guest User

Untitled

a guest
Dec 7th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.42 KB | None | 0 0
  1. #include <a_samp>
  2. /*POWER FIRE by BRICS*/
  3. #define POWER_FIRE_ENABLED_TEXT "La potencia de fuego habilitado. Usando el poder del fuego - punch"
  4. #define ERROR_1 "Ya tiene el poder de fuego"
  5. #define MESS_1 "Usted no posee un poder de fuego"
  6.  
  7. #define FIRE_TIMER_INTERVAL 80
  8. #define FIRE_POWER_SOUND 1039
  9.  
  10. #define FIRE_START_DIST 13.0
  11. #define FIRE_FINAL_DIST 90.0
  12. #define FIRE_NEXT_DIST 3.0
  13.  
  14. #define Explosion_Rad 5
  15. #define Explosion_Type 1
  16.  
  17. #define FIRE_CMD "/fire"
  18.  
  19. #define PLAYER_DAMAGE_DIST 1.5
  20. #define VEH_DAMAGE_DIST 4.0
  21.  
  22. /*Code*/
  23. new S[MAX_PLAYERS] = -1;
  24. new Fires[MAX_PLAYERS];
  25. new Float: dist[MAX_PLAYERS]/* = 100.0*/;
  26. new Timer[MAX_PLAYERS];
  27. new Float: PEX[3][MAX_PLAYERS];
  28. new Float: P[4][MAX_PLAYERS];
  29. forward Fireman(playerid);
  30.  
  31. public OnFilterScriptInit()
  32. {
  33.     print("   Fire-Power por BRICS cargados.");
  34.     for(new i; i < GetMaxPlayers(); i++)S[i] = -1;
  35.     return 1;
  36. }
  37.  
  38. public OnFilterScriptExit()
  39. {
  40.     for(new i; i < GetMaxPlayers(); i++)KillTimer(Timer[i]);
  41.     print("   Fire-Power por BRICS descargadas.");
  42.     return 1;
  43. }
  44.  
  45. public OnPlayerConnect(playerid)
  46. {
  47.     S[playerid] = -1;
  48.     Fires[playerid] = 0;
  49.     return 1;
  50. }
  51. public OnPlayerCommandText(playerid, cmdtext[])
  52. {
  53.     if (strcmp(FIRE_CMD, cmdtext, true, 10) == 0)
  54.     {
  55.         if(S[playerid] > -1)return SendClientMessage(playerid,-1,ERROR_1);
  56.         S[playerid] = 1;
  57.         Fires[playerid] = 5;
  58.         SendClientMessage(playerid,-1,POWER_FIRE_ENABLED_TEXT);
  59.         return 1;
  60.     }
  61.     return 0;
  62. }
  63.  
  64. public Fireman(playerid)
  65. {
  66.  
  67.     if(dist[playerid] >= FIRE_FINAL_DIST)
  68.     {
  69.         KillTimer(Timer[playerid]);
  70.         //dist[playerid] = 100.0;
  71.         if(Fires[playerid] == 0)
  72.         {
  73.                S[playerid] = -1;
  74.                SendClientMessage(playerid,-1,MESS_1);
  75.                return 1;
  76.         }
  77.         S[playerid] = 1;
  78.         return 1;
  79.     }
  80.     GetXYInFrontOfPoint(P[0][playerid],P[1][playerid], PEX[0][playerid], PEX[1][playerid], P[3][playerid], dist[playerid]);
  81.     CreateExplosion(PEX[0][playerid],PEX[1][playerid],P[2][playerid],Explosion_Type,Explosion_Rad);
  82.     for(new i; i < GetMaxPlayers(); i ++)
  83.     {
  84.         if(!IsPlayerConnected(i))continue;
  85.         if(GetPlayerDistanceFromPoint(i,PEX[0][playerid],PEX[1][playerid],P[2][playerid]) < PLAYER_DAMAGE_DIST)
  86.         {
  87.              new Float:hp;
  88.              GetPlayerHealth(i,hp);
  89.              if(hp <= 0)continue;
  90.              SetPlayerHealth(i,-1);
  91.  
  92.        }
  93.     }
  94.     for(new v; v < MAX_VEHICLES; v ++)
  95.     {
  96.        if(GetVehicleDistanceFromPoint(v,PEX[0][playerid],PEX[1][playerid],P[2][playerid]) <= VEH_DAMAGE_DIST)SetVehicleHealth(v,0);
  97.        
  98.     }
  99.     dist[playerid] += FIRE_NEXT_DIST;
  100.     return 1;
  101. }
  102. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  103. {
  104.     if(newkeys & KEY_FIRE)
  105.     {
  106.                     if(GetPlayerWeapon(playerid) != 0)return 1;
  107.                     if(S[playerid] == -1 ||S[playerid] == 0)return 1;
  108.                     if(IsPlayerInAnyVehicle(playerid))return 1;
  109.                     dist[playerid] = FIRE_START_DIST;
  110.                     GetPlayerPos(playerid,P[0][playerid],P[1][playerid],P[2][playerid]);
  111.                     GetPlayerFacingAngle(playerid,P[3][playerid]);
  112.                     Timer[playerid] = SetTimerEx("Fireman",FIRE_TIMER_INTERVAL,1,"d",playerid);
  113.                     S[playerid] = 0;
  114.                     Fires[playerid] --;
  115.                     PlayerPlaySound(playerid,FIRE_POWER_SOUND,0,0,0);
  116.  
  117.     }
  118.     return 1;
  119. }
  120. stock GetXYInFrontOfPoint(Float:x, Float:y, &Float:x2, &Float:y2, Float:A, Float:distance)
  121. {
  122.     x2 = x + (distance * floatsin(-A, degrees));
  123.     y2 = y + (distance * floatcos(-A, degrees));
  124. }
Add Comment
Please, Sign In to add comment