AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Set entity velocity (https://forums.alliedmods.net/showthread.php?t=117043)

xbatista 01-28-2010 14:52

Set entity velocity
 
Animation playing ,entity won't follow me, whats wrong?

PHP Code:

// Called in entity think
                        
new Float:velocity[3];
                        
get_speed_vector2entenemy200.0velocity)
                            
                        
set_peventpev_velocityvelocity);
                            
                        
entity_set_aim(ent TOrigin)
                        
                        
set_pevent,pev_sequence4)
                        
set_pevent,pev_framerate1.0

PHP Code:

// From CHR_ENGINE
stock get_speed_vector2(ent1ent2Float:speedFloat:new_velocity[3])
{
    if(!
pev_valid(ent1) || !pev_valid(ent2))
        return 
0;

    static 
Float:origin1[3]
    
pev(ent1,pev_origin,origin1)
    static 
Float:origin2[3]
    
pev(ent2,pev_origin,origin2)

    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num

    
return 1;
}
stock entity_set_aim(ent,const Float:origin2[3],bone=0)
{
    if(!
pev_valid(ent))
        return 
0;

    static 
Float:origin[3]
    
origin[0] = origin2[0]
    
origin[1] = origin2[1]
    
origin[2] = origin2[2]

    static 
Float:ent_origin[3], Float:angles[3]

    if(
bone)
        
engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
    else
        
pev(ent,pev_origin,ent_origin)

    
origin[0] -= ent_origin[0]
    
origin[1] -= ent_origin[1]
    
origin[2] -= ent_origin[2]

    static 
Float:v_length
    v_length 
vector_length(origin)

    static 
Float:aim_vector[3]
    
aim_vector[0] = origin[0] / v_length
    aim_vector
[1] = origin[1] / v_length
    aim_vector
[2] = origin[2] / v_length

    
static Float:new_angles[3]
    
vector_to_angle(aim_vector,new_angles)

    
new_angles[0] *= -1

    
if(new_angles[1]>180.0new_angles[1] -= 360
    
if(new_angles[1]<-180.0new_angles[1] += 360
    
if(new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1]=-179.999999

    set_pev
(ent,pev_angles,new_angles)
    
set_pev(ent,pev_fixangle,1)

    return 
1;



Emp` 01-28-2010 14:56

Re: Set entity velocity
 
I would guess that enemy is not a valid entity.

xbatista 01-28-2010 15:01

Re: Set entity velocity
 
I changed, but nothing
PHP Code:

    if(!pev_valid(ent1) || !is_user_alive(ent2))
        return 
0

The Enemy is just player and I already put is enemy alive, still won't follow, just plays animation

Emp` 01-28-2010 15:17

Re: Set entity velocity
 
Show how you are getting the enemy.

xbatista 01-28-2010 15:21

Re: Set entity velocity
 
PHP Code:

// init
register_think"Skeleton""Skeleton_Think" );

public 
Skeleton_Think(ent)
{
    if ( !
pev_valid(ent) )
        return 
PLUGIN_CONTINUE;

    
//new creator = entity_get_edict(ent, EV_ENT_owner);

    
new Float:COrigin[3], Float:EOrigin[3], Float:TOrigin[3];

    
peventpev_originEOrigin)

    
//if ( !is_user_alive(creator) )
        //return PLUGIN_CONTINUE;
    
    //pev( creator, pev_origin, COrigin)

    //if( get_distance_f( COrigin, EOrigin) > 1200.0 )
    //{
        //remove_entity(ent);
        //return PLUGIN_CONTINUE;
    //}
    //else
    //{
    
for(new enemy 1enemy <= g_iMaxPlayersenemy++) 
    {
        if ( 
is_user_alive(enemy) )
        {
            
pevenemypev_originTOrigin)
                    
            if ( 
get_distance_fTOriginEOrigin) <= 70.0 )
            {
                
set_peventpev_sequence76)
                
set_peventpev_framerate0.5)
                        
                
entity_set_aimentTOrigin)
            }
            else
            {
                new 
Float:velocity[3];
                
get_speed_vector3entenemy200.0velocity)
                            
                
set_peventpev_velocityvelocity);
                            
                
entity_set_aim(ent TOrigin)
                        
                
set_peventpev_sequence4)
                
set_peventpev_framerate1.0)
            }
        }
    }
        
//}

    
set_peventpev_nextthinkget_gametime() + 0.01)
    
    return 
