RodneyFrancalim

rf_Damage

Feb 11th, 2015
488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.22 KB | None | 0 0
  1. #include    progress2
  2.  
  3. enum W_DATA
  4. {
  5.     Float:W_COEFFICIENT, // == MAX RANGE (2^W_COEFFICIENT) TO INFLICT THE PERFECT DAMAGE
  6.     Float:W_DAMAGE       // == DAMAGE INFLICTED BY THE WEAPON INSIDE THE MAX RANGE
  7. }
  8.  
  9. static const
  10.     WeaponInfo[13][W_DATA] = // ID 22 (9MM) TO 34 (SNIPER RIFLE)
  11.     {
  12.         {2.0,   8.25}, // 9MM
  13.         {1.0,  13.20}, // SILENCED 9MM
  14.         {3.0,  46.20}, // DESERT EAGLE
  15.         {2.0,  49.50}, // SHOTGUN
  16.         {3.0,  49.50}, // SAWNOFF SHOTGUN
  17.         {4.0,  39.60}, // COMBAT SHOTGUN
  18.         {2.0,   6.60}, // MICRO SMG
  19.         {3.0,   8.25}, // SMG
  20.         {5.0,   9.90}, // AK-47
  21.         {5.0,   9.90}, // M4
  22.         {2.0,   6.60}, // TEC-9
  23.         {5.0,  24.75}, // COUNTRY RIFLE
  24.         {6.0,  41.25}  // SNIPER RIFLE
  25.     }
  26. ;
  27.  
  28. new
  29.     PlayerBar:ArmourBar[MAX_PLAYERS],
  30.     PlayerBar:HealthBar[MAX_PLAYERS]
  31. ;
  32.  
  33. public OnGameModeInit()
  34. {
  35.     #if defined rf_Damage_OnGameModeInit
  36.         rf_Damage_OnGameModeInit();
  37.     #endif
  38.  
  39.     ShowNameTags(0);
  40.  
  41.     return 1;
  42. }
  43. #if defined _ALS_OnGameModeInit
  44.     #undef OnGameModeInit
  45. #else
  46.     #define _ALS_OnGameModeInit
  47. #endif
  48. #define OnGameModeInit rf_Damage_OnGameModeInit
  49. #if defined rf_Damage_OnGameModeInit
  50.     forward rf_Damage_OnGameModeInit();
  51. #endif
  52.  
  53. public OnPlayerConnect(playerid)
  54. {
  55.     #if defined rf_Damage_OnPlayerConnect
  56.         rf_Damage_OnPlayerConnect(playerid);
  57.     #endif
  58.  
  59.     ArmourBar[playerid] = CreatePlayerProgressBar(playerid, 548.0, 47.0, 61.0, 3.0, -1, 100.0, BAR_DIRECTION_RIGHT);
  60.     HealthBar[playerid] = CreatePlayerProgressBar(playerid, 549.0, 69.0, 60.0, 4.0, -1256645121, 100.0, BAR_DIRECTION_RIGHT);
  61.     ShowPlayerProgressBar(playerid, ArmourBar[playerid]);
  62.     ShowPlayerProgressBar(playerid, HealthBar[playerid]);
  63.     rf_Damage_SetPlayerArmourEx(playerid, 0.0);
  64.     rf_Damage_SetPlayerHealthEx(playerid, 50.0);
  65.  
  66.     return 1;
  67. }
  68. #if defined _ALS_OnPlayerConnect
  69.     #undef OnPlayerConnect
  70. #else
  71.     #define _ALS_OnPlayerConnect
  72. #endif
  73. #define OnPlayerConnect rf_Damage_OnPlayerConnect
  74. #if defined rf_Damage_OnPlayerConnect
  75.     forward rf_Damage_OnPlayerConnect(playerid);
  76. #endif
  77.  
  78. public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
  79. {
  80.     #if defined rf_Damage_OnPlayerTakeDamage
  81.         rf_Damage_OnPlayerTakeDamage(playerid, issuerid, amount, weaponid, bodypart);
  82.     #endif
  83.  
  84.     if(22 <= weaponid <= 34)
  85.     {
  86.         static
  87.             Float:armour,
  88.             Float:health,
  89.             Float:p[3]
  90.         ;
  91.  
  92.         rf_Damage_GetPlayerArmourEx(playerid, armour);
  93.         rf_Damage_GetPlayerHealthEx(playerid, health);
  94.  
  95.         GetPlayerPos(issuerid, p[0], p[1], p[2]);
  96.  
  97.         static
  98.             Float:newdamage
  99.         ;
  100.  
  101.         //newdamage = GetPlayerDistanceFromPoint(playerid, p[0], p[1], p[2]) <= floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT]) ? WeaponInfo[weaponid - 22][W_DAMAGE] : WeaponInfo[weaponid - 22][W_DAMAGE] - ((GetPlayerDistanceFromPoint(playerid, p[0], p[1], p[2]) - floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT])) * (floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT]) / 10));
  102.         newdamage = GetPlayerDistanceFromPoint(playerid, p[0], p[1], p[2]) <= floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT]) ? amount : amount - ((GetPlayerDistanceFromPoint(playerid, p[0], p[1], p[2]) - floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT])) * (floatpower(2, WeaponInfo[weaponid - 22][W_COEFFICIENT]) / 100));
  103.  
  104.         if(newdamage < 1.0)
  105.             newdamage = 1.0;
  106.  
  107.         switch(bodypart)
  108.         {
  109.             case 3: // TORSO
  110.             {
  111.                 if(newdamage <= armour)
  112.                     rf_Damage_SetPlayerArmourEx(playerid, armour - newdamage);
  113.                 else
  114.                 {
  115.                     rf_Damage_SetPlayerArmourEx(playerid, 0.0);
  116.                     rf_Damage_SetPlayerHealthEx(playerid, health - (newdamage - armour));
  117.                 }
  118.             }
  119.             case 9: // HEAD
  120.             {
  121.                 PlayerPlaySound(playerid, 1140, 0.0, 0.0, 0.0);
  122.                 rf_Damage_SetPlayerHealthEx(playerid, health - (newdamage * 3));
  123.                 SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + (floatround(newdamage, floatround_ceil) * 1000));
  124.             }
  125.             default:
  126.                 rf_Damage_SetPlayerHealthEx(playerid, health - (newdamage / 2));
  127.         }
  128.     }
  129.     else
  130.         rf_Damage_SetPlayerHealthEx(playerid, GetPlayerProgressBarValue(playerid, HealthBar[playerid]) - amount);
  131.  
  132.     return 1;
  133. }
  134. #if defined _ALS_OnPlayerTakeDamage
  135.     #undef OnPlayerTakeDamage
  136. #else
  137.     #define _ALS_OnPlayerTakeDamage
  138. #endif
  139. #define OnPlayerTakeDamage rf_Damage_OnPlayerTakeDamage
  140. #if defined rf_Damage_OnPlayerTakeDamage
  141.     forward rf_Damage_OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
  142. #endif
  143.  
  144. rf_Damage_GetPlayerArmourEx(playerid, &Float:armour)
  145. {
  146.     armour = GetPlayerProgressBarValue(playerid, ArmourBar[playerid]);
  147.     return 1;
  148. }
  149. #if defined _ALS_GetPlayerArmourEx
  150.     #undef GetPlayerArmourEx
  151. #else
  152.     #define _ALS_GetPlayerArmourEx
  153. #endif
  154. #define GetPlayerArmourEx rf_Damage_GetPlayerArmourEx
  155.  
  156. rf_Damage_GetPlayerHealthEx(playerid, &Float:health)
  157. {
  158.     health = GetPlayerProgressBarValue(playerid, HealthBar[playerid]);
  159.     return 1;
  160. }
  161. #if defined _ALS_GetPlayerHealthEx
  162.     #undef GetPlayerHealthEx
  163. #else
  164.     #define _ALS_GetPlayerHealthEx
  165. #endif
  166. #define GetPlayerHealthEx rf_Damage_GetPlayerHealthEx
  167.  
  168. rf_Damage_SetPlayerArmourEx(playerid, Float:armour)
  169.     return SetPlayerProgressBarValue(playerid, ArmourBar[playerid], armour);
  170. #if defined _ALS_SetPlayerArmourEx
  171.     #undef SetPlayerArmourEx
  172. #else
  173.     #define _ALS_SetPlayerArmourEx
  174. #endif
  175. #define SetPlayerArmourEx rf_Damage_SetPlayerArmourEx
  176.  
  177. rf_Damage_SetPlayerHealthEx(playerid, Float:health)
  178. {
  179.     SetPlayerHealth(playerid, 16384);
  180.     SetPlayerArmour(playerid, health);
  181.     SetPlayerProgressBarValue(playerid, HealthBar[playerid], health);
  182.  
  183.     if(GetPlayerProgressBarValue(playerid, HealthBar[playerid]) <= 0.0)
  184.         SetPlayerHealth(playerid, 0.0);
  185.  
  186.     return 1;
  187. }
  188. #if defined _ALS_SetPlayerHealthEx
  189.     #undef SetPlayerHealthEx
  190. #else
  191.     #define _ALS_SetPlayerHealthEx
  192. #endif
  193. #define SetPlayerHealthEx rf_Damage_SetPlayerHealthEx
Advertisement
Add Comment
Please, Sign In to add comment