PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>
#define PLUGIN "Shop"
#define VERSION "1.0"
#define AUTHOR "r0ma'"
enum _:DataShop
{
ItemName[ 33 ],
ItemCost
};
new const g_shop_data[ ][ DataShop ] = {
{ "Pasos Silenciosos", 800 },
{ "Invisible", 9000 },
{ "No Flash", 6000 },
{ "He Grenade", 800 },
{ "Vida", 4500 },
{ "Chaleco", 3500 },
{ "Gravedad", 7000 },
{ "Velocidad", 10000 },
{ "GodMode", 16000 },
{ "AWP", 15000 },
{ "Deagle", 15000 }
};
new g_item[ 33 ][ sizeof g_shop_data ];
new g_msgSayText, menu;
new const prefix[] = "[Shop]";
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam( Ham_Item_PreFrame, "player", "fw_ItemPreFrame", 1 );
RegisterHam( Ham_Spawn, "player", "fw_PlayerSpawn", 1 );
register_message( get_user_msgid( "ScreenFade" ), "messageScreenFade" );
register_clcmd( "say /shop", "show_menu_shop" );
g_msgSayText = get_user_msgid( "SayText" );
}
public plugin_cfg( )
{
menu = menu_create( "\y===================================^n \r[Hiden'N'Seek]\w Mercado^n\y===================================^n" , "menu_shop" );
new text[ 64 ]
for( new i = 0; i < sizeof g_shop_data; i++ )
{
formatex( text, charsmax( text ), "%s \y[Costo: $%d]", g_shop_data[ i ][ ItemName ], g_shop_data[ i ][ ItemCost ] );
menu_additem( menu, text );
}
menu_setprop( menu, MPROP_EXITNAME, "Salir." );
menu_setprop( menu, MPROP_NEXTNAME, "Siguiente." );
menu_setprop( menu, MPROP_BACKNAME, "Volver." );
menu_setprop( menu, MPROP_NUMBER_COLOR, "\y" );
}
public show_menu_shop( id )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;
menu_display( id, menu );
return PLUGIN_HANDLED;
}
public menu_shop( id, menu, item )
{
if( item == MENU_EXIT )
return;
if( g_item[ id ][ item ] )
{
hns_print_color( id, "^x04%s^x01 Ya compraste este item.", prefix );
return;
}
if( !is_user_alive( id ) )
{
hns_print_color( id, "^04%s^x01 Tienes que estar vivo para comprar.", prefix );
return;
}
new money = cs_get_user_money( id );
if( money < g_shop_data[ item ][ ItemCost ] )
{
hns_print_color( id, "^x04%s^x01 No tienes suficiente dinero.", prefix );
return;
}
g_item[ id ][ item ] = 1;
cs_set_user_money( id, money - g_shop_data[ item ][ ItemCost ] );
hns_print_color( id, "^x04%s^x01 Compraste^x03 %s^x01 por^x03 $%d^x01 Pesos.", prefix, g_shop_data[ item ][ ItemName ], g_shop_data[ item ][ ItemCost ] );
switch( item )
{
case 0:
{
set_pev( id, pev_flTimeStepSound, 999 );
}
case 1:
{
fm_set_rendering( id, kRenderFxGlowShell, Float:{ 0.0, 0.0, 0.0 }, kRenderTransAlpha, 0.0 );
}
case 3:
{
give_item( id, "weapon_hegrenade" );
}
case 4:
{
set_user_health( id, 150 );
}
case 5:
{
set_user_armor( id, 200 );
}
case 6:
{
set_user_gravity( id, 0.4 );
set_task( 15.0, "remove_gravity", id+101 );
}
case 7:
{
ExecuteHamB( Ham_Item_PreFrame, id );
set_task( 10.0, "remove_speed", id+102 );
}
case 8:
{
set_user_godmode( id, 1 );
set_task( 7.0, "remove_godmode", id+100 );
}
case 9:
{
hns_give_item( id, "weapon_awp", CSW_AWP, 1 );
}
case 10:
{
hns_give_item( id, "weapon_deagle", CSW_DEAGLE, 1 );
}
}
}
public remove_gravity( id )
{
set_user_gravity( ( id - 101 ), 1.0 );
}
public remove_speed( id )
{
g_item[ ( id - 102 ) ][ 7 ] = 2;
set_user_maxspeed( ( id - 102 ), 255.0 );
}
public remove_godmode( id )
{
set_user_godmode( ( id - 100 ), 0 );
}
public fw_ItemPreFrame( id )
{
if( g_item[ id ][ 7 ] == 1 )
{
set_user_maxspeed( id, 320.0 );
}
}
public fw_PlayerSpawn( id )
{
if( !is_user_alive( id ) )
return;
for( new i = 0; i < sizeof g_shop_data; i++ )
{
g_item[ id ][ i ] = 0;
}
set_user_gravity( id, 1.0 );
set_user_godmode( id, 0 );
set_user_maxspeed( id, 255.0 );
set_pev( id, pev_flTimeStepSound, 400 );
}
public messageScreenFade(msgid, dest, plr)
{
if( g_item[ plr ][ 2 ] && get_msg_arg_int( 4 ) == 255 && get_msg_arg_int( 5 ) == 255 && get_msg_arg_int( 6 ) == 255 )
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
stock hns_print_color( id, const msg[ ], any:...)
{
static buffer[ 192 ];
vformat( buffer, 191, msg, 3 );
message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, .player=id );
write_byte( id );
write_string( buffer );
message_end( );
}
stock hns_give_item( id, const item[ 33 ], csw, bala )
{
new ent = give_item( id, item );
if( ent <= 0 )
ent = fm_find_ent_by_owner( id, item, id );
cs_set_user_bpammo( id, csw, 0 );
cs_set_weapon_ammo( ent, bala );
return 1;
}
stock fm_set_rendering(entity, fx = kRenderFxNone, Float:color[ 3 ] = { 255.0, 255.0, 255.0 }, render = kRenderNormal, Float:amount = 16.0)
{
set_pev( entity, pev_renderfx, fx );
set_pev( entity, pev_rendercolor, color );
set_pev( entity, pev_rendermode, render );
set_pev( entity, pev_renderamt, amount );
return 1;
}
stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
new strtype[11] = "classname", ent = index;
switch (jghgtype) {
case 1: strtype = "target";
case 2: strtype = "targetname";
}
while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}
return ent;
}