Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.19 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <engine>
  6. #include <csdm>
  7. #include <csx>
  8. #include <hamsandwich>
  9. #include <xs>
  10. #include <fakemeta>
  11. #include <fakemeta_util>
  12. #include <fakemeta_const>
  13. #include <fakemeta_stocks>
  14. #include <fakemeta_util>
  15. #include <ham_const>
  16. #include <fun>
  17. #include <dhudmessage>
  18. #include <cstrike>
  19. #include <orpheu>
  20. #include <orpheu_stocks>
  21. #include <astar>
  22.  
  23. #define PLUGIN "New Plug-In"
  24. #define VERSION "1.0"
  25. #define AUTHOR "author"
  26.  
  27. #define TASK_DEATH 29128
  28. #define TASK_FOLLOW 12923
  29. new g_follow
  30. new bool: g_Hit[32];
  31. new const g_NpcSoundKnifeHit[][] =  
  32. {
  33.     "weapons/knife_hit1.wav",
  34.     "weapons/knife_hit2.wav",
  35.     "weapons/knife_hit3.wav",
  36.     "weapons/knife_hit4.wav"
  37. }
  38.  
  39. new const g_NpcSoundKnifeStab[] = "weapons/knife_stab.wav";
  40.  
  41. public plugin_init() {
  42.     register_plugin(PLUGIN, VERSION, AUTHOR)
  43.     register_think("npc_heavy","npc_think");
  44.     //RegisterHam(Ham_Think, "npc_heavy", "npc_think")
  45.     RegisterHam(Ham_TakeDamage, "info_target", "fw_npc_takedamage");
  46.     register_forward(FM_EmitSound, "npc_EmitSound");  
  47.    
  48.     register_concmd("testnpc", "spawn_npc");
  49.     register_concmd("followclient", "clcmd_follow")
  50.  
  51.     // Add your code here...
  52. }
  53. public plugin_precache()
  54. {
  55.     precache_model("models/monster/bot_heavy.mdl");
  56. }
  57. public clcmd_follow(id)
  58. {
  59.     g_follow = id
  60.    
  61.     return PLUGIN_HANDLED;
  62. }
  63.  
  64. public spawn_npc(id)
  65. {
  66.    
  67.     new ent = create_entity("info_target");
  68.     new npcreg
  69.     static hp
  70.     hp = set_pev(ent, pev_health, hp)
  71.     if(!pev_valid(ent)) return PLUGIN_HANDLED;
  72.    
  73.     set_pev(ent, pev_classname, "npc_heavy")
  74.     set_pev(ent, pev_netname, "Heavy")
  75.     new Float: origin[3], Float: angle[3], Float: velocity[3]
  76.     pev(id, pev_origin, origin)
  77.     origin[1] += 80.0
  78.     origin[2] += 80.0
  79.     engfunc(EngFunc_SetOrigin, ent, origin)
  80.     pev(id, pev_angles, angle)
  81.     angle[0] = 0.0
  82.     set_pev(ent, pev_angles, angle)
  83.     set_pev(ent, pev_takedamage, 1.0)
  84.     set_pev(ent, pev_health, 2000.0)
  85.    
  86.     set_pev(ent, pev_movetype, MOVETYPE_WALK)
  87.     set_pev(ent, pev_solid, SOLID_SLIDEBOX)
  88.     //set_pev(ent, pev_controller_0, 125)
  89.     //set_pev(ent, pev_controller_1, 125)
  90.     //set_pev(ent, pev_controller_2, 125)
  91.     //set_pev(ent, pev_controller_3, 125)
  92.     engfunc(EngFunc_SetModel, ent, "models/monster/bot_heavy.mdl")
  93.     engfunc(EngFunc_SetSize, ent, {-12.0, -12.0, 0.0 }, { 12.0, 12.0, 75.0 })
  94.     velocity_by_aim(id, 800, velocity)
  95.     entity_set_aim(ent, g_follow)
  96.    
  97.     set_pev(ent, pev_velocity, velocity)
  98.     entity_set_float(ent,EV_FL_animtime,2.0)
  99.     entity_set_float(ent,EV_FL_framerate,1.0)
  100.     entity_set_int(ent,EV_INT_sequence,1);
  101.     set_pev(ent, pev_nextthink, get_gametime() + 0.01)
  102.    
  103.     set_pev(ent, pev_gravity, 120.0)
  104.     if(!npcreg) {
  105.         RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_npc_takedamage")
  106.         //RegisterHamFromEntity(Ham_Killed, ent, "fw_npc_killed")
  107.         //RegisterHamFromEntity(Ham_TraceAttack, ent, "fw_npc_traceattack")
  108.         npcreg = true
  109.     }  
  110.    
  111.     //if(pev(ent, pev_health < 100) Util_PlayAnimation(ent, random_num(15,20))
  112.    
  113.     return PLUGIN_HANDLED
  114.    
  115. }
  116.  
  117.  
  118. public npc_think(ent)
  119. {
  120.     if(!pev_valid(ent)) return;
  121.    
  122.     //ent -= TASK_FOLLOW
  123.    
  124.     //if(task_exists(ent+TASK_DEATH)) return
  125.    
  126.     if(pev(ent, pev_health) <= 200.0)
  127.     {
  128.         //ent -= TASK_DEATH
  129.         Set_EntAnim(ent, 15, 1.0,1)
  130.         entity_set_float(ent, EV_FL_takedamage, 0.0)
  131.         set_pev(ent, pev_movetype, MOVETYPE_NONE)
  132.         set_pev(ent, pev_solid, SOLID_NOT)
  133.        
  134.         //remove_task(ent+TASK_FOLLOW)
  135.         g_follow = 0
  136.     }
  137.     static className[32]
  138.     pev(ent, pev_classname, className, charsmax(className))
  139.    
  140.     if(!equali(className, "npc_heavy")) return;
  141.    
  142.     //if(g_dead[iEnt]) return;
  143.    
  144.     new Float: velocity[3]
  145.     if(is_user_alive(g_follow)) entity_set_aim(ent, g_follow);
  146.    
  147.     set_pev(ent, pev_nextthink, get_gametime() + 0.3)
  148. }
  149. public Heavy_death(ent)
  150. {
  151.     ent -= TASK_DEATH
  152.     Set_EntAnim(ent, 15, 1.0,1)
  153.     entity_set_float(ent, EV_FL_takedamage, 0.0)
  154.     set_pev(ent, pev_movetype, MOVETYPE_NONE)
  155.     set_pev(ent, pev_solid, SOLID_NOT)
  156.        
  157.     remove_task(ent+TASK_FOLLOW)
  158.     g_follow = 0
  159. }
  160. public give_weapon(ent)
  161. {
  162.         new entWeapon = create_entity("info_target");
  163.  
  164.         entity_set_string(entWeapon, EV_SZ_classname, "npc_weapon");
  165.  
  166.         entity_set_int(entWeapon, EV_INT_movetype, MOVETYPE_FOLLOW);
  167.         entity_set_int(entWeapon, EV_INT_solid, SOLID_NOT);
  168.         entity_set_edict(entWeapon, EV_ENT_aiment, ent);
  169.         //entity_set_model(entWeapon, "models/p_ak47.mdl")
  170. }
  171. public fw_npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type) {
  172.     if(!pev_valid(ent) || !is_user_connected(attacker))
  173.         return HAM_SUPERCEDE;
  174.    
  175.    
  176.     Util_PlayAnimation(ent, 11)
  177.    
  178.     if(get_weaponid("weapon_knife")) emit_sound(attacker, CHAN_VOICE, g_NpcSoundKnifeHit[random(sizeof g_NpcSoundKnifeHit)],  VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  179.    
  180.     return HAM_IGNORED
  181. }
  182. entity_set_aim(ent, player)
  183. {
  184.     static Float:origin[3], Float:ent_origin[3], Float:angles[3]
  185.     pev(player, pev_origin, origin)
  186.     pev(ent, pev_origin, ent_origin)
  187.      
  188.     xs_vec_sub(origin, ent_origin, origin)
  189.     xs_vec_normalize(origin, origin)
  190.     vector_to_angle(origin, angles)
  191.      
  192.     angles[0] = 0.0
  193.      
  194.     set_pev(ent, pev_angles, angles)
  195.     set_velocity(ent, angles)
  196. }
  197. stock Set_EntAnim(ent, anim, Float:framerate, resetframe)
  198. {
  199.     if(!pev_valid(ent))
  200.         return
  201.    
  202.     if(!resetframe)
  203.     {
  204.         if(pev(ent, pev_sequence) != anim)
  205.         {
  206.             set_pev(ent, pev_animtime, get_gametime())
  207.             set_pev(ent, pev_framerate, framerate)
  208.             set_pev(ent, pev_sequence, anim)
  209.         }
  210.     } else {
  211.         set_pev(ent, pev_animtime, get_gametime())
  212.         set_pev(ent, pev_framerate, framerate)
  213.         set_pev(ent, pev_sequence, anim)
  214.     }
  215. }
  216. set_velocity(ent, Float:angles[3])
  217. {
  218.     static Float: Direction[3]
  219.     angle_vector(angles, ANGLEVECTOR_FORWARD, Direction)
  220.     xs_vec_mul_scalar(Direction, 230.0, Direction) // 215 speed
  221.     set_pev(ent, pev_velocity, Direction)
  222.    
  223.     // Run Sequence
  224.     if(pev(ent, pev_sequence) != 6) Util_PlayAnimation(ent, 6);
  225. }
  226. Util_PlayAnimation(index, sequence, Float: framerate = 1.0)
  227. {
  228.     if(is_valid_ent(index)) {
  229.         set_pev(index, pev_animtime, get_gametime())
  230.         set_pev(index, pev_framerate,  1.0)
  231.         set_pev(index, pev_frame, 0.0)
  232.         set_pev(index, pev_sequence, sequence)
  233.     }
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement