Angles vector

Сообщения
10
Реакции
0
Здравствуйте! Хочу создать обьект, который будет постоянно смотреть в небо (То-есть вертикально)
Помогите плиз :)


public __@CreateFindHullIntersection( iPlayer ) {
static Float: iPlayerOrigin[ 3 ]; pev( iPlayer, pev_origin, iPlayerOrigin );

static iEnt; iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
if( pev_valid( iEnt ) ) {
set_pev( iEnt, pev_classname, FIND_CLASSNAME );
set_pev( iEnt, pev_solid, SOLID_NOT );
set_pev( iEnt, pev_movetype, MOVETYPE_FOLLOW );
set_pev( iEnt, pev_owner, iPlayer );

engfunc( EngFunc_SetOrigin, iEnt, iPlayerOrigin );

set_pev( iEnt, pev_nextthink, get_gametime( ) );
}
return;
}


public __@ThinkFindHullIntersection( iEnt ) {
if( pev_valid( iEnt ) ) {
/*
Сюда хочу сунуть этот vectro angle, чтобы этот энтити обьект постоянно смотрел вертикально.
*/
set_pev( iEnt, pev_nextthink, get_gametime( ) + 0.05 );
}
return PLUGIN_CONTINUE;
}
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
Mor3gen, для начала , научитесь офрмлять сообщения! Там где три точки, выбираете тег код и потом вписывайся код
 
Сообщения
10
Реакции
0
Код:
#include < amxmodx >
#include < engine >
#include < fakemeta_util >

#define FIND_CLASSNAME "iEntFind"

public plugin_init( ) {
    register_think( FIND_CLASSNAME, "__@ThinkFindHullIntersection" );
    
    register_clcmd( "say /check_find", "__@CreateFindHullIntersection" );
}

public __@CreateFindHullIntersection( iPlayer ) {
    static Float: iPlayerOrigin[ 3 ]; pev( iPlayer, pev_origin, iPlayerOrigin );
    
    static iEnt; iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
    if( pev_valid( iEnt ) ) {
        set_pev( iEnt, pev_classname, FIND_CLASSNAME );
        set_pev( iEnt, pev_solid, SOLID_NOT );
        set_pev( iEnt, pev_movetype, MOVETYPE_FOLLOW );
        set_pev( iEnt, pev_owner, iPlayer );
        
        engfunc( EngFunc_SetOrigin, iEnt, iPlayerOrigin );
        
        set_pev( iEnt, pev_nextthink, get_gametime( ) );
    }
    return;
}

public __@ThinkFindHullIntersection( iEnt ) {
    if( pev_valid( iEnt ) ) {
        /*
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
        write_byte( TE_SPARKS );
        engfunc( EngFunc_WriteCoord, iEntAngles[ 0 ] );
        engfunc( EngFunc_WriteCoord, iEntAngles[ 1 ] );
        engfunc( EngFunc_WriteCoord, iEntAngles[ 2 ] );
        message_end( );
        */
        
        /*
        if( iOwnerOrigin[ 0 ] != iEntOrigin[ 0 ] || iOwnerOrigin[ 1 ] != iEntOrigin[ 1 ] || iOwnerOrigin[ 2 ] != iEntOrigin[ 2 ] ) {
            new Float: iDistance = get_distance_f( iOwnerOrigin, iEntOrigin );
            if( iDistance > 0.0 ) {
                static Float: iSpeed; iSpeed = iDistance * 30.0; __@GetSpeedVector( iEntOrigin, iOwnerOrigin, iSpeed, iEntVelocity );
                set_pev( iEnt, pev_velocity, iEntVelocity );
            } else if( iDistance <= 0.0 ) set_pev( iEnt, pev_velocity, 0.0 );
        }
        */
        set_pev( iEnt, pev_nextthink, get_gametime( ) + 0.05 );
    }
    return PLUGIN_CONTINUE;
}

stock __@GetSpeedVector( const Float: iEntOrigin[ 3 ], const Float: iPlayerOrigin[ 3 ], Float: iSpeed, Float: iVelocity[ 3 ] ) {
    iVelocity[ 0 ] = iPlayerOrigin[ 0 ] - iEntOrigin[ 0 ];
    iVelocity[ 1 ] = iPlayerOrigin[ 1 ] - iEntOrigin[ 1 ];
    iVelocity[ 2 ] = iPlayerOrigin[ 2 ] - iEntOrigin[ 2 ];
    
    new Float: iAmmount = floatsqroot( iSpeed * iSpeed / ( iVelocity[ 0 ] * iVelocity[ 0 ] + iVelocity[ 1 ] * iVelocity[ 1 ] + iVelocity[ 2 ] * iVelocity[ 2 ] ) );
    
    iVelocity[ 0 ] *= iAmmount;
    iVelocity[ 1 ] *= iAmmount;
    iVelocity[ 2 ] *= iAmmount;
    
    return 1;
}
31 Янв 2025
@Code_0xABC,Оставил ниже.
 
Сообщения
10
Реакции
0
@Code_0xABC,Я это понял, просто я не могу сделать так, чтобы он всегда смотрел в небо. Я пробовал свои коордыловить при установке, но не помогло.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу