#include <amxmodx>
#include <hamsandwich>
#include <fun>
new Array:WeaponName, Array:WeaponFrags, w_counter, gFW, gFrags[ 33 ];
public plugin_precache()
{
WeaponName = ArrayCreate( 32 , 1 );
WeaponFrags = ArrayCreate( 1 , 1 );
}
public plugin_natives() register_native( "wbf_reg_weapon" , "native_reg" , 1 );
public plugin_init()
{
register_plugin( "Weapons By Frags" , "natives" , "kikizon" );
RegisterHam( Ham_Spawn , "player" , "hamPlayerSpawnPost" , true );
RegisterHam( Ham_Killed, "player" , "hamPlayerKilledPost" , true);
gFW = CreateMultiForward( "wbf_get_weapon" , ET_STOP, FP_CELL, FP_CELL );
}
public client_putinserver( i ) gFrags[ i ] = 0;
public hamPlayerSpawnPost( i ) CheckWeapon( i );
public hamPlayerKilledPost( v , a , s )
{
if( !is_user_connected( a ) || !a ) return;
++gFrags[ a ];
CheckWeapon( a );
}
CheckWeapon( index )
{
new i, dummy, wname[32];
for ( i = 0 ; i < w_counter ; ++i )
{
if( gFrags[index] == ArrayGetCell( WeaponFrags , i ))
{
strip_user_weapons( index );
give_item( index , "weapon_knife" );
ArrayGetString( WeaponName, i , wname, 31 );
ExecuteForward( gFW, dummy );
client_print( index , print_chat, "Obtienes %s por tener %d frags",
wname, ArrayGetCell( WeaponFrags , i ) );
return;
}
}
}
public native_reg( const wpnName[], Frags )
{
param_convert( 1 );
if( strlen( wpnName ) < 1 )
{
log_error( AMX_ERR_NATIVE, "[ WBF ] No se puede registrar un arma sin nombre" );
return -1;
}
new i, szBuffer[ 32 ], num;
for ( i = 0 ; i < w_counter ; ++i )
{
ArrayGetString( WeaponName, i, szBuffer, 31 );
num = ArrayGetCell( WeaponFrags, i );
if (equali(wpnName, szBuffer))
{
log_error( AMX_ERR_NATIVE , "[ WBF ] Arma ya registrada: %s" , wpnName );
return -1;
}
if( num == Frags )
{
log_error( AMX_ERR_NATIVE , "[ WBF ] No puedes registrar un arma con el mismo num de frags: %s" , wpnName );
return -1;
}
}
ArrayPushString( WeaponName , wpnName );
ArrayPushCell( WeaponFrags , Frags );
++w_counter;
return w_counter-1;
}