hello there!,i need little help.. who can see what the problem is?.
PHP Code:
/*
* [PM] Pointmod by Zer0Cool
*
* Description:
* Get points by killing the enemy upgrade ur skillz with the points you earn.
*
* Changelog:
* v1.0. - Added Ct & T menu
* v1.1. - Added Give & Remove points & Points Replaced with Money hud
* v1.2. - Added Rank & Top15
* v1.3. - Optimized
*
*
* [---------------- Chat Commands ----------------]
*
* Say: /pm
* Say: /pointmod
* Say: /pmod
* Say: /point
* Function: Open MainMenu
*
* Say: /rank
* Function: Shows ur rank
*
* Say: /top15
* Function: Open Top15 motd
*
*
* [-------------------------------------------------------]
*
* [---------------- Top15 & Rank ----------------]
*
* Top15 & Rank is based on the kills the players make for each kill
* they make they get 1 point. The top15 is based on the 15 players
* with the most points
*
* [----------------------------------------------]
*
* [---------------- Pointmod Futures ----------------]
*
* - Donate Menu | You can donate ur points To other players
* - Top3 Vip Acces | The top3 Players will get vip acces
* - Vip Menu | Top3 Players get acces to an vip menu
* - Weapon chance | Players can upgrade The chance of a weapon in this menu
* - Vip Extra Bullet | Top3 Players will get 1 bullet extra on every chanced weapon
*
* [----------------------------------------------]
*
*
* If you find any error, bugs or warnings, please PM me in steam: joery7894
* Give me some suggestions for this plugin also! :)
*/
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < hamsandwich >
#include < fun >
#include < fakemeta >
#include < engine >
#include < nvault >
#include < nvault_util >
#include < colorchat >
new const Plugin[] = "Pointmod";
new const Version[] = "1.5";
new const Author[] = "Zer0Cool";
new const prefix[] = "^4[Pointmod]^3";
new cFirstTime [ 33 ]
/* Terrorist Upgrades */
enum _:TUpgrades
{
HEALTH,
ARMOR,
RS,
FDR,
DMG,
NOPAIN,
NOFOOT
}
new const TMaxLevel [ TUpgrades ] =
{
5,
5,
5,
5,
5,
1,
1
}
new const TMaxValue [ TUpgrades ] =
{
100,
200,
25,
50,
20,
1,
1
}
new const TFirstCost [ TUpgrades ] =
{
42,
28,
86,
44,
60,
240,
200
}
new const TName [ TUpgrades ] [ ] =
{
"Extra Health",
"Armor",
"Respawn Chance",
"Fall Damage Reducer",
"Extra Damage",
"No Pain Shock",
"No Foot Steps"
}
new const TShort [ TUpgrades ] [ ] =
{
" HP",
" AP",
"%",
"%",
"%",
"",
""
}
/* Counter Terrorist Upgrades */
enum _:CTUpgrades
{
HEALTH,
ARMOR,
RS,
FDR,
DMG,
NOPAIN,
NOFLASH
}
new const CTMaxLevel [ CTUpgrades ] =
{
5,
5,
5,
5,
5,
1,
1
}
new const CTMaxValue [ CTUpgrades ] =
{
100,
200,
50,
50,
20,
1,
1
}
new const CTFirstCost [ CTUpgrades ] =
{
38,
24,
80,
38,
44,
210,
180
}
new const CTName [ CTUpgrades ] [ ] =
{
"Extra Health",
"Armor",
"Respawn Chance",
"Fall Damage Reducer",
"Extra Damage",
"No Pain Shock",
"No Flash"
}
new const CTShort [ CTUpgrades ] [ ] =
{
" HP",
" AP",
"%",
"%",
"%",
"",
""
}
/* Upgrades Level*/
new CTLevel [ 33 ] [ CTUpgrades ]
new TLevel [ 33 ] [ TUpgrades ]
/* Points PointsTop */
new iPoint [ 33 ], iPointTop [ 33 ]
new iPointKill [ 33 ], iPointHs [ 33 ], iPointDeath [ 33 ]
new RankInfo[ 33 ]
/* Cvars */
new talentkill, talenths, talentsuicide, talentdie, pointStart, pStart
/* No Flash */
new cMsgScreenFade
/* Save Points, Level & Top15 */
new gVault, gTopVault, gNameVault
new g_iAuthID [ 33 ] [ 36 ]
new Float: cGametime
new bool: cRespawnedOnce [ 33 ]
new bool: cTrack [ 33 ]
new bool: cTrackEnemy
public plugin_init ( )
{
register_plugin(Plugin, Version, Author);
/* Say Commmands */
new cmd [ ] = "CmdMenuShow"
register_clcmd ( "say /pm", cmd )
register_clcmd ( "say /pmod", cmd )
register_clcmd ( "say /point", cmd )
register_clcmd ( "say /pointmod", cmd )
register_clcmd ( "say_team /pm", cmd )
register_clcmd("say /rank", "CmdRank");
register_clcmd("say /top15", "CmdTop");
/* Cvars */
talentkill = register_cvar ( "pm_point_kill", "1" )
talenths = register_cvar ( "pm_point_headshot", "2" )
talentsuicide = register_cvar ( "pm_point_suicide", "5" )
talentdie = register_cvar ( "pm_point_die", "1" )
pointStart = register_cvar ( "pm_point_start", "200" )
pStart = get_pcvar_num ( pointStart )
/* Admin Give ore Remove Points */
register_concmd ( "pm_give_points", "CmdAddPoints", ADMIN_RCON, "<nick, #userid, authid> <points>" )
register_concmd ( "pm_remove_points", "CmdRemovePoints", ADMIN_RCON, "<nick, #userid, authid> <points>" )
/* No Flash */
cMsgScreenFade = get_user_msgid ( "ScreenFade" )
register_event ( "DeathMsg", "CmdDeathMessage", "a" )
register_event ( "ScreenFade", "CmdGetFlashed", "br", "4=255", "5=255", "6=255", "7>199" )
RegisterHam ( Ham_TakeDamage, "player", "CmdPlayerDamage", 1 )
RegisterHam ( Ham_Killed, "player", "CmdKilled", 1 )
RegisterHam ( Ham_Spawn, "player", "CmdSpawn", 1 )
gVault = nvault_open ( "Pointmod" )
gTopVault = nvault_open("PointmodTop")
gNameVault = nvault_open("PointmodName")
}
public plugin_natives ( )
{
register_library ( "pointmod" )
register_native ( "pm_set_user_point", "_set_point" )
register_native ( "pm_get_user_point", "_get_point" )
register_native ( "pm_get_healthct", "_get_CThealth" )
register_native ( "pm_get_healtht", "_get_Thealth" )
register_native ( "pm_set_user_toppoint", "_set_pointtop" )
register_native ( "pm_get_user_toppoint", "_get_pointtop" )
}
public _get_CThealth ( plugin, params )
{
return CTLevel [ get_param ( 1 ) ] [ HEALTH ]
}
public _get_Thealth ( plugin, params )
{
return TLevel [ get_param ( 1 ) ] [ HEALTH ]
}
public _get_point ( plugin, params )
{
return iPoint[ get_param ( 1 ) ]
}
public _set_point ( plugin, params )
{
new client = get_param ( 1 )
iPoint [ client ] = max ( 0, get_param ( 2 ) )
Save ( client )
return iPoint [ client ]
}
public _get_pointtop ( plugin, params )
{
return iPointTop[ get_param ( 1 ) ]
}
public _set_pointtop ( plugin, params )
{
new client = get_param ( 1 )
iPointTop [ client ] = max ( 0, get_param ( 2 ) )
Save ( client )
return iPoint [ client ]
}
public plugin_end ( )
{
nvault_close ( gVault )
}
public client_authorized ( iPlayer )
{
get_user_authid ( iPlayer, g_iAuthID [ iPlayer ], charsmax ( g_iAuthID [ ] ) )
Load ( iPlayer )
RankInfo[ iPlayer ] = false
}
public client_disconnect ( iPlayer )
{
Save ( iPlayer )
RankInfo[ iPlayer ] = false
}
public CmdSpawn ( iPlayer )
{
if ( is_user_alive ( iPlayer ) )
set_task ( 8.0, "SetItems", iPlayer )
eUpdateMoney ( iPlayer )
if((get_user_flags(iPlayer) & ADMIN_LEVEL_H))
return PLUGIN_CONTINUE
new Array:aNames, Array:aSteamIDs, Array:aXPs;
new iTotal = SortTopPlayers(aNames, aSteamIDs, aXPs);
if(iTotal <= 3)
{
set_user_flags(iPlayer, get_user_flags(iPlayer) | ADMIN_LEVEL_H)
}
else
{
set_user_flags(iPlayer, get_user_flags(iPlayer) | ADMIN_USER)
}
return PLUGIN_CONTINUE
}
/* Cmd Money Replace with Points */
public eUpdateMoney ( iPlayer )
{
new gPoint = iPoint[iPlayer]
cs_set_user_money ( iPlayer, gPoint )
set_task ( 0.2, "eUpdateMoney", iPlayer )
}
/* Cmd Set items Round start */
public SetItems ( iPlayer )
{
new health_amount_t = TMaxValue [ HEALTH ] * TLevel [ iPlayer ] [ HEALTH ] / TMaxLevel [ HEALTH ]
new health_amount_ct = CTMaxValue [ HEALTH ] * CTLevel [ iPlayer ] [ HEALTH ] / CTMaxLevel [ HEALTH ]
new armor_amount_t = TMaxValue [ ARMOR ] * TLevel [ iPlayer ] [ ARMOR ] / TMaxLevel [ ARMOR ]
new armor_amount_ct = CTMaxValue [ ARMOR ] * CTLevel [ iPlayer ] [ ARMOR ] / CTMaxLevel [ ARMOR ]
if ( cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
if ( TLevel [ iPlayer ] [ HEALTH ] >= 1 )
{
set_user_health ( iPlayer, get_user_health ( iPlayer ) + health_amount_t )
}
if ( TLevel [ iPlayer ] [ ARMOR ] >= 1 )
{
set_user_armor ( iPlayer, armor_amount_t )
}
if ( TLevel [ iPlayer ] [ NOFOOT ] >= 1 )
set_user_footsteps ( iPlayer, 1 )
}
else if ( cs_get_user_team ( iPlayer ) == CS_TEAM_CT )
{
if ( CTLevel [ iPlayer ] [ HEALTH ] >= 1 )
{
set_user_health ( iPlayer, get_user_health ( iPlayer ) + health_amount_ct )
}
if ( CTLevel [ iPlayer ] [ ARMOR ] >= 1 )
{
set_user_armor ( iPlayer, armor_amount_ct )
}
}
}
/* Cmd Make a kill ore die */
public CmdKilled ( iPlayer )
{
new ct_chance = CTMaxValue [ RS ] * CTLevel [ iPlayer ] [ RS ] / CTMaxLevel [ RS ]
new t_chance = TMaxValue [ RS ] * TLevel [ iPlayer ] [ RS ] / TMaxLevel [ RS ]
new name [ 32 ]
get_user_name ( iPlayer, name, 32 )
if ( CTLevel [ iPlayer ] [ RS ] >= 1 || TLevel [ iPlayer ] [ RS ] >= 1 )
{
if ( !is_user_alive ( iPlayer ) )
{
if ( !cRespawnedOnce [ iPlayer ] )
{
if ( cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
if ( random_num ( 1, 100 ) <= t_chance )
{
ColorChat ( 0, GREY, "%s '^4 %s^3 ' got respawned as a^4 Terroist^3! (^4%i%%%^3)", prefix, name, t_chance )
ExecuteHamB ( Ham_CS_RoundRespawn, iPlayer )
cRespawnedOnce [ iPlayer ] = true
}
}
else if ( cs_get_user_team ( iPlayer ) == CS_TEAM_CT )
{
if ( random_num ( 1, 100 ) <= ct_chance )
{
ColorChat ( 0, GREY, "%s '^4 %^3 ' got respawned as a^4 CT^3! (^4%i%%%^3)", prefix, name, ct_chance )
ExecuteHamB ( Ham_CS_RoundRespawn, iPlayer )
cRespawnedOnce [ iPlayer ] = true
}
}
}
}
}
}
public CmdPlayerDamage ( iPlayer, inflictor, attacker, Float:damage, damagebits )
{
new ct_falldmg = CTMaxValue [ FDR ] * CTLevel [ iPlayer ] [ FDR ] / CTMaxLevel [ FDR ]
new t_falldmg = TMaxValue [ FDR ] * TLevel [ iPlayer ] [ FDR ] / TMaxLevel [ FDR ]
new ct_dmg = CTMaxValue [ DMG ] * CTLevel [ iPlayer ] [ DMG ] / CTMaxLevel [ DMG ]
new t_dmg = TMaxValue [ DMG ] * TLevel [ iPlayer ] [ DMG ] / TMaxLevel [ DMG ]
if ( is_user_alive ( iPlayer ) && ( damagebits & DMG_FALL ) )
{
if ( cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
SetHamParamFloat ( 4, damage * ( 1.0 - ( float ( t_falldmg ) / 100.0 ) ) )
}
else if ( cs_get_user_team ( iPlayer ) == CS_TEAM_CT )
{
SetHamParamFloat ( 4, damage * ( 1.0 - ( float ( ct_falldmg ) / 100.0 ) ) )
}
}
if ( ( 1 <= attacker <= get_maxplayers ( ) && iPlayer != attacker ) )
{
if ( cs_get_user_team ( iPlayer ) == CS_TEAM_T )
{
SetHamParamFloat ( 4, damage * ( 1.0 + ( float ( t_dmg ) / 100.0 ) ) )
}
else
{
SetHamParamFloat ( 4, damage * ( 1.0 + ( float ( ct_dmg ) / 100.0 ) ) )
}
}
if ( TLevel [ iPlayer ] [ NOPAIN ] >= 1 || CTLevel [ iPlayer ] [ NOPAIN ] >= 1 )
{
set_pdata_float ( iPlayer, 108, 1.0 )
}
return HAM_HANDLED
}
public CmdDeathMessage ( )
{
new killer = read_data ( 1 )
new victim = read_data ( 2 )
new talent_gain, talent_gainTop, talent_gainKill, talent_gainHs
new vname [ 32 ], kname [ 32 ]
get_user_name ( killer, kname, 32 )
get_user_name ( victim, vname, 32 )
if ( ( 1 <= killer <= get_maxplayers ( ) ) && killer != victim )
{
if ( cs_get_user_team ( killer ) != cs_get_user_team ( victim ) )
{
if ( is_user_alive ( killer ) )
{
{
talent_gain += get_pcvar_num ( talentkill )
talent_gainTop += get_pcvar_num ( talentkill )
talent_gainKill += 1
}
if ( read_data ( 3 ) )
{
talent_gain += get_pcvar_num ( talenths )
talent_gainTop += get_pcvar_num ( talenths )
talent_gainHs += 1
}
iPoint [ killer ] += talent_gain
iPoint [ victim ] -= get_pcvar_num ( talentdie )
iPointTop [ killer ] += talent_gainTop
iPointKill [ killer ] += talent_gainKill
iPointHs [ killer ] += talent_gainHs
iPointDeath [ victim ] += 1
ColorChat ( killer, GREY, "%s You gained^4 %i^3 Points for killing^4 %s^3", prefix, talent_gain, vname )
ColorChat ( victim, GREY, "%s You lost^4 %i^3 Points for getting killed by^4 %s^3", prefix, get_pcvar_num ( talentdie ), kname )
Save ( victim )
Save ( killer )
}
}
}
else
{
iPoint [ victim ] -= get_pcvar_num ( talentsuicide )
iPointDeath [ victim ] += 1
ColorChat ( victim, GREY, "%s You lost^4 %i^3 Points for suiciding", prefix, get_pcvar_num ( talentsuicide ) )
Save ( victim )
}
}
public CmdMenuShow(iPlayer)
{
new szTemp[120];
new MainMenu = menu_create("\r[PM]\w Pointmod by \yZer0Cool^n- MainMenu", "CmdMenuHandle");
if ( RankInfo[ iPlayer ] )
formatex ( szTemp, sizeof ( szTemp ) - 1, "Rank Info^n- \yTotal Points: \r%i^n\w- \yKills: \r%i^n\w- \yHeadshots: \r%i^n\w- \yDeaths: \r%i^n" , iPointTop [ iPlayer ], iPointKill [ iPlayer ], iPointHs [ iPlayer ], iPointDeath [ iPlayer ] )
else
formatex ( szTemp, sizeof ( szTemp ) - 1, "Rank Info^n" )
menu_additem ( MainMenu, szTemp, "1", 0 )
formatex(szTemp, charsmax(szTemp), "Point Top");
menu_additem(MainMenu, szTemp, "2");
formatex(szTemp, charsmax(szTemp), "Player info^n");
menu_additem(MainMenu, szTemp, "3");
formatex(szTemp, charsmax(szTemp), "Terrorist Menu");
menu_additem(MainMenu, szTemp, "4");
formatex(szTemp, charsmax(szTemp), "Counter Terrorist Menu^n");
menu_additem(MainMenu, szTemp, "5");
if ( get_user_flags ( iPlayer ) & ADMIN_LEVEL_H )
formatex ( szTemp, sizeof ( szTemp ) - 1, "VIP Menu^n- Vip: \yYes^n^n\wYour Points: \r%i", iPoint [ iPlayer ]);
else
formatex ( szTemp, sizeof ( szTemp ) - 1, "VIP Menu^n- Vip: \rNo^n^n\wYour Points: \r%i", iPoint [ iPlayer ]);
menu_additem ( MainMenu, szTemp, "6", 0 )
menu_setprop(MainMenu, MPROP_EXITNAME, "Close");
menu_display(iPlayer, MainMenu);
}
public CmdMenuHandle ( iPlayer, menu, item )
{
new data [ 6 ], name [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, 5, name, 63, callback )
new key = str_to_num ( data )
switch ( key )
{
case 1: ToggleRankInfo ( iPlayer )
case 2: CmdTop ( iPlayer )
case 3: CmdPlayerShow ( iPlayer )
case 4: CmdTShow ( iPlayer )
case 5: CmdCTShow ( iPlayer )
case 6:
{
if ( get_user_flags ( iPlayer ) & ADMIN_LEVEL_H )
{
CmdVipShow ( iPlayer )
}
else
{
ColorChat ( iPlayer, GREY, "%s ^1You need to be a^3 Vip ^1to use this^3 command!", prefix )
CmdMenuShow ( iPlayer )
}
}
}
return PLUGIN_HANDLED
}
ToggleRankInfo ( iPlayer )
{
if ( RankInfo[ iPlayer ] )
{
RankInfo[ iPlayer ] = false
CmdMenuShow(iPlayer)
ColorChat ( iPlayer, GREY, "%s Rank Info ^1has been disabled^3!", prefix )
}
else
{
RankInfo[ iPlayer ] = true
CmdMenuShow(iPlayer)
ColorChat ( iPlayer, GREY, "%s Rank Info ^1has been^3 Enabled!", prefix )
}
}
public CmdVipShow(iPlayer)
{
new szTemp[120];
new MainMenu = menu_create("\r[PM]\w Pointmod by \yZer0Cool^n- MainMenu", "CmdVipHandle");
formatex(szTemp, charsmax(szTemp), "Vip coming");
menu_additem(MainMenu, szTemp, "1");
menu_setprop(MainMenu, MPROP_EXITNAME, "Close");
menu_display(iPlayer, MainMenu);
}
public CmdVipHandle ( iPlayer, menu, item )
{
new data [ 6 ], name [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, 5, name, 63, callback )
new key = str_to_num ( data )
switch ( key )
{
}
return PLUGIN_HANDLED
}
public CmdPlayerShow ( iPlayer )
{
new title [ 190 ]
formatex ( title, sizeof ( title ) - 1, "\r[PM]\w Pointmodr^n- Player Info" )
new menu = menu_create ( title, "CmdPlayerHandle" )
new players [ 32 ], pnum, tempid, nameShow [ 190 ]
new name [ 32 ], szTempid [ 10 ]
get_players ( players, pnum )
for ( new i; i < pnum; i++ )
{
tempid = players [ i ]
get_user_name ( tempid, name, 31 )
num_to_str ( tempid, szTempid, 9 )
formatex ( nameShow, 189, "%s", name )
menu_additem ( menu, nameShow, szTempid, 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:#808080; color:#000000^">" )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<p align=^"center^">");
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Player info for:<b> %s</b><br>", tempname )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "Points: <b>%i</b><br><br>", iPoint[tempid])
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "TopPoints: <b>%i</b><br><br>", iPointTop[tempid])
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b>Counter-Terroist Upgrades:<br></b><br>")
for ( new CTer = 0; CTer < CTUpgrades; CTer++ )
{
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b>%s:</b> %i / %i<br>", CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ], CTMaxLevel [ CTer ] )
}
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b><br>Terroist Upgrades:<br></b><br>")
for ( new iTer = 0; iTer < TUpgrades; iTer++ )
{
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "<b>%s:</b> %i / %i<br>", TName [ iTer ], TLevel [ iPlayer ] [ iTer ], TMaxLevel [ iTer ] )
}
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "</body>" )
len += format ( motd [ len ], sizeof ( motd ) - len - 1, "</html>" )
show_motd ( iPlayer, motd, "#PM | Player Info" )
return PLUGIN_HANDLED
}
public CmdCTShow ( iPlayer )
{
new title [ 290 ]
formatex ( title, sizeof ( title ) - 1, "\r[PM]\w Pointmod^n\y- Counter Terrorist Upgrades^n^n\wPoints:\r %i", iPoint [ iPlayer ] )
new menu = menu_create ( title, "CmdCTHandle" )
new Temp [ 190 ], iPrice, level, level2, iAmount, numb [ 5 ]
for ( new CTer = 0; CTer < CTUpgrades; CTer++ )
{
num_to_str ( CTer, numb, sizeof ( numb ) - 1 )
level = CTLevel [ iPlayer ] [ CTer ]
level2 = level + 1
iPrice = CTFirstCost [ CTer ] * ( 1 << ( level2 - 1 ) )
iAmount = CTMaxValue [ CTer ] * level / CTMaxLevel [ CTer ]
if ( CTLevel [ iPlayer ] [ CTer ] >= CTMaxLevel [ CTer ] )
if ( CTer == NOPAIN || CTer == NOFLASH )
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Already Bought", CTName [ CTer ] )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Level %i\w [\r %i%s\w ]", CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ], iAmount, CTShort [ CTer ] )
else if ( iPoint [ iPlayer ] < iPrice )
if ( CTer == NOPAIN || CTer == NOFLASH )
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\y %i Points", CTName [ CTer ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\w Level %i\w [\r %i%s\w ]\y %i Points", CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ], iAmount, CTShort [ CTer ], iPrice )
else
if ( CTer == NOPAIN || CTer == NOFLASH )
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w %i Points", CTName [ CTer ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Level %i\w [\r %i%s\w ]\y %i Points", CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ], iAmount, CTShort [ CTer ], iPrice )
menu_additem ( menu, Temp, numb )
}
menu_display ( iPlayer, menu, 0 )
}
public CmdCTHandle ( 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 CTer = str_to_num ( data )
new level, level2, iPrice
level = CTLevel [ iPlayer ] [ CTer ]
level2 = level + 1
iPrice = CTFirstCost [ CTer ] * ( 1 << ( level2 - 1 ) )
if ( level >= CTMaxLevel [ CTer ] )
{
ColorChat ( iPlayer, GREY, "%s Upgrade^4 %s^3 is already at^4 maxlevel^3!", prefix, CTName [ CTer ] )
return PLUGIN_HANDLED
}
else if ( iPoint [ iPlayer ] < iPrice )
{
ColorChat ( iPlayer, GREY, "%s You need^4 %i^3 More Points to upgrade^4 %s^3 to level^4 %i^3", prefix, iPrice - iPoint [ iPlayer ], CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ] + 1 )
return PLUGIN_HANDLED
}
else
{
iPoint [ iPlayer ] -= iPrice
ColorChat ( iPlayer, GREY, "%s You upgraded^4 %s^3 to level^4 %i^3", prefix, CTName [ CTer ], CTLevel [ iPlayer ] [ CTer ] )
CTLevel [ iPlayer ] [ CTer ] += 1
Save ( iPlayer )
}
CmdCTShow( iPlayer )
return PLUGIN_HANDLED
}
public CmdTShow ( iPlayer )
{
new title [ 290 ]
formatex ( title, sizeof ( title ) - 1, "\r[PM]\w Pointmod^n\y- Terrorist Upgrades^n^n\wPoints:\r %i", iPoint [ iPlayer ] )
new menu = menu_create ( title, "CmdTHandle" )
new Temp [ 190 ], iPrice, level, level2, iAmount, numb [ 6 ]
for ( new iTer = 0; iTer < TUpgrades; iTer++ )
{
num_to_str ( iTer, numb, 5 )
level = TLevel [ iPlayer ] [ iTer ]
level2 = level + 1
iPrice = TFirstCost [ iTer ] * ( 1 << ( level2 - 1 ) )
iAmount = TMaxValue [ iTer ] * level / TMaxLevel [ iTer ]
if ( level >= TMaxLevel [ iTer ] )
if ( iTer == NOPAIN || iTer == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Already Bought", TName [ iTer ] )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\y%s:\w Level %i [\r %i%s\w ]", TName [ iTer ], TLevel [ iPlayer ] [ iTer ], iAmount, TShort [ iTer ] )
else if ( iPoint [ iPlayer ] < iPrice )
if ( iTer == NOPAIN || iTer == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\y %i Points", TName [ iTer ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\d%s:\w Level %i [\r %i%s\w ]\y %i Points", TName [ iTer ], TLevel [ iPlayer ] [ iTer ], iAmount, TShort [ iTer ], iPrice )
else if ( level < TMaxLevel [ iTer ] )
if ( iTer == NOPAIN || iTer == NOFOOT )
formatex ( Temp, sizeof ( Temp ) - 1, "\w%s:\w %i Points", TName [ iTer ], iPrice )
else
formatex ( Temp, sizeof ( Temp ) - 1, "\w%s:\w Level %i [\r %i%s\w ]\y %i Points", TName [ iTer ], TLevel [ iPlayer ] [ iTer ], iAmount, TShort [ iTer ], iPrice )
menu_additem ( menu, Temp, numb )
}
menu_display ( iPlayer, menu, 0 )
}
public CmdTHandle ( 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 iTer = str_to_num ( data )
new level, level2, iPrice
level = TLevel [ iPlayer ] [ iTer ]
level2 = level + 1
iPrice = TFirstCost [ iTer ] * ( 1 << ( level2 - 1 ) )
if ( level >= TMaxLevel [ iTer ] )
{
ColorChat ( iPlayer, GREY, "%s Upgrade^4 %s^3 is already at^4 maxlevel^3!", prefix, TName [ iTer ] )
return PLUGIN_HANDLED
}
else if ( iPoint [ iPlayer ] < iPrice )
{
ColorChat ( iPlayer, GREY, "%s You need^4 %i^3 More Points to upgrade^4 %s^3 to level^4 %i^3", prefix, iPrice - iPoint [ iPlayer ], TName [ iTer ], TLevel [ iPlayer ] [ iTer ] + 1 )
return PLUGIN_HANDLED
}
else if ( iPoint [ iPlayer ] >= iPrice )
{
iPoint [ iPlayer ] -= iPrice
TLevel [ iPlayer ] [ iTer ] += 1
ColorChat ( iPlayer, GREY, "%s You upgraded^4 %s^3 to level^4 %i^3", prefix, TName [ iTer ], TLevel [ iPlayer ] [ iTer ] )
Save ( iPlayer )
}
CmdTShow( iPlayer )
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 ( CTLevel [ 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 CmdRank(id)
{
new Array:aNames, Array:aSteamIDs, Array:aXPs;
new iTotal = SortTopPlayers(aNames, aSteamIDs, aXPs);
new szSteamID[35];
get_user_authid(id, szSteamID, charsmax(szSteamID));
new szSteamID2[35], i;
for( i = 0; i < iTotal; i++ )
{
ArrayGetString(aSteamIDs, i, szSteamID2, charsmax(szSteamID2));
if( equal(szSteamID, szSteamID2) )
{
ColorChat ( id, GREY, "%s ^1You are ranked^3 %i ^1of^3 %i ^1with^3 %i Total Points!", prefix, (i + 1), iTotal, iPointTop [id]);
ColorChat ( id, GREY, "%s ^1With^3 %i Kills ^1,^3 %i Headshots ^1and^3 %i Deaths!", prefix, iPointKill [id], iPointHs [id], iPointDeath [id] );
break;
}
}
if( i == iTotal )
{
ColorChat ( id, GREY, "%s You are not Ranked!", prefix);
}
ArrayDestroy(aNames);
ArrayDestroy(aSteamIDs);
ArrayDestroy(aXPs);
return PLUGIN_HANDLED;
}
public CmdTop(id)
{
new Array:aNames, Array:aSteamIDs, Array:aXPs;
new iTotal = SortTopPlayers(aNames, aSteamIDs, aXPs);
new html_motd [ 2500 ], len
len = formatex ( html_motd [ len ], charsmax ( html_motd ) - len, "<STYLE>body{background:#808080;color:#000000;font-family:sand-serif}table{width:100%%;font-size:16px}</STYLE><table cellpadding=2 cellspacing=0 border=0>" );
len += formatex ( html_motd [ len ], charsmax ( html_motd ) - len, "<center><img src=^"http://i44.tinypic.com/w97052.png^"></center></img>");
len += formatex ( html_motd [ len ], charsmax ( html_motd ) - len, "<tr align=center bgcolor=%52697B><th width=8%% align=left><font color=white> Rank: <th width=8%% align=left><font color=white>Name: <th width=8%% align=left><font color=white>Total Points:" )
new szName[156];
for( new i = 0; i < 15; i++ )
{
if( i < iTotal )
{
ArrayGetString(aNames, i, szName, charsmax(szName));
replace_all(szName, charsmax(szName), "&", "&");
replace_all(szName, charsmax(szName), "<", "<");
replace_all(szName, charsmax(szName), ">", ">");
len += formatex(html_motd [ len ], charsmax(html_motd)-len, "<tr><td>%i.</td><td>%s</td><td>%i</td></tr>", (i + 1), szName, ArrayGetCell(aXPs, i));
}
else
{
len += formatex(html_motd [ len ], charsmax(html_motd)-len, "<tr><td></td><td></td><td></td></tr>");
}
}
len += formatex(html_motd [ len ], charsmax(html_motd)-len, "</table></body></html>");
ArrayDestroy(aNames);
ArrayDestroy(aSteamIDs);
ArrayDestroy(aXPs);
show_motd(id, html_motd, "#PM | Top 15");
return PLUGIN_HANDLED;
}
public Load ( iPlayer )
{
static data [ 256 ], timestamp
new gAuthID[32];
get_user_authid(iPlayer, gAuthID, charsmax(gAuthID));
if ( nvault_lookup ( gVault, g_iAuthID [ iPlayer ], data, sizeof ( data ) - 1, timestamp ) )
ParseLoadData ( iPlayer, data )
else
NewUser ( iPlayer )
/* For TotalXP Top */
iPointTop[iPlayer] = nvault_get(gTopVault, gAuthID);
iPointKill[iPlayer] = nvault_get(gTopVault, gAuthID);
iPointHs[iPlayer] = nvault_get(gTopVault, gAuthID);
iPointDeath[iPlayer] = nvault_get(gTopVault, gAuthID);
}
public NewUser ( iPlayer )
{
cFirstTime [ iPlayer ] = 1
iPoint [ iPlayer ] = pStart
for ( new iTer = 0; iTer < TUpgrades; iTer++ )
TLevel [ iPlayer ] [ iTer ] = 0
for ( new iCT = 0; iCT < CTUpgrades; iCT++ )
CTLevel [ iPlayer ] [ iCT ] = 0
}
ParseLoadData ( iPlayer, data [ 256 ] )
{
static num [ 6 ]
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
iPoint [ iPlayer ] = str_to_num ( num )
for ( new iTer = 0; iTer < TUpgrades; iTer++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
TLevel [ iPlayer ] [ iTer ] = clamp ( str_to_num ( num ), 0, TMaxLevel [ iTer ] )
}
for ( new iCT = 0; iCT < CTUpgrades; iCT++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
CTLevel [ iPlayer ] [ iCT ] = clamp ( str_to_num ( num ), 0, CTMaxLevel [ iCT ] )
}
}
public Save ( iPlayer )
{
static data [ 256 ]
new gAuthID[32];
get_user_authid(iPlayer, gAuthID, charsmax(gAuthID));
new len = formatex ( data, sizeof ( data ) - 1, "%i", iPoint [ iPlayer ] )
for ( new iTer = 0; iTer < TUpgrades; iTer++ )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", TLevel [ iPlayer ] [ iTer ] )
for ( new iCT = 0; iCT < CTUpgrades; iCT++ )
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", CTLevel [ iPlayer ] [ iCT ] )
nvault_set ( gVault, g_iAuthID [ iPlayer ], data )
/* For TotalXP Top */
new vaultdata[11];
formatex(vaultdata, 10, "%i", iPointTop[iPlayer]);
formatex(vaultdata, 10, "%i", iPointKill[iPlayer]);
formatex(vaultdata, 10, "%i", iPointHs[iPlayer]);
formatex(vaultdata, 10, "%i", iPointDeath[iPlayer]);
nvault_set(gTopVault, gAuthID, vaultdata);
new szName[32];
get_user_name(iPlayer, szName, 31);
nvault_set(gNameVault, gAuthID, szName);
}
public CmdAddPoints ( iPlayer, level, cid )
{
if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new AddChips [ 32 ]
read_argv ( 2, AddChips, charsmax ( AddChips ) )
new Chips = str_to_num ( AddChips )
new iTarget
new iName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, iName, charsmax ( iName ) )
if ( equali ( arg, "@all" ) )
{
new iPlayer [ 32 ], iNum, All
get_players ( iPlayer, iNum )
for ( new i; i < iNum; i++ )
{
All = iPlayer [ i ]
iPoint [ All ] += Chips
iPointTop [ All ] += Chips
}
ColorChat ( 0, GREY, "%s ^1%s^3 gave^1 %i^3 Points to^1 everyone^3!", prefix, iName, Chips )
}
else
{
iTarget = cmd_target( iPlayer, arg, 31 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( !iTarget )
return PLUGIN_HANDLED
iPoint [ iTarget ] += Chips
iPointTop [ iTarget ] += Chips
ColorChat ( 0, GREY, "%s ^1%s^3 gave^1 %i^3 Points to ^1 %s^3", prefix, iName, Chips, TargetName )
}
return PLUGIN_HANDLED
}
public CmdRemovePoints ( iPlayer, level, cid )
{
if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new RemoveChips [ 32 ]
read_argv ( 2, RemoveChips, charsmax ( RemoveChips ) )
new Chips = str_to_num ( RemoveChips )
new iTarget
new iName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, iName, charsmax ( iName ) )
if ( equali ( arg, "@all" ) )
{
new iPlayer [ 32 ], iNum, All
get_players ( iPlayer, iNum )
for ( new i; i < iNum; i++ )
{
All = iPlayer [ i ]
iPoint [ All ] -= Chips
iPointTop [ All ] -= Chips
}
ColorChat ( 0, GREY, "%s ^1%s^3 removed^1 %i^3 Points from^1 everyone^3!", prefix, iName, Chips )
}
else
{
iTarget = cmd_target( iPlayer, arg, 31 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( !iTarget )
return PLUGIN_HANDLED
iPoint [ iTarget ] -= Chips
iPointTop [ iTarget ] -= Chips
ColorChat ( 0, GREY, "%s ^1%s^3 removed^1 %i^3 Points from ^1 %s^3", prefix, iName, Chips, TargetName )
}
return PLUGIN_HANDLED
}
SortTopPlayers( &Array:aNames, &Array:aSteamIDs, &Array:aXPs )
{
aNames = ArrayCreate( 32 );
aSteamIDs = ArrayCreate( 35 );
aXPs = ArrayCreate( 1 );
new hVault = nvault_util_open( "PointmodTop" );
new iCount = nvault_util_count( hVault );
new iPos;
new szSteamID[ 35 ], szXP[ 11 ], iTimeStamp, szName[ 32 ];
for( new i = 0; i < iCount; i++ )
{
iPos = nvault_util_read( hVault, iPos, szSteamID, charsmax( szSteamID ), szXP, charsmax( szXP ), iTimeStamp );
nvault_get( gNameVault, szSteamID, szName, charsmax( szName ) );
ArrayPushString( aNames, szName );
ArrayPushString( aSteamIDs, szSteamID );
ArrayPushCell( aXPs, str_to_num( szXP ) );
}
nvault_util_close( hVault );
new iXP;
for( new i = 0, j; i < ( iCount - 1 ); i++ )
{
iXP = ArrayGetCell( aXPs, i );
for( j = i + 1; j < iCount; j++ )
{
if( iXP < ArrayGetCell( aXPs, j ) )
{
ArraySwap( aNames, i, j );
ArraySwap( aSteamIDs, i, j );
ArraySwap( aXPs, i, j );
i--;
break;
}
}
}
return iCount;
}