Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

[Скриптинг] Эффект траектории

Статус пользователя Fred Perry
сообщение 27.4.2014, 0:09
Сообщение #1


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Всем здарова.

Вот у меня есть плагин, админ выпускает некий шар. Хочу запилить эффект траектории. Что читать, где есть пример?

Спасибо.


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 27.4.2014, 0:21
Сообщение #2
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

VelocityByaim

счас фильм досмотрю.... а тебе надо менять в сторону или по вектору прицела или куда?

я такой запилил себе в ракетницу

Код:

new Float:vSrc[3];
pev(id, pev_origin, vSrc);
new Float:Aim[3], Float:origin[3];
velocity_by_aim(id, 64, Aim);
pev(id,pev_origin,origin);

vSrc[0] += Aim[0];
vSrc[1] += Aim[1];
vSrc[2] += Aim[2]+20;

engfunc(EngFunc_SetOrigin, nail, vSrc);
new Float:velocity[3], Float:angles[3];

velocity_by_aim(id, 900 , velocity); //speed
set_pev(nail, pev_velocity, velocity);
vector_to_angle(velocity, angles);
set_pev(nail, pev_angles, angles);
set_pev(nail, pev_owner,id);
set_pev(nail, pev_takedamage, 1.0);
entity_set_float(nail,EV_FL_framerate,1.0)
entity_set_int(nail, EV_INT_rendermode, 5)
entity_set_float(nail, EV_FL_renderamt, 255.0)
entity_set_float(nail, EV_FL_scale, 0.6) //sprite scale



если помнишь то есть [0] - x координата [1] - y [2] - z
изменит от тебя, позицию. как видно в коде, а вот куда. тоже можно изменить. просто подкорректировав конечную точку аналогично

Отредактировал: csnet, - 27.4.2014, 0:27


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 27.4.2014, 0:26
Сообщение #3


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

csnet,
По вектору прицела.

Сейчас кое-что читаю, но там есть варианты, я так понимаю мне надо брать
Код
TE_BEAMPOINTS 0 // Beam effect between two points


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 27.4.2014, 0:27
Сообщение #4
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Код:
beam() {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(22)
write_short() // Entity ID
write_short() // Sprite Beam Находится sprites/laserbeam.spr
write_byte() // life
write_byte() // width
write_byte() // R
write_byte() // G
write_byte() // B
write_byte() // brightness
message_end()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя csnet
сообщение 27.4.2014, 0:28
Сообщение #5
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

нет, это темпевент отрисует по заданным точкам.
чтобы найти вектор проще всего юзнуть

Код:

static iTarget, iBody, iEndOrigin[3], iStartOrigin[3]
get_user_origin(id, iStartOrigin, 1)
get_user_origin(id, iEndOrigin, 3)

или ну вот так тоже
get_user_aiming(id, iTarget, iBody)
в itarget можно проверять если жив - значит живой игрок, и можно создать fake damage . или урон как от пули



Отредактировал: csnet, - 27.4.2014, 0:30


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 27.4.2014, 0:32
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Видел один плагин, где было классно реализовано.
Вот выдрал этот кусок, кажись это он.

Код:
public throw_Shpere(id,type)
{
emit_sound(id, CHAN_VOICE, ThrowFireShpereSound, 1.0, ATTN_NORM, 0, PITCH_NORM)
set_pdata_float(id, 83, 0.7, 5)
UTIL_PlayWeaponAnimation(id,5)

new Float:StartOrigin[3],Float:EndOrigin[3]
get_position(id,30.0,0.0,5.0,StartOrigin)
fm_get_aim_origin(id,EndOrigin)

new ient = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
engfunc(EngFunc_SetModel,ient, Shpere)
engfunc(EngFunc_SetSize, ient, {-3.0,-3.0,-3.0}, {3.0,3.0,3.0})
switch(type)
{
case 1: set_pev(ient, pev_classname, FireShpere_Classname),
fm_set_rendering(ient, kRenderFxGlowShell, 255,155,0, kRenderTransAlpha,25)
case 2: set_pev(ient, pev_classname, FrostSphere_Classname),
fm_set_rendering(ient, kRenderFxGlowShell, 0,105,255, kRenderTransAlpha,25)
}
set_pev(ient, pev_movetype, MOVETYPE_FLY)
set_pev(ient,pev_solid,SOLID_TRIGGER)
set_pev(ient,pev_origin,StartOrigin)
set_pev(ient,pev_owner,id)
set_pev(ient, pev_nextthink, get_gametime() +0.01)
set_pev(ient,pev_iuser1,type)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ient)
write_short(TrailSpriteIndex)
write_byte(15)
write_byte(15)
switch(type)
{
case 1:
{
write_byte(255)
write_byte(155)
write_byte(0)
}
case 2:
{
write_byte(0)
write_byte(0)
write_byte(255)
}
}
write_byte(255)
message_end()

new Float:VECTOR[3],Float:VELOCITY[3]
xs_vec_sub(EndOrigin, StartOrigin, VECTOR)
xs_vec_normalize(VECTOR, VECTOR)
xs_vec_mul_scalar(VECTOR, 1300.0, VELOCITY)
set_pev(ient, pev_velocity, VELOCITY)
}
//Stocks
stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
{
new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
pev(id, pev_v_angle, vAngle);pev(id, pev_origin, vOrigin);pev(id, pev_view_ofs,vUp)
xs_vec_add(vOrigin,vUp,vOrigin)
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward)
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}
stock DrawRings(Float:Origin[3],R,G,B)
{
for(new i=0;i<4;i++)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_BEAMTORUS );
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2]+3.0*i)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2]+100.0+10.0*i)
write_short( TrailSpriteIndex ); // sprite
write_byte( 0 ); // Starting frame
write_byte( 0 ); // framerate * 0.1
write_byte( 8-1*i ); // life * 0.1
write_byte( 14 ); // width
write_byte( 0 ); // noise
write_byte( R ); // color r,g,b
write_byte( G ); // color r,g,b
write_byte( B); // color r,g,b
write_byte( 255 ); // brightness
write_byte( 0 ); // scroll speed
message_end();
}
}


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Affl
сообщение 27.4.2014, 0:32
Сообщение #7


Стаж: 15 лет

Сообщений: 1573
Благодарностей: 1182
Полезность: 1042



WAR3FT Пивка для Рывка 202 lvl
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 27.4.2014, 0:34
Сообщение #8


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Affl,
Да я не понимаю ничего, но что-то почитаю, гляну, не помешает.


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Affl
сообщение 27.4.2014, 0:37
Сообщение #9


Стаж: 15 лет

Сообщений: 1573
Благодарностей: 1182
Полезность: 1042

Цитата(Fred Perry @ 27.4.2014, 0:34) *
Affl,
Да я не понимаю ничего, но что-то почитаю, гляну, не помешает.

На самом деле я про себя :D
В WAR3FT мод тоже вроде бы вырисовывается вектор у некоторых рас, если я правильно понял что ты хочешь. Например у Ледяного мага, или из стандартных - Ведьмак (warden), Crypt Lord (Хранитель Склепа)


WAR3FT Пивка для Рывка 202 lvl
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 27.4.2014, 0:43
Сообщение #10


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Affl,
Я не играл в Варик


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 27.4.2014, 1:15
Сообщение #11
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Fred Perry @ 27.4.2014, 2:32) *
Видел один плагин, где было классно реализовано.
Вот выдрал этот кусок, кажись это он.

Из всего куска 'траекторию' создаёт этот блок:
Код:
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ient)
write_short(TrailSpriteIndex)
write_byte(15)
write_byte(15)
switch(type)
{
case 1:
{
write_byte(255)
write_byte(155)
write_byte(0)
}
case 2:
{
write_byte(0)
write_byte(0)
write_byte(255)
}
}
write_byte(255)
message_end()

В ient поставить id шара. Остальные параметры месседжа TE_BEAMFOLLOW см. в message_const.inc.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 27.4.2014, 1:33
Сообщение #12


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Developer,
Я понял. А вот координаты старта и окончания?


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 27.4.2014, 1:49
Сообщение #13
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Не нужны. Всё автоматически. С твоим шаром в конце его пути что происходит?
Меньше вопросов - больше дела. Проверяй на практике.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 30.4.2014, 23:05
Сообщение #14


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Хотел сам попробовать, ничего не выходит.

Вот мой код:
Скрытый текст
Код
#include < amxmodx >
#include < fakemeta >
#include < xs >
#include < hamsandwich >
#include < zombieplague >

