Неверный раздел форума
Первая проблема - зомби класс использует модели людей на сервере. При заражении должна быть у зомби 1 из 8 моделей, но этого не происходит, остается 1 модель на всю карту, а должна меняться при каждом заражении.
Вторая проблема - у зомби имеется способность дропать оружие у людей, но почему-то она работает через раз. Бывает у 1 игрока выкинешь, а у второго уже не можешь.
Прошу помощи, заранее спасибо!
Вторая проблема - у зомби имеется способность дропать оружие у людей, но почему-то она работает через раз. Бывает у 1 игрока выкинешь, а у второго уже не можешь.
Прошу помощи, заранее спасибо!
Код:
#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <fakemeta_util>
#include <engine>
#include <cstrike>
#include <fun>
#include <xs>
#include <cstrike>
#include <hamsandwich>
#define fm_get_user_button(%1) pev(%1, pev_button)
new MODEL_NUM[][] =
{
"zp_human_woman_1",
"zp_human_man_1",
"zp_human_woman_2",
"zp_human_man_2",
"zp_human_woman_3",
"zp_human_man_3",
"zp_human_woman_4",
"zp_human_woman_5"
}
new zclass_name[] = { "Ассасин" }
new zclass_info[] = { "Неведимка" }
new zclass_clawmodel[] = { "nighthands/hands_assasin.mdl" }
new const model_weapon_usp[] = "models/v_usp.mdl"
const zclass_health = 100
const zclass_speed = 300
const Float:zclass_gravity = 0.70
const Float:zclass_knockback = 3.5
new g_zclass_spy, cvar_ammo
new random_g;
new g_SayText;
new is_first_zombie = 1
public plugin_init() {
register_plugin("[ZP] Class : Assasin", "1.2.3", "NullWarez");
//RegisterHam(Ham_Player_Duck, "player", "Fw_PlayerDuck")
register_forward(FM_PlayerPreThink, "fwd_playerprethink");
random_g = random_num(0, 8);
set_task(1.0,"AddHP",_,_,_,"b");
cvar_ammo = register_cvar("zp_ammo_bullets", "3")
g_SayText = get_user_msgid("SayText");
}
public plugin_precache() {
random_g = random_num(0, 8);
g_zclass_spy = zp_register_zombie_class(zclass_name, zclass_info, MODEL_NUM[random_g], zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback);
engfunc(EngFunc_PrecacheModel, model_weapon_usp)
}
public zp_user_infected_post(player, infector) {
if (g_zclass_spy != zp_get_user_zombie_class(player) || !zp_get_user_zombie(player) || zp_get_user_nemesis(player) || player == infector) {
return ZP_PLUGIN_HANDLED;
}
if (is_user_alive(infector)) {
if (g_zclass_spy == zp_get_user_zombie_class(infector) && zp_get_user_zombie(infector)) {
new ZM_HP = get_user_health(infector) - 1500;
set_pev(infector, pev_health, float(ZM_HP));
}
}
if (is_user_alive(player)) {
cs_set_weapon_ammo(give_item(player,"weapon_usp"), get_pcvar_num(cvar_ammo))
new weapon = get_user_weapon(player)
if (weapon == CSW_USP) {
set_pev(player, pev_viewmodel2, model_weapon_usp)
Color(player, "!g[ZP] !yПри нажатии Ctrl вы становитесь не видимым.")
Color(player, "!g[ZP] !yТак же вы можете выбрасывать оружие у людей нажав на Е.")
}
}
return PLUGIN_CONTINUE;
}
public zp_user_last_zombie(id) {
if (is_first_zombie)
if (zp_get_user_zombie(id) && (g_zclass_spy == zp_get_user_zombie_class(id)) && !zp_get_user_nemesis(id)) {
Color(id, "!g[ZP] !yПри нажатии Ctrl вы становитесь не видимым.")
Color(id, "!g[ZP] !yТак же вы можете выбрасывать оружие у людей нажав на Е.")
is_first_zombie--;
}
}
public zp_user_humanized_post(id) {
if (is_user_alive(id)) {
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
}
}
public zp_user_unfrozen(id)
{
if(is_valid_ent(id) && is_user_alive(id) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && zp_get_user_zombie_class(id) == g_zclass_spy)
{
fm_set_user_rendering(id)
}
}
/*public Fw_PlayerDuck(id)
{
if (!is_user_alive(id) || g_zclass_spy != zp_get_user_zombie_class(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id))
{
return ZP_PLUGIN_HANDLED;
}
if (pev(id, pev_button) & IN_DUCK)
{
// Зомби присел, делаем его невидимым
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
}
else
{
// Зомби встал, делаем его видимым
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
}
return PLUGIN_CONTINUE;
}*/
public fwd_playerprethink(id) {
if (!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclass_spy || zp_get_user_nemesis(id)) {
return FMRES_IGNORED;
}
if(pev( id, pev_flags) & FL_ONGROUND)
{
if(pev(id, pev_button) & IN_DUCK)
{
if(pev(id, pev_rendermode) != kRenderTransAlpha)
{
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
}
}
else
{
if(pev(id, pev_rendermode) != kRenderNormal)
{
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
}
}
}
new button = fm_get_user_button(id);
if(button & IN_USE)
{
new target, body;
get_user_aiming(id, target, body, 9999);
new P1_origin[3], P2_origin[3];
get_user_origin(id, P1_origin, 0);
get_user_origin(target, P2_origin, 0);
new distance = get_distance(P1_origin, P2_origin);
if (distance <= 120)
{
if(is_user_alive(target) && !zp_get_user_zombie(target))
{
drop_current_weapon(target)
}
}
}
return FMRES_IGNORED;
}
drop_current_weapon(id) {
engclient_cmd(id, "drop");
return ZP_PLUGIN_HANDLED;
}
public AddHP() {
for(new id = 0; id<32; id++) {
if (is_user_connected(id) && is_user_alive(id)) {
if (zp_get_user_zombie(id) && g_zclass_spy == zp_get_user_zombie_class(id) && !zp_get_user_nemesis(id)) {
if (get_user_health(id) < zp_get_zombie_maxhealth(id)) {
set_user_health(id, get_user_health(id) + 8);
}
if (get_user_health(id) > zp_get_zombie_maxhealth(id)) {
set_user_health(id, zp_get_zombie_maxhealth(id));
}
}
}
}
return PLUGIN_CONTINUE;
}
stock Color(const id, const input[], any:...)
{
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}