21/09/2017, 09:11 PM
(20/09/2017, 10:18 PM)GhosT1550 escribió:(20/09/2017, 09:22 PM)Skylar escribió:Gracias! menCódigo PHP:#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <biohazard>
new PLUGIN[ ] = "Simple tienda"
new VERSION[ ] = "1.0"
new AUTHOR[ ] = "tienda"
new PREFIX[ ] = "[Zombie Biohazard]"
new asd[100], num[3]
new g_VezRespawn[ 33 ];
enum _:opt { opcion[32], costo }
new const opciones[][opt] =
{
{ "Armadura Anti-Infeccion", 2500 },
{ "Pack Granadas He+Frost", 4000 },
{ "Gravedad", 6500 },
{ "Multi Salto (SOLO ADMIN)", 13000 },
{ "+200 HP (Solo Zombies)", 4500 },
{ "Brillo (Solo Zombies)", 1500},
{ "Respawn (Solo Zombies)", 8000}
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /shop", "AbrirMenu", _, "");
RegisterHam( Ham_Spawn, "player", "ham_Spawn", true );
}
public ham_Spawn( id ) g_VezRespawn[ id ] = false;
public AbrirMenu(id)
{
new menu, len[50]
formatex(len, charsmax(len), "\rTienda de items:", (is_user_zombie(id) ? "" : ""))
menu = menu_create(len, "Shop")
for(new i = 0; i < sizeof opciones; i++)
{
num_to_str(i, num, 2)
formatex(asd, charsmax(asd), "\w%s \y \r$ %y \d", opciones[i][opcion], opciones[i][costo])
menu_additem(menu, asd, num)
}
menu_setprop(menu,MPROP_EXITNAME,"\ySalir")
menu_display(id, menu)
return PLUGIN_HANDLED;
}
public Shop(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(cs_get_user_money(id) < opciones[item][costo])
{
client_print(id, print_center, "%s [Zombie Biohazard] No tienes dinero suficiente para comprar este item.", PREFIX)
return PLUGIN_HANDLED;
}
switch (item)
{
case 0:
{
set_user_armor(id, 100)
}
case 1:
{
cs_set_user_bpammo(id, give_item(id, "weapon_hegrenade"), 2)
cs_set_user_bpammo(id, give_item(id, "weapon_smokegrenade"), 2)
}
case 2:
{
set_class_data(id, DATA_GRAVITY, get_class_data(id, DATA_GRAVITY)-40.0)
}
case 3:
{
return PLUGIN_HANDLED;
}
case 4:
{
if( !is_user_zombie( id ) )
{
client_print( id, print_chat, "[Zombie Biohazard] Este item es solo para zombies!" );
return PLUGIN_HANDLED;
}
set_user_health(id, 200)
}
case 5:
{
if( !is_user_zombie( id ) )
{
client_print( id, print_chat, "[Zombie Biohazard] Este item es solo para zombies!" );
return PLUGIN_HANDLED;
}
set_user_rendering( id, kRenderFxGlowShell, random_num( 0, 255 ), random_num( 0, 255 ), random_num( 0, 255 ), kRenderNormal, 25 );
}
case 6:
{
if(!is_user_zombie(id) && g_VezRespawn[ id ] )
{
client_print(id, print_chat, "[Zombie Biohazard] Este item es solo para zombies o ya usaste una vez este item!")
return PLUGIN_HANDLED;
}
ExecuteHamB(Ham_CS_RoundRespawn, id)
g_VezRespawn[ id ] = true;
}
case MENU_EXIT: menu_destroy(menu)
}
cs_set_user_money(id, cs_get_user_money(id) - opciones[item][costo])
client_print(id, print_center, "%s %s", PREFIX, opciones[item][opcion])
return PLUGIN_HANDLED
}
Al glow le metí un color random y ahí acomodé los demas, el item triple salto lo hará otro supongo> y como no te explicaste bien con lo de respawn, puse que solo se pueda usar 1 vez por spawn.
1. pero tiene algunos bugs ejemplo los humanos pueden comprar el respawn
2. no sale el precio al lado de los items
3. el multi salto no funciona
4. el respawn solo puede ser comprado cuando un zombie este muerte
5. restriccion a los items zombies
6. y el brillo podria ser glow de color random
muchas gracias!
(21/09/2017, 08:47 PM)Devil escribió:(21/09/2017, 08:17 PM)Skylar escribió:Código PHP:#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <biohazard>
#include <engine>
new const __PLUGIN[ ][ ] = { "Tienda", "1.0", "Tu gfa" };
new const __PREFIX[ ] = "[ Zombie Biohazard ]";
new bool: gMultiJump[ 33 ] = false;
new jumpnum[33] = 0
new bool:dojump[33] = false
enum _:ENUM_SHOP { ITEM[ 50 ], PRICE };
new const CONST_SHOP[ ][ ENUM_SHOP ] =
{
{ "Armadura Anti-Infeccion", 2500 },
{ "Pack Granadas He+Frost", 4000 },
{ "Gravedad", 6500 },
{ "Multi Salto (SOLO ADMIN)", 13000 },
{ "+200 HP (Solo Zombies)", 4500 },
{ "Brillo (Solo Zombies)", 1500 },
{ "Respawn (Solo Zombies)", 8000 }
}
public plugin_init( )
{
register_plugin( __PLUGIN[ 0 ], __PLUGIN[ 1 ], __PLUGIN[ 2 ] );
register_clcmd( "say /shop", "open_MenuShop" );
register_cvar("amx_maxjumps", "1")
}
public client_putinserver( id )
{
jumpnum[id] = 0
dojump[ id ] = false;
gMultiJump[ id ] = false;
}
public open_MenuShop( id )
{
new i, iMenu, iText[ 100 ];
iMenu = menu_create( "\rTienda de items:", "handMenuShop" );
for( i = 0; i < sizeof( CONST_SHOP ); i++ )
{
if( cs_get_user_money( id ) < CONST_SHOP[ i ][ PRICE ] )
formatex( iText, charsmax( iText ), "\d%s \r[ $%d ]", CONST_SHOP[ i ][ ITEM ], CONST_SHOP[ i ][ PRICE ] );
else
formatex( iText, charsmax( iText ), "\w%s \y[ $%d ]", CONST_SHOP[ i ][ ITEM ], CONST_SHOP[ i ][ PRICE ] );
menu_additem( iMenu, iText, _, _, menu_makecallback( "callbackMenuShop" ) );
}
menu_display( id, iMenu );
}
public callbackMenuShop( id, menu, item )
{
if( cs_get_user_money( id ) < CONST_SHOP[ item ][ PRICE ] )
return ITEM_DISABLED;
return ITEM_ENABLED;
}
public handMenuShop( id, menu, item )
{
switch( item )
{
case 0: set_user_armor( id, 100 );
case 1:
{
cs_set_user_bpammo( id, give_item(id, "weapon_hegrenade"), 2 );
cs_set_user_bpammo( id, give_item(id, "weapon_smokegrenade"), 2 );
}
case 2: set_class_data( id, DATA_GRAVITY, get_class_data( id, DATA_GRAVITY )-40.0 );
case 3:
{
if( !is_user_admin( id ) )
{
client_print( id, print_chat, "%s Item solo para administradores.", __PREFIX );
return PLUGIN_HANDLED;
}
gMultiJump[ id ] = true;
}
case 4:
{
if( get_user_team( id ) != 1 )
{
client_print( id, print_chat, "%s Item solo para zombies.", __PREFIX );
return PLUGIN_HANDLED;
}
set_user_health( id, 200 );
}
case 5:
{
if( get_user_team( id ) != 1 )
{
client_print( id, print_chat, "%s Item solo para zombies.", __PREFIX );
return PLUGIN_HANDLED;
}
set_user_rendering( id, kRenderFxGlowShell, random_num( 0, 255 ), random_num( 0, 255 ), random_num( 0, 255 ), kRenderNormal, 25 );
}
case 6:
{
if( get_user_team( id ) != 1 && !is_user_alive( id ) )
{
client_print( id, print_chat, "%s Item solo para zombies.", __PREFIX );
return PLUGIN_HANDLED;
}
ExecuteHamB(Ham_CS_RoundRespawn, id);
}
case MENU_EXIT: { menu_destroy( menu ); return PLUGIN_HANDLED; }
}
cs_set_user_money( id, cs_get_user_money( id ) - CONST_SHOP[ item ][ PRICE ], 1 );
client_print( id, print_chat, "%s Compraste: %s.", __PREFIX, CONST_SHOP[ item ][ ITEM ] );
return PLUGIN_HANDLED;
}
public client_PreThink(id)
{
if( !is_user_alive( id ) ) return PLUGIN_CONTINUE;
if( !gMultiJump[ id ] ) return PLUGIN_CONTINUE;
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < get_cvar_num("amx_maxjumps"))
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
if( !is_user_alive( id ) ) return PLUGIN_CONTINUE;
if( !gMultiJump[ id ] ) return PLUGIN_CONTINUE;
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
Listo, ahora debería funcionar
Configuras vos los máximos de saltos
gracias!
Doble cuenta ¿?