Raised This Month: $ Target: $400
 0% 

How transform zombie class in zpa gamemode ?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
jorconnn
Junior Member
Join Date: Sep 2020
Old 08-31-2022 , 16:30   How transform zombie class in zpa gamemode ?
Reply With Quote #1

How transform zombie class in zpsp gamemode ?


#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <cstrike>
#include <xs>

new const ball_name[] = "paralize_ball"
new const ball_model[] = "models/w_hiddentail2.mdl"
new const ball_soundtouch[] = { "warcraft3/frostnova.wav" }

new const zclass_name[] = { "Заморозочный Ревенант" } // name
new const zclass_info[] = { "Пускает заморозочный шар" } // description
new const zclass_model[] = { "revenant_ice" } // model
new const zclass_clawmodel[] = { "v_revenant_ice.mdl" } // claw model
const zclass_health = 2000 // health
const zclass_speed = 245 // speed
const Float:zclass_gravity = 0.7 // gravity
const Float:zclass_knockback = 1.0 // knockback
new const v_zombie_bomb_model[64] = "revenant_ice"

new g_CurWeapon[33], g_bombmodelwpn[64]

#define OFFSET_MODELINDEX 491
#define OFFSET_LINUX 5

new index, defaultindex

new g_zclassparalize
new cvar_paralizedelay , cvar_paralizevelocity , cvar_paralizeballhealth , cvar_paralizeballparalizetime
new sTrail , g_touchs[512] , g_can[33] , g_paralizen[33]

new const WeaponNames[][] =
{
"", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90"
}

public plugin_init()
{
register_plugin("[ZP] Zombie Class: Revenant Ice", "1.0", "=), LARS-BLOODLIKER")

cvar_paralizedelay = register_cvar("zp_classparalize_delay","15")
cvar_paralizevelocity = register_cvar("zp_classparalizeball_velocity" ,"1300")
cvar_paralizeballhealth = register_cvar("zp_classparalizeball_health"," 5")
cvar_paralizeballparalizetime = register_cvar ( "zp_classparalizeball_paralizetime", "7.0" )

register_touch(ball_name, "worldspawn", "touchWorld")
register_touch(ball_name, "func_wall", "touchWorld")
register_touch(ball_name, "func_door", "touchWorld")
register_touch(ball_name, "func_door_rotating", "touchWorld")
register_touch(ball_name, "func_wall_toggle", "touchWorld")
register_touch(ball_name, "func_breakable", "touchWorld")
register_touch(ball_name, "player", "touchPlayer")
register_think(ball_name,"ball_think")

register_clcmd("drop","paralize_cmd")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_forward(FM_PlayerPreThink, "fw_PreThink")

RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")

register_event("CurWeapon", "Event_CurrentWeapon", "be", "1=1")

for(new i = 1; i < sizeof WeaponNames; i++)
if(WeaponNames[i][0]) RegisterHam(Ham_Item_Deploy, WeaponNames[i], "fw_Weapon_Deploy_Post", 1)

RegisterHam(Ham_Player_Duck, "player", "Player_Duck", 1)
}

public plugin_precache()
{
precache_model(ball_model)
sTrail = precache_model("sprites/laserbeam.spr")

g_zclassparalize = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)

formatex(g_bombmodelwpn, charsmax(g_bombmodelwpn), "models/zombie_plague/v_bomb_%s.mdl", v_zombie_bomb_model)
engfunc(EngFunc_PrecacheModel, g_bombmodelwpn)

index = precache_model("models/player/revenant_ice/revenant_ice.mdl")
defaultindex = precache_model("models/player.mdl")
}

