#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
enum tienda_caracteristicas
{
NOMBRE[75],
ITEM_LIMIT,
ITEM_COST,
}
enum _:ITEMS
{
GLOW,
HP,
GRANADAS,
SUPERVELOCIDAD,
DOBLESALTO,
REDBULL
};
new const SHOP_ITEMS[][tienda_caracteristicas] =
{
{ "Glow (Brillo)", 1, 1500},
{ "+130 HP Extra", 1, 5000},
{ "1 Granada HE + 2 Granadas de Hielo", 1, 7000},
{ "Super Velocidad", 1, 9500},
{ "Doble Salto", 1, 16000},
{ "RedBull" , 1, 6000}
}
new Limite[33][ITEMS];
new g_maxplayers
new g_maxJumps = 2
new jumpnum[33] = 0
new bool:dojump[33] = false
new g_multijumps[33] = 0
new bool:g_speed[33]
new cvar_time
new bool:has_rb[33]
new cost_cvar, lasts_cvar, speed_cvar // redbull tienda
new const szPrefijo[] = "^4[Old~School]^1"
public plugin_init()
{
register_plugin("Shop Items", "1.0", "Cristian");
register_clcmd("say /redbull","say_cmd_handle")
register_clcmd("say /tienda", "OpenTienda")
register_clcmd("say_team /tienda", "OpenTienda")
register_clcmd("say /shop", "OpenTienda")
register_clcmd("say_team /shop", "OpenTienda")
cvar_time = register_cvar("time_tienda", "120.0")
cost_cvar = register_cvar("RB_Cost","2000")
lasts_cvar = register_cvar("RB_Lasts","20.0")
speed_cvar = register_cvar("RB_Speed","650.0")
register_forward(FM_PlayerPreThink, "FW_PlayerPreThink")
register_forward(FM_PlayerPostThink, "FW_PlayerPostThink")
register_logevent("event_round_start", 2, "1=Round_Start")
register_event("CurWeapon","curweap","be")
register_dictionary("GHW_Red_Bull.txt")
g_maxplayers = get_maxplayers();
}
public event_round_start()
{
for (new i = 1; i < g_maxplayers; i++)
{
if(is_user_alive(i))
{
for (new ite = 0; ite < ITEMS; ite++)
{
Limite[i][ite] = 0
dojump[i] = false
jumpnum[i] = false
g_multijumps[i] = false
g_speed[i] = false
set_rendering(i)
}
}
}
}
public OpenTienda(id)
{
if(!(cs_get_user_team(id) == CS_TEAM_CT))
{
ChatColor(id, "%s Tienda disponible solo para !gHumanos.", szPrefijo)
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
ChatColor(id, "%s Debes estar vivo para poder comprar en la tienda.", szPrefijo)
return PLUGIN_HANDLED
}
static Menu, sztext[60], i;
Menu = menu_create("\r[Old~School] \yTienda de items:", "OpenTienda_Handler");
for(i = 0; i < sizeof(SHOP_ITEMS); i++)
{
if(Limite[id][i] == 1)
format(sztext, charsmax(sztext), "\d%s \r[COMPRADO]", SHOP_ITEMS[i][NOMBRE]);
else
format(sztext, charsmax(sztext), "\w%s \y$%d", SHOP_ITEMS[i][NOMBRE], SHOP_ITEMS[i][ITEM_COST]);
menu_additem(Menu, sztext);
}
menu_setprop(Menu, MPROP_EXITNAME, "Cerrar tienda");
menu_display(id, Menu);
return PLUGIN_HANDLED;
}
public OpenTienda_Handler(id, Menu, Item)
{
if(Item == MENU_EXIT || !is_user_alive(id))
{
menu_destroy(Menu);
return;
}
static cost;
cost = SHOP_ITEMS[Item][ITEM_COST];
if(Limite[id][Item] == SHOP_ITEMS[Item][ITEM_LIMIT])
{
ChatColor(id, "%s Este item solo se puede comprar una vez por ronda.", szPrefijo)
OpenTienda(id)
return;
}
if(cs_get_user_money(id) < cost)
{
ChatColor(id, "%s No tienes suficiente dinero para comprar este item.", szPrefijo)
return;
}
Comprar_Items(id, Item, cost);
menu_destroy(Menu)
return;
}
Comprar_Items(id, Item, cost)
{
switch(Item)
{
case GLOW : set_rendering(id, kRenderFxGlowShell, random(255), random(255), random(255), kRenderNormal, 15)
case HP : set_user_health(id, get_user_health(id) + 130)
case GRANADAS :
{
give_item(id, "weapon_smokegrenade");
give_item(id, "weapon_hegrenade");
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2)
}
case SUPERVELOCIDAD :
{
g_speed[id] = true
set_user_maxspeed(id, Float: 500.0)
set_task(20.0, "Remover_Velocidad", id)
}
case DOBLESALTO : DobleSalto(id)
}
Limite[id][Item]++
cs_set_user_money(id, cs_get_user_money(id) - cost);
ChatColor(id, "%s Has comprado el item ^4%s^1.", szPrefijo, SHOP_ITEMS[Item][NOMBRE])
return PLUGIN_HANDLED
}
public FW_PlayerPreThink(id)
{
if(!is_user_alive(id) && g_multijumps[id])
return PLUGIN_CONTINUE
new nbut = pev(id,pev_button);
new obut = pev(id,pev_oldbuttons);
if((nbut & IN_JUMP) && !(pev(id,pev_flags) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < g_multijumps[id])
{
dojump[id] = true;
jumpnum[id]++;
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (pev(id,pev_flags) & FL_ONGROUND))
{
jumpnum[id] = 0;
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public FW_PlayerPostThink(id)
{
if(!is_user_alive(id) || !g_multijumps[id])
return PLUGIN_CONTINUE
if(dojump[id] == true)
{
new Float:velocity[3];
pev(id,pev_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id,pev_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public DobleSalto(id)
{
if (g_multijumps[id] < g_maxJumps || !g_maxJumps)
{
g_multijumps[id]++;
set_hudmessage(0, 255, 255, -1.0, 0.3, 1, 0.1, 5.0, 0.1)
show_hudmessage(id, "El maximo de saltos consecutivos es de 2 veces.")
}
}
public Remover_Velocidad(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return;
set_user_maxspeed(id, Float: 320.0)
ChatColor(id, "%s Se te ha acabo la ^4Super Velocidad^1.", szPrefijo)
g_speed[id] = false
}
stock ChatColor( id, const input[ ], any:... )
{
static szMsg[ 191 ], msgSayText;
if( !msgSayText ) msgSayText = get_user_msgid( "SayText" );
vformat( szMsg, 190, input, 3 );
replace_all( szMsg, 190, "!g", "^4" );
replace_all( szMsg, 190, "!y", "^1" );
replace_all( szMsg, 190, "!team", "^3" );
message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id );
write_byte( id ? id : 33 );
write_string( szMsg );
message_end( );
}
public curweap(id)
{
if(is_user_alive(id) && has_rb[id])
{
client_cmd(id,"cl_forwardspeed 400;cl_backspeed 400;cl_sidespeed 400")
set_user_maxspeed(id,get_pcvar_float(speed_cvar))
}
}
public client_connect(id) has_rb[id]=false
public client_disconnect(id) has_rb[id]=false
public say_cmd_handle(id)
{
if(!is_user_alive(id))
{
client_print(id,print_chat,"[RB] %L",id,"MSG_NOBUY_DEAD")
}
else if(has_rb[id])
{
client_print(id,print_chat,"[RB] %L",id,"MSG_NOBUY_HAVE")
}
else if(cs_get_user_money(id)<get_pcvar_num(cost_cvar))
{
client_print(id,print_chat,"[RB] %L",id,"MSG_NOBUY_POOR",get_pcvar_num(cost_cvar))
}
else
{
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(cost_cvar),1)
has_rb[id]=true
set_task(get_pcvar_float(lasts_cvar),"redbull_over",id)
set_task(1.0,"plus_hp",id,"",0,"b")
set_user_gravity(id,0.5)
set_user_maxspeed(id,get_pcvar_float(speed_cvar))
client_print(id,print_chat,"[RB] %L",id,"MSG_REDBULL1")
client_print(id,print_chat,"[RB] %L",id,"MSG_REDBULL2")
}
}
public plus_hp(id)
{
if(has_rb[id]) set_user_health(id,get_user_health(id)+1)
}
public redbull_over(id)
{
if(is_user_connected(id))
{
has_rb[id]=false
client_print(id,print_chat,"[RB] %L",id,"MSG_REDBULL_OFF")
set_user_gravity(id,1.0)
set_user_maxspeed(id,320.0)
set_user_gravity(id,1.0)
remove_task(id)
}
}