Allied Modders en español

Versión completa: Dar arma al llegar a cie
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a los usuarios que estén leyendo este tema.

Les vengo a pedir ayuda como dice el titulo "Dar un arma al llegar a ciertos kill/frags".

Me explico:

Al matar 5 personas que me de una m4 automáticamente y al matar 10 una ak47 pero que nada se guarde ya que si te matan tengas que volver a matar las personas.


Saludos y gracias.
hola, prueba esto... espero te sirva: Whatever

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <fun>

new pfrags[33]

public 
plugin_init() {
    
register_plugin("+5kill/M4A1 | +10kill/AK47""1.1""mlibre")
    
    
register_event("ResetHUD","playerSpawn","b")
}

public 
playerSpawn(idpfrags[id]=0

public client_death(attackervictimweapon) {
    if(!
is_user_connected(attacker) || victim == attacker) return
    
    
pfrags[attacker]=pfrags[attacker]+1
    
    
switch(pfrags[attacker]) {
        case 
5: {
            if(
weapon == CSW_AK47engclient_cmd(attacker"drop""weapon_ak47")
            
            
give_item(attacker"weapon_m4a1"),cs_set_user_bpammo(attackerCSW_M4A190),
            
engclient_cmd(attacker"weapon_m4a1")
        }
        case 
10: {
            if(
weapon == CSW_M4A1engclient_cmd(attacker"drop""weapon_m4a1")
        
            
give_item(attacker"weapon_ak47"),cs_set_user_bpammo(attackerCSW_AK4790),
            
engclient_cmd(attacker"weapon_ak47")
        }
    }


Sin registrar el DeathMsg o sin registrar Hansandwich la función de "client_death", no creo que se llame a ese public...

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <fun>

new pfrags[33]

public 
plugin_init() {
    
register_plugin("+5kill/M4A1 | +10kill/AK47""1.0""mlibre")
    
    
register_event("ResetHUD","playerSpawn","b")
    
register_event("DeathMsg""client_death""ae");
}

public 
playerSpawn(idpfrags[id]=0

public client_death() {
    new 
victim read_data(2);
    new 
attacker get_user_attacker(victim);
    
    if(!
is_user_connected(attacker) || victim == attacker) return
    
    
pfrags[attacker]=pfrags[attacker]+1
    
    
switch(pfrags[attacker]) {
        case 
5: {
            if(
get_user_weapon(attacker) == CSW_AK47engclient_cmd(attacker"drop""weapon_ak47")
            
            
give_item(attacker"weapon_m4a1"),cs_set_user_bpammo(attackerCSW_M4A190),
            
engclient_cmd(attacker"weapon_m4a1")
        }
        case 
10: {
            if(
get_user_weapon(attacker) == CSW_M4A1engclient_cmd(attacker"drop""weapon_m4a1")
            
            
give_item(attacker"weapon_ak47"),cs_set_user_bpammo(attackerCSW_AK4790),
            
engclient_cmd(attacker"weapon_ak47")
        }
    }

(02/04/2016, 10:22 AM)Aprendiz9505 escribió: [ -> ]Sin registrar el DeathMsg o sin registrar Hansandwich la función de "client_death", no creo que se llame a ese public...

No es necesario registrar el client_death como parte de una forward de hamsandwich o lo que sea, ya que viene integrada con el modulo "engine" y es autónomo.

Este es su uso:

Código PHP:
public client_death(killervictimwpnindexhitplaceTK)
{
    
// Cualquier cosa


Nose porque estas registrando variables de victima y atacante, si el client_death ya viene con eso...

Dafuq
Mil disculpas jaja no conocía el client_death, esa forward en mi versión de amxx no está...

No sé si estaré un poco o muy atrasado o.o

Código:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
(02/04/2016, 02:16 PM)Aprendiz9505 escribió: [ -> ]Mil disculpas jaja no conocía el client_death, esa forward en mi versión de amxx no está...

No sé si estaré un poco o muy atrasado o.o

Código:
Welcome to the AMX Mod X 1.8.1-300 Compiler.

Descarga el 1.8.2
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

enum _:wpn item_csname[32], item_iditem_ammofrags }

new const 
armas[][wpn] =
{
    {
"weapon_deagle"CSW_DEAGLE355},
    {
"weapon_m4a1"CSW_M4A19010},
    {
"weapon_ak47"CSW_AK479015}
}

new 
frags[33]

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Spawn"player""player_spawn"1)
    
RegisterHam(Ham_Killed"player""player_killed"1)
}

public 
player_spawn(idfrags[id] = 0

public player_killed(victimattackershouldgib)
{
    if(~
is_user_connected(attacker) || victim == attacker) return HAM_IGNORED;
    
    
frags[attacker] += 1
    
    
if(frags[attacker] == armas[frags[attacker]][frags])
    {
        
give_item(idarmas[frags[attacker]][item_csname])
        
cs_set_user_bpammo(idarmas[frags[attacker]][item_id], armas[frags[attacker]][item_ammo])
    }


qué tal algo así ??
(02/04/2016, 02:58 PM)GokuX escribió: [ -> ]
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

enum _:wpn item_csname[32], item_iditem_ammofrags }

new const 
armas[][wpn] =
{
    {
"weapon_deagle"CSW_DEAGLE355},
    {
"weapon_m4a1"CSW_M4A19010},
    {
"weapon_ak47"CSW_AK479015}
}

new 
frags[33]

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Spawn"player""player_spawn"1)
    
RegisterHam(Ham_Killed"player""player_killed"1)
}

public 
player_spawn(idfrags[id] = 0

public player_killed(victimattackershouldgib)
{
    if(~
is_user_connected(attacker) || victim == attacker) return HAM_IGNORED;
    
    
frags[attacker] += 1
    
    
if(frags[attacker] == armas[frags[attacker]][frags])
    {
        
give_item(idarmas[frags[attacker]][item_csname])
        
cs_set_user_bpammo(idarmas[frags[attacker]][item_id], armas[frags[attacker]][item_ammo])
    }


qué tal algo así ??

Solo una pregunta si quiero registrar alguna arma que utiliza una native como seria?

Saludos.
si queres registrar un arma tu de algun plugin y usarla extrenamente:
Código PHP:
public register_native() {
        
register_native("miarmaexterna""nat_miarma"1);//Estilo 1
}

public 
nat_miarma(id) {
        
//seteas el arma o le das el arma... etc...


y para usarla en otro plugin:

Código PHP:
native miarmaexterna(id);
//plugin_init....
register_clcmd("say test""test");

//end plugin init......

public test(id) {
      
miarmaexterna(id);
      
client_print(idprint_chat"Has resivido una arma");

Así??
(02/04/2016, 04:32 PM)totopizza escribió: [ -> ]si queres registrar un arma tu de algun plugin y usarla extrenamente:
Código PHP:
public register_native() {
        
register_native("miarmaexterna""nat_miarma"1);//Estilo 1
}

public 
nat_miarma(id) {
        
//seteas el arma o le das el arma... etc...


y para usarla en otro plugin:

Código PHP:
native miarmaexterna(id);
//plugin_init....
register_clcmd("say test""test");

//end plugin init......

public test(id) {
      
miarmaexterna(id);
      
client_print(idprint_chat"Has resivido una arma");

Así??

Eso lo tengo clarisimo lo que les digo es lo siguiente.

Al matar 5 personas que de una m4 mejorada ya tengo la variable creada y todo pero como aria para que la de ?


Saludos.
Recibido * pacman
*edit* es como se me ocurre
*edit2* flashie colores nkki pacman
(02/04/2016, 08:55 PM)Exertency escribió: [ -> ]
Código PHP:
g_m4mejorada[33] = // 33  khe!?
if(g_m4mejorada(id))// khe!? 
con algo asi
el code de goku creo que ni compila por tener frags 2 veces mete "id" donde no existe pacman era attacker

Código PHP:
switch(frags[attacker] )/*armas[frags[attacker]][frags]*/ o era asi no veo bien desde el cel :v
{
    
//codee
            
    

Mal.. Cuando este en la pc te lo mando completo...
(05/04/2016, 02:17 PM)totopizza escribió: [ -> ]Mal.. Cuando este en la pc te lo mando completo...

OK Gracias.

Saludos.
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

new Array:WeaponName, Array:WeaponFragsw_countergFWgFrags33 ];

public 
plugin_precache()
{
    
WeaponName ArrayCreate32 );
    
WeaponFrags ArrayCreate);
}

public 
plugin_natives() register_native"wbf_reg_weapon" "native_reg" );

public 
plugin_init() 
{
    
register_plugin"Weapons By Frags" "natives" "kikizon" );
    
    
RegisterHamHam_Spawn "player" "hamPlayerSpawnPost" true );
    
RegisterHamHam_Killed"player" "hamPlayerKilledPost" true);
    
    
gFW CreateMultiForward"wbf_get_weapon" ET_STOPFP_CELLFP_CELL );
}

public 
client_putinservergFrags] = 0;

public 
hamPlayerSpawnPostCheckWeapon);

public 
hamPlayerKilledPost)
{
    if( !
is_user_connected) || !) return;
    
    ++
gFrags];
    