public paralize_cmd( id )
{
if( !is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclassparalize || zp_get_user_nemesis(id) )
return PLUGIN_CONTINUE;

if(g_can[id])
{
client_print(id,print_center,"Востановление через %d секунд",g_can[id])
return PLUGIN_HANDLED;
}

static Floatrigin[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3];
static Float:OriginX[3]
pev(id, pev_v_angle, angles);
pev(id, pev_origin, OriginX);
engfunc(EngFunc_MakeVectors, angles);

global_get(glb_v_forward, v_forward);
global_get(glb_v_right, v_right);
global_get(glb_v_up, v_up);

//m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs
pev(id, pev_origin, player_origin);
pev(id, pev_view_ofs, player_view_offset);
xs_vec_add(player_origin, player_view_offset, gun_position);

xs_vec_mul_scalar(v_forward, 13.0, v_forward);
xs_vec_mul_scalar(v_right, 0.0, v_right);
xs_vec_mul_scalar(v_up, 5.0, v_up);

xs_vec_add(gun_position, v_forward, origin);
xs_vec_add(origin, v_right, origin);
xs_vec_add(origin, v_up, origin);

new Float:StartOrigin[3]

StartOrigin[0] = origin[0];
StartOrigin[1] = origin[1];
StartOrigin[2] = origin[2];


new Float:fVelocity[3] , Float:flOrigin[3] , Float:flAngle[3]
pev(id,pev_origin,flOrigin)
pev(id,pev_angles,flAngle)

new ball = create_entity("info_target")

if (!ball) return PLUGIN_HANDLED

g_touchs[ball] = 0

entity_set_string(ball, EV_SZ_classname, ball_name)

entity_set_model(ball, ball_model)

entity_set_origin(ball, StartOrigin)

entity_set_vector(ball, EV_VEC_angles, flAngle)

new Float:MinBox[3] = {-1.0, -1.0, -1.0}
new Float:MaxBox[3] = {1.0, 1.0, 1.0}
entity_set_vector(ball, EV_VEC_mins, MinBox)
entity_set_vector(ball, EV_VEC_maxs, MaxBox)

entity_set_int(ball, EV_INT_solid, SOLID_SLIDEBOX)

entity_set_int(ball, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)

entity_set_edict(ball, EV_ENT_owner, id)

entity_set_int(ball, EV_INT_effects, EF_BRIGHTLIGHT)

VelocityByAim(id, get_pcvar_num(cvar_paralizevelocity ), fVelocity)
entity_set_vector(ball , EV_VEC_velocity, fVelocity)

fm_set_rendering(ball, kRenderFxGlowShell,255, 255, 255, kRenderNormal, 16)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // Temporary entity ID
write_short(ball) // Entity
write_short(sTrail) // Sprite index
write_byte(10) // Life
write_byte(3) // Line width
write_byte(100) // Red
write_byte(255) // Green
write_byte(255) // Blue
write_byte(255) // Alpha
message_end()

UTIL_PlayPlayerAnimation(id,10)
UTIL_PlayWeaponAnimation(id,

g_can[id] = get_pcvar_num(cvar_paralizedelay)
set_task(1.0,"ability_zero",id)

entity_set_float(ball, EV_FL_health , get_pcvar_float(cvar_paralizeballhealth))

entity_set_float(ball, EV_FL_nextthink, get_gametime() + 0.1)

return PLUGIN_HANDLED;
}

public touchWorld(ball, world) {

emit_sound(ball, CHAN_WEAPON, ball_soundtouch, 1.0, ATTN_NORM, 0, PITCH_NORM)
g_touchs[ball] += 1
if(g_touchs[ball] == get_pcvar_num(cvar_paralizeballhealth)) remove_entity(ball)

return PLUGIN_HANDLED
}

public touchPlayer(ball, player) {
client_print(0,print_chat,"Вы попали в %d",player)
remove_task(player)
paralize(player)
//set_task(get_pcvar_float(cvar_paralizeballpar alizetime),"unparalize_player",player)

return PLUGIN_HANDLED
}

public event_round_start()
{
new iEnt = FM_NULLENT;
while( (iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ball_name)) > 0 )
{
engfunc(EngFunc_RemoveEntity,iEnt)
}

for(new i;i<=32;i++)
{
if(g_paralizen[i]) fm_set_rendering(i)
g_can[i] = 0
g_paralizen[i] = 0
remove_task(i)
}
}

public ball_think(ball)
{
if(!is_valid_ent(ball))
return;

new Floatldangles[3],Float:angles[3]
pev(ball,pev_angles,oldangles)
angles[0] = oldangles[0] + random_float(20.0,100.0)
angles[1] = oldangles[1] + random_float(10.0,80.0)
angles[2] = oldangles[2] + random_float(10.0,80.0)
set_pev(ball,pev_angles,angles)

new Float:Velocity[3]
pev(ball,pev_velocity,Velocity)

if(Velocity[0] < 1.0 && Velocity[2] < 1.0 && Velocity[1] < 1.0) remove_entity(ball)

entity_set_float(ball, EV_FL_nextthink, get_gametime() + 0.1)

}

public paralize(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id))
return;

g_paralizen[id] = 1
fm_set_rendering(id, kRenderFxGlowShell,100, 255, 255, kRenderNormal, 16)
set_task(get_pcvar_float(cvar_paralizeballpar alizetime),"unparalize_player",id)
}

public unparalize_player(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id))
return;

g_paralizen[id] = 0
fm_set_rendering(id)
}

public remove_values(id)
{
remove_task(id)
g_can[id] = 0
}

