Raised This Month: $51 Target: $400
 12% 

i really need help


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Vinnex
Junior Member
Join Date: Feb 2019
Old 02-21-2019 , 05:12   i really need help
Reply With Quote #1

can someone please make me a gamemode so i want to make Sniper vs Nightcrawler but i want to use Nightcrawler like a terro in furien so if they walk or run you can see them but when they stop you cannot so can anybody help me even if a little bit and i'm using zombie plague 5.0.8
Vinnex is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 02-21-2019 , 07:21   Re: i really need help
Reply With Quote #2

1. Just copy and edit zp50_gamemode_armageddon.sma (survivor => sniper, nemesis => nightcrawler).
2. Set a task with flag "b" on nightcrawler and check whether he's moving (get_speed() > 0.0). If true, reset rendering, otherwise apply the "invisible" one.
__________________








CrazY. is offline
Vinnex
Junior Member
Join Date: Feb 2019
Old 02-21-2019 , 08:54   Re: i really need help
Reply With Quote #3

Quote:
Originally Posted by CrazY. View Post
1. Just copy and edit zp50_gamemode_armageddon.sma (survivor => sniper, nemesis => nightcrawler).
okay i made that armageddon with nightcrawler and sniper but i didn't understand the second step so can you mad it for me ?

this is class_nightcrawler

PHP Code:
/*================================================================================
    
    ---------------------------
    -*- [ZP] Class: Nightcrawler -*-
    ---------------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
===============================================================================*/

#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <xs>
#include <amx_settings_api>
#include <cs_maxspeed_api>
#include <cs_player_models_api>
#include <cs_weap_models_api>
#include <cs_ham_bots_api>
#include <zp50_core>
#define LIBRARY_GRENADE_FROST "zp50_grenade_frost"
#include <zp50_grenade_frost>
#define LIBRARY_GRENADE_FIRE "zp50_grenade_fire"
#include <zp50_grenade_fire>
#include <zp50_colorchat>

// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"

// Default models
new const models_nightcrawler_player[][] = { "zombie_source" }
new const 
models_nightcrawler_claw[][] = { "models/zombie_plague/v_knife_zombie.mdl" }
new const 
SOUND_TELEPORT[] = { "nc_teleport.wav" }
#define P_CLAW "models/p_nightcrawler.mdl"

#define PLAYERMODEL_MAX_LENGTH 32
#define MODEL_MAX_LENGTH 64
#define OFFSET_WEAPONOWNER 41
#define OFFSET_LINUX_WEAPONS 4
#define PDATA_SAFE 2

// Custom models
new Array:g_models_nightcrawler_player
new Array:g_models_nightcrawler_claw

#define TASK_AURA 100
#define ID_AURA (taskid - TASK_AURA)

#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
#define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))

new g_MaxPlayers
new g_IsNightcrawler
new Float:g_wallorigin[32][3]
new 
g_LimitTeleport[33]
new 
Float:g_flNextBlink[33]

new 
cvar_crawler_healthcvar_crawler_base_healthcvar_crawler_speedcvar_crawler_gravity
new cvar_crawler_glow
new cvar_crawler_auracvar_crawler_aura_color_Rcvar_crawler_aura_color_Gcvar_crawler_aura_color_B
new cvar_crawler_damagecvar_crawler_kill_explode
new cvar_crawler_grenade_frostcvar_crawler_grenade_firecvar_crawler_teleport_limitcvar_crawler_teleport_cooldowncvar_crawler_teleport_rangecvar_crawler_invisiblity_amount

public plugin_init()
{
    
register_plugin("[ZP] Class: NightCrawler"ZP_VERSION_STRING"ZP Dev Team")
    
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHamBots(Ham_TakeDamage"fw_TakeDamage")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
RegisterHamBots(Ham_Killed"fw_PlayerKilled")
    
register_forward(FM_ClientDisconnect"fw_ClientDisconnect_Post"1)
    
register_forward(FM_Touch"fwd_touch")
    
register_forward(FM_PlayerPreThink"fwd_playerprethink")
    
register_forward(FM_CmdStart"OnNightCrawlerCMD")
    
    
g_MaxPlayers get_maxplayers()
    
    
cvar_crawler_health register_cvar("zp_nightcrawler_health""0")
    
cvar_crawler_base_health register_cvar("zp_nightcrawler_base_health""9500")
    
cvar_crawler_speed register_cvar("zp_nightcrawler_speed""1.05")
    
cvar_crawler_gravity register_cvar("zp_nightcrawler_gravity""0.5")
    
cvar_crawler_glow register_cvar("zp_nightcrawler_glow""0")
    
cvar_crawler_aura register_cvar("zp_nightcrawler_aura""0")
    
cvar_crawler_aura_color_R register_cvar("zp_nightcrawler_aura_color_R""0")
    
cvar_crawler_aura_color_G register_cvar("zp_nightcrawler_aura_color_G""0")
    
cvar_crawler_aura_color_B register_cvar("zp_nightcrawler_aura_color_B""0")
    
cvar_crawler_damage register_cvar("zp_nightcrawler_damage""20")
    
cvar_crawler_kill_explode register_cvar("zp_nightcrawler_kill_explode""1")
    
cvar_crawler_grenade_frost register_cvar("zp_nightcrawler_grenade_frost""0")
    
cvar_crawler_grenade_fire register_cvar("zp_nightcrawler_grenade_fire""1")
    
cvar_crawler_invisiblity_amount register_cvar("zp_nightcrawler_invisiblity_amount""15")
    
cvar_crawler_teleport_limit register_cvar("zp_nightcrawler_teleport_limit""3")
    
cvar_crawler_teleport_cooldown register_cvar("zp_nightcrawler_teleport_cooldown""10.0")
    
cvar_crawler_teleport_range register_cvar("zp_nightcrawler_teleport_range""2000")
}

public 
plugin_precache()
{
    
// Initialize arrays
    
g_models_nightcrawler_player ArrayCreate(PLAYERMODEL_MAX_LENGTH1)
    
g_models_nightcrawler_claw ArrayCreate(MODEL_MAX_LENGTH1)
    
    
// Load from external file
    
amx_load_setting_string_arr(ZP_SETTINGS_FILE"Player Models""NIGHTCRAWLER"g_models_nightcrawler_player)
    
amx_load_setting_string_arr(ZP_SETTINGS_FILE"Weapon Models""V_KNIFE NIGHTCRAWLER"g_models_nightcrawler_claw)
    
    
// If we couldn't load from file, use and save default ones
    
new index
    
if (ArraySize(g_models_nightcrawler_player) == 0)
    {
        for (
index 0index sizeof models_nightcrawler_playerindex++)
            
ArrayPushString(g_models_nightcrawler_playermodels_nightcrawler_player[index])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_SETTINGS_FILE"Player Models""NIGHTCRAWLER"g_models_nightcrawler_player)
    }
    if (
ArraySize(g_models_nightcrawler_claw) == 0)
    {
        for (
index 0index sizeof models_nightcrawler_clawindex++)
            
ArrayPushString(g_models_nightcrawler_clawmodels_nightcrawler_claw[index])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_SETTINGS_FILE"Weapon Models""V_KNIFE NIGHTCRAWLER"g_models_nightcrawler_claw)
    }
    
    
// Precache models
    
new player_model[PLAYERMODEL_MAX_LENGTH], model[MODEL_MAX_LENGTH], model_path[128]
    for (
index 0index ArraySize(g_models_nightcrawler_player); index++)
    {
        
ArrayGetString(g_models_nightcrawler_playerindexplayer_modelcharsmax(player_model))
        
formatex(model_pathcharsmax(model_path), "models/player/%s/%s.mdl"player_modelplayer_model)
        
precache_model(model_path)
        
// Support modelT.mdl files
        
formatex(model_pathcharsmax(model_path), "models/player/%s/%sT.mdl"player_modelplayer_model)
        if (
file_exists(model_path)) precache_model(model_path)
    }
    for (
index 0index ArraySize(g_models_nightcrawler_claw); index++)
    {
        
ArrayGetString(g_models_nightcrawler_clawindexmodelcharsmax(model))
        
precache_model(model)
    }
    
    
precache_sound(SOUND_TELEPORT)
    
precache_model(P_CLAW)
}

public 
plugin_natives()
{
    
register_library("zp50_class_nightcrawler")
    
register_native("zp_class_nightcrawler_get""native_class_crawler_get")
    
register_native("zp_class_nightcrawler_set""native_class_crawler_set")
    
register_native("zp_class_nightcrawler_get_count""native_class_crawler_get_count")
    
    
set_module_filter("module_filter")
    
set_native_filter("native_filter")
}
public 
module_filter(const module[])
{
    if (
equal(moduleLIBRARY_GRENADE_FROST) || equal(moduleLIBRARY_GRENADE_FIRE))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}
public 
native_filter(const name[], indextrap)
{
    if (!
trap)
        return 
PLUGIN_HANDLED;
        
    return 
PLUGIN_CONTINUE;
}

public 
client_disconnect(id)
{
    if (
flag_get(g_IsNightcrawlerid))
    {
        
// Remove nightcrawler glow
        
if (get_pcvar_num(cvar_crawler_glow))
            
set_user_rendering(id)
        
        
// Remove nightcrawler aura
        
if (get_pcvar_num(cvar_crawler_aura))
            
remove_task(id+TASK_AURA)
    }
}

public 
fw_ClientDisconnect_Post(id)
{
    
// Reset flags AFTER disconnect (to allow checking if the player was nightcrawler before disconnecting)
    
flag_unset(g_IsNightcrawlerid)
}

// Ham Take Damage Forward
public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    
// Non-player damage or self damage
    
if (victim == attacker || !is_user_alive(attacker))
        return 
HAM_IGNORED;
    
    
// Nightcrawler attacking human
    
if(flag_get(g_IsNightcrawlerattacker) && !zp_core_is_zombie(victim))
    {
        
// Ignore nightcrawler damage override if damage comes from a 3rd party entity
        // (to prevent this from affecting a sub-plugin's rockets e.g.)
        
if (inflictor == attacker)
        {
            
// Set nightcrawler damage
            
SetHamParamFloat(4damage get_pcvar_float(cvar_crawler_damage))
            return 
HAM_HANDLED;
        }

    }

    if(
flag_get(g_IsNightcrawlervictim) && !zp_core_is_zombie(attacker) && is_user_alive(attacker))
    {
        
set_user_rendering(victim)
        
set_task(1.3"RestoreInvisiblity"victim)
    }

    
    return 
HAM_IGNORED;
}


public 
RestoreInvisiblity(id)
{
    if(!
is_user_alive(id) || !flag_get(g_IsNightcrawlerid)) return;
    
set_user_rendering(idkRenderFxGlowShell202020kRenderTransAlphaget_pcvar_num(cvar_crawler_invisiblity_amount))
}
    

// Ham Player Killed Forward
public fw_PlayerKilled(victimattackershouldgib)
{
    if (
flag_get(g_IsNightcrawlervictim))
    {
        
// Nightcrawler explodes!
        
if (get_pcvar_num(cvar_crawler_kill_explode))
            
SetHamParamInteger(32)
        
        
// Remove nightcrawler aura
        
if (get_pcvar_num(cvar_crawler_aura))
            
remove_task(victim+TASK_AURA)

        
g_LimitTeleport[victim] = 0
    
}
}



public 
fwd_touch(idworld)
{
    if(!
is_user_alive(id) || !flag_get(g_IsNightcrawlerid))
        return 
FMRES_IGNORED
        
    pev
(idpev_origing_wallorigin[id])

    return 
FMRES_IGNORED
}

public 
wallclimb(idbutton)
{
    static 
Float:origin[3]
    
pev(idpev_originorigin)

    if(
get_distance_f(origing_wallorigin[id]) > 7.0)
        return 
FMRES_IGNORED  // if not near wall
    
    
if(fm_get_entity_flags(id) & FL_ONGROUND)
        return 
FMRES_IGNORED
        
    
if(button IN_FORWARD)
    {
        static 
Float:velocity[3]
        
velocity_by_aim(id120velocity)
        
fm_set_user_velocity(idvelocity)
    }
    else if(
button IN_BACK)
    {
        static 
Float:velocity[3]
        
velocity_by_aim(id, -120velocity)
        
fm_set_user_velocity(idvelocity)
    }
    return 
FMRES_IGNORED
}    

