Raised This Month: $ Target: $400
 0% 

[REQ] Fix - Prints double msg


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-24-2016 , 04:50   [REQ] Fix - Prints double msg
Reply With Quote #1

Prints double message, please fix

I don't have other chat plugins.

PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <nvault_util>

/* ************ EDIT STARTS HERE ************ */

// Tag for messages in the plugin
#define TAG "Gamenet"
#define ADMIN ADMIN_RESERVATION

//What admin rank you should have to give points
#define ADMIN_LEVEL ADMIN_RCON

//Max levels 
#define MaxLevels 100

//Top number
#define TopNumber 15

//Max players
#define MAX_PLAYERS 32

/* ************ EDIT ENDS HERE ************** */

new g_pCvar_Killg_pCvar_Headshotg_pCvar_Win
new g_pCvar_Suicideg_pCvar_Dyingg_pCvar_Logadmin

new g_iHeadshotg_iKillg_iDying
new g_iWing_iSuicideg_iLogadmin

new g_iLevel[MAX_PLAYERS +1], g_iPoints[MAX_PLAYERS +1], g_iName[MAX_PLAYERS +1]
new 
g_szLevels[MaxLevels], g_szLevelNames[MaxLevels][MAX_PLAYERS +1]
new 
g_szKnife[MaxLevels][2][64], bool:g_bGiveRemove

new g_players
new message[192]
new 
strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new 
g_AdminListenFlag
new g_AdminListen
new teamInfo
new sayText
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]

//function by fysiks
public plugin_precache( )
{
    new 
cfgdir[64]
    
get_localinfo("amxx_configsdir"cfgdircharsmax(cfgdir))
    
format(cfgdircharsmax(cfgdir), "%s/levelmod.ini"cfgdir)
    
    new 
file fopen(cfgdir"rt");
    
    if( 
file )
    {
        new 
0;
        new 
szLevel[5], sfLineData[128];
        
        while( !
feof(file) && MaxLevels )
        {
            
fgets(filesfLineDatacharsmax(sfLineData));
            
            if( !
sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
            
            
parse(sfLineDataszLevelcharsmax(szLevel), g_szLevelNames[i], charsmax(g_szLevelNames[]), g_szKnife[i][0], charsmax(g_szKnife[][]), g_szKnife[i][1], charsmax(g_szKnife[][]));
            
g_szLevels[i] = str_to_num(szLevel);
            
            
precache_model(g_szKnife[i][0]);
            
precache_model(g_szKnife[i][1]);
            
i++;
        }

        
fclose(file);
    }
    else
    {
        
set_fail_state("amxmodx/configs/levelmod.ini doesnt exist. Stops plugin.");
    }
}

public 
plugin_cfg( )
{
    
g_iHeadshot get_pcvar_num(g_pCvar_Headshot)
    
g_iKill get_pcvar_num(g_pCvar_Kill)
    
g_iSuicide get_pcvar_num(g_pCvar_Suicide)
    
g_iWin get_pcvar_num(g_pCvar_Win)
    
g_iDying get_pcvar_num(g_pCvar_Dying)
    
g_iLogadmin get_pcvar_num(g_pCvar_Logadmin)
}

public 
plugin_init()
{
    
register_plugin("Level Mod""6.0""SnusMumrikeN")
    
g_players get_maxplayers()
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
    
register_clcmd"PointsAmount""PointsAction" )
    
g_pCvar_Kill register_cvar("cvar_kill""2"// Default +2
    
g_pCvar_Headshot register_cvar("cvar_headshot""4"// Default +4
    
g_pCvar_Win register_cvar("cvar_win""3"// Default +3
    
g_pCvar_Dying register_cvar("cvar_dying""2"// Default -2
    
g_pCvar_Suicide register_cvar("cvar_suicide""3"// Default -3
    
g_pCvar_Logadmin register_cvar("cvar_logadmin""1"// Default 0
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
g_AdminListen register_cvar("amx_listen""1")
    
register_message(get_user_msgid("TextMsg") ,"Message_Win")
    
register_message(sayText"avoid_duplicated")    

    
RegisterHamHam_Item_Deploy"weapon_knife""Ham_KnifeDeploy");
    
teamInfo get_user_msgid("TeamInfo")
    
sayText get_user_msgid("SayText")
    
g_iVault nvault_open("levelmod")
    
FormatTop(TopNumber)
    
    
set_task300.0"Task_Advertise", .flags="b" );
}

public 
plugin_end() 
    
nvault_close(g_iVault)

public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    if(
equali(arg1"/level" ) || equali(arg1"/lvl" ))
    {
        new 
iPlayer cmd_target(idarg20)
        if(!
arg2[0] || !iPlayer)
        {
            if( 
g_szLevels[g_iLevel[id]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[id]+1g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
        }
        else
        {
            new 
iName[32]
            
get_user_name(iPlayeriName31)
        
            if( 
g_szLevels[g_iLevel[iPlayer]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[iPlayer]+1g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
        }
    }
    else if(
equali(arg1"/top")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
    else if(
equali(arg1"/pointsadmin")) 
    {
        
Playerlistid 
    }
}

Playerlistid 
{
    if(
get_user_flagsid ) & ADMIN_LEVEL )
    {
        new 
PlayermenuTemp[64]
    
        
formatex(Tempcharsmax(Temp), "\w[\r%s\w]\y Playerlist"TAG)
        
Playermenu menu_create(Temp"PlayerlistHandler");
    
        new 
players[32], pnumtempid;
        new 
szName[32], szTempid[10];
        
        
formatex(Tempcharsmax(Temp), "\w[\r%s\w]^n"g_bGiveRemove "REMOVE" "GIVE");  
        
menu_additem(PlayermenuTemp"0")
    
        
get_players(playerspnum"ch");
        for( new 
ii<pnumi++ )
        {
            
tempid players[i];
        
            
get_user_name(tempidszNamecharsmax(szName));
            
num_to_str(tempidszTempidcharsmax(szTempid));
            
menu_additem(PlayermenuszNameszTempid0);
        }
    
        
menu_display(idPlayermenu);
    }
    return 
PLUGIN_HANDLED
}

public 
PlayerlistHandler(idmenuitem) {
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    new 
data[6], szName[32];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);
    
    new 
key str_to_num(data);
    if( 
key == )
    {
        if((
g_bGiveRemove = !g_bGiveRemove)) 
        {
            
g_bGiveRemove true
            
            menu_destroy
(menu);
            
Playerlistid 
            return 
PLUGIN_HANDLED
        
}
        else 
        {
            
g_bGiveRemove false
            
            menu_destroy
(menu);
            
Playerlistid 
            return 
PLUGIN_HANDLED
        
}    
    }
    
    
g_iName[id] = key
    
    client_cmd
(id"messagemode PointsAmount");
    
client_cmd(id"spk fvox/blip");
    
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
PointsAction(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED
        
    
new iAmount[50]
    
read_argv(1,iAmount,49)
    
    new 
szName[2][32]
    
get_user_name(idszName[0], 31)
    
get_user_name(g_iName[id], szName[1], 31)
    
    if( 
str_to_num(iAmount) >= 9999999 )
    {
        
ColorChat(idGREY"^4[%s]^1 You cant^3 %s^1 that much points"TAGg_bGiveRemove "remove" "give");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_connected(g_iName[id]))
    {
        
ColorChat(idGREY"^4[%s]^1 User^3 %s^1 isnt connected"TAGszName[1]);
        return 
PLUGIN_HANDLED
    
}
    
    if( 
g_iLogadmin == )
    {
        new 
message[200], Time[64];
        
get_time("%c"Timecharsmax(Time)); 
        
format messagecharsmax(message), "[%s] %s %s %s %i points"TimeszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
        
write_file "addons/amxmodx/logs/levelmod.txt"message )
    }
    
    
ColorChat(0GREY"^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
set_hudmessage(25500, -1.00.101.07.00.11.0)
    
show_hudmessage0"[%s] %s %s %s %i points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
client_cmd(0"spk buttons/bell1");
    
    if( 
g_bGiveRemove )
        
g_iPoints[g_iName[id]] -= str_to_num(iAmount)
    else
        
g_iPoints[g_iName[id]] += str_to_num(iAmount)
    
    
CheckLevel(g_iName[id])
    
    return 
PLUGIN_HANDLED
}

CheckLevel(id)
{
    if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
    {
        
g_iLevel[id]++;
        
        if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
        {
            
CheckLevel(id)
            return 
PLUGIN_HANDLED
        
}
            
        new 
g_iName32 ]
        
get_user_nameidg_iNamecharsmax(g_iName) );
        
        
ColorChat 0GREY"^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]"TAGg_iNameg_iLevel[id], g_szLevelNames[g_iLevel[id]])
        
        
client_cmd(0"spk events/task_complete.wav");
        
        if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
        {    
            
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
            
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
        }
    }
    else if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
    {
        
g_iLevel[id]--;
        
        if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
        {
            
CheckLevel(id)
            return 
PLUGIN_HANDLED
        
}    
        if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
        {
            
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
            
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
        }
        
ColorChat idGREY"^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]"TAGg_iLevel[id], g_szLevelNames[g_iLevel[id]])
    }
    
    return 
PLUGIN_HANDLED
}

public 
Event_DeathMsg()
{
    new 
g_iKiller read_data(1);
    new 
g_iVictim read_data(2);
    
    if( 
<= g_iKiller <= get_maxplayers() && cs_get_user_teamg_iVictim ) != cs_get_user_teamg_iKiller )
    && 
is_user_connectedg_iKiller ))
    {
        new 
g_iNames[2][32]
        
get_user_name(g_iKillerg_iNames[0], 31)
        
get_user_name(g_iVictimg_iNames[1], 31)
    
        if( 
read_data) && g_iHeadshot != )
        {
            
g_iPointsg_iKiller ] += g_iHeadshot
            ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]"TAGg_iHeadshotg_iNames[1])
        }
        else if( 
g_iKill != )
        {
            
g_iPointsg_iKiller ] += g_iKill
            ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s"TAGg_iKillg_iNames[1])
        }
        else if( 
g_iDying != )
        {
            
g_iPointsg_iVictim ] -= g_iDying
            ColorChat 
g_iVictimGREY"^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s"TAGg_iDyingg_iNames[0])
        }
        
    }    
    else if( 
g_iSuicide != && g_iVictim == g_iKiller)
    {
        
g_iPointsg_iKiller ] -= g_iSuicide
        ColorChat 
g_iKillerGREY"^4[%s]^1 You lost^3 %i^1 points for commiting suicide"TAGg_iSuicide)
    }
    
CheckLevel(g_iKiller)
    
CheckLevel(g_iVictim)
}

public 
Ham_KnifeDeploy(iWeapon)
{
    new 
id get_pdata_cbase(iWeapon414)
    
    if(
is_user_alive(id))
    {
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
}

public 
Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
    if( 
g_iWin == )
        return 
PLUGIN_HANDLED    
        
    
new Flags[32], iPlayers[32], iNumid
    
    
new Message16 ];
    
get_msg_arg_string2MessagecharsmaxMessage ) );

    switch(
Message[1]) 
    { 
        case 
'T'
        { 
            
copy(Flagscharsmax(Flags), "TERRORIST"
        } 
        case 
'C'
        { 
            
copy(Flagscharsmax(Flags), "CT"
        }
    }

    
get_playersiPlayersiNum"ae"Flags);  

    for( new 
iiNumi++ )
    {
        
id iPlayers[i];
            
        
g_iPointsid ] += g_iWin
        ColorChat 
idGREY"^4[%s]^1 You got^3 %i^1 points for winning the round"TAGg_iWin)
        
CheckLevel(id)
    }
    return 
PLUGIN_HANDLED
}

public 
Task_Advertise()
{
    
ColorChat(0GREY"^4[%s]^1 This server is running^3 LevelMod^1 by^3 SnusMumrikeN"TAG);
}

stock FormatTop(iNum)
{    
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
        
    
enum _:VaultData
    
{
        
VD_Key[33],
        
VD_Value,
        
VD_szName[33]
    };
    
    new 
Vault2 nvault_util_open("levelmod")
    new 
iSize nvault_util_count(Vault2)
    
    new Array:
entries ArrayCreate(VaultData);
    new 
sizeEntries
    
    
new data[VaultData], value[256], data2[VaultData]

    for(new 
0postimestampiSizei++)
    {
        
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
        if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
            continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }

        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
          
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")

    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}

public 
client_putinserver(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;

    
Load(id)
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i %i"g_iPoints[id], g_iLevel[id]);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
        
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
        
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(idszData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(idszData[256])
{
    static 
szNum[11];
    
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
    
g_iPoints[id] = str_to_num(szNum);
    
    
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
    
g_iLevel[id] = str_to_num(szNum);
}
public 
hook_say(id)
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
        return 
PLUGIN_CONTINUE
    
    get_user_name
(idg_namecharsmax(g_name))
    
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
        
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s "aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s"aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
    
sendMessage(colorisAlive)// Sends the colored message
    
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
        
return PLUGIN_CONTINUE
    
    
new playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch(
playerTeam// Team names which appear on team-only messages
    
{
        case 
1copy(playerTeamName11"Terrorists")
            case 
2copy(playerTeamName18"Counter-Terrorists")
            default: 
copy(playerTeamName9"Spectator")
    }
    
    
get_user_name(idg_namecharsmax(g_name))
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
        
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x04%s ^x03%s "aliveplayerTeamName,  g_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9);
        
format(strName191"%s(%s) ^x04%s ^x03%s"aliveplayerTeamNameg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
sendTeamMessage(colorisAliveplayerTeam)
    return 
PLUGIN_CONTINUE
}
public 
sendMessage(color[], alive)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
        
}
    }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
            {
                
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)// Changes user's team according to color choosen
                
writeMessage(playermessage)// Writes the message on player's chat
                
changeTeamInfo(playerteamName)// Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)// Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)// Write byte needed
    
write_string(team)// Changes player's team
    
message_end()// Also Needed
}


public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)// Write byte needed
    
write_string(message)// Effectively write the message, finally, afterall
    
message_end()// Needed as always
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1053\\ f0\\ fs16 \n\\ par }
*/ 
__________________

Last edited by Airkish; 08-24-2016 at 04:52.
Airkish is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 08-24-2016 , 10:10   Re: [REQ] Fix - Prints double msg
Reply With Quote #2

You already have this, why isn't anything done with it?

PHP Code:
register_message(sayText"avoid_duplicated"
Add the next thing to your code
PHP Code:
public avoid_duplicated(id) {
    return 
PLUGIN_HANDLED

__________________

Last edited by Napoleon_be; 08-24-2016 at 10:10.
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-24-2016 , 10:30   Re: [REQ] Fix - Prints double msg
Reply With Quote #3

Quote:
Originally Posted by Napoleon_be View Post
You already have this, why isn't anything done with it?

PHP Code:
register_message(sayText"avoid_duplicated"
Add the next thing to your code
PHP Code:
public avoid_duplicated(id) {
    return 
PLUGIN_HANDLED

I don't know, its not my code

Please fix, thanks!
__________________
Airkish is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 08-24-2016 , 10:34   Re: [REQ] Fix - Prints double msg
Reply With Quote #4

PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <nvault_util>

/* ************ EDIT STARTS HERE ************ */

// Tag for messages in the plugin
#define TAG "Gamenet"
#define ADMIN ADMIN_RESERVATION

//What admin rank you should have to give points
#define ADMIN_LEVEL ADMIN_RCON

//Max levels 
#define MaxLevels 100

//Top number
#define TopNumber 15

//Max players
#define MAX_PLAYERS 32

/* ************ EDIT ENDS HERE ************** */

new g_pCvar_Killg_pCvar_Headshotg_pCvar_Win
new g_pCvar_Suicideg_pCvar_Dyingg_pCvar_Logadmin

new g_iHeadshotg_iKillg_iDying
new g_iWing_iSuicideg_iLogadmin

new g_iLevel[MAX_PLAYERS +1], g_iPoints[MAX_PLAYERS +1], g_iName[MAX_PLAYERS +1]
new 
g_szLevels[MaxLevels], g_szLevelNames[MaxLevels][MAX_PLAYERS +1]
new 
g_szKnife[MaxLevels][2][64], bool:g_bGiveRemove

new g_players
new message[192]
new 
strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new 
g_AdminListenFlag
new g_AdminListen
new teamInfo
new sayText
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]

//function by fysiks
public plugin_precache( )
{
    new 
cfgdir[64]
    
get_localinfo("amxx_configsdir"cfgdircharsmax(cfgdir))
    
format(cfgdircharsmax(cfgdir), "%s/levelmod.ini"cfgdir)
    
    new 
file fopen(cfgdir"rt");
    
    if( 
file )
    {
        new 
0;
        new 
szLevel[5], sfLineData[128];
        
        while( !
feof(file) && MaxLevels )
        {
            
fgets(filesfLineDatacharsmax(sfLineData));
            
            if( !
sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
            
            
parse(sfLineDataszLevelcharsmax(szLevel), g_szLevelNames[i], charsmax(g_szLevelNames[]), g_szKnife[i][0], charsmax(g_szKnife[][]), g_szKnife[i][1], charsmax(g_szKnife[][]));
            
g_szLevels[i] = str_to_num(szLevel);
            
            
precache_model(g_szKnife[i][0]);
            
precache_model(g_szKnife[i][1]);
            
i++;
        }
        
        
fclose(file);
    }
    else
    {
        
set_fail_state("amxmodx/configs/levelmod.ini doesnt exist. Stops plugin.");
    }
}

public 
plugin_cfg( )
{
    
g_iHeadshot get_pcvar_num(g_pCvar_Headshot)
    
g_iKill get_pcvar_num(g_pCvar_Kill)
    
g_iSuicide get_pcvar_num(g_pCvar_Suicide)
    
g_iWin get_pcvar_num(g_pCvar_Win)
    
g_iDying get_pcvar_num(g_pCvar_Dying)
    
g_iLogadmin get_pcvar_num(g_pCvar_Logadmin)
}

public 
plugin_init()
{
    
register_plugin("Level Mod""6.0""SnusMumrikeN")
    
g_players get_maxplayers()
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
    
register_clcmd"PointsAmount""PointsAction" )
    
g_pCvar_Kill register_cvar("cvar_kill""2"// Default +2
    
g_pCvar_Headshot register_cvar("cvar_headshot""4"// Default +4
    
g_pCvar_Win register_cvar("cvar_win""3"// Default +3
    
g_pCvar_Dying register_cvar("cvar_dying""2"// Default -2
    
g_pCvar_Suicide register_cvar("cvar_suicide""3"// Default -3
    
g_pCvar_Logadmin register_cvar("cvar_logadmin""1"// Default 0
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
g_AdminListen register_cvar("amx_listen""1")
    
register_message(get_user_msgid("TextMsg") ,"Message_Win")
    
register_message(sayText"avoid_duplicated")    
    
    
RegisterHamHam_Item_Deploy"weapon_knife""Ham_KnifeDeploy");
    
teamInfo get_user_msgid("TeamInfo")
    
sayText get_user_msgid("SayText")
    
g_iVault nvault_open("levelmod")
    
FormatTop(TopNumber)
    
    
set_task300.0"Task_Advertise", .flags="b" );
}

public 
plugin_end() 
    
nvault_close(g_iVault)

public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    if(
equali(arg1"/level" ) || equali(arg1"/lvl" ))
    {
        new 
iPlayer cmd_target(idarg20)
        if(!
arg2[0] || !iPlayer)
        {
            if( 
g_szLevels[g_iLevel[id]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[id]+1g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
        }
        else
        {
            new 
iName[32]
            
get_user_name(iPlayeriName31)
            
            if( 
g_szLevels[g_iLevel[iPlayer]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[iPlayer]+1g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
        }
    }
    else if(
equali(arg1"/top")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
    else if(
equali(arg1"/pointsadmin")) 
    {
        
Playerlistid 
    }
}

public 
avoid_duplicated(id) {
    return 
PLUGIN_HANDLED
}  

Playerlistid 
{
if(
get_user_flagsid ) & ADMIN_LEVEL )
{
    new 
PlayermenuTemp[64]
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]\y Playerlist"TAG)
    
Playermenu menu_create(Temp"PlayerlistHandler");
    
    new 
players[32], pnumtempid;
    new 
szName[32], szTempid[10];
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]^n"g_bGiveRemove "REMOVE" "GIVE");  
    
menu_additem(PlayermenuTemp"0")
    
    
get_players(playerspnum"ch");
    for( new 
ii<pnumi++ )
    {
        
tempid players[i];
        
        
get_user_name(tempidszNamecharsmax(szName));
        
num_to_str(tempidszTempidcharsmax(szTempid));
        
menu_additem(PlayermenuszNameszTempid0);
    }
    
    
menu_display(idPlayermenu);
}
return 
PLUGIN_HANDLED
}

public 
PlayerlistHandler(idmenuitem) {
if( 
item == MENU_EXIT )
{
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

new 
data[6], szName[32];
new 
accesscallback;
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);

new 
key str_to_num(data);
if( 
key == )
{
    if((
g_bGiveRemove = !g_bGiveRemove)) 
    {
        
g_bGiveRemove true
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}
    else 
    {
        
g_bGiveRemove false
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}    
}

g_iName[id] = key

client_cmd
(id"messagemode PointsAmount");
client_cmd(id"spk fvox/blip");

menu_destroy(menu);
return 
PLUGIN_HANDLED;
}

public 
PointsAction(id)
{
if(!
is_user_connected(id))
    return 
PLUGIN_HANDLED
    
    
new iAmount[50]
    
read_argv(1,iAmount,49)
    
    new 
szName[2][32]
    
get_user_name(idszName[0], 31)
    
get_user_name(g_iName[id], szName[1], 31)
    
    if( 
str_to_num(iAmount) >= 9999999 )
    {
        
ColorChat(idGREY"^4[%s]^1 You cant^3 %s^1 that much points"TAGg_bGiveRemove "remove" "give");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_connected(g_iName[id]))
    {
        
ColorChat(idGREY"^4[%s]^1 User^3 %s^1 isnt connected"TAGszName[1]);
        return 
PLUGIN_HANDLED
    
}
    
    if( 
g_iLogadmin == )
    {
        new 
message[200], Time[64];
        
get_time("%c"Timecharsmax(Time)); 
        
format messagecharsmax(message), "[%s] %s %s %s %i points"TimeszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
        
write_file "addons/amxmodx/logs/levelmod.txt"message )
    }
    
    
ColorChat(0GREY"^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
set_hudmessage(25500, -1.00.101.07.00.11.0)
    
show_hudmessage0"[%s] %s %s %s %i points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
client_cmd(0"spk buttons/bell1");
    
    if( 
g_bGiveRemove )
        
g_iPoints[g_iName[id]] -= str_to_num(iAmount)
    else
        
g_iPoints[g_iName[id]] += str_to_num(iAmount)
    
    
CheckLevel(g_iName[id])
    
    return 
PLUGIN_HANDLED
}

CheckLevel(id)
{
if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
{
    
g_iLevel[id]++;
    
    if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
g_iName32 ]
    
get_user_nameidg_iNamecharsmax(g_iName) );
    
    
ColorChat 0GREY"^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]"TAGg_iNameg_iLevel[id], g_szLevelNames[g_iLevel[id]])
    
    
client_cmd(0"spk events/task_complete.wav");
    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {    
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
}
else if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
{
    
g_iLevel[id]--;
    
    if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
    
ColorChat idGREY"^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]"TAGg_iLevel[id], g_szLevelNames[g_iLevel[id]])
}

return 
PLUGIN_HANDLED
}

public 
Event_DeathMsg()
{
new 
g_iKiller read_data(1);
new 
g_iVictim read_data(2);

if( 
<= g_iKiller <= get_maxplayers() && cs_get_user_teamg_iVictim ) != cs_get_user_teamg_iKiller )
&& 
is_user_connectedg_iKiller ))
{
new 
g_iNames[2][32]
get_user_name(g_iKillerg_iNames[0], 31)
get_user_name(g_iVictimg_iNames[1], 31)

if( 
read_data) && g_iHeadshot != )
{
    
g_iPointsg_iKiller ] += g_iHeadshot
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]"TAGg_iHeadshotg_iNames[1])
}
else if( 
g_iKill != )
{
    
g_iPointsg_iKiller ] += g_iKill
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s"TAGg_iKillg_iNames[1])
}
else if( 
g_iDying != )
{
    
g_iPointsg_iVictim ] -= g_iDying
    ColorChat 
g_iVictimGREY"^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s"TAGg_iDyingg_iNames[0])
}

}    
else if( 
g_iSuicide != && g_iVictim == g_iKiller)
{
g_iPointsg_iKiller ] -= g_iSuicide
ColorChat 
g_iKillerGREY"^4[%s]^1 You lost^3 %i^1 points for commiting suicide"TAGg_iSuicide)
}
CheckLevel(g_iKiller)
CheckLevel(g_iVictim)
}

public 
Ham_KnifeDeploy(iWeapon)
{
new 
id get_pdata_cbase(iWeapon414)

if(
is_user_alive(id))
{
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
}
}

public 
Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
if( 
g_iWin == )
return 
PLUGIN_HANDLED    

new Flags[32], iPlayers[32], iNumid

new Message16 ];
get_msg_arg_string2MessagecharsmaxMessage ) );

switch(
Message[1]) 

    case 
'T'
    { 
        
copy(Flagscharsmax(Flags), "TERRORIST"
    } 
    case 
'C'
    { 
        
copy(Flagscharsmax(Flags), "CT"
    }
}

get_playersiPlayersiNum"ae"Flags);  

for( new 
iiNumi++ )
{
    
id iPlayers[i];
    
    
g_iPointsid ] += g_iWin
    ColorChat 
idGREY"^4[%s]^1 You got^3 %i^1 points for winning the round"TAGg_iWin)
    
CheckLevel(id)
}
return 
PLUGIN_HANDLED
}

public 
Task_Advertise()
{
ColorChat(0GREY"^4[%s]^1 This server is running^3 LevelMod^1 by^3 SnusMumrikeN"TAG);
}

stock FormatTop(iNum)
{    
if(
g_iVault == INVALID_HANDLE)
    
set_fail_state("nVault returned invalid handle")
    
    
enum _:VaultData
{
    
VD_Key[33],
    
VD_Value,
    
VD_szName[33]
};

new 
Vault2 nvault_util_open("levelmod")
new 
iSize nvault_util_count(Vault2)

new Array:
entries ArrayCreate(VaultData);
new 
sizeEntries

new data[VaultData], value[256], data2[VaultData]

for(new 
0postimestampiSizei++)
{
    
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
    if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
        continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }
        
        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
                
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")
    
    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}

public 
client_putinserver(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Load(id)
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i %i"g_iPoints[id], g_iLevel[id]);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(idszData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(idszData[256])
{
static 
szNum[11];
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iPoints[id] = str_to_num(szNum);

strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iLevel[id] = str_to_num(szNum);
}
public 
hook_say(id)
{
read_args(message191)
remove_quotes(message)

if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
    return 
PLUGIN_CONTINUE
    
    get_user_name
(idg_namecharsmax(g_name))
    
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s "aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s"aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
    
sendMessage(colorisAlive)// Sends the colored message
    
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
        
return PLUGIN_CONTINUE
    
    
new playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch(
playerTeam// Team names which appear on team-only messages
    
{
        case 
1copy(playerTeamName11"Terrorists")
            case 
2copy(playerTeamName18"Counter-Terrorists")
            default: 
copy(playerTeamName9"Spectator")
    }
    
    
get_user_name(idg_namecharsmax(g_name))
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x04%s ^x03%s "aliveplayerTeamName,  g_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9);
        
format(strName191"%s(%s) ^x04%s ^x03%s"aliveplayerTeamNameg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
sendTeamMessage(colorisAliveplayerTeam)
    return 
PLUGIN_CONTINUE
}
public 
sendMessage(color[], alive)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
        
}
    }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
            {
                
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)// Changes user's team according to color choosen
                
writeMessage(playermessage)// Writes the message on player's chat
                
changeTeamInfo(playerteamName)// Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)// Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)// Write byte needed
    
write_string(team)// Changes player's team
    
message_end()// Also Needed
}


public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)// Write byte needed
    
write_string(message)// Effectively write the message, finally, afterall
    
message_end()// Needed as always

__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-24-2016 , 10:43   Re: [REQ] Fix - Prints double msg
Reply With Quote #5

Quote:
Originally Posted by Napoleon_be View Post
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <nvault_util>

/* ************ EDIT STARTS HERE ************ */

// Tag for messages in the plugin
#define TAG "Gamenet"
#define ADMIN ADMIN_RESERVATION

//What admin rank you should have to give points
#define ADMIN_LEVEL ADMIN_RCON

//Max levels 
#define MaxLevels 100

//Top number
#define TopNumber 15

//Max players
#define MAX_PLAYERS 32

/* ************ EDIT ENDS HERE ************** */

new g_pCvar_Killg_pCvar_Headshotg_pCvar_Win
new g_pCvar_Suicideg_pCvar_Dyingg_pCvar_Logadmin

new g_iHeadshotg_iKillg_iDying
new g_iWing_iSuicideg_iLogadmin

new g_iLevel[MAX_PLAYERS +1], g_iPoints[MAX_PLAYERS +1], g_iName[MAX_PLAYERS +1]
new 
g_szLevels[MaxLevels], g_szLevelNames[MaxLevels][MAX_PLAYERS +1]
new 
g_szKnife[MaxLevels][2][64], bool:g_bGiveRemove

new g_players
new message[192]
new 
strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new 
g_AdminListenFlag
new g_AdminListen
new teamInfo
new sayText
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]

//function by fysiks
public plugin_precache( )
{
    new 
cfgdir[64]
    
get_localinfo("amxx_configsdir"cfgdircharsmax(cfgdir))
    
format(cfgdircharsmax(cfgdir), "%s/levelmod.ini"cfgdir)
    
    new 
file fopen(cfgdir"rt");
    
    if( 
file )
    {
        new 
0;
        new 
szLevel[5], sfLineData[128];
        
        while( !
feof(file) && MaxLevels )
        {
            
fgets(filesfLineDatacharsmax(sfLineData));
            
            if( !
sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
            
            
parse(sfLineDataszLevelcharsmax(szLevel), g_szLevelNames[i], charsmax(g_szLevelNames[]), g_szKnife[i][0], charsmax(g_szKnife[][]), g_szKnife[i][1], charsmax(g_szKnife[][]));
            
g_szLevels[i] = str_to_num(szLevel);
            
            
precache_model(g_szKnife[i][0]);
            
precache_model(g_szKnife[i][1]);
            
i++;
        }
        
        
fclose(file);
    }
    else
    {
        
set_fail_state("amxmodx/configs/levelmod.ini doesnt exist. Stops plugin.");
    }
}

public 
plugin_cfg( )
{
    
g_iHeadshot get_pcvar_num(g_pCvar_Headshot)
    
g_iKill get_pcvar_num(g_pCvar_Kill)
    
g_iSuicide get_pcvar_num(g_pCvar_Suicide)
    
g_iWin get_pcvar_num(g_pCvar_Win)
    
g_iDying get_pcvar_num(g_pCvar_Dying)
    
g_iLogadmin get_pcvar_num(g_pCvar_Logadmin)
}

public 
plugin_init()
{
    
register_plugin("Level Mod""6.0""SnusMumrikeN")
    
g_players get_maxplayers()
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
    
register_clcmd"PointsAmount""PointsAction" )
    
g_pCvar_Kill register_cvar("cvar_kill""2"// Default +2
    
g_pCvar_Headshot register_cvar("cvar_headshot""4"// Default +4
    
g_pCvar_Win register_cvar("cvar_win""3"// Default +3
    
g_pCvar_Dying register_cvar("cvar_dying""2"// Default -2
    
g_pCvar_Suicide register_cvar("cvar_suicide""3"// Default -3
    
g_pCvar_Logadmin register_cvar("cvar_logadmin""1"// Default 0
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
g_AdminListen register_cvar("amx_listen""1")
    
register_message(get_user_msgid("TextMsg") ,"Message_Win")
    
register_message(sayText"avoid_duplicated")    
    
    
RegisterHamHam_Item_Deploy"weapon_knife""Ham_KnifeDeploy");
    
teamInfo get_user_msgid("TeamInfo")
    
sayText get_user_msgid("SayText")
    
g_iVault nvault_open("levelmod")
    
FormatTop(TopNumber)
    
    
set_task300.0"Task_Advertise", .flags="b" );
}

public 
plugin_end() 
    
nvault_close(g_iVault)

public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    if(
equali(arg1"/level" ) || equali(arg1"/lvl" ))
    {
        new 
iPlayer cmd_target(idarg20)
        if(!
arg2[0] || !iPlayer)
        {
            if( 
g_szLevels[g_iLevel[id]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[id]+1g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
        }
        else
        {
            new 
iName[32]
            
get_user_name(iPlayeriName31)
            
            if( 
g_szLevels[g_iLevel[iPlayer]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[iPlayer]+1g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
        }
    }
    else if(
equali(arg1"/top")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
    else if(
equali(arg1"/pointsadmin")) 
    {
        
Playerlistid 
    }
}

public 
avoid_duplicated(id) {
    return 
PLUGIN_HANDLED
}  

Playerlistid 
{
if(
get_user_flagsid ) & ADMIN_LEVEL )
{
    new 
PlayermenuTemp[64]
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]\y Playerlist"TAG)
    
Playermenu menu_create(Temp"PlayerlistHandler");
    
    new 
players[32], pnumtempid;
    new 
szName[32], szTempid[10];
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]^n"g_bGiveRemove "REMOVE" "GIVE");  
    
menu_additem(PlayermenuTemp"0")
    
    
get_players(playerspnum"ch");
    for( new 
ii<pnumi++ )
    {
        
tempid players[i];
        
        
get_user_name(tempidszNamecharsmax(szName));
        
num_to_str(tempidszTempidcharsmax(szTempid));
        
menu_additem(PlayermenuszNameszTempid0);
    }
    
    
menu_display(idPlayermenu);
}
return 
PLUGIN_HANDLED
}

public 
PlayerlistHandler(idmenuitem) {
if( 
item == MENU_EXIT )
{
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

new 
data[6], szName[32];
new 
accesscallback;
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);

new 
key str_to_num(data);
if( 
key == )
{
    if((
g_bGiveRemove = !g_bGiveRemove)) 
    {
        
g_bGiveRemove true
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}
    else 
    {
        
g_bGiveRemove false
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}    
}

g_iName[id] = key

client_cmd
(id"messagemode PointsAmount");
client_cmd(id"spk fvox/blip");

menu_destroy(menu);
return 
PLUGIN_HANDLED;
}

public 
PointsAction(id)
{
if(!
is_user_connected(id))
    return 
PLUGIN_HANDLED
    
    
new iAmount[50]
    
read_argv(1,iAmount,49)
    
    new 
szName[2][32]
    
get_user_name(idszName[0], 31)
    
get_user_name(g_iName[id], szName[1], 31)
    
    if( 
str_to_num(iAmount) >= 9999999 )
    {
        
ColorChat(idGREY"^4[%s]^1 You cant^3 %s^1 that much points"TAGg_bGiveRemove "remove" "give");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_connected(g_iName[id]))
    {
        
ColorChat(idGREY"^4[%s]^1 User^3 %s^1 isnt connected"TAGszName[1]);
        return 
PLUGIN_HANDLED
    
}
    
    if( 
g_iLogadmin == )
    {
        new 
message[200], Time[64];
        
get_time("%c"Timecharsmax(Time)); 
        
format messagecharsmax(message), "[%s] %s %s %s %i points"TimeszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
        
write_file "addons/amxmodx/logs/levelmod.txt"message )
    }
    
    
ColorChat(0GREY"^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
set_hudmessage(25500, -1.00.101.07.00.11.0)
    
show_hudmessage0"[%s] %s %s %s %i points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
client_cmd(0"spk buttons/bell1");
    
    if( 
g_bGiveRemove )
        
g_iPoints[g_iName[id]] -= str_to_num(iAmount)
    else
        
g_iPoints[g_iName[id]] += str_to_num(iAmount)
    
    
CheckLevel(g_iName[id])
    
    return 
PLUGIN_HANDLED
}

CheckLevel(id)
{
if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
{
    
g_iLevel[id]++;
    
    if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
g_iName32 ]
    
get_user_nameidg_iNamecharsmax(g_iName) );
    
    
ColorChat 0GREY"^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]"TAGg_iNameg_iLevel[id], g_szLevelNames[g_iLevel[id]])
    
    
client_cmd(0"spk events/task_complete.wav");
    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {    
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
}
else if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
{
    
g_iLevel[id]--;
    
    if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
    
ColorChat idGREY"^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]"TAGg_iLevel[id], g_szLevelNames[g_iLevel[id]])
}

return 
PLUGIN_HANDLED
}

public 
Event_DeathMsg()
{
new 
g_iKiller read_data(1);
new 
g_iVictim read_data(2);

if( 
<= g_iKiller <= get_maxplayers() && cs_get_user_teamg_iVictim ) != cs_get_user_teamg_iKiller )
&& 
is_user_connectedg_iKiller ))
{
new 
g_iNames[2][32]
get_user_name(g_iKillerg_iNames[0], 31)
get_user_name(g_iVictimg_iNames[1], 31)

if( 
read_data) && g_iHeadshot != )
{
    
g_iPointsg_iKiller ] += g_iHeadshot
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]"TAGg_iHeadshotg_iNames[1])
}
else if( 
g_iKill != )
{
    
g_iPointsg_iKiller ] += g_iKill
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s"TAGg_iKillg_iNames[1])
}
else if( 
g_iDying != )
{
    
g_iPointsg_iVictim ] -= g_iDying
    ColorChat 
g_iVictimGREY"^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s"TAGg_iDyingg_iNames[0])
}

}    
else if( 
g_iSuicide != && g_iVictim == g_iKiller)
{
g_iPointsg_iKiller ] -= g_iSuicide
ColorChat 
g_iKillerGREY"^4[%s]^1 You lost^3 %i^1 points for commiting suicide"TAGg_iSuicide)
}
CheckLevel(g_iKiller)
CheckLevel(g_iVictim)
}