new const PLUGIN_VERSION[ ]    =        "0.1";
new const PLUGIN_AUTHOR[ ]    =        "Shurik07";
new const PLUGIN_NAME[ ]        =        "[ ZP ] Nemesis skill";

new const BALL__MODEL[   ]        =    "sprites/lord.spr";
new const BALL_SHOOTSOUND[  ]     =      "deimos_skill_start.wav";
new const EXPLODE__SPRITE[ ]     =    "sprites/ex.spr";
new const BALL__CLASSNAME[ ]    =    "szClassBall";

const Float:SPEED__BALL      =   800.0; //Скорость шара
const Float:DAMAGE__BALL    =    500.0; //Урон шара
const Float:RELOAD__SKILL    =    5.0; //Перезарядка скилла
const Float:RADIUS__SKILL   =   200.0; //Радиус урона

const MAX_CLIENTS         =    32;

new g_iSkill[ MAX_CLIENTS + 1 ];

new g_Ball = 1

new g_iExp;

enum _:Coord_e
{
    Float:x,
    Float:y,
    Float:z
};

enum _:Angle_e
{
    Float:pitch,
    Float:yaw,
    Float:roll
};

#define VectorScale(%1,%2,%3)    ( %3[ x ] = %2 * %1[ x ], %3[ y ] = %2 * %1[ y ], %3[ z ] = %2 * %1[ z ] )

public plugin_init( )
{
    register_plugin(     PLUGIN_NAME        ,
                PLUGIN_AUTHOR    ,
                PLUGIN_VERSION    
        );
        
    register_clcmd( "drop" , "ClCommand__UseSkill" );
    
    register_forward( FM_Touch , "Forward_Touch" );
}

public plugin_precache( )
{
    engfunc( EngFunc_PrecacheModel , BALL__MODEL     );
    engfunc( EngFunc_PrecacheSound , BALL_SHOOTSOUND );
    
    g_iExp = engfunc( EngFunc_PrecacheModel , EXPLODE__SPRITE );
}

public zp_user_infected_post( pID , pInfector , pNemesis )
{
    if( !is_user_alive( pID  )  )
    {
            return
    }
    
    if( zp_get_user_nemesis( pID ) )
    {
        g_iSkill[ pID ] = true;
        
        client_print( pID , print_center , "You can use ball skill , press ( G )  " );
    }
}

public ClCommand__UseSkill( pID )
{
    if( !is_user_alive( pID ) )
    {
            return PLUGIN_CONTINUE;
    }
    
    if( zp_get_user_nemesis( pID ) && g_iSkill[ pID ] )
    {
        static Float:vf_Forward[ Coord_e ], Float:vf_vAngle[ Angle_e ];
        static Float:vf_Source [ Coord_e ];
        
        UTIL_GetPosition(  pID , vf_Source, 40.0, 4.0, -5.0 )
        
        global_get ( glb_v_forward, vf_Forward );
        pev ( pID, pev_v_angle, vf_vAngle );
        
        static Float:vf_VelocitySR[ Coord_e ]
        
        VectorScale ( vf_Forward, SPEED__BALL , vf_VelocitySR );        
        
        UTIL__SetBall( vf_Source , vf_VelocitySR , pID );
        
        engfunc( EngFunc_EmitSound, pID, CHAN_ITEM, BALL_SHOOTSOUND, 1.0, ATTN_NORM, 0, PITCH_NORM);
        
        g_iSkill[ pID ] = false;
        
        client_print( pID , print_center , "You used Skill , wait %s seconds " , RELOAD__SKILL );
        
        set_task( RELOAD__SKILL    , "Return__Skill" , pID );
    }
    
    return PLUGIN_CONTINUE;
}    
    
public UTIL__SetBall ( const Float:vf_Origin[], const Float:vf_Velocity[], const i_Owner )
{
    static pEntity;

    if ( ( pEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite") ) ) )
    {
        static vf_Temp[ Angle_e ]
        
        set_pev ( pEntity , pev_classname , BALL__CLASSNAME );
        set_pev ( pEntity, pev_origin, vf_Origin );
        set_pev ( pEntity, pev_owner, i_Owner );
        
        set_pev ( pEntity, pev_movetype, MOVETYPE_FLY );
        set_pev ( pEntity, pev_solid, SOLID_TRIGGER  );
        set_pev ( pEntity, pev_gravity, -1.0 );
        
        engfunc ( EngFunc_VecToAngles, vf_Velocity, vf_Temp );
        set_pev ( pEntity, pev_angles, vf_Temp );
        
        engfunc ( EngFunc_SetModel , pEntity, BALL__MODEL     );
        engfunc ( EngFunc_SetSize  , pEntity, Float:{ 0.0, 0.0, 0.0 }, Float:{ 0.0, 0.0, 0.0 } );
        engfunc ( EngFunc_SetOrigin, pEntity, vf_Origin );
        
        set_pev ( pEntity, pev_velocity, vf_Velocity );
        set_pev ( pEntity, pev_rendermode,  kRenderTransAdd )
        set_pev ( pEntity, pev_renderamt,   255.0 )
        
        set_pev ( pEntity , pev_iuser1 , g_Ball );
    }
}    
    
    
public Forward_Touch( const pEntity , pOther )
{
        if( !pev_valid( pEntity ) )
        {
            return FMRES_IGNORED;
        }

        static zsClassname[ 32 ];

        pev( pEntity, pev_classname, zsClassname, charsmax( zsClassname ) );

        if( !equal( zsClassname, BALL__CLASSNAME ) )
        {
            return FMRES_IGNORED;
        }
        
        if( pev( pEntity , pev_iuser1 ) )
        {
            UTIL_SetTouch ( pEntity , pOther )
        }
        
        return FMRES_IGNORED
}

public UTIL_SetTouch( pEntity ,pOther  )
{
    if( !pev_valid( pEntity ) )
    {
        return;
    }

    static Float:flOrigin[ Coord_e ];
    pev( pEntity, pev_origin, flOrigin );
    
    set_pev(pEntity, pev_movetype, MOVETYPE_NONE)
    set_pev(pEntity, pev_solid, SOLID_NOT)    
    
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord , flOrigin[x] )
    engfunc(EngFunc_WriteCoord , flOrigin[y]  )
    engfunc(EngFunc_WriteCoord , flOrigin[z]  )
    write_short( g_iExp )
    write_byte( 50 )
    write_byte( 24 )
    write_byte( 0 )
    message_end( )

    new pOwner = pev( pEntity, pev_owner );
      
    static pevVictim, Float:flDistance,Float:fDamage;
                      
    pevVictim  = -1;
      
    while( ( pevVictim = engfunc( EngFunc_FindEntityInSphere, pevVictim, flOrigin, RADIUS__SKILL) ) != 0 )
    {

                if( !is_user_alive( pevVictim ) )
                        continue;

                if( zp_get_user_zombie( pevVictim ) )
                    continue;

                flDistance = fm_entity_range( pEntity, pevVictim );

                fDamage = UTIL_FloatRadius( DAMAGE__BALL, RADIUS__SKILL , flDistance );

                if( fDamage > 0.0 )
                {
                        ExecuteHamB( Ham_TakeDamage, pevVictim, pEntity, pOwner, fDamage, DMG_BULLET | DMG_ALWAYSGIB );

                }
    }
      
    engfunc( EngFunc_RemoveEntity, pEntity );
}

public Return__Skill( pID )
{
    if( is_user_alive( pID ) )
    {
        g_iSkill[ pID ] = true
        
        client_print( pID , print_center , "You Skill ready , press ( G )  "  );
    }
}

Float:UTIL_FloatRadius( Float:flMaxAmount, Float:flRadius, Float:flDistance )
{
        return floatsub( flMaxAmount, floatmul( floatdiv( flMaxAmount, flRadius ), flDistance ) );
}

stock UTIL_GetPosition(id, Float:fOrigin[ ], Float:add_forward=0.0, Float:add_right=0.0, Float:add_up=0.0)
{
    static Float:Angles[ Angle_e ],Float:ViewOfs[ Coord_e  ], Float:vAngles[ Angle_e  ]
    static Float:Forward[ Coord_e ], Float:Right[ Coord_e ], Float:Up[ Coord_e ]
    
    pev(id, pev_v_angle, vAngles)
    pev(id, pev_origin, fOrigin)
    pev(id, pev_view_ofs, ViewOfs)
    xs_vec_add(fOrigin, ViewOfs, fOrigin)
    
    pev(id, pev_angles, Angles)
    
    Angles[0]= vAngles[0]
    
    engfunc(EngFunc_MakeVectors, Angles)
    
    global_get(glb_v_forward, Forward)
    global_get(glb_v_right, Right)
    global_get(glb_v_up,  Up)
    
    xs_vec_mul_scalar(Forward, add_forward, Forward)
    xs_vec_mul_scalar(Right, add_right, Right)
    xs_vec_mul_scalar(Up, add_up, Up)
    
    fOrigin[0]=fOrigin[0]+Forward[0]+Right[0]+Up[0]
    fOrigin[1]=fOrigin[1]+Forward[1]+Right[1]+Up[1]
    fOrigin[2]=fOrigin[2]+Forward[2]+Right[2]+Up[2]
}

stock Float:fm_entity_range(ent1, ent2)
{
    new Float:origin1[3], Float:origin2[3]
    pev(ent1, pev_origin, origin1)
    pev(ent2, pev_origin, origin2)

    return get_distance_f(origin1, origin2)
}


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 30.4.2014, 23:26
Сообщение #15
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

safetyst неправильно сказал что траекторию задает тот кусок кода,
там просто отрисовывается шлейф уже по заданному направлению


write_byte(TE_BEAMFOLLOW)
write_short(ient)
write_short(TrailSpriteIndex) // какой спрайт


координаты вектора, куда будет лететь шар берутся в
Код:

new Float:StartOrigin[3],Float:EndOrigin[3]
get_position(id,30.0,0.0,5.0,StartOrigin)
fm_get_aim_origin(id,EndOrigin)




на мое


Код:

public cmdShoot(id)
{

client_cmd(id,"speak %s",snd_fire)

new origin[3], Float:fOrigin[3]//player origin... and float origin
new Float:velocity[3] // speed of the entity to move

get_user_origin(id,origin,1) //get user origin - int
IVecFVec(origin, fOrigin) // convert the int into float

new ePlasmaBall = create_entity("info_target")
entity_set_string(ePlasmaBall, EV_SZ_classname, "PlasmaBall")

new Float:posAdjust[3] //Used for adjusting the starting position
velocity_by_aim(id, 150 , posAdjust) //You can replace 50 with whatever , get origin of the AIM
fOrigin[0] += posAdjust[0]
fOrigin[1] += posAdjust[1]
fOrigin[2] += posAdjust[2]
entity_set_vector(ePlasmaBall, EV_VEC_origin,fOrigin) //set the shot's direction

new Float:maxs[3] = {3.0,3.0,2.5}
new Float:mins[3] = {-3.0,-3.0,-2.5}
entity_set_size(ePlasmaBall,mins,maxs)
entity_set_int(ePlasmaBall,EV_INT_solid, SOLID_BBOX)
entity_set_int(ePlasmaBall,EV_INT_movetype,MOVETYPE_FLYMISSILE)
entity_set_float(ePlasmaBall,EV_FL_framerate,1.0)
entity_set_int(ePlasmaBall, EV_INT_rendermode, 5)
entity_set_float(ePlasmaBall, EV_FL_renderamt, 255.0)
entity_set_float(ePlasmaBall, EV_FL_scale, 1.0) //sprite scale
entity_set_model(ePlasmaBall, sprite)

VelocityByAim(id, 2000 , velocity)
entity_set_vector(ePlasmaBall,EV_VEC_velocity,velocity) //set the shot's speed
entity_set_edict(ePlasmaBall, EV_ENT_owner, id)
}


спрайт задается в entity_set_model(ePlasmaBall, sprite)


а сам декларируется в плагине выше new sprite[] = "sprites/plasma3.spr"

главное убирать ентити при столкновении. для этого проще зарегистрировать touch 2 раза
register_touch("Plasmaball","*", "myfunc") ( регим world )
register_touch("Plasmaball","player", "myfunc") ( регим класснейм игрока )

и в них делать remove_entity и наносить урон игроку

Отредактировал: csnet, - 30.4.2014, 23:34


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 30.4.2014, 23:31
Сообщение #16
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

А я понял 'траекторию' как 'шлейф' pardon.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 30.4.2014, 23:39
Сообщение #17


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Я код скидывал в предыдущем посте

Нужно отрисовать траекторию шара, чтобы была линия (к примеру когда кидаешь гранату ЗП моде).



Цитата
write_byte(TE_BEAMFOLLOW)
write_short(ient)
write_short(TrailSpriteIndex) // какой спрайт

Я про это читал в message_const.inc


// Буду завтра дома тестировать. Спасибо за помощь всем :)


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: