Raised This Month: $ Target: $400
 0% 

Suggestion / Subplugin Request [REQ]Remove Barnacle Model


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Depresie
Veteran Member
Join Date: Nov 2013
Old 05-08-2014 , 22:41   [REQ]Remove Barnacle Model
Reply With Quote #1

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 }
*/
Depresie is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 19:43.


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