Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Plugin generated by AMXX-Studio */
- #include <amxmodx>
- #include <amxmisc>
- #include <engine>
- #include <csdm>
- #include <csx>
- #include <hamsandwich>
- #include <xs>
- #include <fakemeta>
- #include <fakemeta_util>
- #include <fakemeta_const>
- #include <fakemeta_stocks>
- #include <fakemeta_util>
- #include <ham_const>
- #include <fun>
- #include <dhudmessage>
- #include <cstrike>
- #include <orpheu>
- #include <orpheu_stocks>
- #include <astar>
- #define PLUGIN "New Plug-In"
- #define VERSION "1.0"
- #define AUTHOR "author"
- #define TASK_DEATH 29128
- #define TASK_FOLLOW 12923
- new g_follow
- new bool: g_Hit[32];
- new const g_NpcSoundKnifeHit[][] =
- {
- "weapons/knife_hit1.wav",
- "weapons/knife_hit2.wav",
- "weapons/knife_hit3.wav",
- "weapons/knife_hit4.wav"
- }
- new const g_NpcSoundKnifeStab[] = "weapons/knife_stab.wav";
- public plugin_init() {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_think("npc_heavy","npc_think");
- //RegisterHam(Ham_Think, "npc_heavy", "npc_think")
- RegisterHam(Ham_TakeDamage, "info_target", "fw_npc_takedamage");
- register_forward(FM_EmitSound, "npc_EmitSound");
- register_concmd("testnpc", "spawn_npc");
- register_concmd("followclient", "clcmd_follow")
- // Add your code here...
- }
- public plugin_precache()
- {
- precache_model("models/monster/bot_heavy.mdl");
- }
- public clcmd_follow(id)
- {
- g_follow = id
- return PLUGIN_HANDLED;
- }
- public spawn_npc(id)
- {
- new ent = create_entity("info_target");
- new npcreg
- static hp
- hp = set_pev(ent, pev_health, hp)
- if(!pev_valid(ent)) return PLUGIN_HANDLED;
- set_pev(ent, pev_classname, "npc_heavy")
- set_pev(ent, pev_netname, "Heavy")
- new Float: origin[3], Float: angle[3], Float: velocity[3]
- pev(id, pev_origin, origin)
- origin[1] += 80.0
- origin[2] += 80.0
- engfunc(EngFunc_SetOrigin, ent, origin)
- pev(id, pev_angles, angle)
- angle[0] = 0.0
- set_pev(ent, pev_angles, angle)
- set_pev(ent, pev_takedamage, 1.0)
- set_pev(ent, pev_health, 2000.0)
- set_pev(ent, pev_movetype, MOVETYPE_WALK)
- set_pev(ent, pev_solid, SOLID_SLIDEBOX)
- //set_pev(ent, pev_controller_0, 125)
- //set_pev(ent, pev_controller_1, 125)
- //set_pev(ent, pev_controller_2, 125)
- //set_pev(ent, pev_controller_3, 125)
- engfunc(EngFunc_SetModel, ent, "models/monster/bot_heavy.mdl")
- engfunc(EngFunc_SetSize, ent, {-12.0, -12.0, 0.0 }, { 12.0, 12.0, 75.0 })
- velocity_by_aim(id, 800, velocity)
- entity_set_aim(ent, g_follow)
- set_pev(ent, pev_velocity, velocity)
- entity_set_float(ent,EV_FL_animtime,2.0)
- entity_set_float(ent,EV_FL_framerate,1.0)
- entity_set_int(ent,EV_INT_sequence,1);
- set_pev(ent, pev_nextthink, get_gametime() + 0.01)
- set_pev(ent, pev_gravity, 120.0)
- if(!npcreg) {
- RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_npc_takedamage")
- //RegisterHamFromEntity(Ham_Killed, ent, "fw_npc_killed")
- //RegisterHamFromEntity(Ham_TraceAttack, ent, "fw_npc_traceattack")
- npcreg = true
- }
- //if(pev(ent, pev_health < 100) Util_PlayAnimation(ent, random_num(15,20))
- return PLUGIN_HANDLED
- }
- public npc_think(ent)
- {
- if(!pev_valid(ent)) return;
- //ent -= TASK_FOLLOW
- //if(task_exists(ent+TASK_DEATH)) return
- if(pev(ent, pev_health) <= 200.0)
- {
- //ent -= TASK_DEATH
- Set_EntAnim(ent, 15, 1.0,1)
- entity_set_float(ent, EV_FL_takedamage, 0.0)
- set_pev(ent, pev_movetype, MOVETYPE_NONE)
- set_pev(ent, pev_solid, SOLID_NOT)
- //remove_task(ent+TASK_FOLLOW)
- g_follow = 0
- }
- static className[32]
- pev(ent, pev_classname, className, charsmax(className))
- if(!equali(className, "npc_heavy")) return;
- //if(g_dead[iEnt]) return;
- new Float: velocity[3]
- if(is_user_alive(g_follow)) entity_set_aim(ent, g_follow);
- set_pev(ent, pev_nextthink, get_gametime() + 0.3)
- }
- public Heavy_death(ent)
- {
- ent -= TASK_DEATH
- Set_EntAnim(ent, 15, 1.0,1)
- entity_set_float(ent, EV_FL_takedamage, 0.0)
- set_pev(ent, pev_movetype, MOVETYPE_NONE)
- set_pev(ent, pev_solid, SOLID_NOT)
- remove_task(ent+TASK_FOLLOW)
- g_follow = 0
- }
- public give_weapon(ent)
- {
- new entWeapon = create_entity("info_target");
- entity_set_string(entWeapon, EV_SZ_classname, "npc_weapon");
- entity_set_int(entWeapon, EV_INT_movetype, MOVETYPE_FOLLOW);
- entity_set_int(entWeapon, EV_INT_solid, SOLID_NOT);
- entity_set_edict(entWeapon, EV_ENT_aiment, ent);
- //entity_set_model(entWeapon, "models/p_ak47.mdl")
- }
- public fw_npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type) {
- if(!pev_valid(ent) || !is_user_connected(attacker))
- return HAM_SUPERCEDE;
- Util_PlayAnimation(ent, 11)
- if(get_weaponid("weapon_knife")) emit_sound(attacker, CHAN_VOICE, g_NpcSoundKnifeHit[random(sizeof g_NpcSoundKnifeHit)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- return HAM_IGNORED
- }
- entity_set_aim(ent, player)
- {
- static Float:origin[3], Float:ent_origin[3], Float:angles[3]
- pev(player, pev_origin, origin)
- pev(ent, pev_origin, ent_origin)
- xs_vec_sub(origin, ent_origin, origin)
- xs_vec_normalize(origin, origin)
- vector_to_angle(origin, angles)
- angles[0] = 0.0
- set_pev(ent, pev_angles, angles)
- set_velocity(ent, angles)
- }
- stock Set_EntAnim(ent, anim, Float:framerate, resetframe)
- {
- if(!pev_valid(ent))
- return
- if(!resetframe)
- {
- if(pev(ent, pev_sequence) != anim)
- {
- set_pev(ent, pev_animtime, get_gametime())
- set_pev(ent, pev_framerate, framerate)
- set_pev(ent, pev_sequence, anim)
- }
- } else {
- set_pev(ent, pev_animtime, get_gametime())
- set_pev(ent, pev_framerate, framerate)
- set_pev(ent, pev_sequence, anim)
- }
- }
- set_velocity(ent, Float:angles[3])
- {
- static Float: Direction[3]
- angle_vector(angles, ANGLEVECTOR_FORWARD, Direction)
- xs_vec_mul_scalar(Direction, 230.0, Direction) // 215 speed
- set_pev(ent, pev_velocity, Direction)
- // Run Sequence
- if(pev(ent, pev_sequence) != 6) Util_PlayAnimation(ent, 6);
- }
- Util_PlayAnimation(index, sequence, Float: framerate = 1.0)
- {
- if(is_valid_ent(index)) {
- set_pev(index, pev_animtime, get_gametime())
- set_pev(index, pev_framerate, 1.0)
- set_pev(index, pev_frame, 0.0)
- set_pev(index, pev_sequence, sequence)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement