Junior Member
|
04-04-2014
, 15:33
Re: zp nightvision laggy! how to fix?
|
#5
|
Quote:
/*============================================ ====================================
------------------------
-*- [ZP] 跌描砞竚 -*-
------------------------
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 <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <cs_ham_bots_api>
#include <zp50_core>
#define LIBRARY_NEMESIS "zp50_class_nemesis"
#include <zp50_class_nemesis>
#define LIBRARY_SURVIVOR "zp50_class_survivor"
#include <zp50_class_survivor>
#define TASK_NIGHTVISION 100
#define ID_NIGHTVISION (taskid - TASK_NIGHTVISION)
#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 const lightsize[][] = { "", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "#" }
new g_NightVisionActive
new g_MsgNVGToggle
new cvar_nvision_custom
new cvar_nvision_zombie, cvar_nvision_zombie_color_R, cvar_nvision_zombie_color_G, cvar_nvision_zombie_color_B, cvar_nvision_zombie_density, cvar_nvision_zombie_bright
new cvar_nvision_human, cvar_nvision_human_color_R, cvar_nvision_human_color_G, cvar_nvision_human_color_B, cvar_nvision_human_density, cvar_nvision_human_bright
new cvar_nvision_spec, cvar_nvision_spec_color_R, cvar_nvision_spec_color_G, cvar_nvision_spec_color_B, cvar_nvision_spec_density
new cvar_nvision_nemesis, cvar_nvision_nemesis_color_R, cvar_nvision_nemesis_color_G, cvar_nvision_nemesis_color_B, cvar_nvision_nemesis_density
new cvar_nvision_survivor, cvar_nvision_survivor_color_R, cvar_nvision_survivor_color_G, cvar_nvision_survivor_color_B, cvar_nvision_survivor_density
public plugin_init()
{
register_plugin("[ZP] Nightvision", ZP_VERSION_STRING, "ZP Dev Team")
g_MsgNVGToggle = get_user_msgid("NVGToggle")
register_message(g_MsgNVGToggle, "message_nvgtoggle")
register_clcmd("nightvision", "clcmd_nightvision_toggle")
register_event("ResetHUD", "event_reset_hud", "b")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)
RegisterHamBots(Ham_Killed, "fw_PlayerKilled_Post", 1)
cvar_nvision_custom = register_cvar("zp_nvision_custom", "0")
cvar_nvision_zombie = register_cvar("zp_nvision_zombie", "2") // 1-give only // 2-give and enable
cvar_nvision_zombie_color_R = register_cvar("zp_nvision_zombie_color_R", "255")
cvar_nvision_zombie_color_G = register_cvar("zp_nvision_zombie_color_G", "64")
cvar_nvision_zombie_color_B = register_cvar("zp_nvision_zombie_color_B", "32")
cvar_nvision_zombie_density = register_cvar("zp_nvision_zombie_density", "60")
cvar_nvision_zombie_bright = register_cvar("zp_nvision_zombie_bright", "15")
cvar_nvision_human = register_cvar("zp_nvision_human", "0") // 1-give only // 2-give and enable
cvar_nvision_human_color_R = register_cvar("zp_nvision_human_color_R", "0")
cvar_nvision_human_color_G = register_cvar("zp_nvision_human_color_G", "255")
cvar_nvision_human_color_B = register_cvar("zp_nvision_human_color_B", "0")
cvar_nvision_human_density = register_cvar("zp_nvision_human_density", "60")
cvar_nvision_human_bright = register_cvar("zp_nvision_human_bright", "20")
cvar_nvision_spec = register_cvar("zp_nvision_spec", "2") // 1-give only // 2-give and enable
cvar_nvision_spec_color_R = register_cvar("zp_nvision_spec_color_R", "0")
cvar_nvision_spec_color_G = register_cvar("zp_nvision_spec_color_G", "255")
cvar_nvision_spec_color_B = register_cvar("zp_nvision_spec_color_B", "0")
cvar_nvision_spec_density = register_cvar("zp_nvision_spec_density", "60")
// Nemesis Class loaded?
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library))
{
cvar_nvision_nemesis = register_cvar("zp_nvision_nemesis", "2")
cvar_nvision_nemesis_color_R = register_cvar("zp_nvision_nemesis_color_R", "255")
cvar_nvision_nemesis_color_G = register_cvar("zp_nvision_nemesis_color_G", "64")
cvar_nvision_nemesis_color_B = register_cvar("zp_nvision_nemesis_color_B", "32")
cvar_nvision_nemesis_density = register_cvar("zp_nvision_nemesis_density", "60")
}
// Survivor Class loaded?
if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library))
{
cvar_nvision_survivor = register_cvar("zp_nvision_survivor", "0")
cvar_nvision_survivor_color_R = register_cvar("zp_nvision_survivor_color_R", "0")
cvar_nvision_survivor_color_G = register_cvar("zp_nvision_survivor_color_G", "255")
cvar_nvision_survivor_color_B = register_cvar("zp_nvision_survivor_color_B", "0")
cvar_nvision_survivor_density = register_cvar("zp_nvision_survivor_density", "60")
}
}
public plugin_natives()
{
set_module_filter("module_filter")
set_native_filter("native_filter")
}
public module_filter(const module[])
{
if (equal(module, LIBRARY_NEMESIS) || equal(module, LIBRARY_SURVIVOR))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public native_filter(const name[], index, trap)
{
if (!trap)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public zp_fw_core_infect_post(id, attacker)
{
// Nemesis Class loaded?
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(id))
{
if (get_pcvar_num(cvar_nvision_nemesis))
{
if (!cs_get_user_nvg(id)) cs_set_user_nvg(id, 1)
if (get_pcvar_num(cvar_nvision_nemesis) == 2)
{
if (!flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
else
custom_nightvision(id)
}
else if (flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
}
else
{
cs_set_user_nvg(id, 0)
if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
}
}
else
{
if (get_pcvar_num(cvar_nvision_zombie))
{
if (!cs_get_user_nvg(id)) cs_set_user_nvg(id, 1)
if (get_pcvar_num(cvar_nvision_zombie) == 2)
{
if (!flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
else
custom_nightvision(id)
}
else if (flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
}
else
{
cs_set_user_nvg(id, 0)
if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
}
}
}
public zp_fw_core_cure_post(id, attacker)
{
// Survivor Class loaded?
if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(id))
{
if (get_pcvar_num(cvar_nvision_survivor))
{
if (!cs_get_user_nvg(id)) cs_set_user_nvg(id, 1)
if (get_pcvar_num(cvar_nvision_survivor) == 2)
{
if (!flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
else
custom_nightvision(id)
}
else if (flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
}
else
{
cs_set_user_nvg(id, 0)
if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
}
}
else
{
if (get_pcvar_num(cvar_nvision_human))
{
if (!cs_get_user_nvg(id)) cs_set_user_nvg(id, 1)
if (get_pcvar_num(cvar_nvision_human) == 2)
{
if (!flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
else
custom_nightvision(id)
}
else if (flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
}
else
{
cs_set_user_nvg(id, 0)
if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
}
}
}
public zp_fw_grenade_frost_unfreeze(id)
{
if(flag_get(g_NightVisionActive, id))
{
custom_nightvision(id)
}
}
public clcmd_nightvision_toggle(id)
{
if (is_user_alive(id))
{
// Player owns nightvision?
if (!cs_get_user_nvg(id))
return PLUGIN_CONTINUE;
}
else
{
// Spectator nightvision disabled?
if (!get_pcvar_num(cvar_nvision_spec))
return PLUGIN_CONTINUE;
}
if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
else
EnableNightVision(id)
return PLUGIN_HANDLED;
}
// ResetHUD Removes CS Nightvision (bugfix)
public event_reset_hud(id)
{
if (!get_pcvar_num(cvar_nvision_custom) && flag_get(g_NightVisionActive, id))
cs_set_user_nvg_active(id, 1)
}
// Ham Player Killed Post Forward
public fw_PlayerKilled_Post(victim, attacker, shouldgib)
{
// Enable spectators nightvision?
spectator_nightvision(victim)
}
public client_putinserver(id)
{
// Enable spectators nightvision?
set_task(0.1, "spectator_nightvision", id)
}
public spectator_nightvision(id)
{
// Player disconnected
if (!is_user_connected(id))
return;
// Not a spectator
if (is_user_alive(id))
return;
if (get_pcvar_num(cvar_nvision_spec) == 2)
{
if (!flag_get(g_NightVisionActive, id))
clcmd_nightvision_toggle(id)
}
else if (flag_get(g_NightVisionActive, id))
DisableNightVision(id)
}
public client_disconnect(id)
{
// Reset nightvision flags
flag_unset(g_NightVisionActive, id)
remove_task(id+TASK_NIGHTVISION)
}
// Prevent spectators' nightvision from being turned off when switching targets, etc.
public message_nvgtoggle(msg_id, msg_dest, msg_entity)
{
return PLUGIN_HANDLED;
}
// Custom Night Vision Task
public custom_nightvision(id)
{
// Spectator
if (!is_user_alive(id))
{
SetLightstyle(id, lightsize[get_pcvar_num(cvar_nvision_human_bright)])
NvgScreen(id, get_pcvar_num(cvar_nvision_spec_color_R), get_pcvar_num(cvar_nvision_spec_color_G), get_pcvar_num(cvar_nvision_spec_color_B), get_pcvar_num(cvar_nvision_spec_density))
}
// Zombie
else if (zp_core_is_zombie(id))
{
SetLightstyle(id, lightsize[get_pcvar_num(cvar_nvision_zombie_bright)])
// Nemesis Class loaded?
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(id))
{
NvgScreen(id, get_pcvar_num(cvar_nvision_nemesis_color_R), get_pcvar_num(cvar_nvision_nemesis_color_G), get_pcvar_num(cvar_nvision_nemesis_color_B), get_pcvar_num(cvar_nvision_nemesis_density))
}
else
{
NvgScreen(id, get_pcvar_num(cvar_nvision_zombie_color_R), get_pcvar_num(cvar_nvision_zombie_color_G), get_pcvar_num(cvar_nvision_zombie_color_B), get_pcvar_num(cvar_nvision_zombie_density))
}
}
// Human
else
{
SetLightstyle(id, lightsize[get_pcvar_num(cvar_nvision_human_bright)])
// Survivor Class loaded?
if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(id))
{
NvgScreen(id, get_pcvar_num(cvar_nvision_survivor_color_R), get_pcvar_num(cvar_nvision_survivor_color_G), get_pcvar_num(cvar_nvision_survivor_color_B), get_pcvar_num(cvar_nvision_survivor_density))
}
else
{
NvgScreen(id, get_pcvar_num(cvar_nvision_human_color_R), get_pcvar_num(cvar_nvision_human_color_G), get_pcvar_num(cvar_nvision_human_color_B), get_pcvar_num(cvar_nvision_human_density))
}
}
}
EnableNightVision(id)
{
flag_set(g_NightVisionActive, id)
if (!get_pcvar_num(cvar_nvision_custom))
cs_set_user_nvg_active(id, 1)
else
custom_nightvision(id)
}
DisableNightVision(id)
{
flag_unset(g_NightVisionActive, id)
if (!get_pcvar_num(cvar_nvision_custom))
cs_set_user_nvg_active(id, 0)
else
{
new lightstyle[2]
get_cvar_string("zp_lighting", lightstyle, charsmax(lightstyle))
NvgScreen(id, 0, 0, 0, 0)
SetLightstyle(id, lightstyle)
}
}
public NvgScreen(iPlayer, R, B, G, density)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, iPlayer)
if(R || B || G || density)
{
write_short(~0)
write_short(~0)
write_short(0x0004)
}
else
{
write_short(0)
write_short(0)
write_short(0)
}
write_byte(R)
write_byte(B)
write_byte(G)
write_byte(density)
message_end()
}
stock cs_set_user_nvg_active(id, active)
{
// Toggle NVG message
message_begin(MSG_ONE, g_MsgNVGToggle, _, id)
write_byte(active) // toggle
message_end()
}
stock SetLightstyle(iPlayer, const light[])
{
message_begin(MSG_ONE, SVC_LIGHTSTYLE, _, iPlayer)
write_byte(0)
write_string(light)
message_end()
}
|
|
|