public 
Ham_KnifeDeploy(iWeapon)
{
new 
id get_pdata_cbase(iWeapon414)

if(
is_user_alive(id))
{
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
}
}

public 
Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
if( 
g_iWin == )
return 
PLUGIN_HANDLED    

new Flags[32], iPlayers[32], iNumid

new Message16 ];
get_msg_arg_string2MessagecharsmaxMessage ) );

switch(
Message[1]) 

    case 
'T'
    { 
        
copy(Flagscharsmax(Flags), "TERRORIST"
    } 
    case 
'C'
    { 
        
copy(Flagscharsmax(Flags), "CT"
    }
}

get_playersiPlayersiNum"ae"Flags);  

for( new 
iiNumi++ )
{
    
id iPlayers[i];
    
    
g_iPointsid ] += g_iWin
    ColorChat 
idGREY"^4[%s]^1 You got^3 %i^1 points for winning the round"TAGg_iWin)
    
CheckLevel(id)
}
return 
PLUGIN_HANDLED
}

public 
Task_Advertise()
{
ColorChat(0GREY"^4[%s]^1 This server is running^3 LevelMod^1 by^3 SnusMumrikeN"TAG);
}

stock FormatTop(iNum)
{    
if(
g_iVault == INVALID_HANDLE)
    
set_fail_state("nVault returned invalid handle")
    
    
enum _:VaultData
{
    
VD_Key[33],
    
VD_Value,
    
VD_szName[33]
};

new 
Vault2 nvault_util_open("levelmod")
new 
iSize nvault_util_count(Vault2)

new Array:
entries ArrayCreate(VaultData);
new 
sizeEntries

new data[VaultData], value[256], data2[VaultData]

for(new 
0postimestampiSizei++)
{
    
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
    if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
        continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }
        
        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
                
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")
    
    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}

public 
client_putinserver(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Load(id)
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i %i"g_iPoints[id], g_iLevel[id]);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(idszData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(idszData[256])
{
static 
szNum[11];
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iPoints[id] = str_to_num(szNum);

strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iLevel[id] = str_to_num(szNum);
}
public 
hook_say(id)
{
read_args(message191)
remove_quotes(message)

if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
    return 
PLUGIN_CONTINUE
    
    get_user_name
(idg_namecharsmax(g_name))
    
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s "aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s"aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
    
sendMessage(colorisAlive)// Sends the colored message
    
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
        
return PLUGIN_CONTINUE
    
    
new playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch(
playerTeam// Team names which appear on team-only messages
    
{
        case 
1copy(playerTeamName11"Terrorists")
            case 
2copy(playerTeamName18"Counter-Terrorists")
            default: 
copy(playerTeamName9"Spectator")
    }
    
    
get_user_name(idg_namecharsmax(g_name))
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x04%s ^x03%s "aliveplayerTeamName,  g_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9);
        
format(strName191"%s(%s) ^x04%s ^x03%s"aliveplayerTeamNameg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
sendTeamMessage(colorisAliveplayerTeam)
    return 
PLUGIN_CONTINUE
}
public 
sendMessage(color[], alive)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
        
}
    }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
            {
                
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)// Changes user's team according to color choosen
                
writeMessage(playermessage)// Writes the message on player's chat
                
changeTeamInfo(playerteamName)// Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)// Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)// Write byte needed
    
write_string(team)// Changes player's team
    
message_end()// Also Needed
}


public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)// Write byte needed
    
write_string(message)// Effectively write the message, finally, afterall
    
message_end()// Needed as always

Doesn't work, still prints double message :/
__________________
Airkish is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 08-24-2016 , 14:06   Re: [REQ] Fix - Prints double msg
Reply With Quote #6

I'll test the plugin and see what i can do.
__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-24-2016 , 14:12   Re: [REQ] Fix - Prints double msg
Reply With Quote #7

Quote:
Originally Posted by Napoleon_be View Post
I'll test the plugin and see what i can do.
Thanks bro!

Love such people like you.
__________________
Airkish is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 08-24-2016 , 14:22   Re: [REQ] Fix - Prints double msg
Reply With Quote #8

PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <nvault_util>

/* ************ EDIT STARTS HERE ************ */

// Tag for messages in the plugin
#define TAG "Gamenet"
#define ADMIN ADMIN_RESERVATION

//What admin rank you should have to give points
#define ADMIN_LEVEL ADMIN_RCON

//Max levels 
#define MaxLevels 100

//Top number
#define TopNumber 15

//Max players
#define MAX_PLAYERS 32

/* ************ EDIT ENDS HERE ************** */

new g_pCvar_Killg_pCvar_Headshotg_pCvar_Win
new g_pCvar_Suicideg_pCvar_Dyingg_pCvar_Logadmin

new g_iHeadshotg_iKillg_iDying
new g_iWing_iSuicideg_iLogadmin

new g_iLevel[MAX_PLAYERS +1], g_iPoints[MAX_PLAYERS +1], g_iName[MAX_PLAYERS +1]
new 
g_szLevels[MaxLevels], g_szLevelNames[MaxLevels][MAX_PLAYERS +1]
new 
g_szKnife[MaxLevels][2][64], bool:g_bGiveRemove

new g_players
new message[192]
new 
strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new 
g_AdminListenFlag
new g_AdminListen
new teamInfo
new sayText
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]

//function by fysiks
public plugin_precache( )
{
    new 
cfgdir[64]
    
get_localinfo("amxx_configsdir"cfgdircharsmax(cfgdir))
    
format(cfgdircharsmax(cfgdir), "%s/levelmod.ini"cfgdir)
    
    new 
file fopen(cfgdir"rt");
    
    if( 
file )
    {
        new 
0;
        new 
szLevel[5], sfLineData[128];
        
        while( !
feof(file) && MaxLevels )
        {
            
fgets(filesfLineDatacharsmax(sfLineData));
            
            if( !
sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
            
            
parse(sfLineDataszLevelcharsmax(szLevel), g_szLevelNames[i], charsmax(g_szLevelNames[]), g_szKnife[i][0], charsmax(g_szKnife[][]), g_szKnife[i][1], charsmax(g_szKnife[][]));
            
g_szLevels[i] = str_to_num(szLevel);
            
            
precache_model(g_szKnife[i][0]);
            
precache_model(g_szKnife[i][1]);
            
i++;
        }
        
        
fclose(file);
    }
    else
    {
        
set_fail_state("amxmodx/configs/levelmod.ini doesnt exist. Stops plugin.");
    }
}

public 
plugin_cfg( )
{
    
g_iHeadshot get_pcvar_num(g_pCvar_Headshot)
    
g_iKill get_pcvar_num(g_pCvar_Kill)
    
g_iSuicide get_pcvar_num(g_pCvar_Suicide)
    
g_iWin get_pcvar_num(g_pCvar_Win)
    
g_iDying get_pcvar_num(g_pCvar_Dying)
    
g_iLogadmin get_pcvar_num(g_pCvar_Logadmin)
}

public 
plugin_init()
{
    
register_plugin("Level Mod""6.0""SnusMumrikeN")
    
g_players get_maxplayers()
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
    
register_clcmd"PointsAmount""PointsAction" )
    
g_pCvar_Kill register_cvar("cvar_kill""2"// Default +2
    
g_pCvar_Headshot register_cvar("cvar_headshot""4"// Default +4
    
g_pCvar_Win register_cvar("cvar_win""3"// Default +3
    
g_pCvar_Dying register_cvar("cvar_dying""2"// Default -2
    
g_pCvar_Suicide register_cvar("cvar_suicide""3"// Default -3
    
g_pCvar_Logadmin register_cvar("cvar_logadmin""1"// Default 0
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
g_AdminListen register_cvar("amx_listen""1")
    
register_message(get_user_msgid("TextMsg") ,"Message_Win")
    
sayText get_user_msgid("SayText")
    
register_message(sayText"avoid_duplicated")    
    
    
RegisterHamHam_Item_Deploy"weapon_knife""Ham_KnifeDeploy");
    
teamInfo get_user_msgid("TeamInfo")
    
g_iVault nvault_open("levelmod")
    
FormatTop(TopNumber)
    
    
set_task300.0"Task_Advertise", .flags="b" );
}

public 
plugin_end() 
    
nvault_close(g_iVault)

public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    if(
equali(arg1"/level" ) || equali(arg1"/lvl" ))
    {
        new 
iPlayer cmd_target(idarg20)
        if(!
arg2[0] || !iPlayer)
        {
            if( 
g_szLevels[g_iLevel[id]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[id]+1g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
        }
        else
        {
            new 
iName[32]
            
get_user_name(iPlayeriName31)
            
            if( 
g_szLevels[g_iLevel[iPlayer]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[iPlayer]+1g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
        }
    }
    else if(
equali(arg1"/top")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
    else if(
equali(arg1"/pointsadmin")) 
    {
        
Playerlistid 
    }
}

public 
avoid_duplicated(id) {
    return 
PLUGIN_HANDLED
}  

Playerlistid 
{
if(
get_user_flagsid ) & ADMIN_LEVEL )
{
    new 
PlayermenuTemp[64]
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]\y Playerlist"TAG)
    
Playermenu menu_create(Temp"PlayerlistHandler");
    
    new 
players[32], pnumtempid;
    new 
szName[32], szTempid[10];
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]^n"g_bGiveRemove "REMOVE" "GIVE");  
    
menu_additem(PlayermenuTemp"0")
    
    
get_players(playerspnum"ch");
    for( new 
ii<pnumi++ )
    {
        
tempid players[i];
        
        
get_user_name(tempidszNamecharsmax(szName));
        
num_to_str(tempidszTempidcharsmax(szTempid));
        
menu_additem(PlayermenuszNameszTempid0);
    }
    
    
menu_display(idPlayermenu);
}
return 
PLUGIN_HANDLED
}

public 
PlayerlistHandler(idmenuitem) {
if( 
item == MENU_EXIT )
{
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

new 
data[6], szName[32];
new 
accesscallback;
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);

new 
key str_to_num(data);
if( 
key == )
{
    if((
g_bGiveRemove = !g_bGiveRemove)) 
    {
        
g_bGiveRemove true
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}
    else 
    {
        
g_bGiveRemove false
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}    
}

g_iName[id] = key

client_cmd
(id"messagemode PointsAmount");
client_cmd(id"spk fvox/blip");

menu_destroy(menu);
return 
PLUGIN_HANDLED;
}

public 
PointsAction(id)
{
if(!
is_user_connected(id))
    return 
PLUGIN_HANDLED
    
    
new iAmount[50]
    
read_argv(1,iAmount,49)
    
    new 
szName[2][32]
    
get_user_name(idszName[0], 31)
    
get_user_name(g_iName[id], szName[1], 31)
    
    if( 
str_to_num(iAmount) >= 9999999 )
    {
        
ColorChat(idGREY"^4[%s]^1 You cant^3 %s^1 that much points"TAGg_bGiveRemove "remove" "give");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_connected(g_iName[id]))
    {
        
ColorChat(idGREY"^4[%s]^1 User^3 %s^1 isnt connected"TAGszName[1]);
        return 
PLUGIN_HANDLED
    
}
    
    if( 
g_iLogadmin == )
    {
        new 
message[200], Time[64];
        
get_time("%c"Timecharsmax(Time)); 
        
format messagecharsmax(message), "[%s] %s %s %s %i points"TimeszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
        
write_file "addons/amxmodx/logs/levelmod.txt"message )
    }
    
    
ColorChat(0GREY"^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
set_hudmessage(25500, -1.00.101.07.00.11.0)
    
show_hudmessage0"[%s] %s %s %s %i points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
client_cmd(0"spk buttons/bell1");
    
    if( 
g_bGiveRemove )
        
g_iPoints[g_iName[id]] -= str_to_num(iAmount)
    else
        
g_iPoints[g_iName[id]] += str_to_num(iAmount)
    
    
CheckLevel(g_iName[id])
    
    return 
PLUGIN_HANDLED
}

CheckLevel(id)
{
if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
{
    
g_iLevel[id]++;
    
    if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
g_iName32 ]
    
get_user_nameidg_iNamecharsmax(g_iName) );
    
    
ColorChat 0GREY"^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]"TAGg_iNameg_iLevel[id], g_szLevelNames[g_iLevel[id]])
    
    
client_cmd(0"spk events/task_complete.wav");
    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {    
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
}
else if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
{
    
g_iLevel[id]--;
    
    if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
    
ColorChat idGREY"^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]"TAGg_iLevel[id], g_szLevelNames[g_iLevel[id]])
}

return 
PLUGIN_HANDLED
}

public 
Event_DeathMsg()
{
new 
g_iKiller read_data(1);
new 
g_iVictim read_data(2);

if( 
<= g_iKiller <= get_maxplayers() && cs_get_user_teamg_iVictim ) != cs_get_user_teamg_iKiller )
&& 
is_user_connectedg_iKiller ))
{
new 
g_iNames[2][32]
get_user_name(g_iKillerg_iNames[0], 31)
get_user_name(g_iVictimg_iNames[1], 31)

if( 
read_data) && g_iHeadshot != )
{
    
g_iPointsg_iKiller ] += g_iHeadshot
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]"TAGg_iHeadshotg_iNames[1])
}
else if( 
g_iKill != )
{
    
g_iPointsg_iKiller ] += g_iKill
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s"TAGg_iKillg_iNames[1])
}
else if( 
g_iDying != )
{
    
g_iPointsg_iVictim ] -= g_iDying
    ColorChat 
