Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
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 id; id = get_pdata_cbase(granada, 41, 4 ) set_pev(id, pev_viewmodel2, sGranada) set_pev(id, pev_weaponmodel2, sGranada_p) } public fw_flash(flash) { new id; id = get_pdata_cbase(flash, 41, 4)
set_pev(id, pev_viewmodel2, sFlash) set_pev(id, pev_weaponmodel2, sFlash_p) } public fw_conge(conge) { new id; id = get_pdata_cbase(conge, 41, 4)
set_pev(id, pev_viewmodel2, sConge) set_pev(id, pev_weaponmodel2, sConge_p) }
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
26/06/2017, 09:29 PM
(Última modificación: 26/06/2017, 09:57 PM por Chamo..)
Más fácil?. La más "eficiente" si se le puede llamar -> hook a CBasePlayerWeapon:efaultDeploy (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.
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
Jajaja como amigo es que no tengo tanta experiencia en esto ese codigo lo arme con otros code basicamente copiar y pegar xd
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Tu "método" publicado, ya es el ejemplo mismo.
De esa manera es de la que hablo.
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
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 i = 0 ; i < sizeof Repl ; ++i) RegisterHam(Ham_Item_Deploy, Repl[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 id; id = get_pdata_cbase(ent, 41, 4 ); if( !is_user_alive(id)) return; new wpnID = cs_get_weapon_id(ent); switch(wpnID) { case CSW_SMOKEGRENADE: { set_pev(id, pev_viewmodel2, sConge) set_pev(id, pev_weaponmodel2, sConge_p) } case CSW_HEGRENADE: { set_pev(id, pev_viewmodel2, sGranada) set_pev(id, pev_weaponmodel2, sGranada_p) } case CSW_FLASHBANG: { set_pev(id, pev_viewmodel2, sFlash) set_pev(id, pev_weaponmodel2, sFlash_p) } } }
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 1,519
Temas: 237
Registro en: Feb 2014
Reputación:
22
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 i = 0; i < sizeof grenadenames; i++) RegisterHam(Ham_Item_Deploy, grenadenames[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 owner; owner = get_pdata_cbase(weapon_ent, 41, 4 ) if(!pev_valid(owner)) return; switch(get_user_weapon(owner)) { case CSW_HEGRENADE: { set_pev(owner, pev_viewmodel2, sGranada) set_pev(owner, pev_weaponmodel2, sGranada_p) } case CSW_FLASHBANG: { set_pev(owner, pev_viewmodel2, sFlash) set_pev(owner, pev_weaponmodel2, sFlash_p) } case CSW_SMOKEGRENADE: { set_pev(owner, pev_viewmodel2, sConge) set_pev(owner, pev_weaponmodel2, sConge_p) } } }
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
gracias a todos eso era lo que buscaba, una consulta saben setear modelos tipo w_
ejemplo w_hegrenade.mdl
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
pfnSetModel -> FM_SetModel de Fake-Meta
Mensajes: 688
Temas: 31
Registro en: Nov 2015
Reputación:
7
fakemeta
Código PHP: #include <engine> entity_set_string(id, EV_SZ_viewmodel , sFlash) entity_set_string(id, EV_SZ_weaponmodel, sFlash_p)
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
(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(id, EV_SZ_viewmodel , sFlash) entity_set_string(id, EV_SZ_weaponmodel, sFlash_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(id, EV_SZ_viewmodel , sFlash) entity_set_string(id, EV_SZ_weaponmodel, sFlash_p)
Mlibre eso es para setear w_?
Mensajes: 531
Temas: 14
Registro en: Mar 2017
Reputación:
9
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 id; id = get_pdata_cbase(granada, 41, 4)
entity_set_model(id, w_granada) }
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
(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 id; id = get_pdata_cbase(granada, 41, 4)
entity_set_model(id, w_granada) }
No me funciona
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
27/06/2017, 08:47 PM
(Última modificación: 27/06/2017, 09:00 PM por Chamo..)
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_Entity, EV_SZ_classname, charsmax(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_Entity, tu_modelo_w_hegrenade) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 's' && SZ_Model[10] == 'm') { entity_set_model(I_Entity, tu_modelo_w_smokegrenade) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 'f' && SZ_Model[10] == 'l') { entity_set_model(I_Entity, tu_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.
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
27/06/2017, 08:56 PM
(Última modificación: 27/06/2017, 08:58 PM por BlasKer.)
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_Entity, EV_SZ_classname, charsmax(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_Entity, w_granada) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 's' && SZ_Model[10] == 'm') { entity_set_model(I_Entity, w_frost) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 'f' && SZ_Model[10] == 'l') { entity_set_model(I_Entity, w_fb) return FMRES_SUPERCEDE; // Magia }
return FMRES_IGNORED; }
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Código PHP: entity_get_string(I_Entity, EV_SZ_classname, charsmax(SZ_ClassName))
>>>>>>>>>>
Código PHP: entity_get_string(I_Entity, EV_SZ_classname, SZ_ClassName, charsmax(SZ_ClassName))
Error de tipeo, se me paso, lo siento.
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
Gracias chamo me compila bien, pero tiro las granadas y no me aparecen sus respectivos modelos no me tira nada en la consola
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
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_Entity, w_granada) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 's' && SZ_Model[10] == 'm') { entity_set_model(I_Entity, w_frost) return FMRES_SUPERCEDE; // Magia } else if (SZ_Model[9] == 'f' && SZ_Model[10] == 'l') { entity_set_model(I_Entity, w_fb) return FMRES_SUPERCEDE; // Magia }
return FMRES_IGNORED; }
Ja, había mandado cualquiera con lo el " weaponbox".
Probe y sirve de 10!.
Mensajes: 1,519
Temas: 237
Registro en: Feb 2014
Reputación:
22
27/06/2017, 09:14 PM
(Última modificación: 27/06/2017, 09:15 PM por zoolk.)
Los wold models? w_
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
27/06/2017, 09:33 PM
(Última modificación: 27/06/2017, 09:33 PM por KISKE.)
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.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
(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 .
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
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.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
(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.
Mensajes: 531
Temas: 14
Registro en: Mar 2017
Reputación:
9
27/06/2017, 09:54 PM
(Última modificación: 27/06/2017, 09:54 PM por Kross.)
A vale chamo perdón error mio.
Mensajes: 444
Temas: 51
Registro en: May 2017
Reputación:
4
Gracias a chamo y a todos los q trataron de ayudarme
|