зомби класс "ворона", убрать полет немезиды

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
56
Реакции
5
Установил зомби-класс вороны (способность летать), только проблема в том что если с этим классом стать немезидой, то и немезида будет летать
пытался исправить сам - не получается у меня
Буду очень благодарен за помощь!
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <zombieplague>
#include <zp50_class_nemesis>

new const PLUGIN[]  = "[ZP] CROW ZOMBIE";
new const VERSION[] = "1.0";
new const AUTHOR[]  = "v3x+Roadrage";

new g_zclass_crow
new bool:has_jp[33];

new const CVAR_JP_SPEED[]  = "jp_speed";

// Crow Zombie Atributes
new const zclass_name[] = { "Crow Zombie" } // name
new const zclass_info[] = { "Can Fly" } // description
new const zclass_model[] = { "crow" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
new cvar_NemesisFly
const zclass_health = 100 // health
const zclass_speed = 250 // speed
const Float:zclass_gravity = 0.6 // gravity
const Float:zclass_knockback = 2.0 // knockback

public plugin_init()
{
    register_plugin(PLUGIN , VERSION , AUTHOR);
    register_cvar(CVAR_JP_SPEED    , "250");
    cvar_NemesisFly = register_cvar("zp_fly_nemesis", "0")
}

public plugin_precache()
{
    g_zclass_crow = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public client_PreThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
    if(zp_get_user_zombie_class(id) != g_zclass_crow) return PLUGIN_CONTINUE
    
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);
    
    if(!(get_user_button(id) & IN_JUMP))
    {
        fVelocity[0] = fAim[0];
        fVelocity[1] = fAim[1];
        fVelocity[2] = fAim[2];

        set_user_velocity(id , fVelocity);
        fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
    }
    return PLUGIN_CONTINUE;
}

// User Infected forward
public zp_user_infected_post(id, infector, NemesisFly)
{   
    if (NemesisFly && !get_pcvar_num(cvar_NemesisFly)) return
    
    if (zp_get_user_zombie_class(id) == g_zclass_crow)
    {
        client_print(id,print_chat,"Для полета нажми пробел")
        has_jp[id] = true
    }   
}

// Set entity's rendering type (from fakemeta_util)
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))
}
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <zombieplague>

new const PLUGIN[]  = "[ZP] CROW ZOMBIE";
new const VERSION[] = "1.0";
new const AUTHOR[]  = "v3x+Roadrage";

new g_zclass_crow
new bool:has_jp[33];

new const CVAR_JP_SPEED[]  = "jp_speed";

// Crow Zombie Atributes
new const zclass_name[] = { "Crow Zombie" } // name
new const zclass_info[] = { "Can Fly" } // description
new const zclass_model[] = { "crow" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 100 // health
const zclass_speed = 250 // speed
const Float:zclass_gravity = 0.6 // gravity
const Float:zclass_knockback = 2.0 // knockback

public plugin_init()
{
    register_plugin(PLUGIN , VERSION , AUTHOR);
    register_cvar(CVAR_JP_SPEED    , "250");
}

public plugin_precache()
{
    g_zclass_crow = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public client_PreThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
    if(zp_get_user_zombie_class(id) != g_zclass_crow) return PLUGIN_CONTINUE
    
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);
    
    if(!(get_user_button(id) & IN_JUMP))
    {
        fVelocity[0] = fAim[0];
        fVelocity[1] = fAim[1];
        fVelocity[2] = fAim[2];

        set_user_velocity(id , fVelocity);
        fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
    }
    return PLUGIN_CONTINUE;
}

// User Infected forward
public zp_user_infected_post(id, infector)
{       
    if (zp_get_user_zombie_class(id) == g_zclass_crow)
    {
        client_print(id,print_chat,"[ZP] You are using crow zombie hold jump to fly")
        has_jp[id] = true
    }   
}

// Set entity's rendering type (from fakemeta_util)
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))
}
 
Сообщения
867
Реакции
144
Помог
25 раз(а)
Ты выставляешь has_jp в true, но нигде не используешь его. Зачем он тебе?
Если он планируется использоваться в момент полета, то:
Код:
public client_PreThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
    if(zp_get_user_zombie_class(id) != g_zclass_crow || !has_jp[id]) return PLUGIN_CONTINUE
    
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);
    
    if(!(get_user_button(id) & IN_JUMP))
    {
        fVelocity[0] = fAim[0];
        fVelocity[1] = fAim[1];
        fVelocity[2] = fAim[2];

        set_user_velocity(id , fVelocity);
        fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
    }
    return PLUGIN_CONTINUE;
}
И какой мод то у тебя по итогу, 4.3 или 5.0?
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
Добавить проверку на немесис в client_PreThink
 
