Code:
/****************************
* HnS: Cash Mod - V0.0.8
* by ReCon aka NiQu
*
* Based Of Version: 0.0.7
*
* Do not try to add items/abilities/skills without
* the knowledge of how to do it.
*
* Original ^2HerrCashMod Made by Herr | Lille^3
*
*
* Thanks to TandborsteN for laserbeam.
****************************/
native add_user_immune( iPlayer );
native remove_user_immune( iPlayer );
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#include <nvault>
#define PLUGIN "HnS: Cash Mod"
#define VERSION "0.0.7"
#define AUTHOR "ReCon"
#define PREFIX "CashMod"
#define XTRA_OFS_PLAYER 5
#define m_flNextAttack 83
#define m_afButtonPressed 246
#define m_iFOV 363
const MAX_CLIENTS = 33;
new g_first_time[33];
enum _:g_iWeapCount
{
WEAPON_FS,
WEAPON_DEAGLE,
WEAPON_AWP,
WEAPON_SHOTGUN,
SPACE,
HE_GRENADE,
SPACE,
BULLET_FS,
BULLET_DEAGLE,
BULLET_AWP,
BULLET_SHOTGUN,
WEAPON_M4A1,
BULLET_M4A1 }
new const g_iWeapons [g_iWeapCount] [] =
{ "Five Seven",
"Deagle",
"AWP",
"SHOTGUN",
"M4A1",
"",
"HE Grenade",
"",
"Five Seven Bullet",
"Deagle Bullet",
"AWP Bullet",
"SHOTGUN Bullet",
"M4A1 Bullet"
};
new const g_iFirstWCost[g_iWeapCount] =
{
2000, //Cost of first level of Five Seven
3500, //Cost of first level of Deagle
8000, //Cost of first level of AWP
6500, //Cost of first level of M3
4000, //cost of first level of M4A1
1,
400, //Cost of first level of HE Grenade
1,
2500, //Cost of first level of Five Seven Bullet
4000, //Cost of first level of Deagle Bullet
8500, //Cost of first level of AWP Bullet
7000, //Cost of first level of M3 Bullet
4500 //Cost of first level of M4A1 Bullet
}
new const g_iWeapShort [g_iWeapCount] [] =
{
"%",
"%",
"%",
"%",
"%",
"%",
"Bullets",
"Bullets",
"Bullets",
"Bullets",
"Bullets"
}
new const g_iWeapMaxVal[g_iWeapCount] =
{
60,
60,
25,
25,
1,
80,
1,
3,
3,
2,
2
}
new g_iWeapMaxLevel[g_iWeapCount] =
{
6,
6,
5,
6,
1,
8,
1,
3,
3,
2,
2
}
new g_iWeapClass [g_iWeapCount] =
{
CSW_FIVESEVEN,
CSW_DEAGLE,
CSW_AWP,
CSW_M3,
CSW_M4A1,
2, //Space,
CSW_HEGRENADE,
2, //Space,
1, //Bullet,
1, //Bullet,
1, //Bullet,
1, //Bullet
}
new const g_iWeapName [g_iWeapCount] [] =
{
"weapon_fiveseven",
"weapon_deagle",
"weapon_awp",
"weapon_m3",
"weapon_m4a1",
"",
"weapon_hegrenade",
""
};
enum _:g_iItemCount
{
HEALTH,
ARMOR,
RESPAWN_CHANCE,
FALL_DMG_REDUCE,
STEALTH,
FASTER_RUNNING,
EXTRA_DAMAGE,
NO_FOOTSTEPS,
NO_FLASH,
SCOPE,
NO_PAIN,
UNDER_COVER_SUITE,
ANTI_FROSTNADE,
Laserbeam,
Heatseek_HE
}
new const g_iItems[g_iItemCount][] =
{
"Extra Health",
"Extra Armor",
"Respawn Chance",
"Fall Damage Reducer",
"Stealth",
"Faster Running",
"Extra Damage",
"No Footsteps",
"No Flash",
"Deagle Scope",
"No Pain Shock",
"Camofluage",
"Anti-Frostnade",
"LaserBeam",
"Heeatseeking Grenade"
}
new const g_iFirstCost[g_iItemCount] =
{
1000, //Cost of first level of Health
750, //Cost of first level of Armor
5000, //Cost of first level of Respawn Chance
1500, //Cost of first level of Fall Damage Reducer
5000, //Cost of first level of Stealth
3000, //Cost of first level of Faster Running
3000, //Cost of first level of Extra Damage
1500, //Cost of No Footsteps
20000, //Cost of No Flash
10000, //Cost of Deagle Scope
30000, //Cost of No Pain Shock
45000, //Cost of Camofluage
40000, //Cost of Anti Frostnade
15000, //Cost of first level of LaserBeam
25000 //Cost of Heatseeking Grenade
}
new const g_iItemShort[g_iItemCount][] =
{
" HP",
" AP",
"%",
"%",
"%",
"%",
" DMG",
"CT Only",
"CT Only",
"CT & T",
"CT & T",
"%",
"CT & T",
"CT & T",
"CT & T"
}
new const g_iItemMaxVal[g_iItemCount] =
{
150,
150,
60,
50,
60,
8,
45,
1,
1,
1,
1,
1,
1,
3,
1
}
new const g_iItemMaxLevel[g_iItemCount] =
{
6,
6,
6,
5,
6,
4,
5,
1,
1,
1,
1,
1,
1,
3,
1
}
new g_iCash[MAX_CLIENTS + 1];
new g_iItemLevel[MAX_CLIENTS + 1][g_iItemCount];
new g_iWeapLevel[MAX_CLIENTS + 1][g_iWeapCount];
new g_iAuthID[33][36];
new bool:g_iRevivedOnce[32];
new Float:g_gametime;
new Float:g_gametime2;
new grenade[32];
new bool:g_track[33];
new bool:g_track_enemy;
new g_vault;
new g_msgScreenFade;
new g_sync_check_data;
new last;
new g_Admin[33];
new g_LoggedIn[32];
new g_serverType;
new sLaserShooterUsed[32];
new sLaserNextUse[33];
new hook_to[33][3];
new const sShootSound[] = "weapons/rocketfire1.wav";
new beamsprite;
new bool:gHasHe[33];
public plugin_precache()
{
beamsprite = precache_model("sprites/dot.spr");
precache_sound( sShootSound );
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
//Register Spawn
RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
//Open MainMenu
new command[] = "Cash_StartMenu";
register_clcmd( "say /mm", command );
register_clcmd( "say /cash", command );
register_clcmd( "say /cashmod", command );
register_clcmd( "say /hnsc", command );
register_clcmd( "say /hnscash", command );
//Register Death
register_event( "DeathMsg", "Event_DeathMsg", "a" );
//Register Round Start
register_logevent( "eRound_start", 2, "1=Round_Start" );
//Register Kill
RegisterHam(Ham_Killed, "player", "FwdPlayerDeath", 1);
//Register Take Damage
RegisterHam(Ham_TakeDamage, "player", "FwdPlayerTakeDMG", 1);
//Register PostThink for scope
RegisterHam(Ham_Player_PostThink, "player", "Player_PostThink");
//Register PreThink
RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink");
//Register Weapon Switch
register_event( "CurWeapon" , "fw_EvCurWeapon" , "be" , "1=1" );
register_forward(FM_Think, "fwdThink", 0);
//Get user screenfade
g_msgScreenFade = get_user_msgid("ScreenFade");
//Register ScreenFade
register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
//Registers two different TextMSG
register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole");
register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole");
//Register when someone/something throws grenade
register_event("99", "grenade_throw2", "b");
//Register Commands
register_concmd("cm_givecash", "CmdGiveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
register_concmd("cm_removecash", "CmdRemoveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
//Open nvault
g_vault = nvault_open("cashmod_recon");
if( g_vault == INVALID_HANDLE )
{
set_fail_state( "Error opening nVault" );
}
}
public plugin_end()
{
nvault_close(g_vault);
}
public plugin_natives()
{
register_library("cashmod");
register_native("cm_get_user_cash", "_get_cash");
register_native("cm_set_user_cash", "_set_cash");
register_native("cm_get_user_admin", "_get_user_admin");
register_native("cm_save", "_save");
register_native("cm_load", "_load");
register_native("cm_first_time", "_first_time");
register_native("cm_has_user_nofrost", "_has_user_nofrost");
}
public _has_user_nofrost(iPlugin, iParams)
{
new client = get_param(1);
if(g_iItemLevel[client][ANTI_FROSTNADE] != 0)
{
return true;
}
else{
return false;
}
return PLUGIN_CONTINUE;
}
public _get_health_level(iPlugin, iParams)
{
return g_iItemLevel[get_param(1)][HEALTH];
}
public _first_time(iPlugin, iParams)
{
return g_first_time[get_param(1)];
}
public _save(iPlugin, iParams)
{
Save(get_param(1));
}
public _load(iPlugin, iParams)
{
Load(get_param(1));
}
public _set_server_type(iPlugin, iParams)
{
g_serverType = max(0, get_param(1));
return g_serverType;
}
public _get_server_type(iPlugin, iParams)
{
return g_serverType;
}
public _set_cash(iPlugin, iParams)
{
new iPlayer = get_param(1);
if( !iPlayer )
return PLUGIN_CONTINUE;
g_iCash[iPlayer] = max(0, get_param(2));
return g_iCash[iPlayer];
}
public _get_cash(iPlugin, iParams)
{
return g_iCash[get_param(1)];
}
public _set_user_status(iPlugin, iParams)
{
new iPlayer = get_param(1);
if( !iPlayer )
return PLUGIN_CONTINUE;
g_LoggedIn[iPlayer] = max(0, get_param(2));
return g_LoggedIn[iPlayer];
}
public _get_user_status(iPlugin, iParams)
{
return g_LoggedIn[get_param(1)];
}
public _get_user_admin(iPlugin, iParams)
{
return g_Admin[get_param(1)];
}
public Player_PostThink(id)
{
DoZoom2(id);
}
public fwdThink(entid)
{
static szClassname[33];
pev(entid, pev_classname, szClassname, 32);
static szModel[23];
pev(entid, pev_model, szModel, 22);
if( equali(szClassname, "grenade", 0)
&& equali(szModel, "models/w_hegrenade.mdl", 0) &&
g_iItemLevel[pev(entid, pev_owner)][Heatseek_HE] >= 1)
{
static Float:vOrigin[3];
pev(entid, pev_origin, vOrigin);
set_pev(entid, pev_renderfx, kRenderFxGlowShell);
set_pev(entid, pev_rendercolor, {148.0, 0.0, 211.0});
set_pev(entid, pev_rendermode, kRenderNormal);
set_pev(entid, pev_renderamt, 100);
static player;
player = 0;
static Float:vClosest[3];
vClosest = Float:{4096.0, 4096.0, 4096.0};
while( (player = engfunc(EngFunc_FindEntityInSphere, player, vOrigin, 512.0)) )
{
if( !is_user_alive(player) )
{
continue;
}
pev(player, pev_classname, szClassname, 6);
if( equali(szClassname, "player", 0) )
{
if( get_user_team(player) != get_user_team(pev(entid, pev_owner)) )
{
static Float:vOrigin2[3];
pev(player, pev_origin, vOrigin2);
static hitplayer;
hitplayer = fnTraceLine(entid, vOrigin, vOrigin2);
if( vector_distance(vOrigin, vOrigin2)
<
vector_distance(vOrigin, vClosest)
&& hitplayer == player )
{
vClosest = vOrigin2;
}
}
}
}
if( vClosest[0] != 4096.0 )
{
entity_set_follow_origin(entid, vClosest, 350.0);
}
}
}
fnTraceLine(ignoreEnt, const Float:vStart[3], const Float:vEnd[3], Float:vReturn[3]={0.0, 0.0, 0.0})
{
engfunc(EngFunc_TraceLine, vStart, vEnd, ignoreEnt == -1 ? 1 : 0, ignoreEnt);
new ent = global_get(glb_trace_ent);
global_get(glb_trace_endpos, vReturn);
return pev_valid(ent) ? ent : 0;
}
stock entity_set_follow_origin(entity, Float:Origin[3], Float:speed)
{
if(!pev_valid(entity)) return 0;
new Float:entity_origin[3];
pev(entity, pev_origin, entity_origin);
new Float:diff[3];
diff[0] = Origin[0] - entity_origin[0];
diff[1] = Origin[1] - entity_origin[1];
diff[2] = Origin[2] - entity_origin[2];
new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0));
new Float:Velocity[3];
Velocity[0] = diff[0] * (speed / length);
Velocity[1] = diff[1] * (speed / length);
Velocity[2] = diff[2] * (speed / length);
set_pev(entity, pev_velocity, Velocity);
return 1;
}
public Player_PreThink(id)
{
new nbut = pev(id, pev_button);
new obut = pev(id, pev_oldbuttons);
if((nbut & IN_RELOAD) && !(obut & IN_RELOAD))
{
if( sLaserShooterUsed[id] != 0 && is_user_alive(id) && sLaserNextUse[id])
{
hook_to[id][0]=999999;
new player, body;
get_user_aiming(id, player, body);
if(is_user_connected(id) && is_user_connected(player))
{
sLaserShooterUsed[id] -= 1;
//Get Id's origin
static origin1[3];
get_user_origin(id,origin1);
if(hook_to[id][0]==999999)
{
static origin2[3];
get_user_origin(id,origin2,3);
hook_to[id][0]=origin2[0];
hook_to[id][1]=origin2[1];
hook_to[id][2]=origin2[2];
}
//Create RED beam
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(1); //TE_BEAMENTPOINT
write_short(id); // start entity
write_coord(hook_to[id][0]);
write_coord(hook_to[id][1]);
write_coord(hook_to[id][2]);
write_short(beamsprite);
write_byte(1); // framestart
write_byte(1); // framerate
write_byte(2); // life in 0.1's
write_byte(40); // width
write_byte(0); // noise
write_byte(255); // red
write_byte(0); // green
write_byte(0); // blue
write_byte(200); // brightness
write_byte(40); // speed
message_end();
new CurrentHealth[32];
CurrentHealth[player] = get_user_health(player);
new Randnum = random_num(45, 99);
new TakenHealth = CurrentHealth[player] - Randnum;
new AttackerName[33];
get_user_name(id, AttackerName, 31);
emit_sound( id, CHAN_BODY, sShootSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
sLaserNextUse[id] = false;
set_task(0.5, "tskLaserNextUse", 10000 + id);
if(is_user_alive(player))
{
if( CurrentHealth[player] < Randnum)
{
new GivenFrags = get_user_frags(id) + 1;
set_user_frags(id, GivenFrags);
g_iCash[id] += 20;
Print(id, "^x03 You have been given^x04 20^x03 Cash for killing^x04 '%s'^x03 with a^x04 Laserbeam!", player);
Print(player, "^x01 You have been killed by %s with a laserbeam!", AttackerName);
make_deathmsg(id, player, 0, "Laser Beam");
user_silentkill(player);
}
else{
set_user_health(player, TakenHealth);
Print(player, "^x03 You have been hurted for^x04 %i HP^x03 from^x04 %s's^x03 Laserbeam!", Randnum, AttackerName);
Print(id, "^x04 You have hurted %s for ^x04 %i HP", player, Randnum);
}
}
}
}
}
}
public tskLaserNextUse(id)
{
id -= 10000;
sLaserNextUse[id] = true;
}
public client_authorized( iPlayer )
{
get_user_authid(iPlayer, g_iAuthID[ iPlayer ] , charsmax( g_iAuthID[] ) );
Load(iPlayer);
if ( access(iPlayer, ADMIN_LEVEL_A) )
g_Admin[iPlayer] = true;
}
public client_disconnect( iPlayer )
{
Save(iPlayer);
}
public Load(iPlayer)
{
static data[256], timestamp;
if( nvault_lookup(g_vault, g_iAuthID[iPlayer], data, sizeof(data) - 1, timestamp) )
{
ParseLoadData(iPlayer, data);
}
else
{
NewUser(iPlayer);
}
}
public NewUser(iPlayer)
{
g_first_time[iPlayer] = 1;
g_iCash[iPlayer] = 200;
for( new iItem = 0; iItem < g_iItemCount; iItem++ )
{
g_iItemLevel[iPlayer][iItem] = 0;
}
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
g_iWeapLevel[iPlayer][iWeap] = 0;
}
}
ParseLoadData(iPlayer, data[256])
{
static num[6];
strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
g_iCash[iPlayer] = str_to_num(num);
for( new iItem = 0; iItem < g_iItemCount; iItem++ )
{
strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
g_iItemLevel[iPlayer][iItem] = clamp(str_to_num(num), 0, g_iItemMaxLevel[iItem]);
}
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
strbreak(data, num, sizeof(num) - 1, data, sizeof(data) - 1);
g_iWeapLevel[iPlayer][iWeap] = clamp(str_to_num(num), 0, g_iWeapMaxLevel[iWeap]);
}
}
public Save(iPlayer)
{
static data[256];
new len = formatex(data, sizeof(data) - 1, "%i", g_iCash[iPlayer]);
for( new iItem = 0; iItem < g_iItemCount; iItem++ )
{
len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iItemLevel[iPlayer][iItem]);
}
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
len += formatex(data[len], sizeof(data) - len - 1, " %i", g_iWeapLevel[iPlayer][iWeap]);
}
nvault_set(g_vault, g_iAuthID[ iPlayer ], data);
}
public fw_EvCurWeapon( iPlayer )
{
//If player bought faster running
if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
{
//Call a function to set speed
Set_Speed(iPlayer);
}
}
public FwdPlayerTakeDMG(iPlayer, inflictor, attacker, Float:damage, damagebits)
{
//If player is alive and the damage is done by falling
if(is_user_alive(iPlayer) && (damagebits & DMG_FALL) )
{
//If player is either ct or T
new CsTeams:team = cs_get_user_team(iPlayer);
if( team == CS_TEAM_CT || team == CS_TEAM_T )
{
//Percentage Calculation
new iPercent = g_iItemMaxVal[FALL_DMG_REDUCE] * g_iItemLevel[iPlayer][FALL_DMG_REDUCE] / g_iItemMaxLevel[FALL_DMG_REDUCE];
//Fall Damage Reducer
SetHamParamFloat(4, damage * (1.0 - (float(iPercent) / 100.0)));
}
}
if( ( 1 <= attacker <= get_maxplayers() && iPlayer != attacker ) )
{
new Float:fMultiplier = g_iItemLevel[iPlayer][EXTRA_DAMAGE] * 0.10 + 1.0;
SetHamParamFloat( 4, damage * fMultiplier );
}
if( g_iItemLevel[iPlayer][NO_PAIN] >= 1 )
{
set_pdata_float(iPlayer, 108, 1.0);
}
return HAM_HANDLED;
}
public FwdPlayerDeath(iPlayer, Killer, Shouldgib)
{
//If the player hasnt already been respawned
if( !g_iRevivedOnce[iPlayer] )
{
//If player is either ct or t
new CsTeams:team = cs_get_user_team(iPlayer);
if( team == CS_TEAM_T || team == CS_TEAM_CT )
{
//Percentage Calculation
new iPercent = g_iItemMaxVal[RESPAWN_CHANCE] * g_iItemLevel[iPlayer][RESPAWN_CHANCE] / g_iItemMaxLevel[RESPAWN_CHANCE];
//Percentage Usage
if( random_num(1, 100) <= iPercent )
{
//Set respwan in 1 second
set_task(1.0, "Task_Respawn", iPlayer);
}
}
}
}
public Task_Respawn(iPlayer)
{
//Respawn Player
ExecuteHamB(Ham_CS_RoundRespawn, iPlayer);
//Print to the player that he/she got respawned
Print(iPlayer, "^x03You got respawned!");
//Disable respawn until next round
g_iRevivedOnce[iPlayer] = true;
}
public eRound_start()
{
//Bunc of variables
new iPlayers[32], iNum, iPid;
//Get all players
get_players( iPlayers, iNum, "a" );
//Browse through all players
for( new i; i < iNum; i++ )
{
iPid = iPlayers[i];
//Enable respawn
g_iRevivedOnce[iPid] = false;
}
}
public Event_DeathMsg()
{
//Get the killer
new killer = read_data(1);
//Get the victim + a variable
new victim = read_data(2);
new vic_name[128];
new format_text[128];
get_user_name(victim, vic_name, 127);
//Make sure that the killer exists
if( 1 <= killer <= get_maxplayers() )
{
//If victim is not killer
if( victim != killer )
{
//If victim is not a teammate of killer
if( cs_get_user_team( victim ) != cs_get_user_team( killer ) )
{
//If killer is still alive
if( is_user_alive( killer ) )
{
//Add cash to the killer
if( g_Admin[killer] && g_iCash[killer] < 99938 )
{
g_iCash[killer] += 60;
formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 60 cash for killing^x04 %s", vic_name);
}
else
{
g_iCash[killer] += 40;
formatex(format_text, sizeof(format_text) - 1, "^x03You recieved 40 cash for killing^x04 %s", vic_name);
}
//Get the victims name
get_user_name(victim, vic_name, 127);
//Print out" to the player that he/she got cash
Print(killer, format_text, vic_name);
}
}
}
}
}
public Cash_StartMenu(iPlayer)
{
//Menu Title
new title[512]; formatex(title, sizeof(title) - 1, "\r%s \w- \yMain Menu \w- \yBy \rReCon & TandborsteN ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
//Create the menu
new menu = menu_create(title, "StartMenu_Handle");
//Create Items Menu
menu_additem(menu, "\wInfo", "1", 0);
menu_additem(menu, "\wPlayer Info", "2", 0);
menu_addblank(menu, 0);
menu_additem(menu, "\wWeapon Shop", "3", 0);
menu_additem(menu, "\wItem Shop", "4", 0);
menu_addblank(menu, 1);
menu_addblank(menu, 1);
menu_addblank(menu, 1);
//Display the menu
menu_display(iPlayer, menu, 0);
}
public StartMenu_Handle(iPlayer, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
show_motd(iPlayer, "cashmod/info.motd", "CashMod Info");
}
case 2:
{
Cash_PlayerMenu(iPlayer);
}
case 3:
{
Cash_WeaponMenu(iPlayer);
}
case 4:
{
Cash_MainMenu(iPlayer);
}
}
return PLUGIN_HANDLED;
}
public Cash_PlayerMenu(iPlayer)
{
new title[170]; formatex(title, sizeof(title) - 1, "\r%s - \w \yPlayer Menu", PREFIX);
new menu = menu_create(title, "Cash_PlayerHandle");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, 31);
num_to_str(tempid, szTempid, 9);
menu_additem(menu, szName, szTempid, 0);
}
menu_display(iPlayer, menu, 0);
}
public Cash_PlayerHandle(iPlayer, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
Cash_StartMenu(iPlayer);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
new tempname[32]; get_user_name(tempid, tempname, 31);
static motd[2500];
new len = formatex(motd, sizeof(motd) - 1, "<html>");
len += format(motd[len], sizeof(motd) - len - 1, "<body style=^"background-color:#030303; color:#FF8F00^">");
len += format(motd[len], sizeof(motd) - len - 1, "<p align=^"center^">");
len += format(motd[len], sizeof(motd) - len - 1, "Player Info for %s.<br><br>", tempname);
len += format(motd[len], sizeof(motd) - len - 1, "Player Cash: %i.<br><br>", g_iCash[tempid]);
len += format(motd[len], sizeof(motd) - len - 1, "<b>Weapon Chance</b>:<br>");
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
if( g_iWeapClass[iWeap] != 2 )
{
len += format(motd[len], sizeof(motd) - len - 1, "%s - Level: %i/%i <br>", g_iWeapons[iWeap], g_iWeapLevel[tempid][iWeap], g_iWeapMaxLevel[iWeap]);
}
}
len += format(motd[len], sizeof(motd) - len - 1, "<br><br><b>Other Items:</b><br>");
for( new iItem = 0; iItem < g_iItemCount; iItem++ )
{
len += format(motd[len], sizeof(motd) - len - 1, "%s - Level: %i/%i <br>", g_iItems[iItem], g_iItemLevel[tempid][iItem], g_iItemMaxLevel[iItem]);
}
len += format(motd[len], sizeof(motd) - len - 1, "</p>");
len += format(motd[len], sizeof(motd) - len - 1, "</body>");
len += format(motd[len], sizeof(motd) - len - 1, "</html>");
show_motd(iPlayer, motd, "Player Info");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Cash_WeaponMenu(iPlayer)
{
//Menu Title
new title[170]; formatex(title, sizeof(title) - 1, "\r%s \w- \yWeapon Menu \w- \yBy \rReCon ^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
//Create the menu
new menu = menu_create(title, "WeaponMenu_Handle");
new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
//Browse through all menu items
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
//Bunch of variables
num_to_str(iWeap, iNumber, 4);
Level = g_iWeapLevel[iPlayer][iWeap];
Level2 = g_iWeapLevel[iPlayer][iWeap] + 1;
iCost = g_iFirstWCost[iWeap] * (1 << (Level2 - 1));
Amount = g_iWeapMaxVal[iWeap] * g_iWeapLevel[iPlayer][iWeap] / g_iWeapMaxLevel[iWeap];
//If the player already have maxlevel
if( g_iWeapLevel[iPlayer][iWeap] >= g_iWeapMaxLevel[iWeap] )
{
if( g_iWeapClass[iWeap] == 2 )
{
formatex(szOption, 79, "");
}
else
{
formatex(szOption, 79, "\y%s: \wLevel %i \r(%i%s)", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap]);
}
}
//If the player cant afford the item
else if( g_iCash[iPlayer] < iCost )
{
if( g_iWeapClass[iWeap] == 2 )
{
formatex(szOption, 79, "");
}
else
{
formatex(szOption, 79, "\d%s: \wLevel %i \r(%i%s) \y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
}
}
//If the player has not maxed out the item
else if( g_iWeapLevel[iPlayer][iWeap] < g_iWeapMaxLevel[iWeap] )
{
if( g_iWeapClass[iWeap] == 2 )
{
formatex(szOption, 79, "");
}
else
{
formatex(szOption, 79, "\r%s: \wLevel %i \r(%i%s) \y%i Cash", g_iWeapons[iWeap], Level, Amount, g_iWeapShort[iWeap], iCost);
}
}
//Add all the menu items
if( g_iWeapClass[iWeap] == 2 )
{
menu_addblank(menu, 0);
}
else
{
menu_additem(menu, szOption, iNumber);
}
}
//Display the menu
menu_display(iPlayer, menu, 0);
}
public WeaponMenu_Handle(iPlayer, menu, item)
{
//Get the menu data
if( item == MENU_EXIT )
{
menu_destroy(menu);
Cash_StartMenu(iPlayer);
return PLUGIN_HANDLED;
}
//Bunc of variables
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new iWeap = str_to_num( data ), iCost, Level;
Level = g_iWeapLevel[iPlayer][iWeap] + 1;
iCost = g_iFirstWCost[iWeap] * (1 << (Level - 1));
if( iWeap == BULLET_FS && g_iWeapLevel[iPlayer][WEAPON_FS] <= 0 || iWeap == BULLET_DEAGLE && g_iWeapLevel[iPlayer][WEAPON_DEAGLE] <= 0 || iWeap == BULLET_AWP && g_iWeapLevel[iPlayer][WEAPON_AWP] <= 0 || iWeap == BULLET_M4A1 && g_iWeapLevel[iPlayer][WEAPON_M4A1] <= 0 )
{
Print(iPlayer, "^x03You don't have this weapons!");
Cash_WeaponMenu(iPlayer);
return PLUGIN_HANDLED;
}
//If player has maxed out the item
if( g_iWeapLevel[iPlayer][iWeap] == g_iWeapMaxLevel[iWeap] )
{
Print(iPlayer, "^x03You have the max level of %s!", g_iWeapons[iWeap]);
}
//If the player cant afford the item
else if( g_iCash[iPlayer] < iCost )
{
Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iWeapons[iWeap], Level);
}
//Take Cash, Print and give level
else
{
//Take cash
g_iCash[iPlayer] -= iCost;
//Give a level
g_iWeapLevel[iPlayer][iWeap] += 1;
//Print out to the player that he/she bought an item with corresponding level
Print(iPlayer, "^x03You bought %s Level: %i", g_iWeapons[iWeap], Level);
}
Cash_WeaponMenu(iPlayer);
return PLUGIN_HANDLED;
}
public Cash_MainMenu(iPlayer)
{
//Menu Title
new title[70]; formatex(title, sizeof(title) - 1, "\r%s \w- \yMain Menu \w- \yBy \rReCon^nYour Cash: %i", PREFIX, g_iCash[iPlayer]);
//Create the menu
new menu = menu_create(title, "MainMenu_Handle");
new iNumber[5], iCost, szOption[80], Amount, Level, Level2;
//Browse through all menu items
for( new iItem = 0; iItem < g_iItemCount; iItem++ )
{
//Bunch of variables
num_to_str(iItem, iNumber, 4);
Level = g_iItemLevel[iPlayer][iItem];
Level2 = g_iItemLevel[iPlayer][iItem] + 1;
iCost = g_iFirstCost[iItem] * (1 << (Level2 - 1));
Amount = g_iItemMaxVal[iItem] * g_iItemLevel[iPlayer][iItem] / g_iItemMaxLevel[iItem];
if( iItem == EXTRA_DAMAGE && g_serverType == 1 )
{
return PLUGIN_CONTINUE;
}
//If the player already have maxlevel
if( g_iItemLevel[iPlayer][iItem] >= g_iItemMaxLevel[iItem] )
{
if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
{
formatex(szOption, 79, "\y%s: \dLevel %i \r(%s)", g_iItems[iItem], Level, g_iItemShort[iItem]);
}
else
{
formatex(szOption, 79, "\y%s: \dLevel %i \r(%i%s)", g_iItems[iItem], Level, Amount, g_iItemShort[iItem]);
}
}
//If the player cant afford the item
else if( g_iCash[iPlayer] < iCost )
{
if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
{
formatex(szOption, 79, "\d%s: \wLevel %i \r(%s) \y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
}
else
{
formatex(szOption, 79, "\d%s: \wLevel %i \r(%i%s) \y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
}
}
//If the player has not maxed out the item
else if( g_iItemLevel[iPlayer][iItem] < g_iItemMaxLevel[iItem] )
{
if( iItem == NO_FOOTSTEPS || iItem == NO_FLASH || iItem == SCOPE || iItem == NO_PAIN || iItem == ANTI_FROSTNADE || iItem == Laserbeam )
{
formatex(szOption, 79, "\r%s: \wLevel %i \r(%s) \y%i Cash", g_iItems[iItem], Level, g_iItemShort[iItem], iCost);
}
else
{
formatex(szOption, 79, "\r%s: \wLevel %i \r(%i%s) \y%i Cash", g_iItems[iItem], Level, Amount, g_iItemShort[iItem], iCost);
}
}
//Add all the menu items
menu_additem(menu, szOption, iNumber);
}
//Display the menu
menu_display(iPlayer, menu, 0);
return PLUGIN_HANDLED;
}
public MainMenu_Handle(iPlayer, menu, item)
{
//Get the menu data
if( item == MENU_EXIT )
{
menu_destroy(menu);
Cash_StartMenu(iPlayer);
return PLUGIN_HANDLED;
}
//Bunc of variables
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new iItem = str_to_num( data ), iCost, Level;
Level = g_iItemLevel[iPlayer][iItem] + 1;
iCost = g_iFirstCost[iItem] * (1 << (Level - 1));
//If player has maxed out the item
if( g_iItemLevel[iPlayer][iItem] == g_iItemMaxLevel[iItem] )
{
Print(iPlayer, "^x03You have the max level of %s!", g_iItems[iItem]);
}
//If the player cant afford the item
else if( g_iCash[iPlayer] < iCost )
{
Print(iPlayer, "^x03You dont have enough cash to buy %s Level: %i", g_iItems[iItem], Level);
}
//Take Cash, Print and give level
else
{
//Take cash
g_iCash[iPlayer] -= iCost;
//Give a level
g_iItemLevel[iPlayer][iItem] += 1;
//Print out to the player that he/she bought an item with corresponding level
Print(iPlayer, "^x03You bought %s Level: %i", g_iItems[iItem], Level);
}
Cash_MainMenu(iPlayer);
return PLUGIN_HANDLED;
}
public FwdPlayerSpawn(iPlayer)
{
//If player is alive when spawned
if( is_user_alive(iPlayer) )
{
//If player has bought extra health
if( g_iItemLevel[iPlayer][HEALTH] >= 1 )
{
//Set health to its self and add the extra health
set_user_health(iPlayer, get_user_health(iPlayer) + g_iItemMaxVal[HEALTH] * g_iItemLevel[iPlayer][HEALTH] / g_iItemMaxLevel[HEALTH]);
}
//If player has bought extra armor
if( g_iItemLevel[iPlayer][ARMOR] >= 1 )
{
//Set armor to its self and add the extra armor
set_user_armor(iPlayer, g_iItemMaxVal[ARMOR] * g_iItemLevel[iPlayer][ARMOR] / g_iItemMaxLevel[ARMOR]);
}
//If player has bought stealth
if( g_iItemLevel[iPlayer][STEALTH] >= 1 )
{
//Call a function to set stealth
Set_Stealth(iPlayer);
}
//If player has bought faster running
if( g_iItemLevel[iPlayer][FASTER_RUNNING] >= 1 )
{
//Call a function to set speed
Set_Speed(iPlayer);
}
//If player has bought no footsteps
if( g_iItemLevel[iPlayer][NO_FOOTSTEPS] >= 1 )
{
set_user_footsteps(iPlayer, 1);
}
//If player has bought undercover suite
if( g_iItemLevel[iPlayer][UNDER_COVER_SUITE] >= 1 )
{
remove_task(iPlayer);
set_task(9.0, "Set_Undercover", iPlayer);
}
//If player has bought Antifrost nade
if( g_iItemLevel[iPlayer][ANTI_FROSTNADE] >= 1 )
{
add_user_immune(iPlayer)
}
else
{
remove_user_immune(iPlayer);
}
//If player has bought Laserbeam
if( g_iItemLevel[iPlayer][Laserbeam] >= 1 )
{
sLaserShooterUsed[iPlayer] = g_iItemLevel[iPlayer][Laserbeam];
sLaserNextUse[iPlayer] = true;
}
//Give weapons, the check if the player bought is in the function
remove_task(iPlayer);
set_task(10.0, "Set_Weapons", iPlayer);
}
}
public Set_Undercover(iPlayer)
{
//Percentage Calculation
new iPercent = g_iItemMaxVal[UNDER_COVER_SUITE] * g_iItemLevel[iPlayer][UNDER_COVER_SUITE] / g_iItemMaxLevel[UNDER_COVER_SUITE];
//Get Players Team
new CsTeams:team = cs_get_user_team(iPlayer);
//Percentage Usage
if( random_num(1, 100) <= iPercent )
{
//If player is alive
if( is_user_alive(iPlayer) )
{
if(team == CS_TEAM_CT)
{
cs_set_user_model(iPlayer, "leet");
Print(iPlayer, "^x03You look like a Terrorist");
}
else if(team == CS_TEAM_T)
{
cs_set_user_model(iPlayer, "gign");
Print(iPlayer, "^x03You look like a Counter-Terrorist!");
}
}
}
}
public Set_Stealth(iPlayer)
{
new StealthAmt = g_iItemLevel[iPlayer][STEALTH] * 25;
new NewStealth = 255 - StealthAmt;
set_user_rendering( iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, NewStealth );
}
public Set_Speed(iPlayer)
{
//Percentage Calculation
new iPercent = g_iItemMaxVal[FASTER_RUNNING] * g_iItemLevel[iPlayer][FASTER_RUNNING] / g_iItemMaxLevel[FASTER_RUNNING];
//Speed Calculation
new iSpeed = iPercent * 250 / 100;
//Set Speed
set_user_maxspeed(iPlayer, 250.0 + iSpeed);
}
public calc_value(const level, const max_level, const max_value)
{
return (max_value * level / max_level);
}
public Set_Weapons(iPlayer)
{
//Browse through all menu items
new iNumber[5];
for( new iWeap = 0; iWeap < g_iWeapCount; iWeap++ )
{
//Bunch of variables
num_to_str(iWeap, iNumber, 4);
//Bullets
new iBullets;
if( iWeap == WEAPON_FS && g_iWeapLevel[iPlayer][BULLET_FS] >= 1 )
{
iBullets = g_iWeapLevel[iPlayer][BULLET_FS] + 1;
}
else if( iWeap == WEAPON_DEAGLE && g_iWeapLevel[iPlayer][BULLET_DEAGLE] >= 1 )
{
iBullets = g_iWeapLevel[iPlayer][BULLET_DEAGLE] + 1;
}
else if( iWeap == WEAPON_AWP && g_iWeapLevel[iPlayer][BULLET_AWP] >= 1 )
{
iBullets = g_iWeapLevel[iPlayer][BULLET_AWP] + 1;
}
else if ( iWeap == WEAPON_SHOTGUN && g_iWeapLevel[iPlayer][BULLET_SHOTGUN] >= 1 )
{
iBullets = g_iWeapLevel[iPlayer][BULLET_SHOTGUN] +1;
}
else if ( iWeap == WEAPON_M4A1 && g_iWeapLevel[iPlayer][BULLET_M4A1] >= 1 )
{
iBullets = g_iWeapLevel[iPlayer][BULLET_M4A1] + 1;
}
if( iBullets == 0 )
{
iBullets = 1;
}
if( g_iWeapLevel[iPlayer][iWeap] >= 1 )
{
static percent;
percent = calc_value(g_iWeapLevel[iPlayer][iWeap], g_iWeapMaxLevel[iWeap], g_iWeapMaxVal[iWeap]);
//new Chance = g_iWeapLevel[iPlayer][iWeap] * g_iWeapMaxVal[iWeap];
//new randonnumb = random_num(1, 100);
new message[72];
if(is_user_connected(iPlayer))
{
if( percent > 0 && (percent == 100 || random_num(1, 100) <= percent ) )
{
if( iWeap == HE_GRENADE && !user_has_weapon(iPlayer, g_iWeapClass[HE_GRENADE]) )
{
give_item(iPlayer, g_iWeapName[HE_GRENADE]);
formatex(message, sizeof(message) - 1, "^x03You recieved a HE Grenade ^x04[%i%%%%].", percent);
if(g_iItemLevel[iPlayer][Heatseek_HE] >= 1)
{
gHasHe[iPlayer] = true;
}
}
else
{
give_item(iPlayer, g_iWeapName[iWeap]);
cs_set_weapon_ammo(find_ent_by_owner(iPlayer, g_iWeapName[iWeap], iPlayer), iBullets);
cs_set_user_bpammo(iPlayer, g_iWeapClass[iWeap], 0);
formatex(message, sizeof(message) - 1, "^x03You recieved a %s with %i bullets ^x04[%i%%%%].", g_iWeapons[iWeap], iBullets, percent);
}
Print(iPlayer, message);
}
}
}
}
return PLUGIN_HANDLED;
}
//The following functions are used to give and remove, dont touch!
public CmdGiveCash(iPlayer, level, cid)
{
if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
static arg[35];
read_argv(1, arg, sizeof(arg) - 1);
new target = cmd_target(iPlayer, arg, CMDTARGET_NO_BOTS);
if( !target ) return PLUGIN_HANDLED;
read_argv(2, arg, sizeof(arg) - 1);
new CASH = str_to_num(arg);
if( CASH <= 0 )
{
console_print(iPlayer, "Not enough cash!");
if( CASH < 0 )
{
console_print(iPlayer, "Use cm_removecash instead!");
}
return PLUGIN_HANDLED;
}
if( CASH >= 99999 )
{
console_print(iPlayer, "To much cash!");
return PLUGIN_HANDLED;
}
g_iCash[target] += CASH;
static name[2][32];
get_user_name(iPlayer, name[0], sizeof(name[]) - 1);
get_user_name(target, name[1], sizeof(name[]) - 1);
client_print(iPlayer, print_console, "%s You gave %s %i cash!", PREFIX, name[1], CASH);
static steamid[2][35];
get_user_authid(iPlayer, steamid[0], sizeof(steamid[]) - 1);
get_user_authid(target, steamid[1], sizeof(steamid[]) - 1);
log_amx("%s (%s) gave %i XP to %s (%s)", name[0], steamid[0], CASH, name[1], steamid[1]);
return PLUGIN_HANDLED;
}
public CmdRemoveCash(iPlayer, level, cid)
{
if ( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
static arg[35];
read_argv(1, arg, sizeof(arg) - 1);
new target = cmd_target(iPlayer, arg, CMDTARGET_OBEY_IMMUNITY|CMDTARGET_NO_BOTS|CMDTARGET_ALLOW_SELF);
if( !target ) return PLUGIN_HANDLED;
read_argv(2, arg, sizeof(arg) - 1);
new Cash = str_to_num(arg);
if ( Cash <= 0 ) return PLUGIN_HANDLED;
g_iCash[target] -= Cash;
new t_name[60];
get_user_name(target, t_name, 59);
client_print(iPlayer, print_console, "%s You removed %i cash from %s!", PREFIX, Cash, t_name);
return PLUGIN_CONTINUE;
}
public bad_fix2() {
new Float:gametime = get_gametime();
if(gametime - g_gametime2 > 2.5)
for(new i = 0; i < 32; i++)
grenade[i] = 0;
}
public eventFlash( id ) {
new Float:gametime = get_gametime();
if(gametime != g_gametime) {
g_gametime = gametime;
for(new i = 0; i < 33; i++)
g_track[i] = false;
g_track_enemy = false;
}
if(g_iItemLevel[id][NO_FLASH] >= 1) {
g_track_enemy = true;
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id);
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}
public flash_delay() {
if(g_track_enemy == false) {
for(new i = 0; i < 33; i++) {
if(g_track[i] == true && is_user_connected(i)) {
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, i) ;
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}
}
}
public grenade_throw2() {
if(g_sync_check_data == 0)
return PLUGIN_CONTINUE;
g_sync_check_data--;
if(read_datanum() < 2)
return PLUGIN_HANDLED_MAIN;
if(read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
add_grenade_owner(last);
return PLUGIN_CONTINUE;
}
public fire_in_the_hole() {
new name[32];
read_data(3, name, 31);
new temp_last = get_user_index(name);
new junk;
if((temp_last == 0) || (!is_user_connected(temp_last)))
return PLUGIN_CONTINUE;
if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
last = temp_last;
g_sync_check_data = 2;
}
return PLUGIN_CONTINUE;
}
public fire_in_the_hole2() {
new name[32];
read_data(4, name, 31);
new temp_last = get_user_index(name);
new junk;
if((temp_last == 0) || (!is_user_connected(temp_last)))
return PLUGIN_CONTINUE;
if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) {
last = temp_last;
g_sync_check_data = 2;
}
return PLUGIN_CONTINUE;
}
public add_grenade_owner(owner)
{
new Float:gametime = get_gametime();
g_gametime2 = gametime;
for(new i = 0; i < 32; i++)
{
if(grenade[i] == 0)
{
grenade[i] = owner;
return;
}
}
}
// from XxAvalanchexX "Flashbang Dynamic Light"
public fw_emitsound(entity,channel,const sample[],Float:volume,Float:attenuation,fFlags,pitch) {
if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
return FMRES_IGNORED;
new Float:gametime = get_gametime();
//in case no one got flashed, the sound happens after all the flashes, same game time
if(gametime != g_gametime) {
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
// NoFlash Blinding - End
public DoZoom2(id)
{
if( !is_user_alive(id)
|| get_pdata_float(id, m_flNextAttack, XTRA_OFS_PLAYER) >= 0.0
|| ~get_pdata_int(id, m_afButtonPressed, XTRA_OFS_PLAYER) & IN_ATTACK2
&& g_iItemLevel[id][SCOPE] <= 0 )
{
return 0;
}
else if(pev(id,pev_button) & IN_ATTACK2 && get_user_weapon(id) == CSW_DEAGLE && g_iItemLevel[id][SCOPE] >= 1)
{
new iFov
switch( get_pdata_int(id, m_iFOV, XTRA_OFS_PLAYER) )
{
case 40:iFov = 15
case 15:iFov = 0
default:iFov = 40
}
set_pev(id, pev_fov, iFov)
set_pdata_int(id, m_iFOV, iFov, XTRA_OFS_PLAYER)
set_pdata_float(id, m_flNextAttack, 0.25)
emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
}
return PLUGIN_CONTINUE;
}
Print(iPlayer, const sMsg[], any:...)
{
static i; i = iPlayer ? iPlayer : get_Player();
if ( !i ) return;
new sMessage[256];
new len = formatex(sMessage, sizeof(sMessage) - 1, "^x04%s ", PREFIX);
vformat(sMessage[len], sizeof(sMessage) - 1 - len, sMsg, 3);
sMessage[192] = '^0';
static msgid_SayText;
if ( !msgid_SayText ) msgid_SayText = get_user_msgid("SayText");
new const team_Names[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
new sTeam = get_user_team(i);
team_Info(i, iPlayer, team_Names[0]);
message_begin(iPlayer ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_SayText, _, iPlayer);
write_byte(i);
write_string(sMessage);
message_end();
team_Info(i, iPlayer, team_Names[sTeam]);
}
team_Info(receiver, sender, sTeam[])
{
static msgid_TeamInfo;
if ( !msgid_TeamInfo ) msgid_TeamInfo = get_user_msgid("TeamInfo");
message_begin(sender ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgid_TeamInfo, _, sender);
write_byte(receiver);
write_string(sTeam);
message_end();
}
get_Player()
{
for ( new iPlayer = 1; iPlayer <= get_maxplayers(); iPlayer++ )
{
return iPlayer;
}
return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1053\\ f0\\ fs16 \n\\ par }
*/