CheckWeapon);
}

CheckWeaponindex )
{
    new 
idummywname[32];
    for ( 
w_counter ; ++)
    {
        
        if( 
gFrags[index] == ArrayGetCellWeaponFrags ))
        {
            
strip_user_weaponsindex );
            
give_itemindex "weapon_knife" );
            
ArrayGetStringWeaponNamewname31 );
            
ExecuteForwardgFWdummy );
            
client_printindex print_chat"Obtienes %s por tener %d frags"
            
wnameArrayGetCellWeaponFrags ) );
            return;
        }
    }
}

public 
native_reg( const wpnName[], Frags )
{
    
param_convert);
    
    if( 
strlenwpnName ) < )
    {
        
log_errorAMX_ERR_NATIVE"[ WBF ] No se puede registrar un arma sin nombre" );
        return -
1;
    }
    
    new 
iszBuffer32 ], num;
    for ( 
w_counter ; ++)
    {
        
ArrayGetStringWeaponNameiszBuffer31 );
        
num ArrayGetCellWeaponFrags);
        
        if (
equali(wpnNameszBuffer))
        {
            
log_errorAMX_ERR_NATIVE "[ WBF ] Arma ya registrada: %s" wpnName );
            return -
1;
        }
        
        if( 
num == Frags )
        {
            
log_errorAMX_ERR_NATIVE "[ WBF ] No puedes registrar un arma con el mismo num de frags: %s" wpnName );
            return -
1;            
        }
    }
    
    
ArrayPushStringWeaponName wpnName );
    
ArrayPushCellWeaponFrags Frags );
    
    ++
w_counter;
    return 
w_counter-1;



y en el codigo del arma:

Código PHP:
new gItem;
native wbf_reg_weaponwpnName[], Frags )
forward wbf_get_weaponindex iItem )


// en init o en precache registras el arma:
gItem wbf_reg_weapon"TuGfaModificada" 10 ); // nombre de arma , Frags requeridos

// Abajo
public wbf_get_weaponindexiItem )
{
    if( 
iItem == gItem )
        
// Aqui le das el arma ...

(06/04/2016, 12:17 PM)kikizon2 escribió: [ -> ]
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

new Array:WeaponName, Array:WeaponFragsw_countergFWgFrags33 ];

public 
plugin_precache()
{
    
WeaponName ArrayCreate32 );
    
WeaponFrags ArrayCreate);
}

public 
plugin_natives() register_native"wbf_reg_weapon" "native_reg" );

public 
plugin_init() 
{
    
register_plugin"Weapons By Frags" "natives" "kikizon" );
    
    
RegisterHamHam_Spawn "player" "hamPlayerSpawnPost" true );
    
RegisterHamHam_Killed"player" "hamPlayerKilledPost" true);
    
    
gFW CreateMultiForward"wbf_get_weapon" ET_STOPFP_CELLFP_CELL );
}

public 
client_putinservergFrags] = 0;

public 
hamPlayerSpawnPostCheckWeapon);

public 
hamPlayerKilledPost)
{
    if( !
is_user_connected) || !) return;
    
    ++
gFrags];
    
CheckWeapon);
}

CheckWeaponindex )
{
    new 
idummywname[32];
    for ( 
w_counter ; ++)
    {
        
        if( 
gFrags[index] == ArrayGetCellWeaponFrags ))
        {
            
strip_user_weaponsindex );
            
give_itemindex "weapon_knife" );
            
ArrayGetStringWeaponNamewname31 );
            
ExecuteForwardgFWdummy );
            
client_printindex print_chat"Obtienes %s por tener %d frags"
            
wnameArrayGetCellWeaponFrags ) );
            return;
        }
    }
}

public 
native_reg( const wpnName[], Frags )
{
    
param_convert);
    
    if( 
strlenwpnName ) < )
    {
        
log_errorAMX_ERR_NATIVE"[ WBF ] No se puede registrar un arma sin nombre" );
        return -
1;
    }
    
    new 
iszBuffer32 ], num;
    for ( 
w_counter ; ++)
    {
        
ArrayGetStringWeaponNameiszBuffer31 );
        
num ArrayGetCellWeaponFrags);
        
        if (
equali(wpnNameszBuffer))
        {
            
log_errorAMX_ERR_NATIVE "[ WBF ] Arma ya registrada: %s" wpnName );
            return -
1;
        }
        
        if( 
num == Frags )
        {
            
log_errorAMX_ERR_NATIVE "[ WBF ] No puedes registrar un arma con el mismo num de frags: %s" wpnName );
            return -
1;            
        }
    }
    
    
ArrayPushStringWeaponName wpnName );
    
ArrayPushCellWeaponFrags Frags );
    
    ++
w_counter;
    return 
w_counter-1;



y en el codigo del arma:

Código PHP:
new gItem;
native wbf_reg_weaponwpnName[], Frags )
forward wbf_get_weaponindex iItem )


// en init o en precache registras el arma:
gItem wbf_reg_weapon"TuGfaModificada" 10 ); // nombre de arma , Frags requeridos

// Abajo
public wbf_get_weaponindexiItem )
{
    if( 
iItem == gItem )
        
// Aqui le das el arma ...


Gracias Lo probare cuando ande en la pc..

Saludos.
me llama la atencion este tema, me gustaria tenerlo pero de la siguiente manera, solo el q mate 5 veces seguidas que le de un awp
(07/05/2016, 11:00 PM)jesusfiji escribió: [ -> ]me gustaria tenerlo pero, solo el q mate 5 veces seguidas que le de un awp

testeado y funcionando Approved

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <fun>

new pfrags[33], weapons[32], numiweaponid

const PRIMARY_WEAPONS = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)
|(
1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)
|(
1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const 
SECONDARY_WEAPONS = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)
|(
1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const 
KNIFE_HE_WEAPONS = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)

public 
plugin_init() {
    
register_plugin("+5kill/AWP""1.0""mlibre")
    
    
register_event("ResetHUD","playerSpawn","b")
}
public 
playerSpawn(idpfrags[id]=0

public client_death(attackervictimweapon) {
    if(!
is_user_connected(attacker) || victim == attacker) return
    
    
pfrags[attacker]=pfrags[attacker]+1
    
    
switch(pfrags[attacker]) {
        case 
5: {
            if(
weapon == PRIMARY_WEAPONS || SECONDARY_WEAPONS || KNIFE_HE_WEAPONSUTIL_DropPrimary(attacker)
            
            
give_item(attacker"weapon_awp"),cs_set_user_bpammo(attackerCSW_AWP30)
        }
    }
}
UTIL_DropPrimary(id) {
    
num 0get_user_weapons(idweaponsnum)
    
    for( 
0numi++ ) {
        
weaponid weapons[i]
        
        if(( (
1<<weaponid) & PRIMARY_WEAPONS)) {
            static 
wname[32]; get_weaponname(weaponidwnamecharsmax(wname)), engclient_cmdid"drop"wname)
        }
    }


actualización: v1.1 (añadido cvar, autoreset pfrags cuando se dropea awp): Truestory

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>

new pfrags[33], weapons[32], numiweaponidcawp

const PRIMARY_WEAPONS = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)
|(
1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)
|(
1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const 
SECONDARY_WEAPONS = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)
|(
1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const 
KNIFE_HE_WEAPONS = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)

public 
plugin_init() {
    
register_plugin("+XKills/AWP""1.1""mlibre")
    
    
register_event("ResetHUD","playerSpawn","b")
    
register_forward(FM_SetModel"fw_SetModel")
    
    
cawp register_cvar("xkills_awp","5"// kills necesarios para dar awp
}
public 
playerSpawn(idpfrags[id]=0

public client_death(attackervictimweapon) {
    if(!
is_user_connected(attacker) || victim == attacker) return
    
    
pfrags[attacker]=pfrags[attacker]+1
    
    
if(pfrags[attacker] == get_pcvar_num(cawp)) {
        if(
weapon == PRIMARY_WEAPONS || SECONDARY_WEAPONS || KNIFE_HE_WEAPONSUTIL_DropPrimary(attacker)
        
        
give_item(attacker"weapon_awp"), cs_set_user_bpammo(attackerCSW_AWP30)
    }
}
public 
fw_SetModel(entitymodel[]) {
    if(!
pev_valid(entity)) return FMRES_IGNORED
    
    
static Classname[64]; pev(entitypev_classnameClassnamesizeof(Classname))
    
    if(!
equal(Classname"weaponbox")) return FMRES_IGNORED

    
static idid pev(entitypev_owner)
    
    if(
equal(model"models/w_awp.mdl")) {
        static 
weaponweapon fm_get_user_weapon_entity(entityCSW_AWP)
        
        if(!
pev_valid(weapon)) return FMRES_IGNORED
        
        pfrags
[id]=0
    
}
    return 
FMRES_IGNORED;
}
UTIL_DropPrimary(id) {
    
num 0get_user_weapons(idweaponsnum)
    
    for( 
0numi++ ) {
         
weaponid weapons[i]
         
         if(( (
1<<weaponid) & PRIMARY_WEAPONS))  {
             static 
wname[32]; get_weaponname(weaponidwnamecharsmax(wname)), engclient_cmdid"drop"wname)
         }
    }

gracias men, lo probare a ver q talco!!

pero una pregunta, si tengo restringido la awp, igual se la dara?
pediste los 5 kills seguidos, no ? si es asi el plugin que te dajaron arriba no te servira, practicamente hace lo mismo que la api que deje arriba, solo que este esta un poco mas mierda pacman
(07/05/2016, 11:58 PM)jesusfiji escribió: [ -> ]si tengo restringido la awp, igual se la dara?

sip

(08/05/2016, 12:24 AM)kikizon2 escribió: [ -> ]pediste los 5 kills seguidos, no ? si es asi el plugin que te dajaron arriba no te servira

si mato 5 y boto la awp y vuelto matar a 5 sin que me maten no me dara de nuevo la awp, pero si boto la awp despues de haber matado a 5 y aun se esta vivo, se puede reiniciar el pfrags si se prefiere, para que me de de nuevo la awp.

solución: v1.1 https://amxmodx-es.com/Thread-Dar-arma-a...#pid128056