Manera mas facil de setear modelo
#1
Buenas a todos bueno quiero saber si hay una manera mas facil de setearle modelo a las granadas no quiero el weapon model remplacemente que esta en amx-en solo quiero preguntar si hay alguna manera mas facil ?

codigo que estoy armando con codigos visto

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

new const sGranada[] = "models/new/v_hegrenade.mdl"
new const sFlash[] = "models/new/v_flashbang.mdl"
new const sConge[] = "models/new/v_frost.mdl"
new const sFlash_p[] = "models/new/p_flashbang.mdl"
new const sGranada_p[] = "models/new/p_hegrenade.mdl"
new const sConge_p[] = "models/new/p_frost.mdl"

public plugin_init()
{
    
RegisterHam(Ham_Item_Deploy"weapon_hegrenade""fw_granada"true);
    
RegisterHam(Ham_Item_Deploy"weapon_flashbang""fw_flash"true);
    
RegisterHam(Ham_Item_Deploy"weapon_smokegrenade""fw_conge"true);
}
public 
plugin_precache()
{
    
precache_model(sGranada)
    
precache_model(sFlash)
    
precache_model(sGranada_p)
    
precache_model(sFlash_p)
    
precache_model(sConge)
    
precache_model(sConge_p)
}
public 
fw_granada(granada)
{
    new 
idid get_pdata_cbase(granada41)
    
    
set_pev(idpev_viewmodel2sGranada)
    
set_pev(idpev_weaponmodel2sGranada_p)
}
public 
fw_flash(flash)
{
    new 
idid get_pdata_cbase(flash414)

    
set_pev(idpev_viewmodel2sFlash)
    
set_pev(idpev_weaponmodel2sFlash_p)
}
public 
fw_conge(conge)
{
    new 
idid get_pdata_cbase(conge414)

    
set_pev(idpev_viewmodel2sConge)
    
set_pev(idpev_weaponmodel2sConge_p)

Responder
#2
Más fácil?. La más "eficiente" si se le puede llamar -> hook a CBasePlayerWeapon:Gran sonrisaefaultDeploy (en Ham-Sandwich como Ham_Item_Deploy), de esa manera se consigue cambiar el/los pev(s) (STRING(s) ): viewmodel & weaponmodel del jugador justo cuando se actualizan, interceptando este proceso.
Responder
#3
Jajaja como amigo es que no tengo tanta experiencia en esto Whatdone ese codigo lo arme con otros code basicamente copiar y pegar xd Whatdone
Responder
#4
Tu "método" publicado, ya es el ejemplo mismo.

De esa manera es de la que hablo.
Responder
#5
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>

new const sGranada[] = "models/new/v_hegrenade.mdl"
new const sFlash[] = "models/new/v_flashbang.mdl"
new const sConge[] = "models/new/v_frost.mdl"
new const sFlash_p[] = "models/new/p_flashbang.mdl"
new const sGranada_p[] = "models/new/p_hegrenade.mdl"
new const sConge_p[] = "models/new/p_frost.mdl"

new const Repl[][] = { "weapon_hegrenade""weapon_flashbang""weapon_smokegrenade" };

public 
plugin_init()
{
    for( new 
sizeof Repl ; ++i)
        
RegisterHam(Ham_Item_DeployRepl[i], "fw_ItemDeploy"true);
}
public 
plugin_precache()
{
    
precache_model(sGranada)
    
precache_model(sFlash)
    
precache_model(sGranada_p)
    
precache_model(sFlash_p)
    
precache_model(sConge)
    
precache_model(sConge_p)
}
public 
fw_ItemDeploy(ent)
{
    if( 
pev_valid(ent) != 2) return;

    new 
idid get_pdata_cbase(ent41);
    
    if( !
is_user_alive(id)) return;
    
    new 
wpnID cs_get_weapon_id(ent);
    
    switch(
wpnID)
   {
        case 
CSW_SMOKEGRENADE:
       {
            
set_pev(idpev_viewmodel2sConge)
            
set_pev(idpev_weaponmodel2sConge_p)
       }
       case 
CSW_HEGRENADE:
       {
            
set_pev(idpev_viewmodel2sGranada)
            
set_pev(idpev_weaponmodel2sGranada_p)
       }
       case 
CSW_FLASHBANG:
       {
            
set_pev(idpev_viewmodel2sFlash)
            
set_pev(idpev_weaponmodel2sFlash_p)
       }
    }    

[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
Esta bien de la forma que lo estas haciendo, pero se puede optimizar mas

Yo lo aria de esta manera
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new const sGranada[] = "models/new/v_hegrenade.mdl"
new const sFlash[] = "models/new/v_flashbang.mdl"
new const sConge[] = "models/new/v_frost.mdl"
new const sFlash_p[] = "models/new/p_flashbang.mdl"
new const sGranada_p[] = "models/new/p_hegrenade.mdl"
new const sConge_p[] = "models/new/p_frost.mdl"

new const grenadenames[][] = { "weapon_hegrenade""weapon_flashbang""weapon_smokegrenade" }

public 
plugin_init()
{
    for(new 
0sizeof grenadenamesi++)
        
RegisterHam(Ham_Item_Deploygrenadenames[i], "fw_Item_Deploy_Post"true)
}
public 
plugin_precache()
{
    
precache_model(sGranada)
    
precache_model(sFlash)
    
precache_model(sGranada_p)
    
precache_model(sFlash_p)
    
precache_model(sConge)
    
precache_model(sConge_p)
}
public 
fw_Item_Deploy_Post(weapon_ent)
{
    new 
ownerowner get_pdata_cbase(weapon_ent41)
    
    if(!
pev_valid(owner))
        return;
    
    switch(
get_user_weapon(owner))
    {
        case 
CSW_HEGRENADE:
        {
            
set_pev(ownerpev_viewmodel2sGranada)
            
set_pev(ownerpev_weaponmodel2sGranada_p)
        }
        case 
CSW_FLASHBANG:
        {
            
set_pev(ownerpev_viewmodel2sFlash)
            
set_pev(ownerpev_weaponmodel2sFlash_p)
        }
        case 
CSW_SMOKEGRENADE:
        {
            
set_pev(ownerpev_viewmodel2sConge)
            
set_pev(ownerpev_weaponmodel2sConge_p)
        }
    }

[Imagen: 76561198068808877.png]
Responder
#7
gracias a todos eso era lo que buscaba, una consulta saben setear modelos tipo w_

ejemplo w_hegrenade.mdl
Responder
#8
pfnSetModel -> FM_SetModel de Fake-Meta
Responder
#9
fakemeta

Código PHP:
#include <engine>
entity_set_string(idEV_SZ_viewmodel sFlash)
entity_set_string(idEV_SZ_weaponmodelsFlash_p
Responder
#10
(26/06/2017, 11:56 PM)Chamo. escribió: pfnSetModel -> FM_SetModel de Fake-Meta

(27/06/2017, 09:41 AM)mlibre escribió: fakemeta

Código PHP:
#include <engine>
entity_set_string(idEV_SZ_viewmodel sFlash)
entity_set_string(idEV_SZ_weaponmodelsFlash_p


(26/06/2017, 11:56 PM)Chamo. escribió: pfnSetModel -> FM_SetModel de Fake-Meta
Perdon por consultar tanto como seria ?

(27/06/2017, 09:41 AM)mlibre escribió: fakemeta

Código PHP:
#include <engine>
entity_set_string(idEV_SZ_viewmodel sFlash)
entity_set_string(idEV_SZ_weaponmodelsFlash_p

Mlibre eso es para setear w_?
Responder
#11
Creo que era así ?
Código PHP:
#include <amxmodx>
#include <engine>
#include <hamsandwich>

new const w_granada[] = "models/Carpeta/w_granada.mdl"

public plugin_init()
{
    
RegisterHam(Ham_Item_Deploy"weapon_hegrenade""Fw_granada_w"true)
}
public 
plugin_precache()
{
    
precache_model(w_granada)
}
public 
Fw_granada_w(granada)
{
    new 
idid get_pdata_cbase(granada414)

    
entity_set_model(idw_granada)

Responder
#12
(27/06/2017, 08:33 PM)Kross escribió: Creo que era así ?
Código PHP:
#include <amxmodx>
#include <engine>
#include <hamsandwich>

new const w_granada[] = "models/Carpeta/w_granada.mdl"

public plugin_init()
{
    
RegisterHam(Ham_Item_Deploy"weapon_hegrenade""Fw_granada_w"true)
}
public 
plugin_precache()
{
    
precache_model(w_granada)
}
public 
Fw_granada_w(granada)
{
    new 
idid get_pdata_cbase(granada414)

    
entity_set_model(idw_granada)


No me funciona Triste
Responder
#13
Código PHP:
register_forward(FM_SetModel"FM_SetModel_Pre")

public 
FM_SetModel_Pre(const I_Entity, const SZ_Model[])
{
    if (
strlen(SZ_Model) < 9// Para asegurarnos de que tenga al menos 9 caracteres: "models/w_..." = 9 caracteres
        
return FMRES_IGNORED;

    static 
SZ_ClassName[10]

    
entity_get_string(I_EntityEV_SZ_classnamecharsmax(SZ_ClassName))

    if (!
equal(SZ_ClassName"weaponbox")) // Si no es un "weaponbox", lo ignoramos
        
return FMRES_IGNORED;

    if (
SZ_Model[7] != 'w' || SZ_Model[8] != '_'// Esto lo veo algo de más, pero de todas formas nos aseguramos que los caracteres 7/8 correspondan respectivamente a los carcteres: "w"/"_"
        
return FMRES_IGNORED;

    if (
SZ_Model[9] == 'h' && SZ_Model[10] == 'e')
    {
        
entity_set_model(I_Entitytu_modelo_w_hegrenade)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 's' && SZ_Model[10] == 'm')
    {
        
entity_set_model(I_Entitytu_modelo_w_smokegrenade)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 'f' && SZ_Model[10] == 'l')
    {
        
entity_set_model(I_Entitytu_modelo_w_flashbang)
        return 
FMRES_SUPERCEDE// Magia
    
}

    return 
FMRES_IGNORED;


Lo que te paso @mlibre son solo PEVs que guardan un valor (STRING), el cual para las entidades "player" vendría a ser respectivamente los modelos de armas en primera/tercera persona.



@Kross, eso no servirá, ya que la entidad del Deploy no es necesariamente la misma cuando se llama a pfnSetModel (que tengan entendido); sin mencionar que le estas cambiando el modelo al dueño del arma, es decir al jugador.
Responder
#14
Amigo me dice esto al compilarlo

Cita:Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

C:\Users\Sv\Desktop\Xd.sma(27) : error 035: argument type mismatch (argument 3)

1 Error.
Could not locate output file C:\Users\Sv\Desktop/Xd.amx (compile failed).
[Finished in 0.5s]
Código PHP:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <fakemeta>

new const w_granada[] = "models/Carpeta/w_granada.mdl"
new const w_frost[] = "models/Carpeta/w_frost.mdl"
new const w_fb[] = "models/Carpeta/w_fb.mdl"

public plugin_init()
{
    
register_forward(FM_SetModel"FM_SetModel_Pre")
}
public 
plugin_precache()
{
    
precache_model(w_granada)
    
precache_model(w_frost)
    
precache_model(w_fb)
}
public 
FM_SetModel_Pre(const I_Entity, const SZ_Model[])
{
    if (
strlen(SZ_Model) < 9// Para asegurarnos de que tenga al menos 9 caracteres: "models/w_..." = 9 caracteres
        
return FMRES_IGNORED;

    static 
SZ_ClassName[10]

    
entity_get_string(I_EntityEV_SZ_classnamecharsmax(SZ_ClassName))

    if (!
equal(SZ_ClassName"weaponbox")) // Si no es un "weaponbox", lo ignoramos
        
return FMRES_IGNORED;

    if (
SZ_Model[7] != 'w' || SZ_Model[8] != '_'// Esto lo veo algo de más, pero de todas formas nos aseguramos que los caracteres 7/8 correspondan respectivamente a los carcteres: "w"/"_"
        
return FMRES_IGNORED;

    if (
SZ_Model[9] == 'h' && SZ_Model[10] == 'e')
    {
        
entity_set_model(I_Entityw_granada)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 's' && SZ_Model[10] == 'm')
    {
        
entity_set_model(I_Entityw_frost)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 'f' && SZ_Model[10] == 'l')
    {
        
entity_set_model(I_Entityw_fb)
        return 
FMRES_SUPERCEDE// Magia
    
}

    return 
FMRES_IGNORED;

Responder
#15
Código PHP:
entity_get_string(I_EntityEV_SZ_classnamecharsmax(SZ_ClassName)) 

>>>>>>>>>>

Código PHP:
entity_get_string(I_EntityEV_SZ_classnameSZ_ClassNamecharsmax(SZ_ClassName)) 

Error de tipeo, se me paso, lo siento.
Responder
#16
Gracias chamo me compila bien, pero tiro las granadas y no me aparecen sus respectivos modelos no me tira nada en la consola
Responder
#17
Código PHP:
public FM_SetModel_Pre(const I_Entity, const SZ_Model[])
{
    if (
strlen(SZ_Model) < 9// Para asegurarnos de que tenga al menos 9 caracteres: "models/w_..." = 9 caracteres
        
return FMRES_IGNORED;

    if (
SZ_Model[7] != 'w' || SZ_Model[8] != '_'// Esto lo veo algo de más, pero de todas formas nos aseguramos que los caracteres 7/8 correspondan respectivamente a los carcteres: "w"/"_"
        
return FMRES_IGNORED;

    if (
SZ_Model[9] == 'h' && SZ_Model[10] == 'e')
    {
        
entity_set_model(I_Entityw_granada)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 's' && SZ_Model[10] == 'm')
    {
        
entity_set_model(I_Entityw_frost)
        return 
FMRES_SUPERCEDE// Magia
    
}
    else if (
SZ_Model[9] == 'f' && SZ_Model[10] == 'l')
    {
        
entity_set_model(I_Entityw_fb)
        return 
FMRES_SUPERCEDE// Magia
    
}

    return 
FMRES_IGNORED;


Ja, había mandado cualquiera con lo el "weaponbox".

Probe y sirve de 10!.
Responder
#18
Los wold models? w_
[Imagen: 76561198068808877.png]
Responder
#19
Código PHP:
if (SZ_Model[7] != 'w' || SZ_Model[8] != '_'// Esto lo veo algo de más, pero de todas formas nos aseguramos que los caracteres 7/8 correspondan respectivamente a los carcteres: "w"/"_" 

El comentario lo escribiste al revés, estás asegurandote de que esas posiciones no contengan los caracteres seleccionados.
Responder
#20
(27/06/2017, 09:33 PM)KISKE escribió:
Código PHP:
if (SZ_Model[7] != 'w' || SZ_Model[8] != '_'// Esto lo veo algo de más, pero de todas formas nos aseguramos que los caracteres 7/8 correspondan respectivamente a los carcteres: "w"/"_" 

El comentario lo escribiste al revés, estás asegurandote de que esas posiciones no contengan los caracteres seleccionados.

Si lo ves con el RETURN; sabrás que eso trata de decir el codigo Roflmao.
Responder
#21
Yo ya sé lo que quiere decir, lo que significa y lo que intentaste escribir, lo menciono para los que lo leen y no sepan nada al respecto.
Responder
#22
(27/06/2017, 09:38 PM)KISKE escribió: Yo ya sé lo que quiere decir, lo que significa y lo que intentaste escribir, lo menciono para los que lo leen y no sepan nada al respecto.

Bien!.

Disculpa ahí entonces jeje.

Saludos.
Responder
#23
A vale chamo perdón error mio.
Responder
#24
Gracias a chamo y a todos los q trataron de ayudarme Excitedeyes
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)