Сообщения
56
Реакции
5
ImmortalAmxx, has_jp я не вставлял, добавил только квар на немезиду, но он не рабочий вышел( по примеру другого класса зомби делал, но не вышло
Мод 5.0.8
19 Ноя 2023
Code_0xABC, понимаю что нужно проверку сделать, но вот как её сделать и что писать - не понимаю=(
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
Есть натив, посмотри в инклуидах зомби мода, если я не ошибаюсь
get_user_nemesis(index)
Код:
if(!get_user_nemesis(id))
    return;
19 Ноя 2023
И в форварде zp_user_infected_post передаются 2 параметра, 3 параметр не даст скомпилировать
 
Последнее редактирование:
Сообщения
977
Реакции
52
Помог
10 раз(а)
zmuser, попробуй, не проверял
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <zombieplague>

new const PLUGIN[]  = "[ZP] CROW ZOMBIE";
new const VERSION[] = "1.0";
new const AUTHOR[]  = "v3x+Roadrage";

new g_zclass_crow
new bool:has_jp[33];

new const CVAR_JP_SPEED[]  = "jp_speed";

// Crow Zombie Atributes
new const zclass_name[] = { "Crow Zombie" } // name
new const zclass_info[] = { "Can Fly" } // description
new const zclass_model[] = { "crow" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 100 // health
const zclass_speed = 250 // speed
const Float:zclass_gravity = 0.6 // gravity
const Float:zclass_knockback = 2.0 // knockback

public plugin_init()
{
    register_plugin(PLUGIN , VERSION , AUTHOR);
    register_cvar(CVAR_JP_SPEED    , "250");
}

public plugin_precache()
{
    g_zclass_crow = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public client_disconnected(id)
    has_jp[id] = false

public client_PreThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id) || !has_jp[id])
        return PLUGIN_CONTINUE

    if(zp_get_user_zombie_class(id) != g_zclass_crow)
        return PLUGIN_CONTINUE
   
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);

    if(!(get_user_button(id) & IN_JUMP))
    {
        fVelocity[0] = fAim[0];
        fVelocity[1] = fAim[1];
        fVelocity[2] = fAim[2];

        set_user_velocity(id , fVelocity);
        fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
    }
    return PLUGIN_CONTINUE;
}

// User Infected forward
public zp_user_infected_post(id, infector)
{      
    if (zp_get_user_zombie_class(id) == g_zclass_crow && !zp_get_user_nemesis(id))
    {
        client_print(id,print_chat,"[ZP] You are using crow zombie hold jump to fly")
        has_jp[id] = true
    }
}

// Set entity's rendering type (from fakemeta_util)
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))
}
 
Сообщения
1,672
Реакции
1,497
Помог
24 раз(а)
Code_0xABC, ты нигде has_jp не рестишь, кроме отключения. Значит после раунды с немезидой, оно останется. Эта перменная вообще не нужна. Достаточно проверки на немезиду в client_PreThink
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
fl0wer, это задумка автора, я тоже за проверку на немезиду в client_PreThink , но опять же сообщение при заражении придет и немезиде, я никогда не имел дело с зомби модом, пусть добавит хук и там уже рестит, либо убрать болевую переменную и делать проверку на немезиду при заражении тоже
 
Сообщения
56
Реакции
5
Code_0xABC, работает, спасибо! Проблем не обнаружил
fl0wer, я делал по примеру другого зомби, сам не особо понимаю что и как должно быть, а за информацию спасибо
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <zombieplague>

new const PLUGIN[]  = "[ZP] CROW ZOMBIE";
new const VERSION[] = "1.0";
new const AUTHOR[]  = "v3x+Roadrage";

new g_zclass_crow

new const CVAR_JP_SPEED[]  = "jp_speed";

