(24/09/2018, 08:03 PM)Juansi Loow escribió: El ultimo parametro es el daño de cada cuchillocalidad pero el guardado es lo unico que falta osea si cambio mapa se me quita el knife
Prueba
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:DAMAGE_KNF };
new const Knifes[][KNIFE_DATA] =
{
{ "Default", "models/v_knife.mdl", "models/p_knife.mdl", 5, 1.0 },
{ "Matirllo I", "models/v_knife.mdl", "models/p_knife.mdl", 7, 2.5},
{ "Matirllo II", "models/v_knife.mdl", "models/p_knife.mdl", 10, 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", "Ham_Take_Damage")
register_event("DeathMsg", "EventoM", "a");
register_clcmd( "say /knife", "ShowMenuKnifes" );
}
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 Ham_Take_Damage(Victima, inflictor, Atacante, Float:Danio, damage_bits)
{
if(!is_user_alive(Atacante))
return HAM_IGNORED;
if(get_user_weapon(Atacante) == CSW_KNIFE )
{
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
}
SetHamParamFloat( 4, Danio )
return HAM_HANDLED;
}
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];
}
Otra pregunta esto me sirve para dar frags? o le falta algo
Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
public plugin_init() {
register_concmd("dar_frags", "cmd_frags", ADMIN_RCON, " - Frags [Nombre] [Cantidad]"); }
public cmd_frag(id, level, cid) {
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
// Retrieve arguments
static arg[32], arg2[6], player, frag
read_argv(1, arg, sizeof arg - 1)
read_argv(2, arg2, sizeof arg2 - 1)
player = cmd_target(id, arg, CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
// Invalid target
if (!player) return PLUGIN_HANDLED;
// Increase Points
frag = (str_to_num(arg2))
client_print(id, print_chat, "Le Diste %d Frags a %s", frag, arg)
client_print(player, print_chat, "te dieron %d De Frags", frag)
return PLUGIN_HANDLED; }