at scripting i now some examples but i need you're help to know for sure what iam doing bad and what iam doing good.
The zombies are Terrorist team if i missed a tam zombie or zombie team pls correct .
It's not finished code.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#define PLUGIN "Swarm Extension"
#define VERSION "1.0"
#define AUTHOR "DoviuX"
//Sounds
//Hunter
new g_sndleap[] = "Swarm/Hunter/Hunter_Leap.wav"
new const HuntHit[][]=
{
"Swarm/Hunter/Hit/Hit1.wav",
"Swarm/Hunter/Hit/Hit2.wav",
"Swarm/Hunter/Hit/Hit3.wav"
}
new const HuntMiss[][]=
{
"Swarm/Hunter/Miss/Miss1.wav",
"Swarm/Hunter/Miss/Miss2.wav",
"Swarm/Hunter/Miss/Miss3.wav"
}
new const HuntDie[][]=
{
"Swarm/Hunter/Die/Die1.wav",
"Swarm/Hunter/Die/Die2.wav",
"Swarm/Hunter/Die/Die3.wav"
}
new const HuntPain[][]=
{
"Swarm/Hunter/Pain/Pain1.wav",
"Swarm/Hunter/Pain/Pain2.wav",
"Swarm/Hunter/Pain/Pain3.wav"
}
//Smoker
new g_sndMiss[] = "Swarm/Smoker/TongueHit_miss.wav"
new g_sndDrag[] = "Swarm/Smoker/TongueHit_drag.wav"
new g_sndamb[] = "Swarm/Smoker/Draging_Ambience.wav"
new const SmokHit[][]=
{
"Swarm/Smoker/Hit/Hit1.wav",
"Swarm/Smoker/Hit/Hit2.wav",
"Swarm/Smoker/Hit/Hit3.wav"
}
new const SmokMiss[][]=
{
"Swarm/Smoker/Miss/Miss1.wav",
"Swarm/Smoker/Miss/Miss2.wav",
"Swarm/Smoker/Miss/Miss3.wav"
}
new const SmokDie[][]=
{
"Swarm/Smoker/Die/Die1.wav",
"Swarm/Smoker/Die/Die2.wav",
"Swarm/Smoker/Die/Die3.wav"
}
new const SmokPain[][]=
{
"Swarm/Smoker/Pain/Pain1.wav",
"Swarm/Smoker/Pain/Pain2.wav",
"Swarm/Smoker/Pain/Pain3.wav"
}
//Boomer
new const BoomHit[][]=
{
"Swarm/Boomer/Hit/Hit1.wav",
"Swarm/Boomer/Hit/Hit2.wav",
"Swarm/Boomer/Hit/Hit3.wav"
}
new const BoomMiss[][]=
{
"Swarm/Boomer/Miss/Miss1.wav",
"Swarm/Boomer/Miss/Miss2.wav",
"Swarm/Boomer/Miss/Miss3.wav"
}
new const BoomDie[][]=
{
"Swarm/Boomer/Die/Die1.wav",
"Swarm/Boomer/Die/Die2.wav",
"Swarm/Boomer/Die/Die3.wav"
}
new const BoomPain[][]=
{
"Swarm/Boomer/Pain/Pain1.wav",
"Swarm/Boomer/Pain/Pain2.wav",
"Swarm/Boomer/Pain/Pain3.wav"
}
//Tank
new const TankHit[][]=
{
"Swarm/Tank/Hit/Hit1.wav",
"Swarm/Tank/Hit/Hit2.wav",
"Swarm/Tank/Hit/Hit3.wav"
}
new const TankMiss[][]=
{
"Swarm/Tank/Miss/Miss1.wav",
"Swarm/Tank/Miss/Miss2.wav",
"Swarm/Tank/Miss/Miss3.wav"
}
new const TankDie[][]=
{
"Swarm/Tank/Die/Die1.wav",
"Swarm/Tank/Die/Die2.wav",
"Swarm/Tank/Die/Die3.wav"
}
new const TankPain[][]=
{
"Swarm/Tank/Pain/Pain1.wav",
"Swarm/Tank/Pain/Pain2.wav",
"Swarm/Tank/Pain/Pain3.wav"
}
/// Bool class
new bool:is_Hunter[33]
new bool:is_Smoker[33]
new bool:is_Boomer[33]
new bool:is_Tank[33]
/// Hunter
new hunter_health
new hunter_gravity
new hunter_speed
new hunter_zclass_LongJump, hunter_LongJump_force, hunter_LongJump_height, cvar_cooldown
new Float:hunter_lastleaptime[33] // time leap was last used
/// Smoker
new smoker_health
new smoker_gravity
new smoker_speed
new g_hooked[33], g_hooksLeft[33]
new g_zombie[33]
new Float:g_lastHook[33]
new cvar_maxdrags
cvar_dragspeed
cvar_cooldown
cvar_dmg2stop
cvar_mates
cvar_bind
new g_zclass_smoker, g_Line
/// Boomer
new boomer_health
new boomer_gravity
new boomer_speed
/// Tank
new tank_health
new tank_gravity
new tank_speed
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
/// FCVAR
register_cvar("L4D Infected Class v.%s", VERSION, FCVAR_SERVER)
/// Register Ham_Spawn
RegisterHam(Ham_Spawn, "player", "fwdPlayer_Spawn", 1)
/// Register Forwards
register_forward(FM_PlayerPreThink, "cmdHunter")
register_forward(FM_PlayerPreThink, "cmdSmoker")
register_forward(FM_PlayerPreThink, "cmdBoomer")
register_forward(FM_PlayerPreThink, "cmdTank")
/// Hunter
hunter_health = register_cvar("hunter_health", "600")
hunter_gravity = register_cvar("hunter_gravity ", "0.7")
hunter_speed = register_cvar("hunter_speed", "270")
hunter_LongJump_force = register_cvar("hunter_leap_force", "525")
hunter_LongJump_height = register_cvar("hunter_leap_height", "345")
cvar_cooldown = register_cvar("hunter_leap_cooldown", "1.5")
/// Smoker
smoker_health = register_cvar("smoker_health", "700")
smoker_gravity = register_cvar("smoker_gravity ", "0.9")
smoker_speed = register_cvar("smoker_speed", "255")
cvar_dragspeed = register_cvar("smoker_dragspeed", "160")
cvar_maxdrags = register_cvar("smoker_maxdrags", "20")
cvar_cooldown = register_cvar("smoker_cooldown", "0.0")
cvar_dmg2stop = register_cvar("smoker_dmg2stop", "200")
cvar_mates = register_cvar("smoker_mates", "0")
register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
register_clcmd("-drag","drag_end")
/// Boomer
boomer_health = register_cvar("boomer_health", "300")
boomer_gravity = register_cvar("boomer_gravity ", "0.7")
boomer_speed = register_cvar("boomer_speed", "245")
/// Tank
tank_health = register_cvar("tank_health", "3000")
tank_gravity = register_cvar("tank_gravity ", "0.8")
tank_speed = register_cvar("tank_speed", "260")
}
public plugin_precache()
{
precache_model("models/player/Hunter/Hunter.mdl")
precache_model("models/player/Smoker/Smoker.mdl")
precache_model("models/player/Boomer/Boomer.mdl")
precache_model("models/player/Tank/Tank.mdl")
precache_sound(g_sndDrag)
precache_sound(g_sndMiss)
g_Line = precache_model("sprites/zbeam4.spr")
return PLUGIN_CONTINUE
}
public fwdPlayer_Spawn(id)
{
is_Hunter[id] = false;
is_Smoker[id] = false;
is_Boomer[id] = false;
is_Tank[id] = false;
}
public cmdHunter(id, entity)
{
if(TEAM_T && is_user_alive(id) && is_Hunter[id] == true)
{
if (!is_user_alive(id))
return
if (allowed_LongJump(id))
{
static Float:velocity[3]
velocity_by_aim(id, get_pcvar_num(hunter_LongJump_force), velocity)
velocity[2] = get_pcvar_float(hunter_LongJump_height)
set_pev(id, pev_velocity, velocity)
// Set the current leap time
g_lastleaptime[id] = get_gametime()
set_user_health(id, get_pcvar_num(hunter_health))
set_user_gravity(id, get_pcvar_float(hunter_gravity))
set_user_maxspeed(id, get_pcvar_float(hunter_speed))
cs_set_user_model(id, "Hunter")
if (!((pev(id, pev_flags) & FL_ONGROUND) && (pev(id, pev_flags) & FL_DUCKING)) || fm_get_speed(id) < 10)
return false
static buttons
buttons = pev(id, pev_button)
// Not doing a longjump (added bot support)
if (!(buttons & IN_ATTACK) && !is_user_bot(id))
return false
// Get cooldown cvar
static Float:cooldown
cooldown = get_pcvar_float(cvar_cooldown)
// Cooldown not over yet
if (get_gametime() - hunter_lastleaptime[id] < cooldown)
return false
static Float:velocity[3]
pev(entity, pev_velocity, velocity)
return floatround(vector_length(velocity));
return true
}
}
public cmdSmoker(id)
{
if(TEAM_T && is_user_alive(id) && is_Smoker[id] == true)
{
set_user_health(id, get_pcvar_num(smoker_health))
set_user_gravity(id, get_pcvar_float(smoker_gravity))
set_user_maxspeed(id, get_pcvar_float(smoker_speed))
cs_set_user_model(id, "Smoker")
g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
g_lastHook[id] = get_gametime()
if (g_hooked[id])
drag_end(id)
if(TEAM_T && is_user_alive(id) && is_Smoker[id] == true) {
static Float:cdown
cdown = get_pcvar_float(cvar_cooldown)
if (!is_user_alive(id)) {
client_print(id, print_chat, "You can't drag if you are dead!")
return
}
if (g_hooksLeft[id] <= 0) {
client_print(id, print_chat, "You can't drag anymore!")
return
}
if (get_gametime() - g_lastHook[id] < cdown) {
client_print(id, print_chat, "Wait %.fsec to drag again!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]))
return
}
if (g_hooksLeft[id] > 0) {
g_hooksLeft[id]--
client_print(id, print_chat, "You can drag player to youself %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s")
}
new hooktarget, body
get_user_aiming(id, hooktarget, body)
if (is_user_alive(hooktarget)) {
if (get_user_team(hooktarget) != get_user_team(id)) {
g_hooked[id] = hooktarget
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
} else {
/*if (get_user_team(hooktarget) == get_user_team(id)) {
if (get_pcvar_num(cvar_mates) == 1) {*/
//if (get_user_team(hooktarget) == get_user_team(id)) {
if (get_user_team(hooktarget) == g_zombie[id]) {
if (get_pcvar_num(cvar_mates) == 1) { // If is 1 , hook!
g_hooked[id] = hooktarget
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
//emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
if (get_pcvar_num(cvar_mates) == 0) { // If is 0 , hook , but missed!
g_hooked[id] = hooktarget
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
}
} else {
g_hooked[id] = 33
noTarget(id)
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
return
}
} else {
g_hooked[id] = 33
noTarget(id)
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
return
}
}
new parm[2]
parm[0] = id
parm[1] = hooktarget
set_task(0.1, "smoker_reelin", id, parm, 2, "b")
harpoon_target(parm)
} else {
g_hooked[id] = 33
noTarget(id)
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
}
} else {
return
}
new id = parm[0]
new victim = parm[1]
if (!g_hooked[id])
return
if (!is_user_alive(victim)) {
drag_end(id)
return
}
new Float:fl_Velocity[3]
new idOrigin[3], vicOrigin[3]
emit_sound(id, CHAN_BODY, g_sndamb, 1.0, ATTN_NORM, 0, PITCH_HIGH)
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) //<- rewritten. now uses engine
g_hooked[id] = 0
beam_remove(id)
remove_task(id)
if (get_gametime() - g_lastHook[id] <= get_pcvar_float(cvar_cooldown)) {
return
} else {
g_lastHook[id] = get_gametime()
new id = read_data(2)
if (g_hooked[id])
drag_end(id)
if (victim == attacker || !is_user_connected(attacker)) {
if (damage > 25) {
drag_end(victim)
return HAM_IGNORED;
}
}
if (get_user_team(attacker) != get_user_team(victim)) {
if (damage > get_pcvar_num(cvar_dmg2stop)) {
drag_end(victim)
return HAM_IGNORED;
}
}
return HAM_IGNORED;
if (id <= 0 || id > 32)
return
if (g_hooked[id])
drag_end(id)
new id = parm[0]
new hooktarget = parm[1]
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(8) // TE_BEAMENTS
write_short(id)
write_short(hooktarget)
write_short(g_Line) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(200) // life
write_byte(8) // width
write_byte(1) // noise
write_byte(155) // r, g, b
write_byte(155) // r, g, b
write_byte(55) // r, g, b
write_byte(90) // brightness
write_byte(10) // speed
message_end()
new endorigin[3]
get_user_origin(id, endorigin, 3)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
write_short(id)
write_coord(endorigin[0])
write_coord(endorigin[1])
write_coord(endorigin[2])
write_short(g_Line) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(200) // life
write_byte(8) // width
write_byte(1) // noise
write_byte(155) // r, g, b
write_byte(155) // r, g, b
write_byte(55) // r, g, b
write_byte(75) // brightness
write_byte(0) // speed
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99) //TE_KILLBEAM
write_short(id) //entity
message_end()
}
public cmdBoomer(id)
{
if(TEAM_T && is_user_alive(id) && is_Boomer[id] == true)
{
set_user_health(id, get_pcvar_num(boomer_health))
set_user_gravity(id, get_pcvar_float(boomer_gravity))
set_user_maxspeed(id, get_pcvar_float(boomer_speed))
cs_set_user_model(id, "Boomer")
}
}
public cmdTank(id)
{
if(TEAM_T && is_user_alive(id) && is_Tank[id] == true)
{
set_user_health(id, get_pcvar_num(tank_health))
set_user_gravity(id, get_pcvar_float(tank_gravity))
set_user_maxspeed(id, get_pcvar_float(tank_speed))
cs_set_user_model(id, "Tank")
}
}
public client_connect(id)
{
is_Hunter[id] = false;
is_Smoker[id] = false;
is_Boomer[id] = false;
is_Tank[id] = false;
}