// Crow Zombie Atributes
new const zclass_name[] = { "Crow Zombie" } // name
new const zclass_info[] = { "Can Fly" } // description
new const zclass_model[] = { "crow" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 100 // health
const zclass_speed = 250 // speed
const Float:zclass_gravity = 0.6 // gravity
const Float:zclass_knockback = 2.0 // knockback

public plugin_init()
{
    register_plugin(PLUGIN , VERSION , AUTHOR);
    register_cvar(CVAR_JP_SPEED    , "250");
}

public plugin_precache()
{
    g_zclass_crow = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public client_PreThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return PLUGIN_CONTINUE

    if(zp_get_user_zombie_class(id) != g_zclass_crow)
        return PLUGIN_CONTINUE
  
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);

    if(!(get_user_button(id) & IN_JUMP))
    {
        fVelocity[0] = fAim[0];
        fVelocity[1] = fAim[1];
        fVelocity[2] = fAim[2];

        set_user_velocity(id , fVelocity);
        fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16);
    }
    return PLUGIN_CONTINUE;
}

// User Infected forward
public zp_user_infected_post(id, infector)
{     
    if (zp_get_user_zombie_class(id) == g_zclass_crow && !zp_get_user_nemesis(id))
    {
        client_print(id,print_chat,"[ZP] You are using crow zombie hold jump to fly")
    }
}

// Set entity's rendering type (from fakemeta_util)
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))
}
 
Последнее редактирование:
Сообщения
56
Реакции
5
Code_0xABC, предыдущий твой код тоже работает вроде как без проблем (1 тестирую), чем они отличаются?
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
zmuser, последний пост с кодом будет правильнее, в первом варианте после смены раунда немезиды, будет работать некорректно
 
Сообщения
56
Реакции
5
Code_0xABC, последний не хочет компилировать

Код:
// E:\server\compilator_1_9_0\zp_class_crow.sma(64) : error 017: undefined symbol "has_jp"
// E:\server\compilator_1_9_0\zp_class_crow.sma(64) : warning 215: expression has no effect
// E:\server\compilator_1_9_0\zp_class_crow.sma(64) : error 001: expected token: ";", but found "]"
// E:\server\compilator_1_9_0\zp_class_crow.sma(64) : error 029: invalid expression, assumed zero
// E:\server\compilator_1_9_0\zp_class_crow.sma(64) : fatal error 107: too many error messages on one line
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
zmuser, не проверял
Код:
#include <amxmodx>
#include <reapi>
#include <zombieplague>

new const CVAR_JP_SPEED[]  = "jp_speed";
new g_zclass_crow;

public plugin_init() {
    register_plugin("[ZP] CROW ZOMBIE", "1.0", "v3x+Roadrage");

    RegisterHookChain(RG_CBasePlayer_PreThink, "CBasePlayer_PreThink", 1);
    register_cvar(CVAR_JP_SPEED, "250");
}

public plugin_precache() {
    new const szName[] = "Crow Zombie";
    new const szInfo[] = "Can Fly";
    new const szModel[] = "crow";
    new const szClawModel[] = "v_knife_zombie.mdl";
    const Health = 100;
    const Speed = 250;
    const Float:Gravity = 0.6;
    const Float:Knockback = 2.0;

    g_zclass_crow = zp_register_zombie_class(szName, szInfo, szModel, szClawModel, Health, Speed, Gravity, Knockback);
}

public CBasePlayer_PreThink(id) {
    if(!is_user_alive(id) || zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_zombie_class(id) != g_zclass_crow)
        return;

    new Float:fAim[3];
    VelocityByAim(id, get_cvar_num(CVAR_JP_SPEED), fAim);

    if(get_entvar(id, var_button) == IN_JUMP) {
        set_entvar(id, var_velocity, fAim);
        rg_set_rendering(id, kRenderFxGlowShell, .g = 0.0, .b = 0.0);
    }
}

public zp_user_infected_post(id, infector) {
    if (zp_get_user_zombie_class(id) != g_zclass_crow || zp_get_user_nemesis(id))
        return;

    client_print(id, print_chat, "Для полета нажми пробел");
}

stock rg_set_rendering(entity, fx = kRenderFxNone, Float:r = 255.0, Float:g = 255.0, Float:b = 255.0, render = kRenderNormal, Float:amount = 16.0) {
    static Float:color[3];

    color[0] = r;
    color[1] = g;
    color[2] = b;

    set_entvar(entity, var_rendermode, render);
    set_entvar(entity, var_renderfx, fx);
    set_entvar(entity, var_rendercolor, color);
    set_entvar(entity, var_renderamt, amount);
}
 
Сообщения
977
Реакции
52
Помог
10 раз(а)
+#include <engine>, надо поискать в реапи замену изменение скорости через натив get_entvar
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу