Raised This Month: $ Target: $400
 0% 

Entities velocity query


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Max!
Member
Join Date: Jun 2009
Old 01-30-2010 , 05:06   Entities velocity query
Reply With Quote #1

Im trying to make it so i can shoot a grenade from my grenade launcher, but when i look straight up or down, the grenade shoots at an angle and not where I look. Here is the code:

I dont think im creating the entity correctly.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <cstrike>

#define PLUGIN "Weapons Menu"
#define VERSION "1.0"
#define AUTHOR "Max!"

#define MAXDAMAGE 0.0
#define EXPLODERADIUS 100.0

#define MAXWEAPONS 3

#define SHOTDELAY 0.5

#define GRENADE 3695

new g_WeaponType[MAXWEAPONS]
new 
Float:g_shotdelay[33]
new 
explosionrocketsmoke
static const g_rocketmodel[32] = "models/rpgrocket.mdl"


public plugin_precache()
{
    
precache_model(g_rocketmodel)
    
explosion precache_model("sprites/zerogxplode.spr")
    
rocketsmoke precache_model("sprites/smoke.spr")
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_event("CurWeapon""Event_CurWeapon""be")
    
register_forward(FM_PlayerPreThink"Forward_PreThink"1)
    
register_forward(FM_UpdateClientData"UpdateClientData_Post"1)
    
register_forward(FM_Touch"Forward_Touch")
}

public 
Event_CurWeapon(id)
{
    
}

public 
UpdateClientData_Postidsendweaponscd_handle )
{
    if (!
is_user_alive(id))
        return 
FMRES_IGNORED
        
    set_cd
(cd_handleCD_ID0)  
    return 
FMRES_HANDLED
}

public 
Forward_PreThink(id)
{
    if(
g_shotdelay[id] <= get_gametime())
    {
        if(
pev(idpev_button) & IN_ATTACK)
        {
            new 
Float:origin[3]
            
pev(idpev_originorigin)
            
            
origin[2] += 15
            
            
new Float:vAngles[3]
            new 
Float:vReturn[3]
            new 
Float:fDistance 1200.0
            
new Float:Angle[3]
            
entity_get_vector(id,EV_VEC_v_angle,vAngles)
            
vReturn[0] = floatcosvAngles[1], degrees ) * fDistance
            vReturn
[1] = floatsinvAngles[1], degrees ) * fDistance
            vReturn
[2] = floatsin( -vAngles[0], degrees ) * fDistance
            
            
new ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
            
engfunc(EngFunc_SetOriginentorigin)
            
set_pev(entpev_movetypeMOVETYPE_BOUNCE)
            
pev(idpev_anglesAngle)
            
set_pev(entpev_anglesAngle)
            
engfunc(EngFunc_SetSizeentFloat:{-3.0, -3.0, -3.0}, Float:{3.03.03.0})
            
engfunc(EngFunc_SetModelentg_rocketmodel)
            
            
set_pev(entpev_gravity0.3)
             
            
set_pev(entpev_iuser3GRENADE)
            
            
set_pev(entpev_velocityvReturn)
            
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(22)
            
write_short(ent)
            
write_short(rocketsmoke)
            
write_byte(3)
            
write_byte(3)
            
write_byte(255)
            
write_byte(255)
            
write_byte(255)
            
write_byte(255)
            
message_end()
            
            
g_shotdelay[id] = get_gametime() + SHOTDELAY
        
}
        
set_pev(idpev_buttonpev(id,pev_button) & ~IN_ATTACK )
    }
    else
    {
        
set_pev(idpev_buttonpev(id,pev_button) & ~IN_ATTACK )
    }
}

public 
Forward_Touch(touchertouched)
{
    if(
pev(touchedpev_iuser3) == GRENADE)
    {
        
Explosion(touched)
    }
}

public 
Explosion(grenade)
{
    new 
ent = -1
    
new Float:grenadeorigin[3]
    
pev(grenadepev_origingrenadeorigin)
    
    while((
ent engfuncEngFunc_FindEntityInSphereentgrenadeoriginEXPLODERADIUS)) != 0)
    {
        if(
is_user_alive(ent))
        {
            new 
Float:origin[3]
            
pev(entpev_originorigin)
            
            new 
Float:damage MAXDAMAGE * (floatabs((EXPLODERADIUS get_distance_f(grenadeoriginorigin)) / EXPLODERADIUS))
            
fakedamage(ent"weapon_hegrenade"damageDMG_BLAST)
            
            
Bounce(entgrenade)
        }
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)  // Explosion
    
write_byte(TE_EXPLOSION)
    
write_coord(floatround(grenadeorigin[0]))
    
write_coord(floatround(grenadeorigin[1]))
    
write_coord(floatround(grenadeorigin[2])+5)
    
write_short(explosion)
    
write_byte(20)
    
write_byte(12// framerate
    
write_byte(TE_EXPLFLAG_NONE)
    
message_end()
    
    
engfunc(EngFunc_RemoveEntitygrenade)
}

Bounce(idexplosion)
{
    new 
Float:distanceFloat:origin[3], Float:origin2[3]
    
pev(idpev_originorigin)
    
pev(explosionpev_originorigin2)
    
distance get_distance_f(originorigin2) * 5
    
    
new Float:vReturn[3]
    
    new 
Float:Angle1[3]
    new 
Float:Angle2[3]
    new 
Float:Return[3]
    
    
entity_get_vector(id,EV_VEC_v_angleAngle1)
    
entity_get_vector(explosion,EV_VEC_v_angleAngle2)
    
    Return[
0] = (Angle2[0] - Angle1[0])
    Return[
1] = (Angle2[1] - Angle1[1])
    
    
vReturn[0] = floatcos(Return[1] + 180degrees) * distance
    vReturn
[1] = floatsin(Return[1], degrees) * distance
    vReturn
[2] = floatsin(-Return[0], degrees) * distance
    
    
//new Float:damage = MAXDAMAGE * (floatabs((EXPLODERADIUS - get_distance_f(grenadeorigin, origin)) / EXPLODERADIUS))
    
    
set_pev(idpev_velocityvReturn)

Max! is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 01-30-2010 , 09:32   Re: Entities velocity query
Reply With Quote #2

Try to retrieve here : pev(id, pev_angles, Angle) ; pev_v_angle instead.
__________________
Arkshine is offline
Max!
Member
Join Date: Jun 2009
Old 01-30-2010 , 14:36   Re: Entities velocity query
Reply With Quote #3

the Angle variable changes the direction the rocket is facing, not the direction the rocket is moving. The problem still exists

edit: i think I fixed it, problem was movetype_bounce not being able to shoot straight up.

Last edited by Max!; 01-30-2010 at 14:49.
Max! is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:18.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode