AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Colored Nightvision Help (https://forums.alliedmods.net/showthread.php?t=241545)

forumm 06-05-2014 10:55

Colored Nightvision Help
 
I want this add-in menu in case you want to collect colors

Colors In case you want to use a normal menu

sample; I want to use this way

PHP Code:


menu_additem
(menu"\w200 Hp + 100 Colete""1"0);

case 
1:
        {
        } 

PHP Code:


#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "[BIO] 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_autonvgcvar_radius;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
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 1id <= g_maxplayersid++)
        
SaveColor(id);
}

public 
fw_PlayerSpawn_Post(id)
{
    if (!
is_user_alive(id) || !fm_cs_get_user_team(id))
        return;
        
    
remove_task(id);
    
g_nvision[id] = false;
}

public 
fw_PlayerKilled(victimattackershouldgib)
{
    
g_nvision[victim] = false;
    
set_task(0.1"spec_nvision"victim);
}

public 
fw_ClientUserInfoChanged(id)
{
    
get_user_name(idg_playername[id], charsmax(g_playername[]));
}

public 
client_putinserver(id)
{
    
get_user_name(idg_playername[id], charsmax(g_playername[]));
    
    
// Set color 2
    
g_UserColor[id] = g_Colors[1];
    
g_Chose[id] = false;
    
    
LoadColor(id);
}

public 
client_disconnect(id)
{
    
SaveColor(id);
    
remove_task(id);
}

public 
event_infect(victimattacker)
{
    if (!
g_Chose[victim])
        
ShowMenu(victim);
    
    if (
get_pcvar_num(cvar_autonvg))
    {
        
g_nvisionenabled[victim] = true;
        
remove_task(victim);
        
set_task(0.1"set_user_nvision"victim__"b");
    }
    
    
g_nvision[victim] = true;
}

public 
message_NVGToggle()
{
    return 
PLUGIN_HANDLED;
}

public 
clcmd_nvg(id)
{
    
ShowMenu(id);
    
    return 
PLUGIN_HANDLED;
}

public 
clcmd_nightvision(id)
{
    if (
g_nvision[id] || fm_get_user_nvg(id))
    {
        
g_nvisionenabled[id] = !(g_nvisionenabled[id]);
        
        
remove_task(id);
        if (
g_nvisionenabled[id])
            
set_task(0.1"set_user_nvision"id__"b");
    }
    
    return 
PLUGIN_HANDLED;
}

ShowMenu(id)
{
    static 
iMenuszMenu[64], iBuffer[2];
    
    
formatex(szMenucharsmax(szMenu), "%L"id"NVG_MENUTITLE");
    
    
iMenu menu_create(szMenu"handler_nvg");
    
    for (
0sizeof(g_Colors); i++)
    {
        
formatex(szMenucharsmax(szMenu), "NVG_COLOR_%d"1);
        
format(szMenucharsmax(szMenu), "%L"idszMenu);
        
Buffer[0] = i;
        
menu_additem(iMenuszMenuBuffer);
    }
    
    
formatex(szMenucharsmax(szMenu), "%L"id"NVG_MENUBACK");
    
menu_setprop(iMenuMPROP_BACKNAMEszMenu);
    
formatex(szMenucharsmax(szMenu), "%L"id"NVG_MENUNEXT");
    
menu_setprop(iMenuMPROP_NEXTNAMEszMenu);
    
formatex(szMenucharsmax(szMenu), "%L"id"NVG_MENUEXIT");
    
menu_setprop(iMenuMPROP_EXITszMenu);
    
    
menu_display(idiMenu);
}

public 
handler_nvg(idiMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        return 
PLUGIN_HANDLED;
    }
    
    static 
Buffer[2], tempitemid;
    
menu_item_getinfo(iMenuitemtempBuffercharsmax(Buffer), __temp);
    
itemid Buffer[0];
    
    
g_UserColor[id] = g_Colors[itemid];
    
    
g_Chose[id] = true;
    
    
menu_destroy(iMenu);
    return 
PLUGIN_HANDLED;
}

SaveColor(id)
{
    if (!
g_Chose[id])
        return;

    if (
db_name[id][0] && !equal(g_playername[id], db_name[id]))
    {
        if (
db_slot_i >= sizeof(db_name))
            
db_slot_i g_maxplayers 1;
        
        
copy(db_name[db_slot_i], charsmax(db_name[]), db_name[id]);
        
db_user_nvg_color[db_slot_i] = db_user_nvg_color[id];
        
db_chose[db_slot_i] = g_Chose[id];
        
db_slot_i++;
    }
    
    
copy(db_name[id], charsmax(db_name[]), g_playername[id]);
    
db_user_nvg_color[id] = g_UserColor[id];
    
db_chose[id] = g_Chose[id];
}

LoadColor(id)
{
    static 
i;
    for (
0sizeof(db_name); i++)
    {
        if (
equal(g_playername[id], db_name[i]))
        {
            
g_Chose[id] = db_chose[i];
            if (
g_Chose[id])
                
g_UserColor[id] = db_user_nvg_color[i];
                
            return;
        }
    }
}

public 
spec_nvision(id)
{
    if (!
is_user_connected(id) || is_user_alive(id))
        return;
    
    
g_nvision[id] = true;
    
g_nvisionenabled[id] = true;
    
remove_task(id);
    
set_task(0.1"set_user_nvision"id__"b");
}

public 
set_user_nvision(id)
{
    static 
origin[3];
    
get_user_origin(idorigin);
    
    
message_begin(MSG_ONE_UNRELIABLESVC_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[id][0]);
    
write_byte(g_UserColor[id][1]);
    
write_byte(g_UserColor[id][2]);
    
write_byte(2);
    
write_byte(0);
    
message_end();
}

stock fm_cs_get_user_team(id)
{
    return 
get_pdata_int(idOFFSET_TEAM);
}

stock fm_get_user_nvg(index)
{
    return 
get_pdata_int(indexOFFSET_NVG);




All times are GMT -4. The time now is 09:46.

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