daily pastebin goal
29%
SHARE
TWEET

Untitled

a guest Sep 20th, 2018 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <cs_player_models_api>
  4.  
  5. #define PLUGIN "[ZP50] Addon: Parachute"
  6. #define VERSION "1.0"
  7. #define AUTHOR "H.RED.ZONE"
  8.  
  9. #define _MarkPlayerParachute(%0)  _bitPlayerParachute |= (1 << (%0 & 31))
  10. #define _ClearPlayerParachute(%0) _bitPlayerParachute &= ~(1 << (%0 & 31))
  11. #define _IsPlayerParachute(%0)    _bitPlayerParachute & (1 << (%0 & 31))
  12.  
  13. new const MODEL_PARACHUTE[] = "models/RZ/parachute.mdl"
  14.  
  15. new _bitPlayerParachute
  16.  
  17. new _ParachuteEntity[33]
  18.  
  19. new _pCvarEnableParachute
  20.     ,_pCvarFallSpeed
  21.  
  22. public plugin_init() { 
  23.     register_plugin(PLUGIN, VERSION, AUTHOR)
  24.  
  25.     _pCvarEnableParachute = register_cvar("zp_parachute_enabled", "1")
  26.     _pCvarFallSpeed = register_cvar("zp_parachute_fallspeed", "50")
  27.  
  28.     register_event("ResetHUD", "newSpawn", "be")
  29.     register_event("DeathMsg", "death_event", "a")
  30.  
  31.     register_forward(FM_CmdStart, "fw_Start")
  32. }
  33.  
  34. public plugin_precache() {
  35.     precache_model(MODEL_PARACHUTE)
  36. }
  37.  
  38. public client_disconnect(id) {
  39.     _ClearPlayerParachute(id)
  40.     parachute_reset(id)
  41. }
  42.  
  43. public fw_PlayerKilled(plr, attacker, shouldgib) {
  44.     if(is_user_connected(plr)) {
  45.         parachute_reset(plr)
  46.     }
  47. }
  48.  
  49. public newSpawn(id) {
  50.     parachute_reset(id)
  51.     _MarkPlayerParachute(id)
  52. }
  53.  
  54. public death_event() {
  55.     new id = read_data(2)
  56.     parachute_reset(id)
  57. }
  58.  
  59. parachute_reset(id) {
  60.     if(_ParachuteEntity[id] > 0) {
  61.         if (pev_valid(_ParachuteEntity[id])) {
  62.             engfunc(EngFunc_RemoveEntity, _ParachuteEntity[id])
  63.         }
  64.     }
  65. }
  66.  
  67. public fw_Start(id) {
  68.     if (get_pcvar_num(_pCvarEnableParachute) == 1 ) {
  69.         if(is_user_alive(id) && _IsPlayerParachute(id)) {
  70.             new Float:fallspeed = get_pcvar_float(_pCvarFallSpeed) * -1.0
  71.             new Float:frame
  72.            
  73.             new button = pev(id, pev_button)
  74.             new oldbutton = pev(id, pev_oldbuttons)
  75.             new flags = pev(id, pev_flags)
  76.            
  77.             if (_ParachuteEntity[id] > 0 && (flags & FL_ONGROUND)) {
  78.                
  79.                 if (pev(_ParachuteEntity[id],pev_sequence) != 2) {
  80.                     set_pev(_ParachuteEntity[id], pev_sequence, 2)
  81.                     set_pev(_ParachuteEntity[id], pev_gaitsequence, 1)
  82.                    
  83.                     set_pev(_ParachuteEntity[id], pev_frame, 0.0)
  84.                     set_pev(_ParachuteEntity[id], pev_fuser1, 0.0)
  85.                     set_pev(_ParachuteEntity[id], pev_animtime, 0.0)
  86.                     set_pev(_ParachuteEntity[id], pev_framerate, 0.0)
  87.                     return
  88.                 }
  89.  
  90.                 frame = pev(_ParachuteEntity[id],pev_fuser1) + 2.0
  91.                 set_pev(_ParachuteEntity[id],pev_fuser1,frame)
  92.                 set_pev(_ParachuteEntity[id],pev_frame,frame)
  93.  
  94.                 if (frame > 254.0) {
  95.                     engfunc(EngFunc_RemoveEntity, _ParachuteEntity[id])
  96.                     _ParachuteEntity[id] = 0
  97.                 }
  98.             }
  99.            
  100.             if (button & IN_USE) {
  101.                 new Float:velocity[3]
  102.                 pev(id, pev_velocity, velocity)
  103.                
  104.                 if (velocity[2] < 0.0) {
  105.                     if(_ParachuteEntity[id] <= 0) {
  106.                         _ParachuteEntity[id] = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))  
  107.                        
  108.                         if(_ParachuteEntity[id] > 0) {
  109.                             set_pev(_ParachuteEntity[id], pev_classname,"parachute")
  110.                             set_pev(_ParachuteEntity[id], pev_aiment, id)
  111.                             set_pev(_ParachuteEntity[id], pev_owner, id)
  112.                             set_pev(_ParachuteEntity[id], pev_movetype, MOVETYPE_FOLLOW)
  113.                             set_pev(_ParachuteEntity[id], pev_sequence, 0)
  114.                             set_pev(_ParachuteEntity[id], pev_gaitsequence, 1)
  115.                             set_pev(_ParachuteEntity[id], pev_frame, 0.0)
  116.                             set_pev(_ParachuteEntity[id], pev_fuser1, 0.0)
  117.                             cs_set_player_model(_ParachuteEntity[id], MODEL_PARACHUTE)
  118.                         }
  119.                     }
  120.                     else if (_ParachuteEntity[id] > 0) {
  121.                         set_pev(id, pev_sequence, 3)
  122.                         set_pev(id, pev_gaitsequence, 1)
  123.                         set_pev(id, pev_frame, 1.0)
  124.                         set_pev(id, pev_framerate, 1.0)
  125.  
  126.                         velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
  127.                         set_pev(id, pev_velocity, velocity)
  128.  
  129.                         if (set_pev(_ParachuteEntity[id],pev_sequence) == 0) {
  130.  
  131.                             frame = set_pev(_ParachuteEntity[id],pev_fuser1) + 1.0
  132.                             set_pev(_ParachuteEntity[id],pev_fuser1,frame)
  133.                             set_pev(_ParachuteEntity[id],pev_frame,frame)
  134.                         }
  135.  
  136.                         if (frame > 100.0) {
  137.                             set_pev(_ParachuteEntity[id], pev_animtime, 0.0)
  138.                             set_pev(_ParachuteEntity[id], pev_framerate, 0.4)
  139.                             set_pev(_ParachuteEntity[id], pev_sequence, 1)
  140.                             set_pev(_ParachuteEntity[id], pev_gaitsequence, 1)
  141.                             set_pev(_ParachuteEntity[id], pev_frame, 0.0)
  142.                             set_pev(_ParachuteEntity[id], pev_fuser1, 0.0)
  143.                         }
  144.                     }
  145.  
  146.                 }      
  147.                 else if (_ParachuteEntity[id] > 0) {
  148.                     engfunc(EngFunc_RemoveEntity, _ParachuteEntity[id])
  149.                     _ParachuteEntity[id] = 0
  150.                 }
  151.             } else if ((oldbutton & IN_USE) && _ParachuteEntity[id] > 0 ) {
  152.                 engfunc(EngFunc_RemoveEntity, _ParachuteEntity[id])
  153.                 _ParachuteEntity[id] = 0
  154.             }
  155.         }
  156.     }
  157. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top