[ZP] Extra Item: XM1014 con retroceso
#1
Alguien seria tan amable de hacerme un extra item de la escopeta xm1014 con knockback/retroceso es decir, cuando le dispare a un zombie este lo empuje un poco (no mucho) o pongan en el code la cvar para configurarle el empuje a mi gusto.

Espero no sea mucha molestia y graciasWhatever.

EDIT; se me olvido decir que tambien se le pueda cambiar el model v_, p_ y w_ y que haga daño x4
Responder
#2
y yo quiero una novia Whatever
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#3
(07/02/2020, 01:10 PM)roccoxx escribió: y yo quiero una novia Whatever

Responder
#4
(07/02/2020, 01:58 PM)Skylar escribió:
(07/02/2020, 01:10 PM)roccoxx escribió: y yo quiero una novia Whatever
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#5
No comenten si no quieren ps Oh god why.
Responder
#6
Que versión del zp tienes?
Se me ocurre es dejar unas natives en el código para ver y setear el knockback desde otro plugin...
Responder
#7
(08/02/2020, 03:28 PM)luxor xD escribió: Que versión del zp tienes?
Se me ocurre es dejar unas natives en el código para ver y setear el knockback desde otro plugin...

Zombie Plague 4.3 Fix5a
Responder
#8
Primero necesitas editar el script del zombie plague.
una vez lo tengas abierto busca la funcion plugin_natives().
y pega estos dos registros.

