Hi AlliedModders..
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < hamsandwich >
#include < nvault >
#include < colorchat >
#include < fun >
#include < engine >
#include < fakemeta >
#define PLUGIN "MoneyMod"
#define VERSION "0.0.1"
#define AUTHOR "HBxander"
#define prefix "^4[EG] Money Mod^3."
enum _:Weapons
{
FIVESEVEN,
DEAGLE,
AWP,
SPACE,
HEGREN,
FLASH
}
new const WeapMaxLevel [ Weapons ] =
{
4,
5,
5,
1,
4,
4
}
new const WeapMaxValue [ Weapons ] =
{
20,
10,
5,
1,
100,
100
}
new const WeapFirstCost [ Weapons ] =
{
1240,
1650,
2280,
1,
250,
180
}
new const WeapName [ Weapons ] [ ] =
{
"FiveSeven",
"Deagle",
"AWP",
"",
"He Grenade",
"Extra Flash"
}
new const WeapShort [ Weapons ] [ ] =
{
"%",
"%",
"%",
"",
"%",
"%"
}
new const WeapCSW [ Weapons ] =
{
CSW_FIVESEVEN,
CSW_DEAGLE,
CSW_AWP,
2,
CSW_HEGRENADE,
CSW_FLASHBANG
}
new const WeapGive [ Weapons ] [ ] =
{
"weapon_fiveseven",
"weapon_deagle",
"weapon_awp",
"",
"weapon_hegrenade",
"weapon_flashbang"
}
enum _:Items
{
HEALTH,
ARMOR,
STEALTH,
FALLDMGREDUCER,
RSCHANCE,
NOPAIN,
NOFLASH,
NOFOOT,
DMGREDUCER,
DMG
}
new const ItemMaxLevel [ Items ] =
{
5,
4,
3,
5,
5,
1,
1,
1,
5,
5
}
new const ItemMaxValue [ Items ] =
{
50,
100,
60,
50,
25,
1,
1,
1,
25,
25
}
new const ItemFirstCost [ Items ] =
{
550,
420,
750,
530,
880,
8500,
8500,
8500,
2375,
1430
}
new const ItemName [ Items ] [ ] =
{
"Extra Health",
"Armor",
"Stealth",
"Fall Damage Reducer",
"Respawn Chance",
"No Pain Shock",
"No Flash",
"No Footsteps",
"Weapon Damage Reducer",
"Extra Damage"
}
new const ItemShort [ Items ] [ ] =
{
" HP",
" AP",
"%",
"%",
"%",
"",
"",
"",
"%",
"%"
}
//Money
new iMoney [ 33 ], tMoney [ 33 ]
//Levels
new ItemLevel [ 33 ] [ Items ]
new WeapLevel [ 33 ] [ Weapons ]
new VIPLevel [ 33 ] // For VIP ( VIPs gonna get 1 extra bullet on weapons, added with mm_addvip <nick> )
//Cvars
new money_kill, money_survive, money_start, money_roll6, money_roll1, delay_roll, minimum_donation, price_vip
new kill, survive, start, roll6, roll1, rolltime, donate_minimum, VIPPrice
//Other
new Float: LastRoll [ 33 ]
new bool: cRespawned [ 33 ]
//Vault
new gVault
//No Flash
new cMsgScreenFade
new Float: cGametime
new bool: cTrack [ 33 ]
new bool: cTrackEnemy
public plugin_init ( )
{
//Commands
register_clcmd ( "say /moneymod", "CmdMenuShow" )
register_clcmd ( "say /mm", "CmdMenuShow" )
register_clcmd ( "say /money", "CmdMenuShow" )
register_clcmd ( "say /rtd", "CmdRoll" )
register_clcmd ( "say /roll", "CmdRoll" )
//Cvars
money_kill = register_cvar ( "mm_money_kill", "40" )
money_survive = register_cvar ( "mm_money_survive", "80" )
money_start = register_cvar ( "mm_money_start", "400" )
money_roll6 = register_cvar ( "mm_money_roll6", "25" )
money_roll1 = register_cvar ( "mm_money_roll1", "10" )
delay_roll = register_cvar ( "mm_delay_roll", "120" )
minimum_donation = register_cvar ( "mm_minimum_donate", "5000" )
price_vip = register_cvar ( "mm_price_vip", "10000" )
kill = get_pcvar_num ( money_kill )
survive = get_pcvar_num ( money_survive )
start = get_pcvar_num ( money_start )
roll6 = get_pcvar_num ( money_roll6 )
roll1 = get_pcvar_num ( money_roll1 )
rolltime = get_pcvar_num ( delay_roll )
donate_minimum = get_pcvar_num ( minimum_donation )
VIPPrice = get_pcvar_num ( price_vip )
//No Flash
cMsgScreenFade = get_user_msgid ( "ScreenFade" )
//Register when something happens
register_event ( "DeathMsg", "CmdDeath", "a" )
register_event ( "ScreenFade", "CmdGetFlashed", "br", "4=255", "5=255", "6=255", "7>199" )
RegisterHam ( Ham_Spawn, "player", "CmdSpawn", 1 )
RegisterHam ( Ham_TakeDamage, "player", "CmdTakeDmg", 1 )
RegisterHam ( Ham_Killed, "player", "CmdKilled", 1 )
register_logevent ( "CmdRoundEnd", 2, "1=Round_End")
register_logevent ( "eRound_start", 2, "1=Round_Start" )
// Admin Commands
register_concmd ( "mm_addvip", "CmdAddVIP", ADMIN_IMMUNITY, "<nick>" )
register_concmd ( "mm_givemoney", "CmdAddMoney", ADMIN_IMMUNITY, "<nick> <money>" )
register_concmd ( "mm_takemoney", "CmdTakeMoney", ADMIN_IMMUNITY, "<nick> <money>" )
register_concmd ( "mm_donate", "CmdDonate", _, "<nick> <money>" )
//Vault
gVault = nvault_open ( "moneymod_test1" )
if ( gVault == INVALID_HANDLE )
{
log_amx ( "gVault is invalid to open -> delete the vault to start server." )
}
}
public plugin_end ( )
{
nvault_close ( gVault )
}
public client_authorized ( iPlayer )
{
Load ( iPlayer )
}
public client_disconnect ( iPlayer )
{
Save ( iPlayer )
}
public plugin_natives ( )
{
register_library ( "moneymod" )
register_native ( "mm_get_user_money", "_get_money" )
register_native ( "mm_set_user_money", "_set_money" )
}
public _set_money ( iPlugin, iParams )
{
new iPlayer = get_param ( 1 )
if ( !iPlayer )
return PLUGIN_CONTINUE
iMoney [ iPlayer ] = max ( 0, get_param ( 2 ) )
return iMoney [ iPlayer ]
}
public _get_money ( iPlugin, iParams )
{
return iMoney [ get_param ( 1 ) ]
}
public CmdKilled ( iPlayer )
{
new chance = ItemMaxValue [ RSCHANCE ] * ItemLevel [ iPlayer ] [ RSCHANCE ] / ItemMaxLevel [ RSCHANCE ]
if ( !is_user_alive ( iPlayer ) )
{
if ( cs_get_user_team ( iPlayer ) != CS_TEAM_SPECTATOR )
{
if ( ItemLevel [ iPlayer ] [ RSCHANCE ] >= 1 )
{
if ( !cRespawned [ iPlayer ] )
{
if ( random_num ( 1, 100 ) <= chance )
{
CmdRevivePlayer ( iPlayer )
}
}
}
}
}
}
public CmdRevivePlayer ( iPlayer )
{
new chance = ItemMaxValue [ RSCHANCE ] * ItemLevel [ iPlayer ] [ RSCHANCE ] / ItemMaxLevel [ RSCHANCE ]
new name [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
ColorChat ( 0, GREY, "%s '^4 %s^3 ' got respawned! [^4%i%%%^3]", prefix, name, chance )
ExecuteHamB ( Ham_CS_RoundRespawn, iPlayer )
cRespawned [ iPlayer ] = true
}
public CmdTakeDmg ( iPlayer, inflictor, attacker, Float:damage, damagebits )
{
if ( is_user_alive ( iPlayer ) && ( damagebits & DMG_FALL ) )
{
new CsTeams:team = cs_get_user_team ( iPlayer )
if ( team == CS_TEAM_T || team == CS_TEAM_CT )
{
new iAmount = ItemMaxValue [ FALLDMGREDUCER ] * ItemLevel [ iPlayer ] [ FALLDMGREDUCER ] / ItemMaxLevel [ FALLDMGREDUCER ]
SetHamParamFloat ( 4, damage * ( 1.0 - ( float ( iAmount ) / 100.0 ) ) )
}
}
if ( is_user_alive ( iPlayer ) && ( damagebits ) )
{
new percent = ItemMaxValue [ DMGREDUCER ] * ItemLevel [ iPlayer ] [ DMGREDUCER ] / ItemMaxLevel [ DMGREDUCER ]
SetHamParamFloat ( 4, damage * ( 1.0 - ( float ( percent ) / 100.0 ) ) )
}
if ( ( 1 <= attacker <= get_maxplayers ( ) && iPlayer != attacker ) )
{
new percent = ItemMaxValue [ DMG ] * ItemLevel [ attacker ] [ DMG ] / ItemMaxLevel [ DMG ]
new Float: amount = 1.0 + ( percent / 100 )
SetHamParamFloat ( 4, damage * amount )
}
if ( ItemLevel [ iPlayer ] [ NOPAIN ] >= 1 )
{
set_pdata_float ( iPlayer, 108, 1.0 )
}
return HAM_HANDLED
}
public CmdRoundStart ( )
{
new players [ 32 ], numb, iPlayer
get_players ( players, numb )
for ( new i; i < numb; i++ )
{
iPlayer = players [ i ]
cRespawned [ iPlayer ] = false
}
}
public CmdRoundEnd ( iPlayer )
{
if ( is_user_alive ( iPlayer ) && cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
iMoney [ iPlayer ] += survive
tMoney [ iPlayer ] += survive
ColorChat ( iPlayer, GREY, "%s You gained^4 $%i^3 for surviving the round", prefix, survive )
//Save ( iPlayer )
}
return PLUGIN_HANDLED
}
public CmdDeath ( )
{
new killer = read_data ( 1 )
new victim = read_data ( 2 )
new vicname [ 32 ]
get_user_name ( victim, vicname, sizeof ( vicname ) )
if ( 1 <= killer <= get_maxplayers ( ) && killer != victim )
{
if ( cs_get_user_team ( killer ) != cs_get_user_team ( victim ) )
{
if ( is_user_alive ( killer ) )
{
iMoney [ killer ] += kill
tMoney [ killer ] += kill
ColorChat ( killer, GREY, "%s You killed '^4 %s^3 ' and gained^4 $%i^3", prefix, vicname, kill )
//Save ( killer )
}
}
}
}
public CmdMoneyUpdater ( iPlayer )
{
cs_set_user_money ( iPlayer, iMoney [ iPlayer ] )
set_task ( 0.05, "CmdMoneyUpdater", iPlayer )
}
public CmdSpawn ( iPlayer )
{
if ( is_user_alive ( iPlayer ) )
{
CmdMoneyUpdater ( iPlayer )
set_task ( 8.0, "CmdSetItems", iPlayer )
}
}
//*********************************G I V E***I T E M S***A N D***W E A P O N S**************************************************************************
public CmdSetItems ( iPlayer )
{
if ( is_user_alive ( iPlayer ) )
{
if ( ItemLevel [ iPlayer ] [ HEALTH ] >= 1 )
{
set_user_health ( iPlayer, get_user_health ( iPlayer ) + ItemMaxValue [ HEALTH ] * ItemLevel [ iPlayer ] [ HEALTH ] / ItemMaxLevel [ HEALTH ] )
}
if ( ItemLevel [ iPlayer ] [ ARMOR ] >= 1 )
{
set_user_armor ( iPlayer, ItemMaxValue [ ARMOR ] * ItemLevel [ iPlayer ] [ ARMOR ] / ItemMaxLevel [ ARMOR ] )
}
if ( ItemLevel [ iPlayer ] [ STEALTH ] >= 1 )
{
CmdSetStealth ( iPlayer )
}
if ( ItemLevel [ iPlayer ] [ NOFOOT ] >= 1 && cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
set_user_footsteps ( iPlayer, 1 )
}
}
}
public CmdSetStealth ( iPlayer )
{
new StealthAmount = ItemMaxValue [ STEALTH ] * ItemLevel [ iPlayer ] [ STEALTH ] / ItemMaxLevel [ STEALTH ]
new StealthSet = StealthAmount * 255 / 100
new stealth = 255 - StealthSet
set_user_rendering ( iPlayer, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, stealth )
}
public CmdSetWeapons ( iPlayer )
{
new number [ 5 ], name [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
for ( new iWeap = 0; iWeap < Weapons; iWeap++ )
{
num_to_str ( iWeap, number, sizeof ( number ) - 1 )
new bullets
bullets = 1
if ( VIPLevel [ iPlayer ] >= 1 )
bullets += 1
if ( WeapLevel [ iPlayer ] [ iWeap ] >= 1 )
{
static percent
percent = calc_value ( WeapLevel [ iPlayer ] [ iWeap ], WeapMaxLevel [ iWeap ], WeapMaxValue [ iWeap ] )
if ( is_user_connected ( iPlayer ) )
{
if ( percent > 0 && ( percent == 100 || random_num ( 1, 100 ) <= percent ) )
{
if ( iWeap == SPACE )
return PLUGIN_HANDLED
else if ( iWeap == HEGREN && !user_has_weapon ( iPlayer, WeapCSW [ HEGREN ] ) )
{
give_item ( iPlayer, WeapGive [ HEGREN ] )
ColorChat ( iPlayer, GREY, "%s You got your^4 %s^3! [^4%i%%%^3]", prefix, WeapName [ HEGREN ], percent )
}
else if ( iWeap == FLASH )
{
if ( user_has_weapon ( iPlayer, WeapCSW [ FLASH ] ) )
{
cs_set_user_bpammo ( iPlayer, WeapCSW [ FLASH ], cs_get_user_bpammo ( iPlayer, WeapCSW [ FLASH ] ) + 1 )
ColorChat ( iPlayer, GREY, "%s You got your^4 %s^3! [^4%i%%%^3]", prefix, WeapName [ FLASH ], percent )
}
else
{
give_item ( iPlayer, WeapGive [ FLASH ] )
ColorChat ( iPlayer, GREY, "%s You got your^4 %s^3! [^4%i%%%^3]", prefix, WeapName [ FLASH ], percent )
}
}
else
{
give_item ( iPlayer, WeapName [ iWeap ] )
cs_set_weapon_ammo ( find_ent_by_owner ( iPlayer, WeapGive [ iWeap ], iPlayer ), bullets )
cs_set_user_bpammo ( iPlayer, WeapCSW [ iWeap ], 0 )
ColorChat ( 0, GREY, "%s '^4 %s^3 ' got hes^4 %s^3 with^4 %i^3 bullets! [^4%i%%%^3]", prefix, name, WeapName [ iWeap ], bullets, percent )
}
}
}
}
}
return PLUGIN_HANDLED
}
//***************************************M E N U S*****************************************************************************************************
public CmdMenuShow ( iPlayer )
{
new title [ 190 ]
formatex ( title, sizeof ( title ) - 1, "\r[EG]\w Money Mod^n\y- Main Menu\w" )
new menu = menu_create ( title, "CmdMenuHandle" )
new Temp [ 190 ]
menu_additem ( menu, "Player Info^n", "1", 0 )
menu_additem ( menu, "Item Upgrades^n", "2", 0 )
menu_additem ( menu, "Weapon Upgrades^n", "3", 0 )
if ( VIPLevel [ iPlayer ] >= 1 )
formatex ( Temp, sizeof ( Temp ) - 1, "\yVIP:\w Yes (\r1 Extra Bullet\w)" )
else if ( iMoney [ iPlayer ] < VIPPrice )
formatex ( Temp, sizeof ( Temp ) - 1, "\dVIP:\w No (\r1 Extra Bullet\w)\d $%i", VIPPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "VIP: No (\r1 Extra Bullet\w)\y $%i", VIPPrice )
menu_additem ( menu, Temp, "4", 0 )
menu_display ( iPlayer, menu, 0 )
return PLUGIN_HANDLED
}
public CmdMenuHandle ( iPlayer, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
return PLUGIN_HANDLED
}
new data [ 6 ], gName [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, sizeof ( data ) - 1, gName, sizeof ( gName ) - 1, callback )
new key = str_to_num ( data )
switch ( key )
{
case 1: CmdPlayerShow ( iPlayer )
case 2: CmdItemShow ( iPlayer )
case 3: CmdWeapShow ( iPlayer )
case 4:
{
if ( VIPLevel [ iPlayer ] >= 1 )
{
ColorChat ( iPlayer, GREY, "%s You are already^4 VIP^3!", prefix )
return PLUGIN_HANDLED
}
else if ( iMoney [ iPlayer ] < VIPPrice )
{
ColorChat ( iPlayer, GREY, "%s You need more money to buy^4 VIP^3!", prefix )
return PLUGIN_HANDLED
}
else
{
ColorChat ( iPlayer, GREY, "%s You bought^4 VIP^3!", prefix )
VIPLevel [ iPlayer ] += 1
//Save ( iPlayer )
}
}
}
return PLUGIN_HANDLED
}
public CmdPlayerShow ( iPlayer )
{
new menu = menu_create ( "\r[EG]\w Money Mod^n\y- Player Menu\w", "CmdPlayerHandle" )
new players [ 32 ], numb, tempid, nameShow [ 190 ]
new name [ 32 ], tempId [ 10 ]
get_players ( players, numb )
for ( new i; i < numb; i++ )
{
tempid = players [ i ]
get_user_name ( tempid, name, sizeof ( name ) - 1 )
num_to_str ( tempid, tempId, sizeof ( tempId ) - 1 )
if ( iPlayer == tempid )
formatex ( nameShow, sizeof ( nameShow ) - 1, "\y%s \r$%i\w", name, iMoney [ tempid ] )
else
formatex ( nameShow, sizeof ( nameShow ) - 1, "%s \r$%i\w", name, iMoney [ tempid ] )
menu_additem ( menu, nameShow, tempId, 0 )
}
menu_display ( iPlayer, menu, 0 )
}
public CmdPlayerHandle ( iPlayer, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
CmdMenuShow ( iPlayer )
return PLUGIN_HANDLED
}
new data [ 6 ], name [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, 5, name, 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:#FFFFFF; color:#000000^">" )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Player info for<b> %s</b><br>", tempname )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Current Money: <b>%i</b><br>", iMoney [ tempid ] )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Total Money: <b>%i</b><br><br>", tMoney [ tempid ] )
if ( VIPLevel [ iPlayer ] >= 1 )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Player VIP: <b>Yes</b><br><br>" )
else
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Player VIP: <b>No</b<<br><br>" )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Item Upgrades:<br><br>" )
for ( new iItem = 0; iItem < Items; iItem++ )
{
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b>%s:</b> %i / %i<br>", ItemName [ iItem ], ItemLevel [ iPlayer ] [ iItem ], ItemMaxLevel [ iItem ] )
}
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<br><br>Weapon Upgrades:<br><br>" )
for ( new iWeap = 0; iWeap < Weapons; iWeap++ )
{
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b>%s:</b> %i / %i<br>", WeapName [ iWeap ], WeapLevel [ iPlayer ] [ iWeap ], WeapMaxLevel [ iWeap ] )
}
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "</body>" )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "</html>" )
show_motd ( iPlayer, motd, "#MM | Player Info" )
return PLUGIN_HANDLED
}
public CmdWeapShow ( iPlayer )
{
new menu = menu_create ( "\r[EG]\w Money Mod^n\y- Weapon Upgrades\w", "CmdWeapHandle" )
new Temp [ 190 ], iPrice, level, level2, iAmount, numb [ 5 ]
for ( new iItem = 0; iItem < Weapons; iItem++ )
{
num_to_str ( iItem, numb, sizeof ( numb ) - 1 )
level = WeapLevel [ iPlayer ] [ iItem ]
level2 = level + 1
iPrice = WeapFirstCost [ iItem ] * ( 1 << ( level2 - 1 ) )
iAmount = WeapMaxValue [ iItem ] * level / WeapMaxLevel [ iItem ]
if ( WeapLevel [ iPlayer ] [ iItem ] >= WeapMaxLevel [ iItem ] )
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Level %i (\r%i%s\w)", WeapName [ iItem ], level, iAmount, WeapShort [ iItem ] )
else if ( iMoney [ iPlayer ] < iPrice )
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\w Level %i (\r%i%s\w)\d $%i", WeapName [ iItem ], level, iAmount, WeapShort [ iItem ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\w%s: Level %i (\r%i%s\w)\y $%i", WeapName [ iItem ], level, iAmount, WeapShort [ iItem ], iPrice )
if ( iItem == SPACE )
menu_addblank ( menu, 0 )
else
menu_additem ( menu, Temp, numb )
}
menu_display ( iPlayer, menu, 0 )
}
public CmdWeapHandle ( iPlayer, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
CmdMenuShow ( iPlayer )
return PLUGIN_HANDLED
}
new data [ 6 ], name [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, 5, name, 63, callback )
new iItem = str_to_num ( data )
new level, level2, iPrice, message [ 290 ]
level = WeapLevel [ iPlayer ] [ iItem ]
level2 = level + 1
iPrice = WeapFirstCost [ iItem ] * ( 1 << ( level2 - 1 ) )
if ( level >= WeapMaxLevel [ iItem ] )
{
formatex ( message, sizeof ( message ) - 1, "%s^4 %s^3 is already fully upgraded", prefix, WeapName [ iItem ] )
return PLUGIN_HANDLED
}
else if ( iMoney [ iPlayer ] < iPrice )
{
formatex ( message, sizeof ( message ) - 1, "%s You need^4 $%i^3 more to upgrade^4 %s^3 Level^4 %i^3", prefix, iPrice - iMoney [ iPlayer ], WeapName [ iItem ], level2 )
return PLUGIN_HANDLED
}
else
{
iMoney [ iPlayer ] -= iPrice
formatex ( message, sizeof ( message ) - 1, "%s You upgraded^4 %s^3 Level^4 %i^3", prefix, WeapName [ iItem ], level2 )
WeapLevel [ iPlayer ] [ iItem ] += 1
//Save ( iPlayer )
}
ColorChat ( iPlayer, GREY, message )
return PLUGIN_HANDLED
}
public CmdItemShow ( iPlayer )
{
new menu = menu_create ( "\r[EG]\w Money Mod^n\y- Item Upgrades\w", "CmdItemHandle" )
new Temp [ 190 ], iPrice, level, level2, iAmount, numb [ 5 ]
for ( new iItem = 0; iItem < Items; iItem++ )
{
num_to_str ( iItem, numb, sizeof ( numb ) - 1 )
level = ItemLevel [ iPlayer ] [ iItem ]
level2 = level + 1
iPrice = ItemFirstCost [ iItem ] * ( 1 << ( level2 - 1 ) )
iAmount = ItemMaxValue [ iItem ] * level / ItemMaxLevel [ iItem ]
if ( ItemLevel [ iPlayer ] [ iItem ] >= ItemMaxLevel [ iItem ] )
if ( iItem == NOPAIN || iItem == NOFLASH || iItem == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Already Bought", ItemName [ iItem ] )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Level %i (\r%i%s\w)", ItemName [ iItem ], level, iAmount, ItemShort [ iItem ] )
else if ( iMoney [ iPlayer ] < iPrice )
if ( iItem == NOPAIN || iItem == NOFLASH || iItem == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s: $%i", ItemName [ iItem ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\w Level %i (\r%i%s\w)\d $%i", ItemName [ iItem ], level, iAmount, ItemShort [ iItem ], iPrice )
else
if ( iItem == NOPAIN || iItem == NOFLASH || iItem == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\w%s:\y $%i", ItemName [ iItem ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\w%s: Level %i (\r%i%s\w)\y $%i", ItemName [ iItem ], level, iAmount, ItemShort [ iItem ], iPrice )
menu_additem ( menu, Temp, numb )
}
menu_display ( iPlayer, menu, 0 )
}
public CmdItemHandle ( iPlayer, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
CmdMenuShow ( iPlayer )
return PLUGIN_HANDLED
}
new data [ 6 ], name [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, 5, name, 63, callback )
new iItem = str_to_num ( data )
new level, level2, iPrice, message [ 290 ]
level = ItemLevel [ iPlayer ] [ iItem ]
level2 = level + 1
iPrice = ItemFirstCost [ iItem ] * ( 1 << ( level2 - 1 ) )
if ( level >= ItemMaxLevel [ iItem ] )
{
formatex ( message, sizeof ( message ) - 1, "%s^4 %s^3 is already fully upgraded", prefix, ItemName [ iItem ] )
return PLUGIN_HANDLED
}
else if ( iMoney [ iPlayer ] < iPrice )
{
formatex ( message, sizeof ( message ) - 1, "%s You need^4 $%i^3 more to upgrade^4 %s^3 Level^4 %i^3", prefix, iPrice - iMoney [ iPlayer ], ItemName [ iItem ], level2 )
return PLUGIN_HANDLED
}
else
{
iMoney [ iPlayer ] -= iPrice
formatex ( message, sizeof ( message ) - 1, "%s You upgraded^4 %s^3 Level^4 %i^3", prefix, ItemName [ iItem ], level2 )
ItemLevel [ iPlayer ] [ iItem ] += 1
//Save ( iPlayer )
}
ColorChat ( iPlayer, GREY, message )
return PLUGIN_HANDLED
}
public CmdRemoveMoney ( iPlayer, level, cid )
{
if ( !cmd_access ( iPlayer, level, cid, 3 ) )
{
return PLUGIN_HANDLED
}
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new moneys [ 32 ]
read_argv ( 2, moneys, sizeof ( moneys ) )
new MoneyToGive = str_to_num ( moneys )
new iTarget
new name [ 32 ]
new name2 [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
{
iTarget = cmd_target ( iPlayer, arg, sizeof ( arg ) - 1 )
get_user_name ( iTarget, name2, sizeof ( name2 ) - 1 )
if ( !iTarget )
{
return PLUGIN_HANDLED
}
iMoney [ iTarget ] -= MoneyToGive
ColorChat ( 0, GREY, "%s '^4 %s^3 ' removed^4 $%i^3 to '^4 %s^3 '", prefix, name, MoneyToGive, name2 )
}
return PLUGIN_HANDLED
}
public CmdDonate ( iPlayer, level, cid )
{
if ( tMoney [ iPlayer ] < donate_minimum )
{
console_print ( iPlayer, "MoneyMod: You need a total of $%i to donate!", donate_minimum )
return PLUGIN_HANDLED
}
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new moneys [ 32 ]
read_argv ( 2, moneys, sizeof ( moneys ) )
new MoneyToGive = str_to_num ( moneys )
new iTarget
new name [ 32 ]
new name2 [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
{
iTarget = cmd_target ( iPlayer, arg, sizeof ( arg ) - 1 )
get_user_name ( iTarget, name2, sizeof ( name2 ) - 1 )
if ( !iTarget )
{
return PLUGIN_HANDLED
}
iMoney [ iTarget ] += MoneyToGive
tMoney [ iTarget ] += MoneyToGive
iMoney [ iPlayer ] -= MoneyToGive
ColorChat ( 0, GREY, "%s '^4 %s^3 ' donated^4 $%i^3 to '^4 %s^3 '", prefix, name, MoneyToGive, name2 )
}
return PLUGIN_HANDLED
}
public CmdAddMoney ( iPlayer, level, cid )
{
if ( !cmd_access ( iPlayer, level, cid, 3 ) )
{
return PLUGIN_HANDLED
}
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new moneys [ 32 ]
read_argv ( 2, moneys, sizeof ( moneys ) )
new MoneyToGive = str_to_num ( moneys )
new iTarget
new name [ 32 ]
new name2 [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
{
iTarget = cmd_target ( iPlayer, arg, sizeof ( arg ) - 1 )
get_user_name ( iTarget, name2, sizeof ( name2 ) - 1 )
if ( !iTarget )
{
return PLUGIN_HANDLED
}
iMoney [ iTarget ] += MoneyToGive
tMoney [ iTarget ] += MoneyToGive
ColorChat ( 0, GREY, "%s '^4 %s^3 ' added^4 $%i^3 to '^4 %s^3 '", prefix, name, MoneyToGive, name2 )
}
return PLUGIN_HANDLED
}
public CmdAddVIP ( iPlayer, level, cid )
{
if ( !cmd_access ( iPlayer, level, cid, 3 ) )
{
return PLUGIN_HANDLED
}
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new iTarget
new name [ 32 ]
new name2 [ 32 ]
get_user_name ( iPlayer, name, sizeof ( name ) )
{
iTarget = cmd_target ( iPlayer, arg, sizeof ( arg ) - 1 )
get_user_name ( iTarget, name2, sizeof ( name2 ) - 1 )
if ( !iTarget )
{
return PLUGIN_HANDLED
}
VIPLevel [ iTarget ] += 1
ColorChat ( 0, GREY, "%s '^4 %s^3 ' gave^4 VIP^3 to '^4 %s^3 '", prefix, name, name2 )
}
return PLUGIN_HANDLED
}
public CmdRoll ( iPlayer )
{
if ( get_gametime ( ) < LastRoll [ iPlayer ] + rolltime )
{
ColorChat ( iPlayer, GREY, "%s You need to wait^4 %d^3 seconds before rolling again!", prefix, floatround ( LastRoll [ iPlayer ] + rolltime - get_gametime ( ) + 1 ) )
return PLUGIN_HANDLED
}
new name [ 32 ]
get_user_name ( iPlayer, name, 32 )
new number = random_num ( 1, 6 )
if ( number == 1 )
{
iMoney [ iPlayer ] += roll1
tMoney [ iPlayer ] += roll1
ColorChat ( iPlayer, GREY, "%s '^4 %s^3 ' rolled^4 %i^3 and won^4 $%i^3!", prefix, name, number, roll1 )
LastRoll [ iPlayer ] = get_gametime ( )
}
else if ( number == 6 )
{
iMoney [ iPlayer ] += roll6
tMoney [ iPlayer ] += roll6
ColorChat ( iPlayer, GREY, "%s '^4 %s^3 ' rolled^4 %i^3 and won^4 $%i^3!", prefix, name, number, roll1 )
LastRoll [ iPlayer ] = get_gametime ( )
}
else if ( number >= 2 && number <= 5 )
{
ColorChat ( iPlayer, GREY, "%s You rolled^4 %i^3 and didn't win anything!", prefix, number )
LastRoll [ iPlayer ] = get_gametime ( )
}
return PLUGIN_HANDLED
}
public CmdGetFlashed ( iPlayer )
{
new Float: gametime = get_gametime ( )
if ( gametime != cGametime )
{
cGametime = gametime
for ( new i = 0; i < 33; i++ )
{
cTrack [ i ] = false
}
cTrackEnemy = false
}
if ( ItemLevel [ iPlayer ] [ NOFLASH ] >= 1 )
{
cTrackEnemy = true
message_begin ( MSG_ONE, cMsgScreenFade, { 0, 0, 0 }, iPlayer )
write_short ( 1 )
write_short ( 1 )
write_short ( 1 )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 255 )
message_end ( )
}
}
public CmdFlashDelay ( )
{
if ( cTrackEnemy == false )
{
for ( new i = 0; i < 33; i++ )
{
if ( cTrack [ i ] == true && is_user_connected ( i ) )
{
message_begin ( MSG_ONE, cMsgScreenFade, { 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 calc_value ( const player_level, const max_level, const max_value )
{
return ( max_value * player_level / max_level )
}
//*****************S A V E***A N D***L O A D********************************************************************************************************************************
public Load ( iPlayer )
{
new iAuth [ 32 ]
get_user_authid ( iPlayer, iAuth, 32 )
static data [ 256 ], timestamp
if ( nvault_lookup ( gVault, iAuth, data, sizeof ( data ) - 1, timestamp ) )
{
ParseLoadData ( iPlayer, data )
}
else
{
NewUser ( iPlayer )
}
}
public NewUser ( iPlayer )
{
iMoney [ iPlayer ] = start
tMoney [ iPlayer ] = start
VIPLevel [ iPlayer ] = 0
for ( new iWeap = 0; iWeap < Weapons; iWeap++ )
{
WeapLevel [ iPlayer ] [ iWeap ] = 0
}
for ( new iItem = 0; iItem < Items; iItem++ )
{
ItemLevel [ iPlayer ] [ iItem ] = 0
}
}
ParseLoadData ( iPlayer, data [ 256 ] )
{
static num [ 6 ]
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
iMoney [ iPlayer ] = str_to_num ( num )
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
tMoney [ iPlayer ] = clamp ( str_to_num ( num ), 0, -1 )
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
VIPLevel [ iPlayer ] = clamp ( str_to_num ( num ), 0, -1 )
for ( new iWeap = 0; iWeap < Weapons; iWeap++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
WeapLevel [ iPlayer ] [ iWeap ] = clamp ( str_to_num ( num ), 0, WeapMaxLevel [ iWeap ] )
}
for ( new iItem = 0; iItem < Items; iItem++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
ItemLevel [ iPlayer ] [ iItem ] = clamp ( str_to_num ( num ), 0, ItemMaxLevel [ iItem ] )
}
}
public Save ( iPlayer )
{
new iAuth [ 32 ]
get_user_authid ( iPlayer, iAuth, 32 )
static data [ 256 ]
new len = formatex ( data, sizeof ( data ) - 1, "%i", iMoney [ iPlayer ] )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", tMoney [ iPlayer ] )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", VIPLevel [ iPlayer ] )
for ( new iWeap = 0; iWeap < Weapons; iWeap++ )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", WeapLevel [ iPlayer ] [ iWeap ] )
for ( new iItem = 0; iItem < Items; iItem++ )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", ItemLevel [ iPlayer ] [ iItem ] )
nvault_set ( gVault, iAuth, data )
}