#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#define PLUGIN "JB Shop"
#define VERSION "1.0"
#define AUTHOR "-Turbo-"
#define is_valid_player(%1) (1 <= %1 <= 32)
new szTag [] = "[JB Shop]"
new Speed[33], Electro [ 33 ], Gravity [ 33 ]
new MacheteModel [ 66 ] = "models/Shop/Machete/v_machete.mdl"
new MacheteModel2 [ 66 ] = "models/Shop/Machete/p_machete.mdl"
new ChainSawModel [ 66 ] = "models/Shop/Lancfuresz/v_benzo.mdl"
new ChainSawModel2 [ 66 ] = "models/Shop/Benzo/p_benzo.mdl"
new ElectroModel [ 66 ] = "models/Shop/Saber/v_light_saber.mdl"
new ElectroModel2 [ 66 ] = "models/Shop/Saber/p_light_saber.mdl"
new bool: Machete [ 33 ], bool: ChainSaw [ 33 ], bool: HasChoosed[ 33 ]
new g_cranii[33], take[33], give[33], gidPlayer[33]
new g_killcranii, g_killhscranii, g_startcranii, g_maxcranii, syncObj
new fChainSaw, fElectro2, fElectro, fMachete2, fMachete
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn", true )
RegisterHam(Ham_TakeDamage, "player", "FwdTakeDamage", 0)
RegisterHam(Ham_Killed, "player", "fw_player_killed")
register_event("CurWeapon","CurrentWeapon", "be", "1=1")
register_clcmd("say /shop", "CheckAcces", 0)
register_clcmd("say /mc", "MenuCranii", ADMIN_ALL)
register_clcmd("say !mc", "MenuCranii", ADMIN_ALL)
register_clcmd("say_team /mc", "MenuCranii", ADMIN_ALL)
register_clcmd("say_team !mc", "MenuCranii", ADMIN_ALL)
register_clcmd("Cantitate", "player")
g_killcranii = register_cvar("jb_killcranii", "3");
g_killhscranii = register_cvar("jb_bonushscranii","4");
g_startcranii = register_cvar("jb_startcranii","7");
g_maxcranii = register_cvar("jb_maxgivecranii","10000");
fMachete = register_cvar("jb_machete", "80")
fMachete2 = register_cvar("jb_machete2", "75")
fElectro = register_cvar("jb_electro", "50")
fElectro2 = register_cvar("jb_electro2", "80")
fChainSaw = register_cvar("jb_chainsaw", "200")
syncObj = CreateHudSyncObj()
}
public client_putinserver(id)
{
g_cranii[id] = get_pcvar_num(g_startcranii)
set_task(1.0, "CraniiPack", id, _, _, "b")
}
public CraniiPack(id)
{
set_hudmessage(142, 239, 39, 0.50, 0.90, 0, 6.0, 2.5)
ShowSyncHudMsg(id, syncObj,"Cranii = [%i]", g_cranii[id])
}
public fwPlayerSpawn( id ) {
HasChoosed[ id ] = false
Machete [ id ] = false
ChainSaw [ id ] = false
Speed[ id ] = false
Electro [ id ] = 1
Gravity [ id ] = false
}
public plugin_precache ( ) {
precache_model ( MacheteModel );
precache_model ( MacheteModel2 );
precache_model ( ChainSawModel );
precache_model ( ChainSawModel2 );
precache_model ( ElectroModel );
precache_model ( ElectroModel2 );
}
public CheckAcces ( id ) {
if ( !is_user_alive(id) ){
ColorChat ( id, "!v%s!c Hallot vagy, igy nem tudsz vasarolni !vBoltot!c !", szTag );
return 1;
}
if ( get_user_team ( id ) == 1 ) {
set_task( 0.1, "JbShop", id );
}
else if ( get_user_team ( id ) == 2 ) {
ColorChat ( id, "!v%s!c Csak a rabok vasarolhatnak", szTag );
}
return 1;
}
public JbShop ( id, level, cid ) {
new menu = menu_create("\rMagazin pentru Detinuti \wpe Cranii!", "JbShopHandler");
menu_additem(menu, "Felszereles", "1");
menu_additem(menu, "Capacitate", "2");
menu_additem(menu, "Armament^n", "3");
menu_additem(menu, "\rSchimb Valutar\w[3200$ = 1 Craniu]", "4");
menu_additem(menu, "\rSchimb Valutar\w[6400$ = 2 Craniu]", "5");
menu_additem(menu, "\rSchimb Valutar\w[9600$ = 3 Craniu]", "6");
menu_additem(menu, "\rSchimb Valutar\w[12800$ = 4 Craniu]", "7");
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
}
public JbShopHandler(id, menu, item) {
if(item < 0)
return 0;
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch(key)
{
case 1: {
Echipament(id);
}
case 2: {
Capacitate(id);
}
case 3: {
Armament(id);
}
case 4:
{
new Money = cs_get_user_money(id) - 3200;
if ( Money < 0 ) {
ColorChat ( id, "!v%s!c Nu ai desti bani pentru Schimb Valutar !", szTag );
return 1;
}
else {
g_cranii[id] += 1
cs_set_user_money(id, Money );
ColorChat ( id, "!v%s!c Felicitari ai schimbat !v%i $!c pe !v1 Craniu ", szTag, Money );
return 1;
}
}
case 5:
{
new Money = cs_get_user_money(id) - 6400;
if ( Money < 0 ) {
ColorChat ( id, "!v%s!c Nu ai desti bani pentru Schimb Valutar !", szTag );
return 1;
}
else {
g_cranii[id] += 2
cs_set_user_money(id, Money);
ColorChat ( id, "!v%s!c Felicitari ai schimbat !v%i $!c pe !v2 Craniu ", szTag, Money );
return 1;
}
}
case 6:
{
new Money = cs_get_user_money(id) - 9600;
if ( Money < 0 ) {
ColorChat ( id, "!v%s!c Nu ai desti bani pentru Schimb Valutar !", szTag );
return 1;
}
else {
g_cranii[id] += 3
cs_set_user_money(id, Money);
ColorChat ( id, "!v%s!c Felicitari ai schimbat !v%i $!c pe !v3 Craniu ", szTag, Money );
return 1;
}
}
case 7:
{
new Money = cs_get_user_money(id) - 12800;
if ( Money < 0 ) {
ColorChat ( id, "!v%s!c Nu ai desti bani pentru Schimb Valutar !", szTag );
return 1;
}
else {
g_cranii[id] += 4
cs_set_user_money(id, Money);
ColorChat ( id, "!v%s!c Felicitari ai schimbat !v%i $!c pe !v4 Craniu ", szTag, Money );
return 1;
}
}
}
menu_destroy(menu);
return 1;
}
public Echipament(id)
{
new menu = menu_create("\rMagazin pentru Detinuti \wpe Cranii!", "EchipamentHandler");
menu_additem(menu, "Macheta - 8 Cranii", "1");
menu_additem(menu, "ChainSaw - 10 Cranii", "2");
menu_additem(menu, "Zi Libera - 20 Cranii", "3");
menu_additem(menu, "Grenazi Pack - 8 Cranii", "4");
menu_additem(menu, "Dechizare - 30 Cranii", "5");
menu_additem(menu, "Scut - 15 Cranii", "6");
menu_additem(menu, "Acces la Micro - 25 Cranii", "7");
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
}
public EchipamentHandler(id, menu, item) {
if( HasChoosed[ id ] ) {
ColorChat ( id, "!v%s!c Ai folosit runda aceasta !vShop-ul!c !", szTag );
return 1;
}
if(item < 0)
return 0;
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch(key)
{
case 1:
{
new iCranii = g_cranii[id] - 8;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vMachete", szTag);
Machete [ id ] = true;
CurrentWeapon ( id );
g_cranii[id] -= 8
HasChoosed[ id ] = true
return 1;
}
}
case 2:
{
new iCranii = g_cranii[id] - 10;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vChainSaw", szTag);
ChainSaw[ id ] = true;
CurrentWeapon ( id );
g_cranii[id] -= 10
HasChoosed[ id ] = true
return 1;
}
}
case 3:
{
new name[32];
new iCranii = g_cranii[id] - 20;
get_user_name(id,name,charsmax(name))
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( 0, "!v%s!c !e%s a cumparat !vFree Day", szTag, name );
g_cranii[id] -= 20
HasChoosed[ id ] = true
return 1;
}
}
case 4:
{
new iCranii = g_cranii[id] - 8;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vGrenazi Pack", szTag);
give_item (id, "weapon_smokegrenade")
give_item (id, "weapon_hegrenade")
give_item (id, "weapon_flashbang")
cs_set_user_bpammo (id, CSW_FLASHBANG, 2)
g_cranii[id] -= 8
HasChoosed[ id ] = true
return 1;
}
}
case 5:
{
new iCranii = g_cranii[id] - 30;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vDeghizare", szTag );
g_cranii[id] -= 30
HasChoosed[ id ] = true
return 1;
}
}
case 6:
{
new iCranii = g_cranii[id] - 15;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c ai cumparat !vScut", szTag );
give_item( id, "weapon_knife" )
give_item( id, "weapon_shield")
g_cranii[id] -= 15
HasChoosed[ id ] = true
return 1;
}
}
case 7:
{
new iCranii = g_cranii[id] - 25;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vAcces la Microfon", szTag );
g_cranii[id] -= 25
HasChoosed[ id ] = true
return 1;
}
}
}
menu_destroy(menu);
return 1;
}
public Capacitate(id)
{
new menu = menu_create("\rMagazin pentru Detinuti \wpe Cranii!", "CapacitateHandler");
menu_additem(menu, "Gravitate - 16 Cranii", "1");
menu_additem(menu, "Viteza - 15 Cranii", "2");
menu_additem(menu, "255 Vita - 14 Cranii", "3");
menu_additem(menu, "255 Armura - 15 Cranii", "4");
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
}
public CapacitateHandler(id, menu, item) {
if( HasChoosed[ id ] ) {
ColorChat ( id, "!v%s!c Ai folosit runda aceasta !vShop-ul!c !", szTag );
return 1;
}
if(item < 0)
return 0;
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch(key)
{
case 1:
{
new iCranii = g_cranii[id] - 16;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vGravitate", szTag);
set_user_gravity (id, 0.5)
Gravity[id] = 1
g_cranii[id] -= 16
HasChoosed[ id ] = true
return 1;
}
}
case 2:
{
new iCranii = g_cranii[id] - 15;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !vViteza", szTag);
set_user_maxspeed(id, 500.0)
Speed[id] = 1
g_cranii[id] -= 15
HasChoosed[ id ] = true
return 1;
}
}
case 3:
{
new iCranii = g_cranii[id] - 14;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !v255 Viata", szTag );
set_user_health (id, 255)
g_cranii[id] -= 14
HasChoosed[ id ] = true
return 1;
}
}
case 4:
{
new iCranii = g_cranii[id] - 15;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c Ai cumparat !v255 Armura", szTag);
set_user_armor (id, 255)
g_cranii[id] -= 15
HasChoosed[ id ] = true
return 1;
}
}
}
menu_destroy(menu);
return 1;
}
public Armament(id)
{
new menu = menu_create("\rMagazin pentru Detinuti \wpe Cranii!", "ArmamentHandler");
menu_additem(menu, "Glock \r[20 Gloante] \w- 20 Cranii", "1");
menu_additem(menu, "TmP \r[30 Gloante] \w- 30 Cranii", "2");
menu_additem(menu, "Deagle \r[7 Gloante] \w- 25 Cranii", "3");
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
}
public ArmamentHandler(id, menu, item) {
if( HasChoosed[ id ] ) {
ColorChat ( id, "!v%s!c Ai folosit runda aceasta !vShop-ul!c !", szTag );
return 1;
}
if(item < 0)
return 0;
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch(key)
{
case 1:
{
new iCranii = g_cranii[id] - 20;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c ai cumparat !vGlock", szTag);
give_item( id, "weapon_glock")
g_cranii[id] -= 20
HasChoosed[ id ] = true
return 1;
}
}
case 2:
{
new iCranii = g_cranii[id] -30;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( id, "!v%s!c ai cumparat !vTmP", szTag);
give_item( id, "weapon_tmp")
g_cranii[id] -= 30
HasChoosed[ id ] = true
return 1;
}
}
case 3:
{
new iCranii = g_cranii[id] - 25;
if ( iCranii < 0 ) {
ColorChat ( id, "!v%s!c Nu ai destule cranii !", szTag );
return 1;
}
else {
ColorChat ( 0, "!v%s!c ai cumparat !vDeagle", szTag);
give_item( id, "weapon_deagle")
g_cranii[id] -= 25
HasChoosed[ id ] = true
return 1;
}
}
}
menu_destroy(menu);
return 1;
}
public MenuCranii(id)
{
if (!is_user_admin(id))
{
ColorChat(id, "!v%s!c Nu ai acces la aceasta comanda", szTag )
return PLUGIN_HANDLED
}
new menu = menu_create("\rCranii Manager", "CraniiHandler");
menu_additem(menu, "Give Cranii", "1")
menu_additem(menu, "Take Cranii", "2")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public CraniiHandler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
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:
{
give[id] = 1
take[id] = 0
Choose(id)
}
case 2:
{
take[id] = 1
give[id] = 0
Choose(id)
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Choose(id)
{
static opcion[64]
new iMenu = menu_create("\rChoose The Player", "cantitate")
new players[32], pnum, tempid
new szName[32], szTempid[10]
get_players(players, pnum, "a")
for( new i; i<pnum; i++ )
{
tempid = players[i]
get_user_name(tempid, szName, 31)
num_to_str(tempid, szTempid, 9)
formatex(opcion, charsmax(opcion), "\w%s \rCranii [ %d ]", szName, g_cranii[tempid])
menu_additem(iMenu, opcion, szTempid, 0)
}
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public cantitate(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
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)
gidPlayer[id] = tempid
client_cmd(id, "messagemode Cantitate")
menu_destroy(menu)
return PLUGIN_HANDLED
}
public player(id)
{
new say[300]
read_args(say, charsmax(say))
remove_quotes(say)
if(!is_str_num(say) || equal(say, ""))
return PLUGIN_HANDLED
cranii(id, say)
return PLUGIN_CONTINUE
}
cranii(id, say[]) {
new amount = str_to_num(say)
new victim = gidPlayer[id]
new vname[32]
if(victim > 0)
{
get_user_name(victim, vname, 31)
if(give[id])
{
if(amount > get_pcvar_num(g_maxcranii))
{
g_cranii[victim] = get_pcvar_num(g_maxcranii)
}
else
{
g_cranii[victim] = g_cranii[victim] + amount
}
ColorChat(0, "!v[JB Shop] !eAdmin !cgive !v%d !cCranii To !e%s ", amount, vname)
}
if(take[id])
{
if(amount > g_cranii[victim])
{
g_cranii[victim] = 0
ColorChat(0, "!v[JB Shop]JailBreak: !eAdmin !ctake all !eCranii From !e%s", vname)
}
else
{
g_cranii[victim] = g_cranii[victim] - amount
ColorChat(0, "!v[JB Shop]JailBreak: !eAdmin !ctake !v%d !cCranii From !e%s", amount, vname)
}
}
}
return PLUGIN_HANDLED
}
public FwdTakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
if (is_valid_player(attacker) && get_user_weapon(attacker) == CSW_KNIFE)
{
switch(get_user_team(attacker))
{
case 1:
{
if(Machete[attacker])
{
SetHamParamFloat(4, get_pcvar_float(fMachete))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(fMachete2))
}
}
if(ChainSaw[attacker])
{
SetHamParamFloat(4, get_pcvar_float(fChainSaw))
}
}
case 2:
{
if(Electro[attacker])
{
SetHamParamFloat(4, get_pcvar_float(fElectro))
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
SetHamParamFloat(4, get_pcvar_float(fElectro2))
}
}
}
}
}
return HAM_HANDLED
}
public fw_player_killed(victim, attacker, shouldgib)
{
if(get_user_team(attacker) == 1)
{
g_cranii[attacker] += get_pcvar_num(g_killcranii)
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
g_cranii[attacker] += get_pcvar_num(g_killhscranii)
}
}
}
public CurrentWeapon(id)
{
new szWeapon = get_user_weapon ( id );
switch (get_user_team(id))
{
case 1:
{
if(Speed[id])
{
set_user_maxspeed(id, 500.0)
}
if(Gravity[id])
{
set_user_gravity(id, 5.0)
}
if(Machete[id] && szWeapon == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, MacheteModel)
set_pev(id, pev_weaponmodel2, MacheteModel2)
}
if(ChainSaw[id] && szWeapon == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, ChainSawModel)
set_pev(id, pev_weaponmodel2, ChainSawModel2)
}
}
case 2:
{
if(Electro[id] && szWeapon == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, ElectroModel)
set_pev(id, pev_weaponmodel2, ElectroModel2)
}
}
}
return PLUGIN_CONTINUE
}
stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!v", "^4");
replace_all(msg, 190, "!c", "^1");
replace_all(msg, 190, "!e", "^3");
if(id) players[0] = id;
else get_players(players, count, "ch"); {
for(new i = 0; i < count; i++) {
if(is_user_connected(players[i])) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}