Senior Member
Join Date: Aug 2017
Location: Kyiv
|
02-12-2020
, 12:57
Entity [ Block Player ]
|
#1
|
Please help to ban to install Entity model on players
The Ability Of A Zombie.Install only the ceiling of Entity.There's nowhere else to put it.
But for some reason there is no ban on players.
I'm doing everything.
Thanks.
Model setting function
PHP Code:
public create_barnacle(id) { if (g_barnacleCount[id] > 0) { new origin[3], Float:fOrigin[3] get_user_origin(id, origin, 3) IVecFVec(origin, fOrigin) fOrigin[2] -= 2.0 new const Float:direction[4][3] = {{5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}} new Float:temp[3] xs_vec_copy(fOrigin, temp) new i for (i = 0; i < 4; i++) { xs_vec_add(fOrigin, direction[i], temp) if (engfunc(EngFunc_PointContents, temp) != -1) break } if (i != 4) client_print(id, print_center, "Эту Ловушку нужно ставить на потолок !") else { fOrigin[2] += 2.0 new ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target")) set_pev(ent,pev_classname, barnacle_class) engfunc(EngFunc_SetModel, ent, "models/zp_trap/zp_trap2.mdl") set_pev(ent, pev_iuser1, id) set_pev(ent, pev_mins, Float:{-16.0,-16.0, -36.0}) set_pev(ent, pev_maxs, Float:{16.0,16.0,0.0}) set_pev(ent, pev_size, Float:{-16.0,-16.0, -36.0,16.0,16.0,0.0}) engfunc(EngFunc_SetSize, ent, Float:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,0.0}) set_pev(ent, pev_solid, SOLID_BBOX) set_pev(ent, pev_movetype, MOVETYPE_FLY) set_pev(ent, pev_health, get_pcvar_float(g_CvarHP) + HEALTH_OFFSET) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_dmg, 1.0) set_pev(ent, pev_maxspeed, 20.0) set_pev(ent,pev_flags, FL_MONSTER|FL_MONSTERCLIP) set_pev(ent, pev_origin, fOrigin) set_pev(ent, pev_animtime, 10.0) set_pev(ent, pev_framerate, 0.5) set_pev(ent, pev_sequence, idle3) set_pev(ent, pev_gaitsequence, idle3) set_pev(ent, pev_nextthink,get_gametime() + THINK_DELAY) g_barnacleCount[id]--
client_print(id, print_center, "Осталось Ловушек : %d", g_barnacleCount[id]) } } else client_print(id, print_center, "Больше нет Ловушек !") }
All code
PHP Code:
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <engine> #include <fun> #include <xs> #include <zombieplague>
#define TASK_COOLDOWN 27015 #define TASK_REMOVE_TRAP 37015
#define HEALTH_OFFSET 500 #define THINK_DELAY 0.1
enum { idle1, idle2, idle3, flinch_sm, attack1, chewcycle, death }
enum (+= 666) { TASK_BOT_USE_SKILL }
#define ID_BOT_USE_SKILL (taskid - TASK_BOT_USE_SKILL)
new const zclass_name[] = { "Отродие" } new const zclass_info[] = { "Ловушки" } new const zclass_model[] = { "zombie_zaraza" } new const zclass_clawmodel[] = { "v_cutit_nemesis.mdl" } const zclass_health = 5000 const zclass_speed = 260 const Float:zclass_gravity = 0.8 const Float:zclass_knockback = 1.0
new const barnacle_class[] = "barnacle" new g_mdl_gib_head
new g_CvarSpeed, g_CvarDamage, g_CvarHP, g_CvarInfect
new g_msgScreenFade
new g_barnacleCount[33]
new g_zheavy new bool:can_make_trap[33] new bool:player_trapped[33]
new const trap_string[] = "trap" new const trap_model[] = "models/zp_trap/zp_trap.mdl"
new cvar_cooldown new cvar_trap_hp new cvar_trap_time
public plugin_init() { register_plugin("[ZP] Zombie Class: Heavy", "1.2", "Dias") register_event("HLTV", "eventFreezeTimeStart", "a", "1=0", "2=0") register_event("ResetHUD", "new_round", "be") register_touch(trap_string, "*", "fw_touch") register_forward(FM_PlayerPreThink, "fw_think", 0); register_forward(FM_PlayerPreThink, "CmdStart") register_forward(FM_Think, "fwdThink")
g_CvarSpeed = register_cvar("barnacle_speed", "20.0") g_CvarDamage = register_cvar("barnacle_damage", "30.0") g_CvarHP = register_cvar("barnacle_hp", "2000.0") g_CvarInfect = register_cvar("barnacle_infect", "1")
register_logevent("logevent_round_start",2, "1=Round_Start") g_msgScreenFade = get_user_msgid("ScreenFade")
cvar_register() }
public cvar_register() { cvar_cooldown = register_cvar("qz_cooldown", "25") cvar_trap_time = register_cvar("qz_trap_time", "15") cvar_trap_hp = register_cvar("qz_trap_hp", "2000") }
public plugin_precache() { g_zheavy = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) precache_model(trap_model) precache_model("models/zp_trap/zp_trap2.mdl") precache_sound("zp_trap/bcl_alert2.wav") precache_sound("zp_trap/bcl_chew1.wav") precache_sound("zp_trap/bcl_chew2.wav") precache_sound("zp_trap/bcl_chew3.wav") precache_sound("zp_trap/bcl_die1.wav" ) precache_sound("zp_trap/bcl_die3.wav" ) g_mdl_gib_head = precache_model("models/GIB_Skull.mdl") }
public logevent_round_start() { for (new id=1; id<33; id++) { if (!is_user_connected(id)) continue; if (is_user_bot(id)) { if (task_exists(id+TASK_BOT_USE_SKILL)) remove_task(id+TASK_BOT_USE_SKILL) set_task(float(random_num(5,15)), "bot_use_skill", id+TASK_BOT_USE_SKILL) } } }
// bot use skill public bot_use_skill(taskid) { new id = ID_BOT_USE_SKILL if (!is_user_alive(id)) return; if (!is_user_bot(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return;
if (zp_get_user_zombie_class(id) == g_zheavy)
switch(random_num(0,2)) { case 0: create_trap(id) case 1: create_barnacle(id) } if (task_exists(taskid)) remove_task(taskid) set_task(float(random_num(5,15)), "bot_use_skill", id+TASK_BOT_USE_SKILL) }
public CmdStart(id) { new button = pev(id, pev_button) new oldbutton = pev(id, pev_oldbuttons) if (zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && (zp_get_user_zombie_class(id) == g_zheavy)) { if(oldbutton & IN_RELOAD && !(button & IN_RELOAD)) { create_barnacle(id) } if(oldbutton & IN_USE && !(button & IN_USE)) { if(can_make_trap[id]) { create_trap(id) } else { print_chatColor(id, "\g[ Зомби Чума ] \tЛовушка будет доступна через \g%i секунд", get_pcvar_num(cvar_cooldown)) } } } return FMRES_IGNORED }
public fwdThink(ent) { if (!pev_valid(ent)) return static class[32] pev(ent, pev_classname, class, 31) if (equal(barnacle_class, class)) { static Float:takedamage, Float:origin[3], Float:endPoint[3], Float:gametime, tr, hit pev(ent, pev_takedamage, takedamage) if (pev(ent, pev_health) - HEALTH_OFFSET <= 0 && takedamage == DAMAGE_YES) { set_pev(ent, pev_animtime, 6.6) set_pev(ent,pev_framerate, 1.0) set_pev(ent,pev_sequence, death) set_pev(ent, pev_takedamage, DAMAGE_NO) set_pev(ent, pev_controller_0, 255) set_pev(ent, pev_nextthink, get_gametime() + 99999.0) set_pev(ent, pev_solid, SOLID_NOT) switch(random_num(0, 1)) { case 0: engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_die1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) case 1: engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_die3.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } pev(ent, pev_origin, origin) createGibs(origin) return } else if (!pev(ent,pev_enemy) && takedamage == DAMAGE_YES) { pev(ent, pev_origin, origin) xs_vec_copy(origin, endPoint) endPoint[2]-=2048.0 engfunc(EngFunc_TraceLine, origin, endPoint, DONT_IGNORE_MONSTERS, ent, tr) hit = get_tr2(tr, TR_pHit) if (is_user_alive(hit) && !zp_get_user_zombie(hit)) { set_pev(ent, pev_enemy, hit) set_pev(ent, pev_sequence, chewcycle) set_pev(ent, pev_gaitsequence, chewcycle) screen_fade(hit) engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_alert2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } else if (!pev(ent, pev_controller_0)) { get_tr2(tr, TR_vecEndPos, endPoint) set_pev(ent, pev_controller_0, 281 - floatround(255.0 / 1024.0 * (origin[2] - endPoint[2]))) } free_tr2(tr) } else if (takedamage == DAMAGE_YES) { static id, Float:distance, Float:flNextAttackTime id = pev(ent,pev_enemy) if (is_user_alive(id)) { pev(ent, pev_origin, origin) pev(id, pev_origin, endPoint) distance = origin[2] - endPoint[2] if (distance > 100.0) { endPoint[0] = origin[0] endPoint[1] = origin[1] endPoint[2] += get_pcvar_float(g_CvarSpeed) set_pev(id, pev_origin, endPoint) set_pev(ent, pev_controller_0, 261 - floatround(255.0 / 1024.0 * distance)) } else { if (get_pcvar_num(g_CvarInfect) && !( zp_get_user_last_human(id) || zp_get_user_survivor(id) || zp_is_survivor_round() || zp_is_swarm_round() )) { zp_infect_user(id, pev(ent, pev_iuser1), 0, 1) release(ent) } else { pev(ent, pev_fuser1, flNextAttackTime) gametime = get_gametime() if (flNextAttackTime <= gametime) { ExecuteHamB(Ham_TakeDamage, id, ent, pev(ent, pev_iuser1), get_pcvar_float(g_CvarDamage), DMG_GENERIC) set_pev(ent, pev_fuser1, gametime + 1.0) switch(random_num(0, 2)) { case 0: engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_chew1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) case 1: engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_chew2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) case 2: engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "zp_trap/bcl_chew3.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } } if (pev(ent,pev_sequence) != attack1) { set_pev(ent,pev_sequence, attack1) set_pev(ent,pev_gaitsequence, attack1) set_pev(ent, pev_controller_0, 255) } } } set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0}) } else release(ent) } set_pev(ent, pev_nextthink, get_gametime() + THINK_DELAY) } }
public create_barnacle(id) { if (g_barnacleCount[id] > 0) { new origin[3], Float:fOrigin[3] get_user_origin(id, origin, 3) IVecFVec(origin, fOrigin) fOrigin[2] -= 2.0 new const Float:direction[4][3] = {{5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}} new Float:temp[3] xs_vec_copy(fOrigin, temp) new i for (i = 0; i < 4; i++) { xs_vec_add(fOrigin, direction[i], temp) if (engfunc(EngFunc_PointContents, temp) != -1) break } if (i != 4) client_print(id, print_center, "Эту Ловушку нужно ставить на потолок !") else { fOrigin[2] += 2.0 new ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target")) set_pev(ent,pev_classname, barnacle_class) engfunc(EngFunc_SetModel, ent, "models/zp_trap/zp_trap2.mdl") set_pev(ent, pev_iuser1, id) set_pev(ent, pev_mins, Float:{-16.0,-16.0, -36.0}) set_pev(ent, pev_maxs, Float:{16.0,16.0,0.0}) set_pev(ent, pev_size, Float:{-16.0,-16.0, -36.0,16.0,16.0,0.0}) engfunc(EngFunc_SetSize, ent, Float:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,0.0}) set_pev(ent, pev_solid, SOLID_BBOX) set_pev(ent, pev_movetype, MOVETYPE_FLY) set_pev(ent, pev_health, get_pcvar_float(g_CvarHP) + HEALTH_OFFSET) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_dmg, 1.0) set_pev(ent, pev_maxspeed, 20.0) set_pev(ent,pev_flags, FL_MONSTER|FL_MONSTERCLIP) set_pev(ent, pev_origin, fOrigin) set_pev(ent, pev_animtime, 10.0) set_pev(ent, pev_framerate, 0.5) set_pev(ent, pev_sequence, idle3) set_pev(ent, pev_gaitsequence, idle3) set_pev(ent, pev_nextthink,get_gametime() + THINK_DELAY) g_barnacleCount[id]--
client_print(id, print_center, "Осталось Ловушек : %d", g_barnacleCount[id]) } } else client_print(id, print_center, "Больше нет Ловушек !") }
public eventFreezeTimeStart() { static string_class[] = "classname" new ent = FM_NULLENT while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, barnacle_class))) set_pev(ent, pev_flags, FL_KILLME) new i for (i = 0; i < 33; i++) g_barnacleCount[i] = 0 }
public createGibs(Float:origin[3]) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_MODEL) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]-40.0) write_coord(random_num(-20, 20)) write_coord(random_num(-20, 20)) write_coord(random_num(-20, 0)) write_angle(random_num(0,360)) write_short(g_mdl_gib_head) write_byte(0) write_byte(400) message_end() }
public release(ent) { new Float:origin[3], Float:endPoint[3], tr set_pev(ent, pev_enemy, 0) pev(ent, pev_origin, origin) xs_vec_copy(origin, endPoint) endPoint[2]-=2048.0 engfunc(EngFunc_TraceLine, origin, endPoint, IGNORE_MONSTERS, ent, tr) get_tr2(tr, TR_vecEndPos, endPoint) free_tr2(tr) set_pev(ent, pev_controller_0, 281 - floatround(255.0 / 1024.0 * (origin[2] - endPoint[2]))) set_pev(ent, pev_animtime, 10.0) set_pev(ent, pev_framerate, 0.5) set_pev(ent, pev_sequence, idle3) set_pev(ent, pev_gaitsequence, idle3) free_tr2(tr) }
public new_round(id) { new trap = find_ent_by_class(0, trap_string) remove_entity(trap) can_make_trap[id] = false player_trapped[id] = false set_user_maxspeed(id, -1.0) set_user_gravity(id, 1.0) remove_task(id+TASK_COOLDOWN) remove_task(id+TASK_REMOVE_TRAP) }
public zp_user_infected_post(id, attacker) { if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && zp_get_user_zombie_class(id) == g_zheavy) { remove_task(id+TASK_COOLDOWN) print_chatColor(id, "\g[ Зомби Чума ] \tНаземная Ловушка - \gE \tНастенная Ловушка - \gR") g_barnacleCount[id] += 10 can_make_trap[id] = true } if(player_trapped[id] == true) { player_trapped[id] = false new trap = find_ent_by_class(0, trap_string) remove_entity(trap) remove_task(id+TASK_REMOVE_TRAP) } }
public create_trap(id) { new Float:Origin[3] entity_get_vector(id, EV_VEC_origin, Origin) Origin[2] -= 35.0 new trap = create_entity("info_target") entity_set_vector(trap, EV_VEC_origin, Origin) entity_set_float(trap, EV_FL_takedamage, 1.0) entity_set_float(trap, EV_FL_health, get_pcvar_float(cvar_trap_hp)) entity_set_string(trap, EV_SZ_classname, trap_string) entity_set_model(trap, trap_model) entity_set_int(trap, EV_INT_solid, 1) entity_set_byte(trap,EV_BYTE_controller1,125); entity_set_byte(trap,EV_BYTE_controller2,125); entity_set_byte(trap,EV_BYTE_controller3,125); entity_set_byte(trap,EV_BYTE_controller4,125); new Float:size_max[3] = {5.0,5.0,5.0} new Float:size_min[3] = {-5.0,-5.0,-5.0} entity_set_size(trap, size_min, size_max) drop_to_floor(trap) can_make_trap[id] = false set_task(get_pcvar_float(cvar_cooldown), "reset_cooldown", id+TASK_COOLDOWN) }
public reset_cooldown(taskid) { new id = taskid - TASK_COOLDOWN if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zheavy) { if(can_make_trap[id] == false) { can_make_trap[id] = true print_chatColor(id, "\g[ Зомби Чума ] \tЛовушка Доступна") } } }
public fw_touch(trap, id) { if(!pev_valid(trap)) return if(is_user_alive(id) && !zp_get_user_zombie(id)) { client_print(id, print_center, "Вы попали в Ловушку ! Подождите ...") screen_fade(id)
new ent = find_ent_by_class(0, trap_string) entity_set_string(trap, EV_SZ_classname, trap_string) set_pev(ent, pev_sequence, 1) set_pev(ent, pev_animtime, 15.0) set_pev(ent, pev_framerate, 1.0)
player_trapped[id] = true set_task(get_pcvar_float(cvar_trap_time), "remove_trap", id+TASK_REMOVE_TRAP) } }
public remove_trap(taskid) { new id = taskid - TASK_REMOVE_TRAP set_user_maxspeed(id, -1.0) set_user_gravity(id, 1.0) player_trapped[id] = false
new trap = find_ent_by_class(0, trap_string) remove_entity(trap) remove_task(id+TASK_REMOVE_TRAP) }
public spawn_post(id) { if(is_user_alive(id)) { player_trapped[id] = false } }
public fw_think(id) { if(is_user_alive(id) && player_trapped[id] == true) { set_user_maxspeed(id, 0.1) set_user_gravity(id, 10000.0) } }
public screen_fade(id) { message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id) write_short(1<<12) write_short(1<<12) write_short(1<<12) write_byte(0) write_byte(200) write_byte(0) write_byte(20) message_end() }
stock print_chatColor(id,const input[], any:...) { new msg[191], players[32], count = 1; vformat(msg,190,input,3); replace_all(msg,190,"\g","^4");// green replace_all(msg,190,"\n","^1");// normal replace_all(msg,190,"\t","^3");// team if (id) players[0] = id; else get_players(players,count,"ch"); for (new i=0;i<count;i++) if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]); write_byte(players[i]); write_string(msg); message_end(); } }
Last edited by MayroN; 02-13-2020 at 16:19.
|
|