Código PHP:
register_native("zp_get_user_knockback""native_get_user_knockback"1)
register_native("zp_set_user_knockback""native_set_user_knockback"1

te quedara algo asi.
Código PHP:
public plugin_natives()
{
    
// Custom natives
    
register_native("zp_get_user_knockback""native_get_user_knockback"1)
    
register_native("zp_set_user_knockback""native_set_user_knockback"1)
...} 

y luego al final del script puedes pegar estas funciones.
Código PHP:
// Native: zp_get_user_knockback
public Float:native_get_user_knockback(id)
{
    if (!
is_user_valid(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return -
1.0;
    }
    
    return 
g_zombie_knockback[id];
}

// Native: zp_set_user_knockback
public native_set_user_knockback(idFloat:valor)
{
    if (!
is_user_valid(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    
g_zombie_knockback[id] = valor;
    
    return 
true;


y ya puedes compilar el script, ahora te toca abrir el include del zombie plague y pegar estas funciones que son las que necesitas para el extra item.
Código PHP:
native Float:zp_get_user_knockback(id)
native zp_set_user_knockback(idFloat:valor

y ya con eso deberia poder usar tu item con mayor empuje, al igual que puedes agregarle empuje a otros items.

PD: No es la mejor forma para hacerlo pero es un avance espero que te ayude.

.sma   Descargar AMXX / extra item xm1014.sma (Tamaño: 6.83 KB / Descargas: 5)
Responder
#9
(08/02/2020, 07:57 PM)luxor xD escribió: Primero necesitas editar el script del zombie plague.
una vez lo tengas abierto busca la funcion plugin_natives().
y pega estos dos registros.

Código PHP:
register_native("zp_get_user_knockback""native_get_user_knockback"1)
register_native("zp_set_user_knockback""native_set_user_knockback"1

te quedara algo asi.
Código PHP:
public plugin_natives()
{
    
// Custom natives
    
register_native("zp_get_user_knockback""native_get_user_knockback"1)
    
register_native("zp_set_user_knockback""native_set_user_knockback"1)
...} 

y luego al final del script puedes pegar estas funciones.
Código PHP:
// Native: zp_get_user_knockback
public Float:native_get_user_knockback(id)
{
    if (!
is_user_valid(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return -
1.0;
    }
    
    return 
g_zombie_knockback[id];
}

// Native: zp_set_user_knockback
public native_set_user_knockback(idFloat:valor)
{
    if (!
is_user_valid(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    
g_zombie_knockback[id] = valor;
    
    return 
true;


y ya puedes compilar el script, ahora te toca abrir el include del zombie plague y pegar estas funciones que son las que necesitas para el extra item.
Código PHP:
native Float:zp_get_user_knockback(id)
native zp_set_user_knockback(idFloat:valor

y ya con eso deberia poder usar tu item con mayor empuje, al igual que puedes agregarle empuje a otros items.

PD: No es la mejor forma para hacerlo pero es un avance espero que te ayude.

Al compilar tu extra item me tira 1 error.
Código:
//// extra item xm1014.sma
// C:\hlserver\cstrike\addons\amxmodx\scripting\extra item xm1014.sma(69) : error 088: number of arguments does not match definition
//
// 1 Error.
// Could not locate output file C:\hlserver\cstrike\addons\amxmodx\scripting\compiled\extra item xm1014.amx (compile failed).
//
// Compilation Time: 0.34 sec
// ----------------------------------------

así fue como lo modifique, no toque nada más que los models del arma.
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>

#define is_valid_player(%1) (1 <= %1 <= 32)
#define ENG_NULLENT        -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define ITEM_WEAPONKEY    351


#define    MSG_BROADCAST               0        // Unreliable to all

#define SVC_TEMPENTITY                23


// Var's
new g_itemid
new const g_ItemEnt[] = "weapon_xm1014"
const Wep_ItemS = ((1<<CSW_XM1014))
const 
CSW_ITEM CSW_XM1014

// Item ID
new Float:knockback_Org[32]
new 
bool:g_HasItem[33]
new 
ent[33]
new 
bullets[33]

// Models
new V_MODEL[64] = "models/ze_armas_especiales/v_balrog11.mdl"
new P_MODEL[64] = "models/ze_armas_especiales/p_balrog11.mdl"
new W_MODEL[64] = "models/ze_armas_especiales/w_balrog11.mdl"

/* Pcvars */
new cvar_custommodelcvar_uclip

// Const
const Float:ataque 1.2
const Float:empuje 999.999
// color del glow
const glowR =100
const glowG =255
const glowB =255

public plugin_init()
{
    
    
/* CVARS */
    
cvar_custommodel register_cvar("za_ITEM_custom_model""1")
    
cvar_uclip register_cvar("za_ITEM_unlimited_clip""1")
    
    
register_event("DeathMsg""Death""a")
    
register_event("WeapPickup","checkModel","b","1=19")
    
register_event("CurWeapon","checkWeapon","be","1=1")
    
    
register_forwardFM_CmdStart"fw_CmdStart" )
    
register_forward(FM_SetModel"fw_SetModel")
    
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage_Post"1)
    
    
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1)
    
RegisterHam(Ham_Item_AddToPlayerg_ItemEnt"fw_ItemAddToPlayer")

    
g_itemid zp_register_extra_item("arma"00ZP_TEAM_HUMAN)
    
// g_itemid = zp_register_extra_item("arma", 0, ZP_TEAM_HUMAN)
}

public 
client_connect(id)
{
    
g_HasItem[id] = false
    fm_remove_model_ents
(id)
}

public 
client_disconnect(id)
{
    
g_HasItem[id] = false
    fm_remove_model_ents
(id)
}

public 
Death()
{    
    
g_HasItem[read_data(2)] = false
    fm_remove_model_ents
(read_data(2))
}

public 
fwHamPlayerSpawnPost(id)
{
    
g_HasItem[id] = false
    fm_remove_model_ents
(id)
}

public 
plugin_precache()
{
    
precache_model(V_MODEL)
    
precache_model(P_MODEL)
    
precache_model(W_MODEL)
}

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_HasItem[id] = false
        fm_remove_model_ents
(id)
    }
}
public 
zp_user_humanized_post(id)
{
    
g_HasItem[id] = false
    fm_remove_model_ents
(id)
}

public 
checkModel(id)
{
    if ( 
zp_get_user_zombie(id) )
        return 
PLUGIN_HANDLED
    
new szWeapID read_data(2)
        
    if ( 
szWeapID == CSW_ITEM && g_HasItem[id] == true && get_pcvar_num(cvar_custommodel))
    {
        
set_pev(idpev_viewmodel2V_MODEL)
        
set_pev(idpev_weaponmodel2P_MODEL)
        
fm_set_weaponmodel_ent(id,glowR,glowG,glowB)
    }

    return 
PLUGIN_HANDLED
}

public 
checkWeapon(id)
{
    new 
plrClipplrAmmoplrWeap[32]
    new 
plrWeapId
    
new clip
    
    plrWeapId 
get_user_weapon(idplrClip plrAmmo)
    
    if (
plrWeapId == CSW_ITEM && g_HasItem[id])
    {
        
checkModel(id)
    }
    else 
    {
        
fm_remove_model_ents(id)
        return 
PLUGIN_CONTINUE
    
}
    
    if (
bullets[id] >= clip  && get_pcvar_num(cvar_uclip))
    {
        
get_weaponname(plrWeapIdplrWeap31)

        
give_item(idplrWeap)
        
engclient_cmd(idplrWeap
        
engclient_cmd(idplrWeap)
        
engclient_cmd(idplrWeap)

    }
    return 
PLUGIN_HANDLED
}


public 
fw_TakeDamage_Post(victimattacker)
{
    if(!
is_valid_playerattacker ))
        return
        
    if(!(
get_user_weapon(attacker) == CSW_ITEM && g_HasItem[attacker]))
        return

    
knockback_Org[victim] = zp_get_user_knockback(victim)
    
    
zp_set_user_knockback(victimempuje )

}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{    


    if(
is_valid_playerattacker ) && get_user_weapon(attacker) == CSW_ITEM && g_HasItem[attacker])
        
SetHamParamFloat(4damage ataque)
        
    
    if(!
is_valid_playervictim) )
        return
        
    
zp_set_user_knockback(victimknockback_Org[victim])
}

                    
// #/////~$L%ux%or xD%_="······ªª¡?//
public zp_extra_item_selected(playeritemid)
{
    if ( 
itemid == g_itemid )
    {
        if ( 
user_has_weapon(playerCSW_ITEM) )
        {
            
drop_item(player)
        }
        
give_item(playerg_ItemEnt)
        
g_HasItem[player] = true;
        
    }
}
stock drop_item(id
{
    new 
weapons[32], num
    get_user_weapons
(idweaponsnum)
    for (new 
0numi++) {
        if (
Wep_ItemS & (1<<weapons[i])) 
        {
            static 
wname[32]
            
get_weaponname(weapons[i], wnamesizeof wname 1)
            
engclient_cmd(id"drop"wname)
        }
    }
}
public 
fw_SetModel(entitymodel[])
{
    if(!
is_valid_ent(entity))
        return 
FMRES_IGNORED;
        
    if(!
equal(model"models/w_xm1014.mdl")) 
        return 
FMRES_IGNORED;
        
    static 
szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
        
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwneriStoredItemID
    
    iOwner 
entity_get_edict(entityEV_ENT_owner)
    
    
iStoredItemID find_ent_by_owner(ENG_NULLENT"weapon_xm1014"entity)
    
    if(
g_HasItem[iOwner] && is_valid_ent(iStoredItemID))
    {
        
fm_set_rendering(entitykRenderFxGlowShellglowRglowGglowBkRenderNormal16);
        
entity_set_int(iStoredItemIDEV_INT_WEAPONKEYITEM_WEAPONKEY)
        
g_HasItem[iOwner] = false
        fm_remove_model_ents
(iOwner)
        
        
entity_set_model(entityW_MODEL)
        
        return 
FMRES_SUPERCEDE
    
}

    return 
FMRES_IGNORED
}

public 
fw_ItemAddToPlayer(ITEMid)
{
    if( 
is_valid_ent(ITEM) && is_user_connected(id) && entity_get_int(ITEMEV_INT_WEAPONKEY) == ITEM_WEAPONKEY)
    {
        
g_HasItem[id] = true
        entity_set_int
(ITEMEV_INT_WEAPONKEY0)
        return 
HAM_HANDLED
    
}
    return 
HAM_IGNORED
}

stock fm_set_weaponmodel_ent(idred = -1green = -1blue = -1)
{    
    static 
model[128];
    
entity_get_string(idEV_SZ_weaponmodelmodelcharsmax(model));
    
    if(!
pev_valid(ent[id]))
    {
        
ent[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
        if(!
pev_valid(ent[id])) return;
        
        
entity_set_string(ent[id], EV_SZ_classname"weapon_model");
        
entity_set_int(ent[id], EV_INT_movetypeMOVETYPE_FOLLOW);
        
entity_set_edict(ent[id], EV_ENT_aimentid);
        
entity_set_edict(ent[id], EV_ENT_ownerid);
        
        if(
red != -|| green != -|| blue != -1)
            
fm_set_rendering(ent[id], kRenderFxGlowShellredgreenbluekRenderNormal16);
    }
    
    
engfunc(EngFunc_SetModelent[id], model);

stock fm_remove_model_ents(id)
{    
    if(
pev_valid(ent[id]))
    {
        
remove_entity(ent[id]);
        
ent[id] = 0;
    }

Responder
#10
Cambia el nombre del sma y compila. A ver... a mi me compiló bien. De todas maneras volveré a probar
Edit: revisa la parte de g_itemid = zp_register_extra_item(...

A ver si concuerda con la tuya ya que hay unos donde le agregan niveles y hay otras donde no
Responder
#11
(09/02/2020, 12:34 AM)luxor xD escribió: Cambia el nombre del sma y compila. A ver... a mi me compiló bien. De todas maneras volveré a probar
Edit: revisa la parte de g_itemid = zp_register_extra_item(...

A ver si concuerda con la tuya ya que hay unos donde le agregan niveles y hay otras donde no

Ya me sirvió pero el arma tiene daño x3 y todo pero no empuja.
PD: y si, hice lo de editar zombieplague40.sma
Responder
#12
porque debes editar el .sma del item, prueba poniendolo en el takedamage o lo mejor es que revises donde se usa eso en el zp para colocarlo bien Whatever
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#13
(09/02/2020, 01:33 AM)Hypnotize escribió: porque debes editar el .sma del item, prueba poniendolo en el takedamage o lo mejor es que revises donde se usa eso en el zp para colocarlo bien Whatever

No entiendo a que te refieres que "ponga" en esta parte del sma del extra item:
Código PHP:
public fw_TakeDamage_Post(victimattacker)
{
    if(!
is_valid_playerattacker ))
        return
        
    if(!(
get_user_weapon(attacker) == CSW_ITEM && g_HasItem[attacker]))
        return

    
knockback_Org[victim] = zp_get_user_knockback(victim)
    
    
zp_set_user_knockback(victimempuje )

}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{    


    if(
is_valid_playerattacker ) && get_user_weapon(attacker) == CSW_ITEM && g_HasItem[attacker])
        
SetHamParamFloat(4damage ataque)
        
    
    if(!
is_valid_playervictim) )
        return
        
    
zp_set_user_knockback(victimknockback_Org[victim])

O debo activar el knockback en zombies?, aunque no porque solo quiero que esta sea la unica arma que empuje...
Responder
#14
sorry pase el sma incorrecto.
Whatdone

prueba este...

.sma   Descargar AMXX / xm1014.sma (Tamaño: 6.89 KB / Descargas: 4)
Responder
#15
(09/02/2020, 03:00 AM)luxor xD escribió: sorry pase el sma incorrecto.
Whatdone

prueba este...

Todavía no empuja, ah y yo lo pruebo con los podbots ¿sera a ellos que no les hace efecto?
Responder
#16
Yo lo probé con podbots también y la verdad a mi si me empuja es más, hasta de me bugea jaja al cambiar de arma tengo un empuje extra y luego vuelve a la normalidad...

Hiciste las modificaciones como te dije? Dejame revisar a ver si me equivoque en algo
Responder
#17
(09/02/2020, 02:42 PM)luxor xD escribió: Yo lo probé con podbots también y la verdad a mi si me empuja es más, hasta de me bugea jaja al cambiar de arma tengo un empuje extra y luego vuelve a la normalidad...

Hiciste las modificaciones como te dije? Dejame revisar a ver si me equivoque en algo

Aquí te dejo el zombieplague40.sma y zombieplague.inc a ver si revisas que hice algo mal.


Archivos adjuntos
.sma   Descargar AMXX / zombie_plague40.sma (Tamaño: 363.19 KB / Descargas: 2)
.inc   zombieplague.inc (Tamaño: 12.78 KB / Descargas: 16)
Responder
#18
bueno lo único que se me ocurrió es compilarlos yo ya que no me genera ningún error.
el código es el mismo que me acabas de mandar pero compilado por mi.

de todas maneras por las reglas no podre dejarlo, asi que con permiso de los admins.

si dudan de los archivos pueden eliminar esto, gracias.
Responder
#19
(09/02/2020, 06:44 PM)luxor xD escribió: bueno lo único que se me ocurrió es compilarlos yo ya que no me genera ningún error.
el código es el mismo que me acabas de mandar pero compilado por mi.

de todas maneras por las reglas no podre dejarlo, asi que con permiso de los admins.

https://mega.nz/#!HkEF0YjY!u8ZIPdU-vUEBE...VeAeiQrWnQ
https://mega.nz/#!n9MBAI5J!WPT8XfTNqauAl...Tc1A4cfKow

si dudan de los archivos pueden eliminar esto, gracias.

Y todavía me sigue sin empuje. Bueno podemos dejar el post aquí ya que no vamos a llenar de respuestas esto.

Gracias por tu querida ayuda y tendre que aprender más sobre pawn para conseguir lo que quiero por mi cuentaWhatever

EDIT; este post y sus respuestas me serviran. Interesting
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)