public 
fwd_playerprethink(id
{
    if(!
flag_get(g_IsNightcrawlerid)) 
        return 
FMRES_IGNORED
    
    
new button fm_get_user_button(id)
    
    if(
button IN_USE//Use button = climb
        
wallclimb(idbutton)

    return 
FMRES_IGNORED
}


public 
OnNightCrawlerCMD(idhandle)
{
    if (!
is_user_alive(id) || get_gametime() < g_flNextBlink[id] || !flag_get(g_IsNightcrawlerid)) return
    
    static 
button
    button 
get_uc(handleUC_Buttons)
    if (
button IN_RELOAD && g_LimitTeleport[id] < get_pcvar_num(cvar_crawler_teleport_limit))
    {
        
        if (
teleport(id))
        {
            
emit_sound(idCHAN_STATICSOUND_TELEPORT1.0ATTN_NORM0PITCH_NORM)
            
g_LimitTeleport[id]++
            
zp_colored_print(id"You have ^x04%d^x01 more Teleports!"get_pcvar_num(cvar_crawler_teleport_limit) - g_LimitTeleport[id])
            
g_flNextBlink[id] = get_gametime() + get_pcvar_float(cvar_crawler_teleport_cooldown)
            
            
remove_task(id)
            
set_task(get_pcvar_float(cvar_crawler_teleport_cooldown), "show_blink"id)
        }
        else
        {
            
g_flNextBlink[id] = get_gametime() + 1.0
            
            zp_colored_print
(id" Found no reliable teleportation position.")
        }
        
    }
}

public 
show_blink(id)
{
    if (!
is_user_connected(id) || !flag_get(g_IsNightcrawlerid) || !is_user_alive(id) || (g_LimitTeleport[id] >= get_pcvar_num(cvar_crawler_teleport_limit))) return
    
    
    
zp_colored_print(id"Teleport ability is ready. Press ^x04[R]^x01 button.")
    
zp_colored_print(id"To climb the walls, Press ^x04[E]^x01 button.")
    
    
}


bool:teleport(id)
{
    new    
Float:vOrigin[3], Float:vNewOrigin[3],
    
Float:vNormal[3], Float:vTraceDirection[3],
    
Float:vTraceEnd[3]
    
    
pev(idpev_originvOrigin)
    
    
velocity_by_aim(idget_pcvar_num(cvar_crawler_teleport_range), vTraceDirection)
    
xs_vec_add(vTraceDirectionvOriginvTraceEnd)
    
    
engfunc(EngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid0)
    
    new 
Float:flFraction
    get_tr2
(0TR_flFractionflFraction)
    if (
flFraction 1.0)
    {
        
get_tr2(0TR_vecEndPosvTraceEnd)
        
get_tr2(0TR_vecPlaneNormalvNormal)
    }
    
    
xs_vec_mul_scalar(vNormal40.0vNormal// do not decrease the 40.0
    
xs_vec_add(vTraceEndvNormalvNewOrigin)
    
    if (
is_player_stuck(idvNewOrigin))
        return 
false;
    
    
emit_sound(idCHAN_STATICSOUND_TELEPORT1.0ATTN_NORM0PITCH_NORM)
    
    
engfunc(EngFunc_SetOriginidvNewOrigin)
    
    
    
    return 
true;
}



public 
zp_fw_grenade_frost_pre(id)
{
    
// Prevent frost for Nightcrawler
    
if (flag_get(g_IsNightcrawlerid) && !get_pcvar_num(cvar_crawler_grenade_frost))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}

public 
zp_fw_grenade_fire_pre(id)
{
    
// Prevent burning for Nightcrawler
    
if (flag_get(g_IsNightcrawlerid) && !get_pcvar_num(cvar_crawler_grenade_fire))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}

public 
zp_fw_core_spawn_post(id)
{
    if (
flag_get(g_IsNightcrawlerid))
    {
        
// Remove nightcrawler glow
        
if (get_pcvar_num(cvar_crawler_glow))
            
set_user_rendering(id)
        
        
// Remove nightcrawler aura
        
if (get_pcvar_num(cvar_crawler_aura))
            
remove_task(id+TASK_AURA)
        
        
// Remove nightcrawler flag
        
flag_unset(g_IsNightcrawlerid)
    }
}

public 
zp_fw_core_cure(idattacker)
{
    if (
flag_get(g_IsNightcrawlerid))
    {
        
// Remove nightcrawler glow
        
if (get_pcvar_num(cvar_crawler_glow))
            
set_user_rendering(id)
        
        
// Remove nightcrawler aura
        
if (get_pcvar_num(cvar_crawler_aura))
            
remove_task(id+TASK_AURA)
        
        
// Remove nightcrawler flag
        
flag_unset(g_IsNightcrawlerid)
    }
}

public 
zp_fw_core_infect_post(idattacker)
{
    
// Apply Nightcrawler attributes?
    
if (!flag_get(g_IsNightcrawlerid))
        return;
    
    
// Health
    
if (get_pcvar_num(cvar_crawler_health) == 0)
        
set_user_health(idget_pcvar_num(cvar_crawler_base_health) * GetAliveCount())
    else
        
set_user_health(idget_pcvar_num(cvar_crawler_health))
    
    
// Gravity
    
set_user_gravity(idget_pcvar_float(cvar_crawler_gravity))
    
    
// Speed
    
cs_set_player_maxspeed_auto(idget_pcvar_float(cvar_crawler_speed))

    
g_LimitTeleport[id] = 0
    
    
// Apply nightcrawler player model
    
new player_model[PLAYERMODEL_MAX_LENGTH]
    
ArrayGetString(g_models_nightcrawler_playerrandom_num(0ArraySize(g_models_nightcrawler_player) - 1), player_modelcharsmax(player_model))
    
cs_set_player_model(idplayer_model)
    
    
// Apply nightcrawler claw model
    
new model[MODEL_MAX_LENGTH]
    
ArrayGetString(g_models_nightcrawler_clawrandom_num(0ArraySize(g_models_nightcrawler_claw) - 1), modelcharsmax(model))
    
cs_set_player_view_model(idCSW_KNIFEmodel)    
    
cs_set_player_weap_model(idCSW_KNIFEP_CLAW)
    
    
// Nightcrawler glow
    
if (get_pcvar_num(cvar_crawler_glow))
        
set_user_rendering(idkRenderFxGlowShell202020kRenderTransAlphaget_pcvar_num(cvar_crawler_invisiblity_amount))
    
    
// Nightcrawler aura task
    
if (get_pcvar_num(cvar_crawler_aura))
        
set_task(0.1"nightcrawler_aura"id+TASK_AURA__"b")
}

public 
native_class_crawler_get(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return -
1;
    }
    
    return 
flag_get_boolean(g_IsNightcrawlerid);
}

public 
native_class_crawler_set(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_alive(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    if (
flag_get(g_IsNightcrawlerid))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Player already a nightcrawler (%d)"id)
        return 
false;
    }
    
    
flag_set(g_IsNightcrawlerid)
    
zp_core_force_infect(id)
    return 
true;
}

public 
native_class_crawler_get_count(plugin_idnum_params)
{
    return 
GetNightcrawlerCount();
}

// Nightcrawler aura task
public nightcrawler_aura(taskid)
{
    
// Get player's origin
    
static origin[3]
    
get_user_origin(ID_AURAorigin)
    
    
// Colored Aura
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_DLIGHT// TE id
    
write_coord(origin[0]) // x
    
write_coord(origin[1]) // y
    
write_coord(origin[2]) // z
    
write_byte(20// radius
    
write_byte(get_pcvar_num(cvar_crawler_aura_color_R)) // r
    
write_byte(get_pcvar_num(cvar_crawler_aura_color_G)) // g
    
write_byte(get_pcvar_num(cvar_crawler_aura_color_B)) // b
    
write_byte(2// life
    
write_byte(0// decay rate
    
message_end()
}


stock is_player_stuck(idFloat:originF[3])
{
    
engfunc(EngFunc_TraceHulloriginForiginF0, (pev(idpev_flags) & FL_DUCKING) ? HULL_HEAD HULL_HUMANid0)
    
    if (
get_tr2(0TR_StartSolid) || get_tr2(0TR_AllSolid) || !get_tr2(0TR_InOpen))
        return 
true;
    
    return 
false;
}

// Get Alive Count -returns alive players number-
GetAliveCount()
{
    new 
iAliveid
    
    
for (id 1id <= g_MaxPlayersid++)
    {
        if (
is_user_alive(id))
            
iAlive++
    }
    
    return 
iAlive;
}

// Get Nightcrawler Count -returns alive nightcrawler number-
GetNightcrawlerCount()
{
    new 
iNightcrawlerid
    
    
for (id 1id <= g_MaxPlayersid++)
    {
        if (
is_user_alive(id) && flag_get(g_IsNightcrawlerid))
            
iNightcrawler++
    }
    
    return 
iNightcrawler;

Vinnex is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 02-21-2019 , 09:22   Re: i really need help
Reply With Quote #4

Code:
#include <amxmodx> #include <engine> #include <fun> #include <zp50_class_nightcrawler> const TASK_RENDER = 100; public client_disconnect(id) {     remove_task(id+TASK_RENDER); } public zp_fw_core_infect_post(id) {     remove_task(id+TASK_RENDER);     if (!zp_class_nightcrawler_get(id))         return;     set_task(0.2, "TaskSetRender", id+TASK_RENDER, .flags="b"); } public zp_fw_core_cure_pre(id) {     remove_task(id+TASK_RENDER); } public TaskSetRender(iTaskId) {     new id = iTaskId - TASK_RENDER;     if (!is_user_alive(id))     {         remove_task(iTaskId);         return;     }     if (get_speed(id) > 0.0)         set_user_rendering(id);     else         set_user_rendering(id, kRenderFxGlowShell, 20, 20, 20, kRenderTransAlpha, 15); }
__________________








CrazY. is offline
Vinnex
Junior Member
Join Date: Feb 2019
Old 02-21-2019 , 13:29   Re: i really need help
Reply With Quote #5

Okay it work good thank you brother <3
Vinnex is offline
Reply



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 12:03.


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