g_iVictimGREY"^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s"TAGg_iDyingg_iNames[0])
}

}    
else if( 
g_iSuicide != && g_iVictim == g_iKiller)
{
g_iPointsg_iKiller ] -= g_iSuicide
ColorChat 
g_iKillerGREY"^4[%s]^1 You lost^3 %i^1 points for commiting suicide"TAGg_iSuicide)
}
CheckLevel(g_iKiller)
CheckLevel(g_iVictim)
}

public 
Ham_KnifeDeploy(iWeapon)
{
new 
id get_pdata_cbase(iWeapon414)

if(
is_user_alive(id))
{
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
}
}

public 
Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
if( 
g_iWin == )
return 
PLUGIN_HANDLED    

new Flags[32], iPlayers[32], iNumid

new Message16 ];
get_msg_arg_string2MessagecharsmaxMessage ) );

switch(
Message[1]) 

    case 
'T'
    { 
        
copy(Flagscharsmax(Flags), "TERRORIST"
    } 
    case 
'C'
    { 
        
copy(Flagscharsmax(Flags), "CT"
    }
}

get_playersiPlayersiNum"ae"Flags);  

for( new 
iiNumi++ )
{
    
id iPlayers[i];
    
    
g_iPointsid ] += g_iWin
    ColorChat 
idGREY"^4[%s]^1 You got^3 %i^1 points for winning the round"TAGg_iWin)
    
CheckLevel(id)
}
return 
PLUGIN_HANDLED
}

public 
Task_Advertise()
{
ColorChat(0GREY"^4[%s]^1 This server is running^3 LevelMod^1 by^3 SnusMumrikeN"TAG);
}

stock FormatTop(iNum)
{    
if(
g_iVault == INVALID_HANDLE)
    
set_fail_state("nVault returned invalid handle")
    
    
enum _:VaultData
{
    
VD_Key[33],
    
VD_Value,
    
VD_szName[33]
};

new 
Vault2 nvault_util_open("levelmod")
new 
iSize nvault_util_count(Vault2)

new Array:
entries ArrayCreate(VaultData);
new 
sizeEntries

new data[VaultData], value[256], data2[VaultData]

for(new 
0postimestampiSizei++)
{
    
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
    if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
        continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }
        
        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
                
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")
    
    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}

public 
client_putinserver(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Load(id)
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i %i"g_iPoints[id], g_iLevel[id]);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(idszData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(idszData[256])
{
static 
szNum[11];
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iPoints[id] = str_to_num(szNum);

strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iLevel[id] = str_to_num(szNum);
}
public 
hook_say(id)
{
read_args(message191)
remove_quotes(message)

if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
    return 
PLUGIN_CONTINUE
    
    get_user_name
(idg_namecharsmax(g_name))
    
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s "aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s"aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
    
sendMessage(colorisAlive)// Sends the colored message
    
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
        
return PLUGIN_CONTINUE
    
    
new playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch(
playerTeam// Team names which appear on team-only messages
    
{
        case 
1copy(playerTeamName11"Terrorists")
            case 
2copy(playerTeamName18"Counter-Terrorists")
            default: 
copy(playerTeamName9"Spectator")
    }
    
    
get_user_name(idg_namecharsmax(g_name))
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x04%s ^x03%s "aliveplayerTeamName,  g_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9);
        
format(strName191"%s(%s) ^x04%s ^x03%s"aliveplayerTeamNameg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
sendTeamMessage(colorisAliveplayerTeam)
    return 
PLUGIN_CONTINUE
}
public 
sendMessage(color[], alive)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
        
}
    }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
            {
                
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)// Changes user's team according to color choosen
                
writeMessage(playermessage)// Writes the message on player's chat
                
changeTeamInfo(playerteamName)// Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)// Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)// Write byte needed
    
write_string(team)// Changes player's team
    
message_end()// Also Needed
}


public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)// Write byte needed
    
write_string(message)// Effectively write the message, finally, afterall
    
message_end()// Needed as always


there you go
__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 08-24-2016 , 14:59   Re: [REQ] Fix - Prints double msg
Reply With Quote #9

Quote:
Originally Posted by Napoleon_be View Post
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <colorchat>
#include <nvault_util>

/* ************ EDIT STARTS HERE ************ */

// Tag for messages in the plugin
#define TAG "Gamenet"
#define ADMIN ADMIN_RESERVATION

//What admin rank you should have to give points
#define ADMIN_LEVEL ADMIN_RCON

//Max levels 
#define MaxLevels 100

//Top number
#define TopNumber 15

//Max players
#define MAX_PLAYERS 32

/* ************ EDIT ENDS HERE ************** */

new g_pCvar_Killg_pCvar_Headshotg_pCvar_Win
new g_pCvar_Suicideg_pCvar_Dyingg_pCvar_Logadmin

new g_iHeadshotg_iKillg_iDying
new g_iWing_iSuicideg_iLogadmin

new g_iLevel[MAX_PLAYERS +1], g_iPoints[MAX_PLAYERS +1], g_iName[MAX_PLAYERS +1]
new 
g_szLevels[MaxLevels], g_szLevelNames[MaxLevels][MAX_PLAYERS +1]
new 
g_szKnife[MaxLevels][2][64], bool:g_bGiveRemove

new g_players
new message[192]
new 
strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new 
g_AdminListenFlag
new g_AdminListen
new teamInfo
new sayText
new const SPECIAL_CHAR[2] = "-"
new g_iVault
new g_szTopMotd[1024]