public ability_zero(id)
{
g_can[id] -= 1
if(!g_can[id]) client_print(id,print_center,"Способность активна!")
if(g_can[id]) set_task(1.0,"ability_zero",id)
}

public fw_PreThink(id)
{
if( !is_user_alive(id) || zp_get_user_zombie(id) || !g_paralizen[id])
return PLUGIN_CONTINUE;

set_pev( id, pev_button, pev(id,pev_button) & ~IN_ATTACK );

set_pev(id, pev_maxspeed, 0.0)

new Float:vel[3]
set_pev(id,pev_velocity,vel)

return PLUGIN_HANDLED
}

public zp_user_humanized_post(id)
{
fm_set_user_model_index(id, defaultindex)

remove_values(id)
}
public fw_PlayerKilled(id, attacker, shouldgib) remove_values(id)
public client_connect(id) remove_values(id)

public zp_user_infected_post(id)
{
set_wpnmodel(id)
if((zp_get_user_zombie_class(id) == g_zclassparalize) && (zp_get_user_zombie(id)))
{
fm_set_user_model_index(id, index)
}
remove_values(id)
}

public zp_user_infected_pre(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
if(zp_get_user_next_class(id) == g_zclassparalize)
{
zp_set_user_zombie_class(id, 0)
client_print(id, print_chat, "Данный класс только для Випов")
client_print(id, print_chat, "Стоимость админки на месяц 100 рублей")
}
}
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
static Float:color[3]
color[0] = float(r)
color[1] = float(g)
color[2] = float(b)

set_pev(entity, pev_renderfx, fx)
set_pev(entity, pev_rendercolor, color)
set_pev(entity, pev_rendermode, render)
set_pev(entity, pev_renderamt, float(amount))
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)

message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(pev(Player, pev_body))
message_end()
}

stock UTIL_PlayPlayerAnimation(const id, const Sequence , Float:frame = 1.0 , Float:framerate = 1.0)
{
entity_set_int(id, EV_INT_sequence, Sequence)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, frame)
entity_set_float(id, EV_FL_framerate, framerate)
}

stock get_speed_vector(const Floatrigin1[3],const Floatrigin2[3],Float:speed, Float:new_velocity[3])
{
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
new_velocity[0] *= num
new_velocity[1] *= num
new_velocity[2] *= num

return 1
}

stock fm_cs_set_user_deaths(id, value)
{
set_pdata_int(id, 444, value, 5)
}

stock fm_cs_get_user_team(id)
{
return get_pdata_int(id, 114, 5);
}

public Event_CurrentWeapon(id) g_CurWeapon[id] = read_data(2)

public fw_Weapon_Deploy_Post(weapon_ent)
{
static id; id = get_pdata_cbase(weapon_ent, 41, 4)

static weaponid; weaponid = cs_get_weapon_id(weapon_ent)

g_CurWeapon[id] = weaponid

replace_weapon_models(id, weaponid)
}

public Player_Duck(id)
{
if(zp_get_user_zombie_class(id) == g_zclassparalize && zp_get_user_zombie(id))
{
static button, ducking
button = pev(id, pev_button)
ducking = pev(id, pev_flags) & (FL_DUCKING | FL_ONGROUND) == (FL_DUCKING | FL_ONGROUND)

if(button & IN_DUCK || ducking)
{
set_pev(id, pev_view_ofs, {0.0, 0.0, 20.0})
}
}
}

set_wpnmodel(id)
{
if(!is_user_alive(id)) return

new wpn = get_user_weapon(id)

if(wpn == CSW_HEGRENADE || wpn == CSW_FLASHBANG || wpn == CSW_SMOKEGRENADE)
{
set_pev(id, pev_viewmodel2, g_bombmodelwpn)
}
}

replace_weapon_models(id, weaponid)
{
if(zp_get_user_zombie_class(id) == g_zclassparalize && zp_get_user_zombie(id))
{
switch(weaponid)
{
case CSW_HEGRENADE:
{
set_pev(id, pev_viewmodel2, g_bombmodelwpn)
}
case CSW_SMOKEGRENADE:
{
set_pev(id, pev_viewmodel2, g_bombmodelwpn)
}
case CSW_FLASHBANG:
{
set_pev(id, pev_viewmodel2, g_bombmodelwpn)
}
}
}
}

stock fm_set_user_model_index(id, value)
{
set_pdata_int(id, OFFSET_MODELINDEX, value, OFFSET_LINUX)
}

Last edited by jorconnn; 08-31-2022 at 16:30.
jorconnn is offline
 



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 15:38.


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