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_Kill, g_pCvar_Headshot, g_pCvar_Win
new g_pCvar_Suicide, g_pCvar_Dying, g_pCvar_Logadmin
new g_iHeadshot, g_iKill, g_iDying
new g_iWin, g_iSuicide, g_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", cfgdir, charsmax(cfgdir))
format(cfgdir, charsmax(cfgdir), "%s/levelmod.ini", cfgdir)
new file = fopen(cfgdir, "rt");
if( file )
{
new i = 0;
new szLevel[5], sfLineData[128];
while( !feof(file) && i < MaxLevels )
{
fgets(file, sfLineData, charsmax(sfLineData));
if( !sfLineData[0] || sfLineData[0] == ';' || sfLineData[0] == '/' && sfLineData[1] == '/' ) continue;
parse(sfLineData, szLevel, charsmax(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")
RegisterHam( Ham_Item_Deploy, "weapon_knife", "Ham_KnifeDeploy", 1 );
teamInfo = get_user_msgid("TeamInfo")
sayText = get_user_msgid("SayText")
g_iVault = nvault_open("levelmod")
FormatTop(TopNumber)
set_task( 300.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(args, charsmax(args))
remove_quotes(args)
parse(args, arg1, charsmax(args), arg2, charsmax(arg2))
if(equali(arg1, "/level" ) || equali(arg1, "/lvl" ))
{
new iPlayer = cmd_target(id, arg2, 0)
if(!arg2[0] || !iPlayer)
{
if( g_szLevels[g_iLevel[id]+1] != 0)
{
ColorChat(id, GREY, "^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i", TAG, g_iLevel[id]+1, g_szLevelNames[g_iLevel[id]+1], g_szLevels[g_iLevel[id]+1] - g_iPoints[ id ]);
ColorChat(id, GREY, "^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s", TAG, g_iPoints[ id ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
}
else
{
ColorChat(id, GREY, "^4[%s]^1 You got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)", TAG, g_iPoints[ id ], g_iLevel[id], g_szLevelNames[g_iLevel[id]]);
}
}
else
{
new iName[32]
get_user_name(iPlayer, iName, 31)
if( g_szLevels[g_iLevel[iPlayer]+1] != 0)
{
ColorChat(id, GREY, "^4[%s]^1 Next level:^3 %i ^3%s ^1| Points to next level:^3 %i", TAG, g_iLevel[iPlayer]+1, g_szLevelNames[g_iLevel[iPlayer]+1], g_szLevels[g_iLevel[iPlayer]+1] - g_iPoints[ id ]);
ColorChat(id, GREY, "^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i 3%s^1", TAG, iName, g_iPoints[ iPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
}
else
{
ColorChat(id, GREY, "^4[%s]^3 %s^1 got^3 %i^1 points | Level:^3 %i ^3%s (^4MAX LEVEL^1)", TAG, iName, g_iPoints[ iPlayer ], g_iLevel[iPlayer], g_szLevelNames[g_iLevel[iPlayer]]);
}
}
}
else if(equali(arg1, "/top"))
{
show_motd( id, g_szTopMotd, "Top Points" )
}
else if(equali(arg1, "/pointsadmin"))
{
Playerlist( id )
}
}
Playerlist( id )
{
if(get_user_flags( id ) & ADMIN_LEVEL )
{
new Playermenu, Temp[64]
formatex(Temp, charsmax(Temp), "\w[\r%s\w]\y Playerlist", TAG)
Playermenu = menu_create(Temp, "PlayerlistHandler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
formatex(Temp, charsmax(Temp), "\w[\r%s\w]^n", g_bGiveRemove ? "REMOVE" : "GIVE");
menu_additem(Playermenu, Temp, "0")
get_players(players, pnum, "ch");
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(Playermenu, szName, szTempid, 0);
}
menu_display(id, Playermenu);
}
return PLUGIN_HANDLED
}
public PlayerlistHandler(id, menu, item) {
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[32];
new access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
new key = str_to_num(data);
if( key == 0 )
{
if((g_bGiveRemove = !g_bGiveRemove))
{
g_bGiveRemove = true
menu_destroy(menu);
Playerlist( id )
return PLUGIN_HANDLED
}
else
{
g_bGiveRemove = false
menu_destroy(menu);
Playerlist( id )
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(id, szName[0], 31)
get_user_name(g_iName[id], szName[1], 31)
if( str_to_num(iAmount) >= 9999999 )
{
ColorChat(id, GREY, "^4[%s]^1 You cant^3 %s^1 that much points", TAG, g_bGiveRemove ? "remove" : "give");
return PLUGIN_HANDLED;
}
if(!is_user_connected(g_iName[id]))
{
ColorChat(id, GREY, "^4[%s]^1 User^3 %s^1 isnt connected", TAG, szName[1]);
return PLUGIN_HANDLED
}
if( g_iLogadmin == 1 )
{
new message[200], Time[64];
get_time("%c", Time, charsmax(Time));
format ( message, charsmax(message), "[%s] %s %s %s %i points", Time, szName[0], g_bGiveRemove ? "took away" : "gave", szName[1], str_to_num(iAmount));
write_file ( "addons/amxmodx/logs/levelmod.txt", message )
}
ColorChat(0, GREY, "^4[%s]^3 %s^1 %s^3 %s^4 %i^1 points", TAG, szName[0], g_bGiveRemove ? "took away" : "gave", szName[1], str_to_num(iAmount));
set_hudmessage(255, 0, 0, -1.0, 0.1, 0, 1.0, 7.0, 0.1, 1.0)
show_hudmessage( 0, "[%s] %s %s %s %i points", TAG, szName[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_iName[ 32 ]
get_user_name( id, g_iName, charsmax(g_iName) );
ColorChat ( 0, GREY, "^4[%s]^1 Congratulations to^3 %s^1 who has reached level^3 %i^1 [^3%s^1]", TAG, g_iName, g_iLevel[id], g_szLevelNames[g_iLevel[id]])
client_cmd(0, "spk events/task_complete.wav");
if( is_user_alive( id ) && get_user_weapon( id ) == CSW_KNIFE )
{
entity_set_string( id, EV_SZ_viewmodel, g_szKnife[g_iLevel[id]][0] );
entity_set_string( id, EV_SZ_weaponmodel, g_szKnife[g_iLevel[id]][1] );
}
}
else if( g_iLevel[id] != 0 && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1])
{
g_iLevel[id]--;
if( g_iLevel[id] != 0 && g_iPoints[id] <= g_szLevels[g_iLevel[id]-1] )
{
CheckLevel(id)
return PLUGIN_HANDLED
}
if( is_user_alive( id ) && get_user_weapon( id ) == CSW_KNIFE )
{
entity_set_string( id, EV_SZ_viewmodel, g_szKnife[g_iLevel[id]][0] );
entity_set_string( id, EV_SZ_weaponmodel, g_szKnife[g_iLevel[id]][1] );
}
ColorChat ( id, GREY, "^4[%s]^1 You leveled down. You are now level^3 %i^1 [^3%s^1]", TAG, g_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( 1 <= g_iKiller <= get_maxplayers() && cs_get_user_team( g_iVictim ) != cs_get_user_team( g_iKiller )
&& is_user_connected( g_iKiller ))
{
new g_iNames[2][32]
get_user_name(g_iKiller, g_iNames[0], 31)
get_user_name(g_iVictim, g_iNames[1], 31)
if( read_data( 3 ) && g_iHeadshot != 0 )
{
g_iPoints[ g_iKiller ] += g_iHeadshot
ColorChat ( g_iKiller, GREY, "^4[%s]^1 You got^3 %i^1 points for killing^3 %s^1 [^3Headshot^1]", TAG, g_iHeadshot, g_iNames[1])
}
else if( g_iKill != 0 )
{
g_iPoints[ g_iKiller ] += g_iKill
ColorChat ( g_iKiller, GREY, "^4[%s]^1 You got^3 %i^1 points for killing^3 %s", TAG, g_iKill, g_iNames[1])
}
else if( g_iDying != 0 )
{
g_iPoints[ g_iVictim ] -= g_iDying
ColorChat ( g_iVictim, GREY, "^4[%s]^1 You lost^3 %i^1 points for you died by^3 %s", TAG, g_iDying, g_iNames[0])
}
}
else if( g_iSuicide != 0 && g_iVictim == g_iKiller)
{
g_iPoints[ g_iKiller ] -= g_iSuicide
ColorChat ( g_iKiller, GREY, "^4[%s]^1 You lost^3 %i^1 points for commiting suicide", TAG, g_iSuicide)
}
CheckLevel(g_iKiller)
CheckLevel(g_iVictim)
}
public Ham_KnifeDeploy(iWeapon)
{
new id = get_pdata_cbase(iWeapon, 41, 4)
if(is_user_alive(id))
{
entity_set_string( id, EV_SZ_viewmodel, g_szKnife[g_iLevel[id]][0] );
entity_set_string( id, EV_SZ_weaponmodel, g_szKnife[g_iLevel[id]][1] );
}
}
public Message_Win(const MsgId, const MsgDest, const MsgEntity)
{
if( g_iWin == 0 )
return PLUGIN_HANDLED
new Flags[32], iPlayers[32], iNum, id
new Message[ 16 ];
get_msg_arg_string( 2, Message, charsmax( Message ) );
switch(Message[1])
{
case 'T':
{
copy(Flags, charsmax(Flags), "TERRORIST")
}
case 'C':
{
copy(Flags, charsmax(Flags), "CT")
}
}
get_players( iPlayers, iNum, "ae", Flags);
for( new i; i < iNum; i++ )
{
id = iPlayers[i];
g_iPoints[ id ] += g_iWin
ColorChat ( id, GREY, "^4[%s]^1 You got^3 %i^1 points for winning the round", TAG, g_iWin)
CheckLevel(id)
}
return PLUGIN_HANDLED
}
public Task_Advertise()
{
ColorChat(0, GREY, "^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 i = 0, pos, timestamp; i < iSize; i++)
{
pos = nvault_util_read(Vault2, pos, data[VD_Key], charsmax(data[VD_Key]), value, charsmax(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_iVault, data[VD_szName], data[VD_szName], charsmax(data[VD_szName]))
}
data[VD_Value] = str_to_num(value);
if(sizeEntries == 0)
{
ArrayPushArray(entries, data);
sizeEntries++;
continue;
}
else
{
for(timestamp = 0; timestamp <= sizeEntries; timestamp++)
{
if(timestamp == sizeEntries)
{
if(sizeEntries < iNum)
{
ArrayPushArray(entries, data);
sizeEntries++;
}
break;
}
ArrayGetArray(entries, timestamp, data2);
if(data[VD_Value] >= data2[VD_Value])
{
ArrayInsertArrayBefore(entries, timestamp, data);
if(sizeEntries < iNum)
{
sizeEntries++;
}
else
{
ArrayDeleteItem(entries, sizeEntries);
}
break;
}
}
}
}
new iLen
new len = charsmax(g_szTopMotd)
iLen = formatex(g_szTopMotd, len, "<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(i = 0; i < sizeEntries; i++)
{
ArrayGetArray(entries, i, data);
data[VD_Key][32] = 0;
data[VD_szName][32] = 0
replace_all(data[VD_szName], charsmax(data[VD_szName]), "<", "<")
replace_all(data[VD_szName], charsmax(data[VD_szName]), ">", ">")
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(id, szAuthId, charsmax(szAuthId))
new szName[32];
get_user_name(id, szName, 31)
new szData[256];
formatex(szData, charsmax(szData), "%i %i", g_iPoints[id], g_iLevel[id]);
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szData)
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szName)
}
stock Load(id)
{
if(g_iVault == INVALID_HANDLE)
set_fail_state("nVault returned invalid handle")
new szSavedName[32]
new szName[32]; get_user_name(id, szName, charsmax(szName))
new szAuthId[33]; get_user_authid(id, szAuthId, charsmax(szAuthId))
new szData[256], iTimeStamp
if( !nvault_lookup(g_iVault, szAuthId, szData, charsmax(szData), iTimeStamp) )
{
nvault_set(g_iVault, szAuthId, "0")
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_set(g_iVault, szAuthId, szName)
return 0
}
ParseLoadData(id, szData);
format(szAuthId, charsmax(szAuthId), "%s%s", szAuthId, SPECIAL_CHAR)
nvault_get(g_iVault, szAuthId, szSavedName)
if(!equal(szName, szSavedName))
{
nvault_remove(g_iVault, szAuthId)
nvault_set(g_iVault, szAuthId, szName)
}
return 0
}
ParseLoadData(id, szData[256])
{
static szNum[11];
strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
g_iPoints[id] = str_to_num(szNum);
strbreak(szData, szNum, charsmax(szNum), szData, charsmax(szData));
g_iLevel[id] = str_to_num(szNum);
}
public hook_say(id)
{
read_args(message, 191)
remove_quotes(message)
if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
return PLUGIN_CONTINUE
get_user_name(id, g_name, charsmax(g_name))
new isAlive
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_RESERVATION) admin = 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(id, color, 9)
format(strName, 191, "%s^x04%s ^x03%s ", alive, g_szLevelNames[g_iLevel[id]], g_name)
format(strText, 191, "^x04%s", message)
}
else
{
get_user_name(id, g_name, 32)
get_user_team(id, color, 9)
format(strName, 191, "%s^x04%s ^x03%s", alive, g_szLevelNames[g_iLevel[id]], g_name)
format(strText, 191, "%s", message)
}
format(message, 191, "%s ^x01: %s", strName, strText)
sendMessage(color, isAlive)// Sends the colored message
return PLUGIN_CONTINUE;
}
public hook_teamsay(id)
{
read_args(message, 191)
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 1: copy(playerTeamName, 11, "Terrorists")
case 2: copy(playerTeamName, 18, "Counter-Terrorists")
default: copy(playerTeamName, 9, "Spectator")
}
get_user_name(id, g_name, charsmax(g_name))
new isAlive
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_RESERVATION) admin = 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(id, color, 9)
format(strName, 191, "%s(%s) ^x04%s ^x03%s ", alive, playerTeamName, g_szLevelNames[g_iLevel[id]], g_name)
format(strText, 191, "^x04%s", message)
}
else
{
get_user_name(id, g_name, 32)
get_user_team(id, color, 9);
format(strName, 191, "%s(%s) ^x04%s ^x03%s", alive, playerTeamName, g_szLevelNames[g_iLevel[id]], g_name)
format(strText, 191, "%s", message)
}
format(message, 191, "%s ^x01: %s", strName, strText)
sendTeamMessage(color, isAlive, playerTeam)
return PLUGIN_CONTINUE
}
public sendMessage(color[], alive)
{
new teamName[10]
for(new player = 1; player < g_players; player++)
{
if(!is_user_connected(player))
continue
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(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(player, teamName, 9)// Stores user's team name to change back after sending the message
changeTeamInfo(player, color)// Changes user's team according to color choosen
writeMessage(player, message)// Writes the message on player's chat
changeTeamInfo(player, teamName)// Changes user's team back to original
}
}
}
public sendTeamMessage(color[], alive, playerTeam)
{
new teamName[10]
for(new player = 1; player < g_players; player++)
{
if(!is_user_connected(player))
continue
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(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(player, teamName, 9)// Stores user's team name to change back after sending the message
changeTeamInfo(player, color)// Changes user's team according to color choosen
writeMessage(player, message)// Writes the message on player's chat
changeTeamInfo(player, teamName)// Changes user's team back to original
}
}
}
}
public changeTeamInfo(player, team[])
{
message_begin(MSG_ONE, teamInfo, _, 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(player, message[])
{
message_begin(MSG_ONE, sayText, {0, 0, 0}, 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 }
*/