[SOLUCIONADO] No elige el arma por segunda vez
#1
Hola chicos, buenas a todos... despues de 8 años retirado, 1 hijo y un casamiento de por medio me bajo la nostalgia y decidi volver al scripting, la cosa es que esta vez quiero molestarlos con un plugin que tengo hecho hace años por alla por el 2011 que encontre en un viejo backup que tenia. ni esa vez ni ahora he podido resolver el problema la cosa es que lo tengo agregado a un menu como extra item a travez de natives y cuando empieza la ronda aparezca en el menu de seleccion de armas, el problema es que la puedo elegir una vez y funciona de maravilla. despues en las otras rondas ya no deja elegirla... alguna solucion? debe ser algun detalle que no he podido considerar ni cuando empeze ni ahora. quedo atento muchas gracias!.

PD: tiene las variables seteadas en 0 en casi todos los eventos de respawn lo hize asi por si se solucionaba y nada :/

PD2: Si alguien encontrara la solucion podria quedar como aporte ya que funciona super bien es solo eso que se puede elegir una ronda y despues en las proximas no.

PD3: Lo estoy usando sobre la base del basebuilder 6.5 de Tirant.

EDIT: El error era mio en el handler del menu natives, el arma esta funcional 100 x ciento queda como aporte para el que quiera usarla Sonrisa

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

#define ID_ELECTRO (taskid - TASK_ELECTRO)
#define is_valid_player(%1) (1 <= %1 <= 32)
#define CSW_ID CSW_P90

new const weap_name[] = { "weapon_p90" }

enum (+= 100)
{
    
TASK_ELECTRO
}

enum TIPO
{
    
MUNICIONES,
    
ELEC_DURACION
}

new var[
33][TIPO], bool:g_p90_electro[33]
new 
m_beamSprg_iMaxPlayers

new WEAPON_VMODEL[] = "models/bb_chile/v_p90_elec.mdl" 
new WEAPON_PMODEL[] = "models/bb_chile/p_p90_elec.mdl" 

new const sound_chispa1[] = { "buttons/spark1.wav" }
new const 
sound_chispa2[] = { "buttons/spark2.wav" }
new const 
sound_chispa3[] = { "buttons/spark3.wav" }
new const 
sound_chispa4[] = { "buttons/spark4.wav" }

public 
plugin_init()
{
    
register_plugin("Teslacoil""1.0""~3MCy Daimon't~>"// en aquel en entonces me guie de otros plugins par hacer este,

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage_electrical")
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)

    
RegisterHam(Ham_Item_Deployweap_name"fw_ItemDeploy_Post"1)
    
register_event("CurWeapon""TraceAttack""be""1=1""3>0")
    
register_event("HLTV""ev_RoundStart""a""1=0""2=0")
    
    
g_iMaxPlayers get_maxplayers()

    
agregar_arma_prim("Teslacoil"0"item_selected"50)
}

public 
client_putinserver(id)
{
    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

public 
client_disconnect(id)
{
    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
    remove_task
(id+TASK_ELECTRO)
}

public 
plugin_precache()
{
    
precache_model(WEAPON_VMODEL)    
    precache_model
(WEAPON_PMODEL)  
    
    precache_sound
(sound_chispa1)
    
precache_sound(sound_chispa2)
    
precache_sound(sound_chispa3)
    
precache_sound(sound_chispa4)

    
m_beamSpr precache_model("sprites/laserbeam.spr")
}

public 
item_selected(id)

    if(
g_p90_electro[id])
    
client_print(idprint_chat"[BB-CHILE] Ya posees esta arma"
    else
    {
        
g_p90_electro[id] = true
        fm_give_item
(idweap_name)
        
        
give_item(id"ammo_buckshot")
        
give_item(id"ammo_buckshot")
        
give_item(id"ammo_buckshot")
        
give_item(id"ammo_buckshot")
    }
}

public 
fw_PlayerSpawn_Post(id)

    if(!
is_user_alive(id))
    return;
    
    
remove_task(id+TASK_ELECTRO)
    
    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);


