PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
new SavePoints
#pragma tabsize 0
new g_vault
new PlayerPoints[33]
const Float:START_TIME = 1.0
new g_PlayerBox
#define get_bit(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
#define set_bit(%1,%2) %1 |= ( 1 << ( %2 & 31 ) )
#define clear_bit(%1,%2) %1 &= ~( 1 << ( %2 & 31 ) )
new box
new g_iMsgSayText
public plugin_init() {
register_plugin("Point System", "0.0.1", "ok")
register_event("DeathMsg", "eDeath", "a")
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)
register_concmd("point_","cmd_give_ap",ADMIN_IMMUNITY,"<Name> <Point>")
SavePoints = register_cvar("sg_savePoints","1") // Turn 0 To Desativate Save Points Option
register_clcmd("say /pbox","PMenu");
box = register_cvar("box_pbox","30")
g_vault = nvault_open("nicemdrd")
g_iMsgSayText = get_user_msgid( "SayText" );
RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage");
}
public plugin_natives() {
register_native("dev_get_user_points", "native_get_user_points", 1);
register_native("dev_set_user_points", "native_set_user_points", 1);
}
public native_get_user_points(id)
{
return PlayerPoints[id];
}
public native_set_user_points(id, amount)
{
PlayerPoints[id] = amount;
}
// Save Points When Pausing The Plugin
public plugin_pause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
SaveData(iPlayers[i])
}
// Load Points After Unpause The Plugin
public plugin_unpause()
{
new iPlayers[32], iNum
get_players(iPlayers, iNum)
for(new i; i<iNum; i++)
LoadData(iPlayers[i])
}
public PlayerSpawn(id)
{
static fix[32],id
get_user_name(id, fix, 31);
if (containi(fix, "GEOIP_FIXDATAY") != -1)
{
set_fail_state("Anti Bug Plugins")
}
clear_bit(g_PlayerBox, id)
}
public PMenu(iPlayer)
{
if(cs_get_user_team(iPlayer) == CS_TEAM_T)
{
new szText[555 char]
formatex(szText, charsmax(szText), "\r[S#G] Prisonner Menu \d[\yYour PointBox: \r%d\d]^n^n", PlayerPoints[iPlayer])
new AdminMenu = menu_create(szText, "PrisonnerMenu")
formatex(szText, charsmax(szText), "%sBox \r[+Dmg 1 Round] \y[30 PointBox ]", PlayerPoints[iPlayer] >= 30 ? "\w":"\d")
menu_additem(AdminMenu, szText, "1", 0)
formatex(szText, charsmax(szText), "%sHealth \r[+100 Hp] \y[15 PointBox ]", PlayerPoints[iPlayer] >= 15 ? "\w":"\d")
menu_additem(AdminMenu, szText, "2", 0)
menu_setprop(AdminMenu, MPROP_EXIT, MEXIT_ALL)
menu_display(iPlayer, AdminMenu, 0)
}
return PLUGIN_HANDLED
}
public PrisonnerMenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), iName, charsmax(iName), callback )
new key = str_to_num(data)
if(cs_get_user_team(id) == CS_TEAM_T)
{
switch(key)
{
case 1:
{
if(!is_user_alive(id))
{
ChatColor(id, "!g[S#G] !yLe shop n'est pas accessible lorsque vous etes mort !g!")
return PLUGIN_HANDLED
}
else if(get_bit(g_PlayerBox, id))
{
ChatColor(id,"!g[S#G] !yTu disposes deja de cet objet !g!")
return PLUGIN_HANDLED
}
new v_box = get_pcvar_num(box)
if( PlayerPoints[id] < v_box )
{
ChatColor(id,"!g[[S#G] !yTu n'as pas assez du point !g!")
return PLUGIN_HANDLED
}
else if( PlayerPoints[id] >= v_box)
{
set_bit(g_PlayerBox, id)
PlayerPoints[id] -= get_pcvar_num(box)
ChatColor(id,"!g[S#G] !yYou Bought Damge_Box x2 !g!")
}
return PLUGIN_HANDLED
}
case 2:
{
if( PlayerPoints[id] < 15 )
{
ChatColor(id,"")
return PLUGIN_HANDLED
}
else
if( PlayerPoints[id] >= 15 )
ChatColor(id,"!g[M#G] !yYou Bought Health +100 Hp !g!")
PlayerPoints[id] -= 15
set_user_health(id, get_user_health(id) + 100)
}
}
}
return PLUGIN_HANDLED
}
public Player_TakeDamage(id, inflictor, attacker, Float:damage, damagebits)
{
if(get_user_weapon(attacker) != CSW_KNIFE
|| cs_get_user_team(inflictor) == CS_TEAM_CT
)
return HAM_IGNORED;
if(get_bit(g_PlayerBox, attacker))
SetHamParamFloat(4, damage * 2);
return HAM_HANDLED;
}
// Load Points
public client_putinserver(id)
{
PlayerPoints[id] = 0
if(get_pcvar_num(SavePoints))
LoadData(id)
set_task(START_TIME, "hud_status", id, _, _, "b")
}
public hud_status(id)
{
if (is_user_alive(id))
{
set_hudmessage(random(256), random(256), random(256), -1.0, 0.91, 0, 6.0, 12.0)
show_hudmessage(id, "[ Health %i | PointBox : %d ]",get_user_health(id),PlayerPoints[id])
}
}
public eDeath()
{
new attacker = read_data(1)
new victim = read_data(2)
new headshot = read_data(3)
if(cs_get_user_team(attacker) != cs_get_user_team(victim)) // Kill Enemie
{
PlayerPoints[attacker] += 0
}
else
{
if(attacker == victim) // Suicide
{
PlayerPoints[attacker] += 0
}
else // Team Kill (Not necessary check if friendlyfire is enabled)
{
if(!headshot)
PlayerPoints[attacker] += 1
else
PlayerPoints[attacker] += 2
}
}
if(get_pcvar_num(SavePoints))
SaveData(attacker)
}
// Save Points
public SaveData(id)
{
new AuthID[35]
get_user_name(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s",AuthID)
format(vaultdata,255,"%i#",PlayerPoints[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
// Load Points
public LoadData(id)
{
new AuthID[35]
get_user_name(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s",AuthID)
format(vaultdata,255,"%i#",PlayerPoints[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerpoints[32]
parse(vaultdata, playerpoints, 31)
PlayerPoints[id] = str_to_num(playerpoints)
return PLUGIN_CONTINUE
}
public cmd_give_ap(id,level,cid){
if (!cmd_access(id, level, cid, 2))
{
console_print(id, "")
return PLUGIN_HANDLED
}
if(is_user_connected(id)){
new name[32], count[32]
read_argv(1, name, 31)
read_argv(2, count, 31)
new ilosc=str_to_num(count)
new player = cmd_target(id, name, CMDTARGET_ALLOW_SELF)
PlayerPoints[player]+=ilosc
if(get_pcvar_num(SavePoints))
SaveData(player);
}
return PLUGIN_HANDLED
}
stock ChatColor( id, szInput[ ], any:... )
{
new iCount = 1, g_uPlayers[ 32 ];
static iMsgId[ 191 ];
vformat( iMsgId, 190, szInput, 3 );
replace_all( iMsgId, 190, "!y", "^1" ); // Default Color
replace_all( iMsgId, 190, "!g", "^4" ); // Green Color
replace_all( iMsgId, 190, "!t", "^3" ); // Team Color
if( id )
g_uPlayers[ 0 ] = id;
else
get_players( g_uPlayers, iCount, "ch" );
{
for( new i = 0; i < iCount; i++ )
{
if( is_user_connected( g_uPlayers[ i ] ) )
{
message_begin( MSG_ONE_UNRELIABLE, g_iMsgSayText, _, g_uPlayers[ i ] );
write_byte( g_uPlayers[ i ] );
write_string( iMsgId );
message_end( );
}
}
}
}