AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Zombie Plague Mod (https://forums.alliedmods.net/forumdisplay.php?f=126)
-   -   Suggestion / Subplugin Request [REQ]Remove Barnacle Model (https://forums.alliedmods.net/showthread.php?t=240097)

Depresie 05-08-2014 22:41

[REQ]Remove Barnacle Model
 
can someone remove the barnacle model from the extra drag ability?

Code:

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <zmvip>
#define PLUGIN "[ZP] Extra Drag"
#define VERSION "1.1"
#define AUTHOR "4eRT"
//Some vars
new const g_extra_drag[] = { "Drag ability" }
new const g_vmodel[] = { "models/barnacle/v_bgrap.mdl" }
new const g_pmodel[] = { "models/barnacle/p_bgrap.mdl" }
new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_over_dmg[33]
new Float:g_lastHook[33]
new g_Line, g_item_drag
new cvar_enabled, cvar_cost, cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmgtostop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor, cvar_reset
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
new bool: g_has_drag[33], bool: g_bind_use[33], bool: g_bind_or_not[33], bool: g_drag_i[33]
public plugin_init()
{
 cvar_enabled = register_cvar("zp_extra_drag", "1")
 cvar_cost = register_cvar("zp_extra_drag_cost", "10")
 cvar_dragspeed = register_cvar("zp_extra_drag_dragspeed", "160")
 cvar_maxdrags = register_cvar("zp_extra_drag_maxdrags", "10")
 cvar_cooldown = register_cvar("zp_extra_drag_cooldown", "5")
 cvar_dmgtostop = register_cvar("zp_extra_drag_dmg2stop", "300")
 cvar_mates = register_cvar("zp_extra_drag_mates", "0")
 cvar_extrahook = register_cvar("zp_extra_drag_extrahook", "2")
 cvar_unb2move = register_cvar("zp_extra_drag_unable_move", "1")
 cvar_nemesis = register_cvar("zp_extra_drag_nemesis", "0")
 cvar_survivor = register_cvar("zp_extra_drag_survivor", "1")
 cvar_reset = register_cvar("zp_extra_drag_reset", "0")
 register_event("HLTV", "newSpawn", "a", "1=0", "2=0")
 register_event("DeathMsg", "player_death", "a")
 register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
 register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
 RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
 register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
 register_clcmd("-drag","drag_end")
 register_menucmd(register_menuid("Do you want to bind V +drag?"), keys, "bind_z_key")
 g_item_drag = zv_register_extra_item(g_extra_drag, "Drag Players To You", get_pcvar_num(cvar_cost), ZV_TEAM_ZOMBIE)
}
public plugin_precache()
{
 register_plugin(PLUGIN, VERSION, AUTHOR)
 precache_sound(g_sndDrag)
 precache_sound(g_sndMiss)
 g_Line = precache_model("sprites/zbeam4.spr")
 engfunc(EngFunc_PrecacheModel, g_vmodel)
 engfunc(EngFunc_PrecacheModel, g_pmodel)
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
 replace_models(msg_entity);
public replace_models(id)
{
 if (!is_user_alive(id) || !zp_get_user_zombie(id))
  return;
 
 if(get_user_weapon(id) == CSW_KNIFE && g_has_drag[id])
 {
  set_pev(id, pev_viewmodel2, g_vmodel);
  set_pev(id, pev_weaponmodel2, g_pmodel);
 }
}
public zv_extra_item_selected(id, item)
{
 if (item == g_item_drag)
 {
  if(is_user_alive(id) && get_pcvar_num(cvar_enabled) == 1)
  {
  g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
  g_has_drag[id] = true
  client_print(id, print_chat, "You've bought drag ability. Now have fun with barnacle hand!")
  replace_models(id)
 
  if (!g_bind_or_not[id])
  {
    new menu[192]
    format(menu, 191, "Do you want to bind Z +drag?^n^n1. Yes^n2. No^n3. Drag on Z")
    show_menu(id, keys, menu)
  }
  } else
  return
 }
}
public zp_user_infected_post(id, infector)
 if(g_has_drag[infector])
  g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
public zp_user_humanized_post(id)
 if(get_pcvar_num(cvar_reset) == 1)
  g_has_drag[id] = false
public newSpawn()
{
 for (new id = 1; id <= 32; id++)
 {
  if (g_hooked[id])
  drag_end(id)
 
  g_has_drag[id] = false
 }
}
public player_death()
{
 new attacker = read_data(1)
 new id = read_data(2)
 
 if (g_hooked[attacker])
  drag_end(id)
 
 g_has_drag[id] = false
}
public client_connect(id)
 g_has_drag[id] = false
public client_disconnect(id)
{
 if (g_hooked[id])
  drag_end(id)
 
 if(g_unable2move[id])
  g_unable2move[id] = false
 
 g_has_drag[id] = false
}
public drag_start(id)

 if (zp_get_user_zombie(id) && g_has_drag[id] && !g_drag_i[id]) {
 
  static Float:cdown
  cdown = get_pcvar_float(cvar_cooldown)
  if (!is_user_alive(id)) {
  client_print(id, print_chat, "[ZP] You can't drag if you are dead!")
  return PLUGIN_HANDLED
  }
  if (g_hooksLeft[id] <= 0) {
  client_print(id, print_chat, "[ZP] You can't drag anymore!")
  return PLUGIN_HANDLED
  }
  if (get_gametime() - g_lastHook[id] < cdown) {
  client_print(id, print_chat, "[ZP] Wait %.f0 sec. to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
  return PLUGIN_HANDLED
  }
 
  if (zp_is_nemesis_round() && get_pcvar_num(cvar_nemesis) == 0) {
  client_print(id, print_chat, "[ZP] You can't drag in Nemesis mode!")
  return PLUGIN_HANDLED
  }
  new hooktarget, body
  get_user_aiming(id, hooktarget, body)
 
  if (is_user_alive(hooktarget)) {
  if (!zp_get_user_zombie(hooktarget))
    {
    if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
      client_print(id, print_chat, "[ZP] You can't drag Survivor!")
      return PLUGIN_HANDLED
    }
   
    g_hooked[id] = hooktarget
    emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
    }
  else
    {
    if (get_pcvar_num(cvar_mates) == 1)
    {
      g_hooked[id] = hooktarget
      emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
    }
    else
    {
      client_print(id, print_chat, "[ZP] You can't drag teammates!")
      return PLUGIN_HANDLED
    }
    }
  if (get_pcvar_float(cvar_dragspeed) <= 0.0)
    cvar_dragspeed = 1
 
  new parm[2]
  parm[0] = id
  parm[1] = hooktarget
 
  set_task(0.1, "reelin_player", id, parm, 2, "b")
  harpoon_target(parm)
 
  g_hooksLeft[id]--
  client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
  g_drag_i[id] = true
 
  if(get_pcvar_num(cvar_unb2move) == 1)
    g_unable2move[hooktarget] = true
   
  if(get_pcvar_num(cvar_unb2move) == 2)
    g_unable2move[id] = true
   
  if(get_pcvar_num(cvar_unb2move) == 3)
  {
    g_unable2move[hooktarget] = true
    g_unable2move[id] = true
  }
  } else {
  g_hooked[id] = 33
  noTarget(id)
  emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  g_drag_i[id] = true
  g_hooksLeft[id]--
  client_print(id, print_chat, "[ZP] You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
  }
 }
 else
  return PLUGIN_HANDLED
 
 return PLUGIN_CONTINUE
}
public reelin_player(parm[])
{
 new id = parm[0]
 new victim = parm[1]
 if (!g_hooked[id] || !is_user_alive(victim))
 {
  drag_end(id)
  return
 }
 new Float:fl_Velocity[3]
 new idOrigin[3], vicOrigin[3]
 get_user_origin(victim, vicOrigin)
 get_user_origin(id, idOrigin)
 new distance = get_distance(idOrigin, vicOrigin)
 if (distance > 1) {
  new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)
  fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
  fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
  fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
 } else {
  fl_Velocity[0] = 0.0
  fl_Velocity[1] = 0.0
  fl_Velocity[2] = 0.0
 }
 entity_set_vector(victim, EV_VEC_velocity, fl_Velocity)
}
public drag_end(id)
{
 g_hooked[id] = 0
 beam_remove(id)
 remove_task(id)
 
 if (g_drag_i[id])
  g_lastHook[id] = get_gametime()
 
 g_drag_i[id] = false
 g_unable2move[id] = false
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
 if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmgtostop) > 0))
 {
  g_over_dmg[victim] = g_over_dmg[victim] + floatround(damage)
  if (g_over_dmg[victim] >= get_pcvar_num(cvar_dmgtostop))
  {
  g_over_dmg[victim] = 0
  drag_end(victim)
  return HAM_IGNORED;
  }
 }
 return HAM_IGNORED;
}
public fw_PlayerPreThink(id)
{
 if (!is_user_alive(id))
  return FMRES_IGNORED
 
 new button = get_user_button(id)
 new oldbutton = get_user_oldbutton(id)
 
 if (zp_get_user_zombie(id) && g_has_drag[id])
 {
  if(g_bind_use[id])
  {
  if (!(oldbutton & IN_USE) && (button & IN_USE))
    drag_start(id)
 
  if ((oldbutton & IN_USE) && !(button & IN_USE))
    drag_end(id)
  }
 }
 
 if (!g_drag_i[id])
  g_unable2move[id] = false
 
 if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
  set_pev(id, pev_maxspeed, 1.0)
 
 return PLUGIN_CONTINUE
}
public harpoon_target(parm[])
{
 new id = parm[0]
 new hooktarget = parm[1]
 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
 write_byte(8)
 write_short(id)
 write_short(hooktarget)
 write_short(g_Line)
 write_byte(0)
 write_byte(0)
 write_byte(200)
 write_byte(8)
 write_byte(1)
 write_byte(255)
 write_byte(0)
 write_byte(0)
 write_byte(90)
 write_byte(10)
 message_end()
}
public bind_z_key(id, keys)
{
 g_bind_or_not[id] = true
 switch(keys)
 {
  case 0:
  client_cmd(id, "bind v ^"+drag^"")
 
  case 1:
  client_print(id, print_chat, "[ZP] To drag player to youself (bind ^'^'key^'^' ^'^'+drag^'^') hold binded key")
 
  case 2:
  g_bind_use[id] = true
 
  default:
  g_bind_or_not[id] = false
 }
 
 return PLUGIN_HANDLED
}
public noTarget(id)
{
 new endorigin[3]
 get_user_origin(id, endorigin, 3)
 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
 write_byte( TE_BEAMENTPOINT );
 write_short(id)
 write_coord(endorigin[0])
 write_coord(endorigin[1])
 write_coord(endorigin[2])
 write_short(g_Line)
 write_byte(0)
 write_byte(0)
 write_byte(200)
 write_byte(8)
 write_byte(1)
 write_byte(255)
 write_byte(0)
 write_byte(0)
 write_byte(75)
 write_byte(0)
 message_end()
}
public beam_remove(id)
{
 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
 write_byte(99)
 write_short(id)
 message_end()
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/



All times are GMT -4. The time now is 06:34.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.