public 
fw_ItemDeploy_Post(weapon_ent
{
    static 
owner
    owner 
get_pdata_cbase(weapon_ent414)
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    if(
weaponid == CSW_ID && g_p90_electro[owner]) 
    {
        
set_pev(ownerpev_viewmodel2WEAPON_VMODEL)
        
set_pev(ownerpev_weaponmodel2WEAPON_PMODEL)
    }
}

public 
fw_TakeDamage_electrical(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_ID )
        {
            if(
g_p90_electro[attacker])
            {
                
SetHamParamFloat(4damage 5.0 )
                var[
victim][ELEC_DURACION] = 20
                
                
if(task_exists(victim+TASK_ELECTRO))
                    return; 
                
set_task(0.1"electro_damage"victim+TASK_ELECTRO__"b")
            }
        }
    }
}

public 
TraceAttack(attacker)

    new 
clip,ammo
    
new wpnid get_user_weapon(attacker,clip,ammo)
    new 
pteam[16]
    
    if (!
is_user_alive(attacker) && !is_user_connected(attacker))
        return
    
    
get_user_team(attackerpteam15)
    
    new 
vec1[3], vec2[3]
    
get_user_origin(attackervec11
    
get_user_origin(attackervec24
    
    new 
iEndOrigin[3]
    
get_user_origin(attackeriEndOrigin4)
    
    if ((var[
attacker][MUNICIONES] > clip) && (wpnid == CSW_ID) && g_p90_electro[attacker]) 
    {
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_ELIGHT)
        
write_short(attacker 0x1000)
        
write_coord(vec1[0])
        
write_coord(vec1[1])
        
write_coord(vec1[2])
        
write_coord(15)
        
write_byte(0)
        
write_byte(128)
        
write_byte(255)
        
write_byte(1)
        
write_coord(0)
        
message_end()
        
        
message_begin(MSG_ALLSVC_TEMPENTITYiEndOrigin)
        
write_byte(TE_DLIGHT// TE id
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_byte(12// radius
        
write_byte(0// r
        
write_byte(128// g
        
write_byte(255// b
        
write_byte(10// life
        
write_byte(100// decay rate
        
message_end()
        
        switch(
random_num(03))
        {
                case 
0emit_sound(attackerCHAN_VOICEsound_chispa11.0ATTN_NORM0PITCH_NORM)
                case 
1emit_sound(attackerCHAN_VOICEsound_chispa21.0ATTN_NORM0PITCH_NORM)
                case 
2emit_sound(attackerCHAN_VOICEsound_chispa31.0ATTN_NORM0PITCH_NORM)
                case 
3emit_sound(attackerCHAN_VOICEsound_chispa41.0ATTN_NORM0PITCH_NORM)
        }
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_shortm_beamSpr 
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(7// width
        
write_byte(10// noise
        
write_byte128 )    // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 // brightness
        
write_byte128 // speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_shortm_beamSpr 
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(14// width
        
write_byte(8// noise
        
write_byte)    // r, g, b
        
write_byte128 )      // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 // brightness
        
write_byte128 // speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_shortm_beamSpr 
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte)    // r, g, b
        
write_byte)      // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 // brightness
        
write_byte128 // speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_shortm_beamSpr 
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte)    // r, g, b
        
write_byte)      // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 // brightness
        
write_byte128 // speed
        
message_end()
        
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_shortm_beamSpr 
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte)    // r, g, b
        
write_byte)      // r, g, b
        
write_byte255 )      // r, g, b
        
write_byte255 // brightness
        
write_byte128 // speed
        
message_end()
    }
    var[
attacker][MUNICIONES] = clip
    
//return HAM_IGNORED
}

public 
ev_RoundStart()
{
    new 
id
    
for (id 1id <= g_iMaxPlayersid++)
    {
        
g_p90_electro[id] = false
        
var[id][ELEC_DURACION] = 0
        remove_task
(id+TASK_ELECTRO)
    }
}

public 
electro_damage(taskid)
{
    static 
origin[3], flags 
    get_user_origin
(ID_ELECTROorigin)
    
flags pev(ID_ELECTROpev_flags)
    
    if((
flags FL_INWATER) || var[ID_ELECTRO][ELEC_DURACION] < 1)
    {
        
remove_task(taskid);
        return;
    }
    
    if (
is_user_alive(ID_ELECTRO))
    {
        
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
write_byte(TE_DLIGHT
        
write_coord(origin[0]) 
        
write_coord(origin[1]) 
        
write_coord(origin[2]) 
        
write_byte(20
        
write_byte(64
        
write_byte(64
        
write_byte(0
        
write_byte(1
        
write_byte(0
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
    }
    var[
ID_ELECTRO][ELEC_DURACION]--
}

stock fm_give_item(id, const item[])
{
    static 
ent
    ent 
engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringitem))
    if (!
pev_valid(ent)) return;
    
    static 
Float:originF[3]
    
pev(idpev_originoriginF)
    
set_pev(entpev_originoriginF)
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN)
    
dllfunc(DLLFunc_Spawnent)
    
    static 
save
    save 
pev(entpev_solid)
    
dllfunc(DLLFunc_Touchentid)
    if (
pev(entpev_solid) != save)
        return;
    
    
engfunc(EngFunc_RemoveEntityent)

Responder
#2
Te aparece el print de ya tienes esta arma? O simplemente la eliges y no te da nada?
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#3
(06/05/2022, 11:51 AM)kikizon2 escribió: Te aparece el print de ya tienes esta arma? O simplemente la eliges y no te da nada?

no es la condicion de la variable simplemente no me la da desde la segunda ronda en adelante, me acabo de dar cuenta que si le saco el curweapon hay puedo elegir el arma bien todas las rondas pero sin el efecto, asi que el error es hay pero no se cual sera :/
Responder
#4
tira logs ?
Responder
#5
Puedes ir haciendo un debugg con prints a ver hasta donde llega, asi puedes detectar donde esta el error, tambien habria que ver el curweapon del bb y como lo registras en ambos casos, además creo que hay una manera mejor que hacer esto en curweapon ?
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#6
(06/05/2022, 01:50 PM)Nelo escribió: tira logs ?

nada, no me tira un solo print de nada...

(06/05/2022, 04:02 PM)kikizon2 escribió: Puedes ir haciendo un debugg con prints a ver hasta donde llega, asi puedes detectar donde esta el error, tambien habria que ver el curweapon del bb y como lo registras en ambos casos, además creo que hay una manera mejor que hacer esto en curweapon ?

probare lo del debug... no creo que sea error con el basebuilder porque tengo otras armas agregadas de la misma forma y funcionan super bien, lo del curweapon probe hasta con ham traceattack y nada Triste
Responder
#7
Yo lo probé de esta forma para mi cs normal y me anduvo bien cada ronda la compraba y no tuve probelmas, fijate si en el menú de natives no permite comprar por ronda o algo así ya que el codigo del arma esta perfecto.

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
//#include <bb_chile>

#define ID_ELECTRO (taskid - TASK_ELECTRO)
#define is_valid_player(%1) (1 <= %1 <= 32)
#define CSW_ID CSW_P90

new const weap_name[] = { "weapon_p90" }

enum (+= 100)
{
    
TASK_ELECTRO
}

enum TIPO
{
    
MUNICIONES,
    
ELEC_DURACION
}

new var[
33][TIPO], bool:g_p90_electro[33]
new 
m_beamSprg_iMaxPlayers

new WEAPON_VMODEL[] = "models/v_p90.mdl" 
new WEAPON_PMODEL[] = "models/p_p90.mdl" 

//new WEAPON_VMODEL[] = "models/bb_chile/v_p90_elec.mdl" 
//new WEAPON_PMODEL[] = "models/bb_chile/p_p90_elec.mdl" 

new const sound_chispa1[] = { "buttons/spark1.wav" }
new const 
sound_chispa2[] = { "buttons/spark2.wav" }
new const 
sound_chispa3[] = { "buttons/spark3.wav" }
new const 
sound_chispa4[] = { "buttons/spark4.wav" }

public 
plugin_init()
{
    
register_plugin("Teslacoil""1.0""~3MCy Daimon't~>"// en aquel en entonces me guie de otros plugins par hacer este,

    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage_electrical")
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)
    
    
RegisterHam(Ham_Item_Deployweap_name"fw_ItemDeploy_Post"1)
    
register_event("CurWeapon""TraceAttack""be""1=1""3>0")
    
register_event("HLTV",         "ev_RoundStart""a""1=0""2=0")

    
g_iMaxPlayers get_maxplayers()

    
register_clcmd("say p90""item_selected");
    
//agregar_arma_prim("Teslacoil", 0, "item_selected", 50)
}

public 
client_putinserver(id)
{
    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

public 
client_disconnected(id)
{
    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
    remove_task
(id+TASK_ELECTRO)
}

public 
plugin_precache()
{
    
precache_model(WEAPON_VMODEL)     
    
precache_model(WEAPON_PMODEL)   

    
precache_sound(sound_chispa1)
    
precache_sound(sound_chispa2)
    
precache_sound(sound_chispa3)
    
precache_sound(sound_chispa4)

    
m_beamSpr precache_model("sprites/laserbeam.spr")
}

public 
item_selected(id)
{    
    if (
g_p90_electro[id]) client_print(idprint_chat"[BB-CHILE] Ya posees esta arma"
    else
    {
        
g_p90_electro[id] = true
        give_item
(idweap_name)
    
        
/*give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")*/
    
}
}

public 
fw_PlayerSpawn_Post(id)
{
    if (!
is_user_alive(id))
        return;
        
    
remove_task(id+TASK_ELECTRO)

    
g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
    return -
1;
    
    return 
get_pdata_cbase(ent414);


public 
fw_ItemDeploy_Post(weapon_ent
{
    static 
owner
    owner 
get_pdata_cbase(weapon_ent414)
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    if (
weaponid == CSW_ID && g_p90_electro[owner]) 
    {
        
set_pev(ownerpev_viewmodel2WEAPON_VMODEL)
        
set_pev(ownerpev_weaponmodel2WEAPON_PMODEL)
    }
}

public 
fw_TakeDamage_electrical(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if (
get_user_weapon(attacker) == CSW_ID)
        {
            if (
g_p90_electro[attacker])
            {
                
SetHamParamFloat(4damage 5.0);
                var[
victim][ELEC_DURACION] = 20;
                
                if (
task_exists(victim+TASK_ELECTRO))
                    return; 

                
set_task(0.1"electro_damage"victim+TASK_ELECTRO__"b");
            }
        }
    }
}

public 
TraceAttack(attacker)
{    
    new 
clipammo;
    new 
wpnid get_user_weapon(attackerclipammo);
    new 
pteam[16];
    
    if (!
is_user_alive(attacker))
        return
    
    
get_user_team(attackerpteam15)
    
    new 
vec1[3], vec2[3]
    
get_user_origin(attackervec11
    
get_user_origin(attackervec24
    
    new 
iEndOrigin[3]
    
get_user_origin(attackeriEndOrigin4)
    
    if ((var[
attacker][MUNICIONES] > clip) && (wpnid == CSW_ID) && g_p90_electro[attacker]) 
    {
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_ELIGHT)
        
write_short(attacker 0x1000)
        
write_coord(vec1[0])
        
write_coord(vec1[1])
        
write_coord(vec1[2])
        
write_coord(15)
        
write_byte(0)
        
write_byte(128)
        
write_byte(255)
        
write_byte(1)
        
write_coord(0)
        
message_end()
        
        
message_begin(MSG_ALLSVC_TEMPENTITYiEndOrigin)
        
write_byte(TE_DLIGHT// TE id
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_byte(12// radius
        
write_byte(0// r
        
write_byte(128// g
        
write_byte(255// b
        
write_byte(10// life
        
write_byte(100// decay rate
        
message_end()
        
        switch(
random_num(03))
        {
            case 
0emit_sound(attackerCHAN_VOICEsound_chispa11.0ATTN_NORM0PITCH_NORM)
            case 
1emit_sound(attackerCHAN_VOICEsound_chispa21.0ATTN_NORM0PITCH_NORM)
            case 
2emit_sound(attackerCHAN_VOICEsound_chispa31.0ATTN_NORM0PITCH_NORM)
            case 
3emit_sound(attackerCHAN_VOICEsound_chispa41.0ATTN_NORM0PITCH_NORM)
        }
        
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_short(m_beamSpr
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(7// width
        
write_byte(10// noise
        
write_byte(128)     // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255// brightness
        
write_byte(128// speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_short(m_beamSpr
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(14// width
        
write_byte(8// noise
        
write_byte(0)     // r, g, b
        
write_byte(128)       // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255// brightness
        
write_byte(128// speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_short(m_beamSpr
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte(0)     // r, g, b
        
write_byte(0)       // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255// brightness
        
write_byte(128// speed
        
message_end()
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_short(m_beamSpr
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte(0)     // r, g, b
        
write_byte(0)       // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255// brightness
        
write_byte(128// speed
        
message_end()
        
        
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_BEAMENTPOINT)
        
write_short(attacker 0x1000
        
write_coord(iEndOrigin[0])
        
write_coord(iEndOrigin[1])
        
write_coord(iEndOrigin[2])
        
write_short(m_beamSpr
        
write_byte(1// framestart
        
write_byte(5// framerate
        
write_byte(1// life
        
write_byte(2// width
        
write_byte(14// noise
        
write_byte(0)     // r, g, b
        
write_byte(0)       // r, g, b
        
write_byte(255)       // r, g, b
        
write_byte(255// brightness
        
write_byte(128// speed
        
message_end()
    }

    var[
attacker][MUNICIONES] = clip;
}

public 
ev_RoundStart()
{
    new 
id;
    
    for (
id 1id <= g_iMaxPlayersid++)
    {
        if (!
is_user_connected(id)) continue;

        
g_p90_electro[id] = false;
        var[
id][ELEC_DURACION] = 0;
        
remove_task(id+TASK_ELECTRO);
    }
}

public 
electro_damage(taskid)
{
    static 
origin[3], flags    
    get_user_origin
(ID_ELECTROorigin)
    
flags pev(ID_ELECTROpev_flags)
    
    if ((
flags FL_INWATER) || var[ID_ELECTRO][ELEC_DURACION] < 1)
    {
        
remove_task(taskid);
        return;
    }
    
    if (
is_user_alive(ID_ELECTRO))
    {
        
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
write_byte(TE_DLIGHT
        
write_coord(origin[0]) 
        
write_coord(origin[1]) 
        
write_coord(origin[2]) 
        
write_byte(20
        
write_byte(64
        
write_byte(64
        
write_byte(0
        
write_byte(1
        
write_byte(0
        
message_end()
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
        
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(TE_SPARKS)                      
        
write_coord(origin[0]+random_num(-1010)) 
        
write_coord(origin[1]+random_num(-1010)) 
        
write_coord(origin[2]+random_num(-4040)) 
        
message_end()
    }

    var[
ID_ELECTRO][ELEC_DURACION]--;

___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#8
(07/05/2022, 03:36 PM)[E]manuelitop15 escribió: Yo lo probé de esta forma para mi cs normal y me anduvo bien cada ronda la compraba y no tuve probelmas, fijate si en el menú de natives no permite comprar por ronda o algo así ya que el codigo del arma esta perfecto.

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
//#include <bb_chile>

#define ID_ELECTRO (taskid - TASK_ELECTRO)
#define is_valid_player(%1) (1 <= %1 <= 32)
#define CSW_ID CSW_P90

new const weap_name[] = { "weapon_p90" }

enum (+= 100)
{
    TASK_ELECTRO
}

enum TIPO
{
    MUNICIONES,
    ELEC_DURACION
}

new var[
33][TIPO], bool:g_p90_electro[33]
new 
m_beamSprg_iMaxPlayers

new WEAPON_VMODEL[] = "models/v_p90.mdl" 
new WEAPON_PMODEL[] = "models/p_p90.mdl" 

//new WEAPON_VMODEL[] = "models/bb_chile/v_p90_elec.mdl" 
//new WEAPON_PMODEL[] = "models/bb_chile/p_p90_elec.mdl" 

new const sound_chispa1[] = { "buttons/spark1.wav" }
new const 
sound_chispa2[] = { "buttons/spark2.wav" }
new const 
sound_chispa3[] = { "buttons/spark3.wav" }
new const 
sound_chispa4[] = { "buttons/spark4.wav" }

public 
plugin_init()
{
    register_plugin("Teslacoil""1.0""~3MCy Daimon't~>"// en aquel en entonces me guie de otros plugins par hacer este,

    RegisterHam(Ham_TakeDamage"player""fw_TakeDamage_electrical")
    RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)
    
    RegisterHam
(Ham_Item_Deployweap_name"fw_ItemDeploy_Post"1)
    register_event("CurWeapon""TraceAttack""be""1=1""3>0")
    register_event("HLTV",        "ev_RoundStart""a""1=0""2=0")

    g_iMaxPlayers get_maxplayers()

    register_clcmd("say p90""item_selected");
    //agregar_arma_prim("Teslacoil", 0, "item_selected", 50)
}

public 
client_putinserver(id)
{
    g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

public 
client_disconnected(id)
{
    g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
    remove_task
(id+TASK_ELECTRO)
}

public 
plugin_precache()
{
    precache_model(WEAPON_VMODEL)    
    precache_model
(WEAPON_PMODEL)  

    precache_sound
(sound_chispa1)
    precache_sound(sound_chispa2)
    precache_sound(sound_chispa3)
    precache_sound(sound_chispa4)

    m_beamSpr precache_model("sprites/laserbeam.spr")
}

public 
item_selected(id)
{
    
    
if (g_p90_electro[id]) client_print(idprint_chat"[BB-CHILE] Ya posees esta arma"
    else
    {
        g_p90_electro[id] = true
        give_item
(idweap_name)
    
        
/*give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")
        give_item(id, "ammo_buckshot")*/
    }
}

public 
fw_PlayerSpawn_Post(id)
{
    if (!is_user_alive(id))
        return;
        
    remove_task
(id+TASK_ELECTRO)

    g_p90_electro[id] = false
    
var[id][ELEC_DURACION] = 0
}

stock get_weapon_ent_owner(ent)
{
    if (pev_valid(ent) != 2)
    return -1;
    
    
return get_pdata_cbase(ent414);


public 
fw_ItemDeploy_Post(weapon_ent
{
    static owner
    owner 
get_pdata_cbase(weapon_ent414)
    static weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    
if (weaponid == CSW_ID && g_p90_electro[owner]) 
    {
        set_pev(ownerpev_viewmodel2WEAPON_VMODEL)
        set_pev(ownerpev_weaponmodel2WEAPON_PMODEL)
    }
}

public 
fw_TakeDamage_electrical(victiminflictorattackerFloat:damage)
{
    if (victim != attacker && is_user_connected(attacker))
    {
        if (get_user_weapon(attacker) == CSW_ID)
        {
            if (g_p90_electro[attacker])
            {
                SetHamParamFloat(4damage 5.0);
                var[victim][ELEC_DURACION] = 20;
                
                
if (task_exists(victim+TASK_ELECTRO))
                    return; 

                set_task(0.1"electro_damage"victim+TASK_ELECTRO__"b");
            }
        }
    }
}

public 
TraceAttack(attacker)
{
    
    
new clipammo;
    new wpnid get_user_weapon(attackerclipammo);
    new pteam[16];
    
    
if (!is_user_alive(attacker))
        return
    
    get_user_team
(attackerpteam15)
    
    
new vec1[3], vec2[3]
    get_user_origin(attackervec11
    get_user_origin(attackervec24
    
    
new iEndOrigin[3]
    get_user_origin(attackeriEndOrigin4)
    
    
if ((var[attacker][MUNICIONES] > clip) && (wpnid == CSW_ID) && g_p90_electro[attacker]) 
    {
        message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_ELIGHT)
        write_short(attacker 0x1000)
        write_coord(vec1[0])
        write_coord(vec1[1])
        write_coord(vec1[2])
        write_coord(15)
        write_byte(0)
        write_byte(128)
        write_byte(255)
        write_byte(1)
        write_coord(0)
        message_end()
        
        message_begin
(MSG_ALLSVC_TEMPENTITYiEndOrigin)
        write_byte(TE_DLIGHT// TE id
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_byte(12// radius
        write_byte(0// r
        write_byte(128// g
        write_byte(255// b
        write_byte(10// life
        write_byte(100// decay rate
        message_end()
        
        
switch(random_num(03))
        {
            case 0emit_sound(attackerCHAN_VOICEsound_chispa11.0ATTN_NORM0PITCH_NORM)
            case 1emit_sound(attackerCHAN_VOICEsound_chispa21.0ATTN_NORM0PITCH_NORM)
            case 2emit_sound(attackerCHAN_VOICEsound_chispa31.0ATTN_NORM0PITCH_NORM)
            case 3emit_sound(attackerCHAN_VOICEsound_chispa41.0ATTN_NORM0PITCH_NORM)
        }
        
        message_begin
(MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_BEAMENTPOINT)
        write_short(attacker 0x1000
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_short(m_beamSpr
        write_byte(1// framestart
        write_byte(5// framerate
        write_byte(1// life
        write_byte(7// width
        write_byte(10// noise
        write_byte(128)    // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255// brightness
        write_byte(128// speed
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_BEAMENTPOINT)
        write_short(attacker 0x1000
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_short(m_beamSpr
        write_byte(1// framestart
        write_byte(5// framerate
        write_byte(1// life
        write_byte(14// width
        write_byte(8// noise
        write_byte(0)    // r, g, b
        write_byte(128)      // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255// brightness
        write_byte(128// speed
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_BEAMENTPOINT)
        write_short(attacker 0x1000
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_short(m_beamSpr
        write_byte(1// framestart
        write_byte(5// framerate
        write_byte(1// life
        write_byte(2// width
        write_byte(14// noise
        write_byte(0)    // r, g, b
        write_byte(0)      // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255// brightness
        write_byte(128// speed
        message_end()
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_BEAMENTPOINT)
        write_short(attacker 0x1000
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_short(m_beamSpr
        write_byte(1// framestart
        write_byte(5// framerate
        write_byte(1// life
        write_byte(2// width
        write_byte(14// noise
        write_byte(0)    // r, g, b
        write_byte(0)      // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255// brightness
        write_byte(128// speed
        message_end()
        
        
        message_begin
MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_BEAMENTPOINT)
        write_short(attacker 0x1000
        write_coord(iEndOrigin[0])
        write_coord(iEndOrigin[1])
        write_coord(iEndOrigin[2])
        write_short(m_beamSpr
        write_byte(1// framestart
        write_byte(5// framerate
        write_byte(1// life
        write_byte(2// width
        write_byte(14// noise
        write_byte(0)    // r, g, b
        write_byte(0)      // r, g, b
        write_byte(255)      // r, g, b
        write_byte(255// brightness
        write_byte(128// speed
        message_end()
    }

    var[attacker][MUNICIONES] = clip;
}

public 
ev_RoundStart()
{
    new id;
    
    
for (id 1id <= g_iMaxPlayersid++)
    {
        if (!is_user_connected(id)) continue;

        g_p90_electro[id] = false;
        var[id][ELEC_DURACION] = 0;
        remove_task(id+TASK_ELECTRO);
    }
}

public 
electro_damage(taskid)
{
    static origin[3], flags    
    get_user_origin
(ID_ELECTROorigin)
    flags pev(ID_ELECTROpev_flags)
    
    
if ((flags FL_INWATER) || var[ID_ELECTRO][ELEC_DURACION] < 1)
    {
        remove_task(taskid);
        return;
    }
    
    
if (is_user_alive(ID_ELECTRO))
    {
        message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        write_byte(TE_DLIGHT
        write_coord(origin[0]) 
        write_coord(origin[1]) 
        write_coord(origin[2]) 
        write_byte(20
        write_byte(64
        write_byte(64
        write_byte(0
        write_byte(1
        write_byte(0
        message_end()
        
        message_begin
(MSG_BROADCASTSVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        write_coord(origin[1]+random_num(-1010)) 
        write_coord(origin[2]+random_num(-4040)) 
        message_end()
        message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        write_coord(origin[1]+random_num(-1010)) 
        write_coord(origin[2]+random_num(-4040)) 
        message_end()
        message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        write_coord(origin[1]+random_num(-1010)) 
        write_coord(origin[2]+random_num(-4040)) 
        message_end()
        message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        write_coord(origin[1]+random_num(-1010)) 
        write_coord(origin[2]+random_num(-4040)) 
        message_end()
        message_beginMSG_BROADCAST,SVC_TEMPENTITY)
        write_byte(TE_SPARKS)                      
        write_coord
(origin[0]+random_num(-1010)) 
        write_coord(origin[1]+random_num(-1010)) 
        write_coord(origin[2]+random_num(-4040)) 
        message_end()
    }

    var[ID_ELECTRO][ELEC_DURACION]--;


revisare bien el tema de las natives pero me parece raro porque tengo otras armas agregadas al mismo menu y me andan re bien esta es la unica que no me funciona como sea lo verificare, gracias por hacer el test.

EDIT: jajajaja que pendejo que soy... efectivamente tenias razon emanuelitop15 era el handler del menu de armas xD y lo mas raro que lo habia revisado y no vi nada malo, ya lo solucione. esta arma funciona 100% queda entonces como aporte para el que quiera utilizarla. gracias a todos chicos!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)