Chequear cuando jugador obtiene weaponbox
#1
Hola todos, alguien sabe que función es para detectar cuando un jugador recibe un arma de otro cuando lo dropea (weaponbox)? me podrían dar un ejemplo por favor? ... gracias antemano
Responder
#2
Código PHP:
RegisterHam(Ham_Touch"weaponbox""ham__WeaponTouchPost"1);

public 
ham__WeaponTouchPost(const iWeapon, const id) {
     if (!
is_user_valid_connected(id) {
         return 
HAM_IGNORED;
     }

     return 
HAM_SUPERCEDE// BLOQUEA AL USUARIO AGARRAR EL ARMA DROPEADA

Responder
#3
gracias, lo que yo quiero hacer es obtener todos los items de weaponbox y cambiar el ammo, me podrías dar un ejemplo de eso por favor..
Responder
#4
WeaponBox contiene todos las armas y todo lo que se dropea en el piso (Por un jugador obvio, ya que si viene en el mapa es armoury_entity).

Explicate un poco lo de "cambiar de ammo" así te puedo dar un ejemplo correspondiente
Responder
#5
yo uso un código que da balas infinitas el problema es que cuando yo dropeo el arma y otro jugador lo toma gana balas infinitas y eso es lo que quiero cambiar/alter..

este es el codigo:

Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <engine>

const WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new 
bool:bInfinityClip[33]

public 
plugin_init()
{
    
register_plugin("Infinity Clips""0.0.1""wbyokomo")
    
    
//ExecuteHam(Ham_Item_Deploy, this)
    
RegisterHam(Ham_Item_Deploy"weapon_glock18""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_usp""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_deagle""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_p228""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_elite""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_fiveseven""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_m3""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_xm1014""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_mp5navy""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_mac10""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_tmp""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_p90""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_ump45""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_galil""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_famas""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_ak47""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_m4a1""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_sg552""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_aug""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_g3sg1""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_sg550""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_scout""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_awp""OnItemDeployPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_m249""OnItemDeployPost"1)
    
    
register_clcmd("say /uc""CmdSetInfinityClip")
}

public 
CmdSetInfinityClip(id)
{
    if(!
is_user_alive(id)) return PLUGIN_HANDLED;
    
    if(
bInfinityClip[id])
    {
        
bInfinityClip[id] = false
        client_print
(idprint_chat"CmdSetInfinityClip(%d) DISABLED!"id)
    }
    else
    {
        
bInfinityClip[id] = true
        client_print
(idprint_chat"CmdSetInfinityClip(%d) ENABLED!"id)
        
engclient_cmd(id"weapon_knife"//force switch to update Ham_Item_Deploy
    
}
    
    return 
PLUGIN_HANDLED;
}

public 
OnItemDeployPost(ent)
{
    if(!
is_valid_ent(ent)) return; //for safety
    
    
static idid get_pdata_cbase(ent414);
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips
    
    
cs_set_weapon_ammo(ent32767//set infinity clip
    
new iParams[1]; iParams[0] = ent;
    
set_task(0.1"TaskSetBpAmmo"idiParams1//HL1 engine is weird it need task to set bpammo
}

public 
TaskSetBpAmmo(iParams[], id)
{
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety
    
    
new ent iParams[0]
    if(!
is_valid_ent(ent)) return; //for safety
    
    
new wpnid cs_get_weapon_id(ent);
    if((
WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon
    
    
cs_set_user_bpammo(idwpnid0//prevent reloading

Responder
#6
Una Pequeña Optimización ?

Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <engine>

const WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new 
bool:bInfinityClip[33]
new const 
WeaponsEnts[][] = { "weapon_p228""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550","weapon_galil""weapon_famas",
"weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249","weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1",
"weapon_flashbang""weapon_deagle""weapon_sg552""weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_plugin("Infinity Clips""0.0.1""wbyokomo")
    
    
//ExecuteHam(Ham_Item_Deploy, this)
    
for(0sizeof(WeaponsEnts); i++) RegisterHam(Ham_Item_DeployWeaponsEnts[i], "OnItemDeployPost"1)
    
    
register_clcmd("say /uc""CmdSetInfinityClip")
}

public 
CmdSetInfinityClip(id)
{
    if(!
is_user_alive(id)) return PLUGIN_HANDLED;
    
    if(
bInfinityClip[id])
    {
        
bInfinityClip[id] = false
        client_print
(idprint_chat"CmdSetInfinityClip(%d) DISABLED!"id)
    }
    else
    {
        
bInfinityClip[id] = true
        client_print
(idprint_chat"CmdSetInfinityClip(%d) ENABLED!"id)
        
engclient_cmd(id"weapon_knife"//force switch to update Ham_Item_Deploy
    
}
    
    return 
PLUGIN_HANDLED;
}

public 
OnItemDeployPost(ent)
{
    if(!
is_valid_ent(ent)) return; //for safety
    
    
static idid get_pdata_cbase(ent414);
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips
    
    
cs_set_weapon_ammo(ent32767//set infinity clip
    
new iParams[1]; iParams[0] = ent;
    
set_task(0.1"TaskSetBpAmmo"idiParams1//HL1 engine is weird it need task to set bpammo
}

public 
TaskSetBpAmmo(iParams[], id)
{
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety
    
    
new ent iParams[0]
    if(!
is_valid_ent(ent)) return; //for safety
    
    
new wpnid cs_get_weapon_id(ent);
    if((
WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon
    
    
cs_set_user_bpammo(idwpnid0//prevent reloading

Responder
#7
Estas usandolo en un ZP por si acaso?
Responder
#8
si es un extra item para zombie plague, este es el codigo:

Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <zp50_items>
#include <zp50_class_nemesis> 
#include <zp50_class_survivor> 

// Weapon entity names
new const WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

const 
WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new 
bool:bInfinityClip[33]
new 
g_itemid 

public plugin_init()
{
    
register_plugin("[ZP] Extra: Unlimited Clip""0.0.1""wbyokomo")
    
    
//register Ham_Item_Deploy forward for all CS weapons
    
for (new 1sizeof WEAPONENTNAMESi++)
    {
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "OnItemDeployPost"1);
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Weapon_ReloadWEAPONENTNAMES[i], "OnItemReload")
    }
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
g_itemid zp_items_register("Unlimited Clip (One round)"15)
}

// Reset flags for all players on newround
public event_round_start()
{
    
arrayset(bInfinityClip0sizeof(bInfinityClip))
}

public 
zp_fw_items_select_pre(iditemid
{
    if (
itemid == g_itemid
    {
        if (
zp_core_is_zombie(id) || zp_class_survivor_get(id) || zp_class_nemesis_get(id))
            return 
ZP_ITEM_DONT_SHOW

        return 
ZP_ITEM_AVAILABLE;
    }
    return 
ZP_ITEM_AVAILABLE;
}

public 
zp_fw_items_select_post(iditemidignorecost
{            
    if (
itemid == g_itemid)
    {
        
bInfinityClip[id] = true
        engclient_cmd
(id"weapon_knife")
    }


public 
OnItemReload(ent)
{
     if(!
is_valid_ent(ent)) 
        return 
HAM_IGNORED
     
     
static id
     id 
get_pdata_cbase(ent414)

     if(
bInfinityClip[id])
        return 
HAM_IGNORED  
    
     setUserAnimation
(id0)
        return 
HAM_SUPERCEDE
}  

public 
OnItemDeployPost(ent)
{
    if(!
is_valid_ent(ent)) return; //for safety
    
    
static idid get_pdata_cbase(ent414);
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips
    
    
cs_set_weapon_ammo(ent32767//set infinity clip
    
new iParams[1]; iParams[0] = ent;
    
set_task(0.1"TaskSetBpAmmo"idiParams1//HL1 engine is weird it need task to set bpammo


public 
TaskSetBpAmmo(iParams[], id)
{
    if(!
is_user_alive(id) || !bInfinityClip[id]) return; //for safety
    
    
new ent iParams[0]
    if(!
is_valid_ent(ent)) return; //for safety
    
    
new wpnid cs_get_weapon_id(ent);
    if((
WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon
    
    
cs_set_user_bpammo(idwpnid0//prevent reloading
}  

public 
setUserAnimation(const id, const iAnimation
{
    
entity_set_int(idEV_INT_weaponanimiAnimation);
    
    
message_begin(MSG_ONESVC_WEAPONANIM_id);
    
write_byte(iAnimation);
    
write_byte(entity_get_int(idEV_INT_body));
    
message_end();

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)