07-03-15, 18:33
Merhaba Arkadaşlar Hayirli Günler.
Cod Aşağida Arkadaşlar Benim İstedim Birşey Var.
Biohazard Zombie Serverim Varda /nvg Sorunsuz Düzenli Çalişmaktada İstedim Şey.
Sadece Zombie Oldunda Menü'nün Direk gelmesi yani zombie iken 1daha /nvg Yazmasinlar.
Zombie Olduklarinda Direk Menü Gelmesini İstiyorum Yaparsaniz Sevinirim..
Cod Aşağida Arkadaşlar Benim İstedim Birşey Var.
Biohazard Zombie Serverim Varda /nvg Sorunsuz Düzenli Çalişmaktada İstedim Şey.
Sadece Zombie Oldunda Menü'nün Direk gelmesi yani zombie iken 1daha /nvg Yazmasinlar.
Zombie Olduklarinda Direk Menü Gelmesini İstiyorum Yaparsaniz Sevinirim..
Code:
/*================================================================================
---------------------------------------------------------------------------------
| <= Description => |
| ----------------- |
| |
| This plugin added a colored NightVision into Zombie Infection Mod (Biohazard).|
| Some code taken from Zombie Plague 4.3. Thanks you, MeRcyLeZZ. |
| Official page: < https://amxx.com.ua/bio-colored-nightvision/ > |
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
| <= CVARs => |
| ----------- |
| |
| nvg_radius 80 - Size radius lighting. |
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
| <= Changelog => |
| --------------- |
| |
| * v1.0: (3.9.2010) |
| - First release. |
---------------------------------------------------------------------------------
================================================================================*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <biohazard>
#define PLUGIN " Colored NightVision"
#define VERSION "1.0"
#define AUTHOR "Slavvkko"
#define OFFSET_TEAM 114
#define OFFSET_NVG 129
new const g_Colors[][3] =
{
// R G B
{150, 0, 0}, // 1
{0, 150, 0}, // 2
{0, 0, 150}, // 3
{0, 150, 150}, // 4
{102, 0, 255}, // 5
{202, 31, 123}, // 6
{255, 255, 0} // 7
};
new g_UserColor[33][3];
new bool:g_Chose[33];
new bool:g_nvision[33];
new bool:g_nvisionenabled[33];
new g_playername[33][32];
new g_maxplayers;
// SaveColor written by type Zombie Plague 4.3
const MAX_STATS_SAVED = 64;
new db_name[MAX_STATS_SAVED][32];
new db_user_nvg_color[MAX_STATS_SAVED][3];
new bool:db_chose[MAX_STATS_SAVED];
new db_slot_i;
new cvar_autonvg, cvar_radius;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("bio_colored_nightvision.txt");
register_logevent("logevent_round_end", 2, "1=Round_End");
register_clcmd("say /nvg", "clcmd_nvg");
register_clcmd("say_team /nvg", "clcmd_nvg");
register_clcmd("nightvision", "clcmd_nightvision");
cvar_autonvg = get_cvar_pointer("bh_autonvg");
cvar_radius = register_cvar("nvg_radius", "80");
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled");
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged");
g_maxplayers = get_maxplayers();
register_message(get_user_msgid("NVGToggle"), "message_NVGToggle");
}
public logevent_round_end()
{
static id;
for (id = 1; id <= g_maxplayers; id++)
SaveColor(id);
}
public fw_PlayerSpawn_Post(id)
{
if (!is_user_alive(id) || !fm_cs_get_user_team(id))
return;
remove_task(id);
g_nvision = false;
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
g_nvision = false;
set_task(0.1, "spec_nvision", victim);
}
public fw_ClientUserInfoChanged(id)
{
get_user_name(id, g_playername, charsmax(g_playername[]));
}
public client_putinserver(id)
{
get_user_name(id, g_playername, charsmax(g_playername[]));
// Set color 2
g_UserColor = g_Colors[1];
g_Chose = false;
LoadColor(id);
}
public client_disconnect(id)
{
SaveColor(id);
remove_task(id);
}
public event_infect(victim, attacker)
{
if (get_pcvar_num(cvar_autonvg))
{
g_nvisionenabled = true;
remove_task(victim);
set_task(0.1, "set_user_nvision", victim, _, _, "b");
}
g_nvision = true;
}
public message_NVGToggle()
{
return PLUGIN_HANDLED;
}
public clcmd_nvg(id)
{
ShowMenu(id);
return PLUGIN_HANDLED;
}
public clcmd_nightvision(id)
{
if (g_nvision || fm_get_user_nvg(id))
{
g_nvisionenabled = !(g_nvisionenabled);
remove_task(id);
if (g_nvisionenabled)
set_task(0.1, "set_user_nvision", id, _, _, "b");
}
return PLUGIN_HANDLED;
}
ShowMenu(id)
{
static iMenu, szMenu[64], i, Buffer[2];
formatex(szMenu, charsmax(szMenu), "%L", id, "NVG_MENUTITLE");
iMenu = menu_create(szMenu, "handler_nvg");
for (i = 0; i < sizeof(g_Colors); i++)
{
formatex(szMenu, charsmax(szMenu), "NVG_COLOR_%d", i + 1);
format(szMenu, charsmax(szMenu), "%L", id, szMenu);
Buffer[0] = i;
menu_additem(iMenu, szMenu, Buffer);
}
formatex(szMenu, charsmax(szMenu), "%L", id, "NVG_MENUBACK");
menu_setprop(iMenu, MPROP_BACKNAME, szMenu);
formatex(szMenu, charsmax(szMenu), "%L", id, "NVG_MENUNEXT");
menu_setprop(iMenu, MPROP_NEXTNAME, szMenu);
formatex(szMenu, charsmax(szMenu), "%L", id, "NVG_MENUEXIT");
menu_setprop(iMenu, MPROP_EXIT, szMenu);
menu_display(id, iMenu);
}
public handler_nvg(id, iMenu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
static Buffer[2], temp, itemid;
menu_item_getinfo(iMenu, item, temp, Buffer, charsmax(Buffer), _, _, temp);
itemid = Buffer[0];
g_UserColor = g_Colors;
g_Chose = true;
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
SaveColor(id)
{
if (!g_Chose)
return;
if (db_name[0] && !equal(g_playername, db_name))
{
if (db_slot_i >= sizeof(db_name))
db_slot_i = g_maxplayers + 1;
copy(db_name[db_slot_i], charsmax(db_name[]), db_name);
db_user_nvg_color[db_slot_i] = db_user_nvg_color;
db_chose[db_slot_i] = g_Chose;
db_slot_i++;
}
copy(db_name, charsmax(db_name[]), g_playername);
db_user_nvg_color = g_UserColor;
db_chose = g_Chose;
}
LoadColor(id)
{
static i;
for (i = 0; i < sizeof(db_name); i++)
{
if (equal(g_playername, db_name))
{
g_Chose = db_chose;
if (g_Chose)
g_UserColor = db_user_nvg_color;
return;
}
}
}
public spec_nvision(id)
{
if (!is_user_connected(id) || is_user_alive(id))
return;
g_nvision = true;
g_nvisionenabled = true;
remove_task(id);
set_task(0.1, "set_user_nvision", id, _, _, "b");
}
public set_user_nvision(id)
{
static origin[3];
get_user_origin(id, origin);
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(get_pcvar_num(cvar_radius));
write_byte(g_UserColor[0]);
write_byte(g_UserColor[1]);
write_byte(g_UserColor[2]);
write_byte(2);
write_byte(0);
message_end();
}
stock fm_cs_get_user_team(id)
{
return get_pdata_int(id, OFFSET_TEAM);
}
stock fm_get_user_nvg(index)
{
return get_pdata_int(index, OFFSET_NVG);
}