PLUGIN_CONTINUE;



joropito 01-28-2010 20:28

Re: Set entity velocity
 
Entity follow using pev_aiming it's only valid for weapons or attached entities.

If you want to make an entity and it follow something but like an npc, you should make the first entity think and make some movements acording to the position of the other entity.

Emp` 01-28-2010 20:49

Re: Set entity velocity
 
Show the function that creates the entity/entities.

xbatista 01-29-2010 07:58

Re: Set entity velocity
 
The problem is in MOVETYPES, there are no good movetypes :(
With TOSS works fine, but won't set it's velocity, with FLY,STEP etc. server crash and sets velocity, what to do?

PHP Code:

            new Float:Origin[3];
            
fm_get_aim_origin(idOrigin)

            
Origin[2] += 75.0

            
new ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));

            
set_pev(entpev_classname"Skeleton");
            
            
set_pev(entpev_takedamage1.0);
            
set_pev(entpev_health100.0);
            
            
set_pev(entpev_movetypeMOVETYPE_TOSS);
            
            
engfunc(EngFunc_SetModelentSkeleton_Mdl);
            
set_pev(entpev_solidSOLID_BBOX);
            
            
set_pev(entpev_controller_0125);
            
set_pev(entpev_controller_1125);
            
set_pev(entpev_controller_2125);
            
set_pev(entpev_controller_3125);
            
            
set_pev(entpev_animtime2.0);
            
set_pev(entpev_framerate1.0);
            
set_pev(entpev_sequence1);
            
            
engfunc(EngFunc_SetSizeentFloat:{-16.0, -16.0, -36.0}, Float:{16.016.036.0});
            
engfunc(EngFunc_SetOriginentOrigin);
            
            
set_pev(entpev_nextthinkget_gametime() + 0.01);
            
            
engfunc(EngFunc_DropToFloorent); 


Dr.G 01-29-2010 10:10

Re: Set entity velocity
 
for the velocity ive used these stocks before, i think i got them from some of pimpdaddys work


PHP Code:

stock get_velocity_to_originentFloat:fOrigin[3], Float:fSpeedFloat:fVelocity[3] )
{
    new 
Float:fEntOrigin[3]
    
entity_get_vectorentEV_VEC_originfEntOrigin )
    
    
// Velocity = Distance / Time
    
    
new Float:fDistance[3]
    
fDistance[0] = fOrigin[0] - fEntOrigin[0]
    
fDistance[1] = fOrigin[1] - fEntOrigin[1]
    
fDistance[2] = fOrigin[2] - fEntOrigin[2]
    
    new 
Float:fTime = (vector_distancefEntOrigin,fOrigin ) / fSpeed)
    
    
fVelocity[0] = fDistance[0] / fTime
    fVelocity
[1] = fDistance[1] / fTime
    fVelocity
[2] = fDistance[2] / fTime
    
    
return (fVelocity[0] && fVelocity[1] && fVelocity[2])
}
////////////////////////////////////////////////////////////////////////////////////////////////////
stock set_velocity_to_origin(entFloat:fOrigin[3], Float:fSpeed )
{
    new 
Float:fVelocity[3]
    
get_velocity_to_origin(entfOriginfSpeedfVelocity )
    
    
entity_set_vector(entEV_VEC_velocityfVelocity)
    
    return (
1)




And created the ent. like this:

PHP Code:

    new iEnt create_entity("info_target")
    
    if(!
iEnt
        return 
PLUGIN_HANDLED

    entity_set_string
(iEntEV_SZ_classnameg_szClassName)
    
    
entity_set_sizeiEntFloat:{-20.0, -20.0, -20.0}, Float:{20.020.020.0})
    
entity_set_model(iEntg_szMODEL)
    
entity_set_vector(iEntEV_VEC_originSpawn_Origin)
    
    
entity_set_int(iEntEV_INT_solidSOLID_BBOX)
    
    
entity_set_int(iEntEV_INT_movetypeMOVETYPE_FLY)
    
    
entity_set_float(iEnt,EV_FL_animtime,2.0)
    
    
entity_set_float(iEnt,EV_FL_framerate,100.0)
    
    
entity_set_int(iEnt,EV_INT_sequence,0

and then set_velocity_to_origin. Cant remember what and why but that worked for me

xbatista 01-29-2010 10:36

Re: Set entity velocity
 
okey thanks will try


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

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