11/05/2016, 05:24 PM
En el zombie plague 4.3 cuando pongo "say /knife" me aparece el menu de los cuchillos , pero cuando selecciono uno no me cambia el model
por ejemplo : elijo el cuchillo Karambit y me aparece el model default
por ejemplo : elijo el cuchillo Karambit y me aparece el model default
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
new const P_INFO[][] = { "KnifeMenu", "1.0", "kikizon" };
new kKnifeSelected[ 33 ], gFrag[ 33 ];
enum _:KNIFE_DATA { KNIFE_NAME[30], KNIFE_VMDL[ 50 ], KNIFE_PMDL[ 50 ], FRAGS, Float:DMG };
new const Knifes[][KNIFE_DATA] ={
{ "Default", "models/v_knife.mdl", "models/p_knife.mdl", 0, 1.0 },
{ "Bayonet" "models/bk/v_bayonet.mdl", "models/p_knife.mdl", 1, 2.0 },
{ "Gutknife" "models/bk/v_gutknife.mdl", "models/p_knife.mdl", 1, 3.0 },
{ "Karambit" "models/bk/v_karambit.mdl", "models/p_knife.mdl", 1, 4.0 }
};
public plugin_precache() {
for(new k = 1; k < sizeof Knifes; ++k) {
precache_model( Knifes[ k ][ KNIFE_VMDL ]);
precache_model( Knifes[ k ][ KNIFE_PMDL ]);
}
}
public plugin_init()
{
register_plugin( P_INFO[ 0 ], P_INFO[ 1 ], P_INFO[ 2 ] );
RegisterHam(Ham_Item_Deploy, "weapon_knife", "ham_KnifeDeployPost", true );
RegisterHam(Ham_TakeDamage, "player", "HamTakeDamage");
register_event("DeathMsg", "EventoM", "a");
register_clcmd( "say /knife", "ShowMenuKnifes" );
}
public HamTakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
if(!is_user_connected(attacker) || !attacker || get_user_weapon(attacker) != CSW_KNIFE)
return;
damage *= Knifes[ kKnifeSelected[attacker] ][ DMG ];
SetHamParamFloat(4, damage);
}
public ham_KnifeDeployPost( wpn_ent ){
static kOwner; kOwner = get_weapon_ent_owner( wpn_ent );
if ( !pev_valid(kOwner) || !is_user_alive( kOwner ) ) return;
set_pev( kOwner, pev_viewmodel2, Knifes[ kKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
set_pev( kOwner, pev_weaponmodel2, Knifes[ kKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}
public ShowMenuKnifes( index ){
static k, knife[40], menu;
menu = menu_create("\wMenu de Knifes", "menu_knifes" );
for(k = 0; k < sizeof Knifes; ++k )
{
if( kKnifeSelected[ index ] == k )
{
formatex( knife, charsmax(knife), "\d%s \r[ \yACTUAL \r]", Knifes[ k ][ KNIFE_NAME ] );
menu_additem( menu, knife, "" );
}
else
{
if( gFrag[ index ] >= Knifes[ k ][ FRAGS ] )
menu_additem( menu, Knifes[ k ][ KNIFE_NAME ], "" );
else {
formatex( knife, charsmax(knife), "\d%s \r[ \nivel: %d \r]", Knifes[ k ][ KNIFE_NAME ], Knifes[ k ][ FRAGS ] );
menu_additem( menu, knife, "" );
}
}
}
menu_display( index, menu );
}
public menu_knifes( index, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
if( kKnifeSelected[ index ] == item )
{
client_print( index, print_center, "Ya elegiste este knife");
return PLUGIN_HANDLED;
}
if( gFrag[ index ] < Knifes[ item ][ FRAGS ])
{
client_print( index, print_chat, "Necesitas ser nivel: %d", Knifes[ item ][ FRAGS ] );
return PLUGIN_HANDLED;
}
kKnifeSelected[ index ] = item;
engclient_cmd( index, "weapon_knife");
menu_destroy( menu );
return PLUGIN_HANDLED;
}
stock get_weapon_ent_owner(ent)
{
if (pev_valid(ent) != 2)
return -1;
return get_pdata_cbase(ent, 41, 4);
}
public EventoM(){
new attacker = read_data(1);
new victim = read_data(2);
if(attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
return ;
++gFrag[attacker];
}