//function by fysiks
public plugin_precache( )
{
    new 
cfgdir[64]
    
get_localinfo("amxx_configsdir"cfgdircharsmax(cfgdir))
    
format(cfgdircharsmax(cfgdir), "%s/levelmod.ini"cfgdir)
    
    new 
file fopen(cfgdir"rt");
    
    if( 
file )
    {
        new 
0;
        new 
szLevel[5], sfLineData[128];
        
        while( !
feof(file) && MaxLevels )
        {
            
fgets(filesfLineDatacharsmax(sfLineData));
            
            if( !
sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
            
            
parse(sfLineDataszLevelcharsmax(szLevel), g_szLevelNames[i], charsmax(g_szLevelNames[]), g_szKnife[i][0], charsmax(g_szKnife[][]), g_szKnife[i][1], charsmax(g_szKnife[][]));
            
g_szLevels[i] = str_to_num(szLevel);
            
            
precache_model(g_szKnife[i][0]);
            
precache_model(g_szKnife[i][1]);
            
i++;
        }
        
        
fclose(file);
    }
    else
    {
        
set_fail_state("amxmodx/configs/levelmod.ini doesnt exist. Stops plugin.");
    }
}

public 
plugin_cfg( )
{
    
g_iHeadshot get_pcvar_num(g_pCvar_Headshot)
    
g_iKill get_pcvar_num(g_pCvar_Kill)
    
g_iSuicide get_pcvar_num(g_pCvar_Suicide)
    
g_iWin get_pcvar_num(g_pCvar_Win)
    
g_iDying get_pcvar_num(g_pCvar_Dying)
    
g_iLogadmin get_pcvar_num(g_pCvar_Logadmin)
}

public 
plugin_init()
{
    
register_plugin("Level Mod""6.0""SnusMumrikeN")
    
g_players get_maxplayers()
    
register_clcmd("say""Cmd_Say")
    
register_clcmd("say_team""Cmd_Say")
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
    
register_clcmd"PointsAmount""PointsAction" )
    
g_pCvar_Kill register_cvar("cvar_kill""2"// Default +2
    
g_pCvar_Headshot register_cvar("cvar_headshot""4"// Default +4
    
g_pCvar_Win register_cvar("cvar_win""3"// Default +3
    
g_pCvar_Dying register_cvar("cvar_dying""2"// Default -2
    
g_pCvar_Suicide register_cvar("cvar_suicide""3"// Default -3
    
g_pCvar_Logadmin register_cvar("cvar_logadmin""1"// Default 0
    
g_AdminListenFlag register_cvar("amx_listen_flag""c")
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
g_AdminListen register_cvar("amx_listen""1")
    
register_message(get_user_msgid("TextMsg") ,"Message_Win")
    
sayText get_user_msgid("SayText")
    
register_message(sayText"avoid_duplicated")    
    
    
RegisterHamHam_Item_Deploy"weapon_knife""Ham_KnifeDeploy");
    
teamInfo get_user_msgid("TeamInfo")
    
g_iVault nvault_open("levelmod")
    
FormatTop(TopNumber)
    
    
set_task300.0"Task_Advertise", .flags="b" );
}

public 
plugin_end() 
    
nvault_close(g_iVault)

public 
Cmd_Say(id)
{
    new 
args[101], arg1[10], arg2[64]
    
read_args(argscharsmax(args))
    
remove_quotes(args)
    
parse(argsarg1charsmax(args), arg2charsmax(arg2))
    
    if(
equali(arg1"/level" ) || equali(arg1"/lvl" ))
    {
        new 
iPlayer cmd_target(idarg20)
        if(!
arg2[0] || !iPlayer)
        {
            if( 
g_szLevels[g_iLevel[id]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[id]+1g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGg_iPointsid ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
            }
        }
        else
        {
            new 
iName[32]
            
get_user_name(iPlayeriName31)
            
            if( 
g_szLevels[g_iLevel[iPlayer]+1] != 0)
            {
                
ColorChat(idGREY"^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i"TAGg_iLevel[iPlayer]+1g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPointsid ]);
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
            else
            {
                
ColorChat(idGREY"^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)"TAGiNameg_iPointsiPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
            }
        }
    }
    else if(
equali(arg1"/top")) 
    {
        
show_motdidg_szTopMotd"Top Points" )
    }
    else if(
equali(arg1"/pointsadmin")) 
    {
        
Playerlistid 
    }
}

public 
avoid_duplicated(id) {
    return 
PLUGIN_HANDLED
}  

Playerlistid 
{
if(
get_user_flagsid ) & ADMIN_LEVEL )
{
    new 
PlayermenuTemp[64]
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]\y Playerlist"TAG)
    
Playermenu menu_create(Temp"PlayerlistHandler");
    
    new 
players[32], pnumtempid;
    new 
szName[32], szTempid[10];
    
    
formatex(Tempcharsmax(Temp), "\w[\r%s\w]^n"g_bGiveRemove "REMOVE" "GIVE");  
    
menu_additem(PlayermenuTemp"0")
    
    
get_players(playerspnum"ch");
    for( new 
ii<pnumi++ )
    {
        
tempid players[i];
        
        
get_user_name(tempidszNamecharsmax(szName));
        
num_to_str(tempidszTempidcharsmax(szTempid));
        
menu_additem(PlayermenuszNameszTempid0);
    }
    
    
menu_display(idPlayermenu);
}
return 
PLUGIN_HANDLED
}

public 
PlayerlistHandler(idmenuitem) {
if( 
item == MENU_EXIT )
{
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

new 
data[6], szName[32];
new 
accesscallback;
menu_item_getinfo(menuitemaccessdatacharsmax(data), szNamecharsmax(szName), callback);

new 
key str_to_num(data);
if( 
key == )
{
    if((
g_bGiveRemove = !g_bGiveRemove)) 
    {
        
g_bGiveRemove true
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}
    else 
    {
        
g_bGiveRemove false
        
        menu_destroy
(menu);
        
Playerlistid 
        return 
PLUGIN_HANDLED
    
}    
}

g_iName[id] = key

client_cmd
(id"messagemode PointsAmount");
client_cmd(id"spk fvox/blip");

menu_destroy(menu);
return 
PLUGIN_HANDLED;
}

public 
PointsAction(id)
{
if(!
is_user_connected(id))
    return 
PLUGIN_HANDLED
    
    
new iAmount[50]
    
read_argv(1,iAmount,49)
    
    new 
szName[2][32]
    
get_user_name(idszName[0], 31)
    
get_user_name(g_iName[id], szName[1], 31)
    
    if( 
str_to_num(iAmount) >= 9999999 )
    {
        
ColorChat(idGREY"^4[%s]^1 You cant^3 %s^1 that much points"TAGg_bGiveRemove "remove" "give");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_connected(g_iName[id]))
    {
        
ColorChat(idGREY"^4[%s]^1 User^3 %s^1 isnt connected"TAGszName[1]);
        return 
PLUGIN_HANDLED
    
}
    
    if( 
g_iLogadmin == )
    {
        new 
message[200], Time[64];
        
get_time("%c"Timecharsmax(Time)); 
        
format messagecharsmax(message), "[%s] %s %s %s %i points"TimeszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
        
write_file "addons/amxmodx/logs/levelmod.txt"message )
    }
    
    
ColorChat(0GREY"^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
set_hudmessage(25500, -1.00.101.07.00.11.0)
    
show_hudmessage0"[%s] %s %s %s %i points"TAGszName[0], g_bGiveRemove "took away" "gave"szName[1], str_to_num(iAmount));
    
    
client_cmd(0"spk buttons/bell1");
    
    if( 
g_bGiveRemove )
        
g_iPoints[g_iName[id]] -= str_to_num(iAmount)
    else
        
g_iPoints[g_iName[id]] += str_to_num(iAmount)
    
    
CheckLevel(g_iName[id])
    
    return 
PLUGIN_HANDLED
}

CheckLevel(id)
{
if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
{
    
g_iLevel[id]++;
    
    if( 
g_iPoints[id] >= g_szLevels[g_iLevel[id]+1] && g_szLevels[g_iLevel[id]+1] != 0)
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
g_iName32 ]
    
get_user_nameidg_iNamecharsmax(g_iName) );
    
    
ColorChat 0GREY"^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]"TAGg_iNameg_iLevel[id], g_szLevelNames[g_iLevel[id]])
    
    
client_cmd(0"spk events/task_complete.wav");
    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {    
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
}
else if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
{
    
g_iLevel[id]--;
    
    if( 
g_iLevel[id] != && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
    {
        
CheckLevel(id)
        return 
PLUGIN_HANDLED
    
}    
    if( 
is_user_aliveid ) && get_user_weaponid ) == CSW_KNIFE )
    {
        
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
        
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
    }
    
ColorChat idGREY"^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]"TAGg_iLevel[id], g_szLevelNames[g_iLevel[id]])
}

return 
PLUGIN_HANDLED
}

public 
Event_DeathMsg()
{
new 
g_iKiller read_data(1);
new 
g_iVictim read_data(2);

if( 
<= g_iKiller <= get_maxplayers() && cs_get_user_teamg_iVictim ) != cs_get_user_teamg_iKiller )
&& 
is_user_connectedg_iKiller ))
{
new 
g_iNames[2][32]
get_user_name(g_iKillerg_iNames[0], 31)
get_user_name(g_iVictimg_iNames[1], 31)

if( 
read_data) && g_iHeadshot != )
{
    
g_iPointsg_iKiller ] += g_iHeadshot
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]"TAGg_iHeadshotg_iNames[1])
}
else if( 
g_iKill != )
{
    
g_iPointsg_iKiller ] += g_iKill
    ColorChat 
g_iKillerGREY"^4[%s]^1 You got^3 %i^1 points for killing^3 %s"TAGg_iKillg_iNames[1])
}
else if( 
g_iDying != )
{
    
g_iPointsg_iVictim ] -= g_iDying
    ColorChat 
g_iVictimGREY"^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s"TAGg_iDyingg_iNames[0])
}

}    
else if( 
g_iSuicide != && g_iVictim == g_iKiller)
{
g_iPointsg_iKiller ] -= g_iSuicide
ColorChat 
g_iKillerGREY"^4[%s]^1 You lost^3 %i^1 points for commiting suicide"TAGg_iSuicide)
}
CheckLevel(g_iKiller)
CheckLevel(g_iVictim)
}

public 
Ham_KnifeDeploy(iWeapon)
{
new 
id get_pdata_cbase(iWeapon414)

if(
is_user_alive(id))
{
entity_set_stringidEV_SZ_viewmodelg_szKnife[g_iLevel[id]][0] );
entity_set_stringidEV_SZ_weaponmodelg_szKnife[g_iLevel[id]][1] );
}
}

public 
Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
if( 
g_iWin == )
return 
PLUGIN_HANDLED    

new Flags[32], iPlayers[32], iNumid

new Message16 ];
get_msg_arg_string2MessagecharsmaxMessage ) );

switch(
Message[1]) 

    case 
'T'
    { 
        
copy(Flagscharsmax(Flags), "TERRORIST"
    } 
    case 
'C'
    { 
        
copy(Flagscharsmax(Flags), "CT"
    }
}

get_playersiPlayersiNum"ae"Flags);  

for( new 
iiNumi++ )
{
    
id iPlayers[i];
    
    
g_iPointsid ] += g_iWin
    ColorChat 
idGREY"^4[%s]^1 You got^3 %i^1 points for winning the round"TAGg_iWin)
    
CheckLevel(id)
}
return 
PLUGIN_HANDLED
}

public 
Task_Advertise()
{
ColorChat(0GREY"^4[%s]^1 This server is running^3 LevelMod^1 by^3 SnusMumrikeN"TAG);
}

stock FormatTop(iNum)
{    
if(
g_iVault == INVALID_HANDLE)
    
set_fail_state("nVault returned invalid handle")
    
    
enum _:VaultData
{
    
VD_Key[33],
    
VD_Value,
    
VD_szName[33]
};

new 
Vault2 nvault_util_open("levelmod")
new 
iSize nvault_util_count(Vault2)

new Array:
entries ArrayCreate(VaultData);
new 
sizeEntries

new data[VaultData], value[256], data2[VaultData]

for(new 
0postimestampiSizei++)
{
    
pos nvault_util_read(Vault2posdata[VD_Key], charsmax(data[VD_Key]), valuecharsmax(value), timestamp);
    
    if(
contain(data[VD_Key], SPECIAL_CHAR) != -1)
        continue;
        
        else
        {
            
formatex(data[VD_szName], charsmax(data[VD_szName]), "%s%s"data[VD_Key], SPECIAL_CHAR)
            
nvault_get(g_iVaultdata[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
        }
        
        
data[VD_Value] = str_to_num(value);
        
        if(
sizeEntries == 0)
        {
            
ArrayPushArray(entriesdata);
            
sizeEntries++;
            continue;
        }
        
        else
        {
            for(
timestamp 0timestamp <= sizeEntriestimestamp++)
            {
                if(
timestamp == sizeEntries)
                {
                    if(
sizeEntries iNum)
                    {
                        
ArrayPushArray(entriesdata);
                        
sizeEntries++;
                    }
                    
                    break;
                }
                
                
ArrayGetArray(entriestimestampdata2);
                
                if(
data[VD_Value] >= data2[VD_Value])
                {
                    
ArrayInsertArrayBefore(entriestimestampdata);
                    
                    if(
sizeEntries iNum)
                    {
                        
sizeEntries++;
                    } 
                    else 
                    {
                        
ArrayDeleteItem(entriessizeEntries);
                    }
                    
                    break;
                }
            }
        }
    }
    
    new 
iLen
    
    
new len charsmax(g_szTopMotd)
    
    
iLen formatex(g_szTopMotdlen"<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:28px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
    
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s""#""Name""Points")
    
    new 
i
    
for(0sizeEntriesi++)
    {
        
ArrayGetArray(entriesidata);
        
        
data[VD_Key][32] = 0;
        
data[VD_szName][32] = 0
        
        replace_all
(data[VD_szName], charsmax(data[VD_szName]), "<""&lt;")
        
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">""&gt;")
        
        
iLen += formatex(g_szTopMotd[iLen], len iLen"<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d"" bgcolor=#2b5b95", (i+1), data[VD_szName], data[VD_Value])
    }
    
    
ArrayDestroy(entries);
    
    
iLen += formatex(g_szTopMotd[iLen], len iLen"</table></body>")
}

public 
client_putinserver(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Load(id)
}

public 
client_disconnect(id)
{
    if( 
is_user_hltv(id)  || is_user_bot(id) )
        return;
    
    
Save(id)
}

stock Save(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szAuthId[35]; 
    
get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szName[32]; 
    
get_user_name(idszName31)
    
    new 
szData[256];
    
formatex(szDatacharsmax(szData), "%i %i"g_iPoints[id], g_iLevel[id]);
    
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszData)
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_remove(g_iVaultszAuthId)
    
nvault_set(g_iVaultszAuthIdszName)
}

stock Load(id)
{
    if(
g_iVault == INVALID_HANDLE)
        
set_fail_state("nVault returned invalid handle")
    
    new 
szSavedName[32]
    new 
szName[32]; get_user_name(idszNamecharsmax(szName))
    new 
szAuthId[33]; get_user_authid(idszAuthIdcharsmax(szAuthId))
    
    new 
szData[256], iTimeStamp
    
if( !nvault_lookup(g_iVaultszAuthIdszDatacharsmax(szData), iTimeStamp) )
    {
        
nvault_set(g_iVaultszAuthId"0")
        
        
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
        
nvault_set(g_iVaultszAuthIdszName)
        
        return 
0
    
}
    
    
ParseLoadData(idszData);
    
    
format(szAuthIdcharsmax(szAuthId), "%s%s"szAuthIdSPECIAL_CHAR)
    
nvault_get(g_iVaultszAuthIdszSavedName)
    
    if(!
equal(szNameszSavedName))
    {
        
nvault_remove(g_iVaultszAuthId)
        
nvault_set(g_iVaultszAuthIdszName)
    }
    return 
0
}

ParseLoadData(idszData[256])
{
static 
szNum[11];
strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iPoints[id] = str_to_num(szNum);

strbreak(szDataszNumcharsmax(szNum), szDatacharsmax(szData));
g_iLevel[id] = str_to_num(szNum);
}
public 
hook_say(id)
{
read_args(message191)
remove_quotes(message)

if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message""))
    return 
PLUGIN_CONTINUE
    
    get_user_name
(idg_namecharsmax(g_name))
    
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s "aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9)
        
format(strName191"%s^x04%s ^x03%s"aliveg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
    
sendMessage(colorisAlive)// Sends the colored message
    
return PLUGIN_CONTINUE;
}

public 
hook_teamsay(id
{
    
read_args(message191)
    
remove_quotes(message)
    
    if(
message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message"")) // Ignores Admin Hud Messages, Admin Slash commands
        
return PLUGIN_CONTINUE
    
    
new playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch(
playerTeam// Team names which appear on team-only messages
    
{
        case 
1copy(playerTeamName11"Terrorists")
            case 
2copy(playerTeamName18"Counter-Terrorists")
            default: 
copy(playerTeamName9"Spectator")
    }
    
    
get_user_name(idg_namecharsmax(g_name))
    new 
isAlive    
    
new admin 0iFlags get_user_flags(id)
    if(
iFlags ADMIN_RESERVATIONadmin 1  //owner
    
    
if(is_user_alive(id))
    {
        
isAlive 1
        alive 
"^x01"
    
}
    else
    {
        
isAlive 0
        alive 
"^x01*DEAD* "
    
}
    
    static  
color[10]
    if(
admin)
    {
        
get_user_team(idcolor9)
        
format(strName191"%s(%s) ^x04%s ^x03%s "aliveplayerTeamName,  g_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"^x04%s"message)
    }
    else
    {
        
get_user_name(idg_name32)
        
get_user_team(idcolor9);
        
format(strName191"%s(%s) ^x04%s ^x03%s"aliveplayerTeamNameg_szLevelNames[g_iLevel[id]], g_name)
        
format(strText191"%s"message)
    }
    
    
format(message191"%s ^x01: %s"strNamestrText)
    
sendTeamMessage(colorisAliveplayerTeam)
    return 
PLUGIN_CONTINUE
}
public 
sendMessage(color[], alive)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
            
changeTeamInfo(playercolor)// Changes user's team according to color choosen
            
writeMessage(playermessage)// Writes the message on player's chat
            
changeTeamInfo(playerteamName)// Changes user's team back to original
        
}
    }
}

public 
sendTeamMessage(color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for(new 
player 1player g_playersplayer++)
    {
        if(!
is_user_connected(player))
            continue
        
        
get_pcvar_string(g_AdminListenFlagtemp_cvarcharsmax(temp_cvar))
        if(
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
        {
            if(
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
            {
                
get_user_team(playerteamName9)// Stores user's team name to change back after sending the message
                
changeTeamInfo(playercolor)// Changes user's team according to color choosen
                
writeMessage(playermessage)// Writes the message on player's chat
                
changeTeamInfo(playerteamName)// Changes user's team back to original
            
}
        }
    }
}


public 
changeTeamInfo(playerteam[])
{
    
message_begin(MSG_ONEteamInfo_player)// Tells to to modify teamInfo(Which is responsable for which time player is)
    
write_byte(player)// Write byte needed
    
write_string(team)// Changes player's team
    
message_end()// Also Needed
}


public 
writeMessage(playermessage[])
{
    
message_begin(MSG_ONEsayText, {000}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
    
write_byte(player)// Write byte needed
    
write_string(message)// Effectively write the message, finally, afterall
    
message_end()// Needed as always

there you go
Works. Really grateful to you!
__________________
Airkish 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 19:28.


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