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

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

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

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

Замена спрайта на модель

[РЕШЕНО]
Статус пользователя $@NyA
сообщение 22.5.2018, 17:39
Сообщение #1


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Собственно как заменить спрайт на свою модель ( .mdl ).
Есть кусок кода.При наведении прицела на игрока,показываеться вот такой спрайт ( ульт Ночных Ельфов )

Ето срабатывает вот от сюда
Cкрытый текст
Код:
public NE_ULT_EntangleEffect( id )
{

    // Get the user's origin
    new vOrigin[3];
    get_user_origin( id, vOrigin );
    
    // Play the entangle sound
    emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0
, PITCH_NORM );

    new iStart[3], iEnd[3], iHeight;
    new iRadius    = 20, iCounter = 0;
    new x1, y1, x2, y2;

    // Some sweet crap that I don't understand courtesy of SpaceDude - draws the "cylinder" around the player
    while ( iCounter <= 7 )
    {
        if ( iCounter == 0 || iCounter == 8 )
            x1 = -iRadius;
        else if ( iCounter == 1 || iCounter == 7 )
            x1 = -iRadius * 100/141;
        else if ( iCounter == 2 || iCounter == 6 )
            x1 = 0;
        else if ( iCounter == 3 || iCounter == 5 )
            x1 = iRadius*100/141
        else if ( iCounter == 4 )
            x1 = iRadius

        if ( iCounter <= 4 )
            y1 = sqroot( iRadius*iRadius-x1*x1 );
        else
            y1 = -sqroot( iRadius*iRadius-x1*x1 );

        ++iCounter;

        if ( iCounter == 0 || iCounter == 8 )
            x2 = -iRadius;
        else if ( iCounter == 1 || iCounter==7 )
            x2 = -iRadius*100/141;
        else if ( iCounter == 2 || iCounter==6 )
            x2 = 0;
        else if ( iCounter == 3 || iCounter==5 )
            x2 = iRadius*100/141;
        else if ( iCounter == 4 )
            x2 = iRadius;
        
        if ( iCounter <= 4 )
            y2 = sqroot( iRadius*iRadius-x2*x2 );
        else
            y2 = -sqroot( iRadius*iRadius-x2*x2 );

        iHeight = 16 + 2 * iCounter;

        while ( iHeight > -40 )
        {
            
            iStart[0]    = vOrigin[0] + x1;
            iStart[1]    = vOrigin[1] + y1;
            iStart[2]    = vOrigin[2] + iHeight;
            iEnd[0]        = vOrigin[0] + x2;
            iEnd[1]        = vOrigin[1] + y2;
            iEnd[2]        = vOrigin[2] + iHeight + 2;
            
            Create_TE_BEAMPOINTS( iStart, iEnd, g_iSprites[SPR_BEAM], 0, 0, ( fl
oatround( ENTANGLE_TIME ) * 10 ), 10, 5, 10, 108, 23, 255, 0 );

            iHeight -= 16;
        }
    }

    return;

Сам спрайт
Код:
g_iSprites[SPR_BEAM] 

Весь исход Ельфа
Cкрытый текст
Код:
/*ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.
*    Race: Night Elf Functions
ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.ґЇ`·.ёё.*/

#define    ENTANGLE_TIME        10.0

// Initiate Ultimate
public NE_ULT_Entangle( iCaster, iEnemy )
{

    // Follow the user until they stop moving...
    Create_TE_BEAMFOLLOW( iEnemy, g_iSprites[SPR_TRAIL], 10, 5, 10, 108, 23, 255
 );
    
    // User is now stunned so we can't do any other stun abilities
    p_data_b[iEnemy][PB_STUNNED] = true;
    
    // Set the speed of the enemy (this will auto-stun them)
    SHARED_SetSpeed( iEnemy );
    
    // Start waiting for the user to stop...
    new parm[4];
    parm[0] = iEnemy;
    parm[1] = 0;
    parm[2] = 0;
    parm[3] = 0;
    _NE_ULT_EntangleWait( parm );
    
    // Drop the user's weapon
    if ( get_pcvar_num( CVAR_wc3_entangle_drop ) )
    {
        new ammo, clip;
        new iWeapon = get_user_weapon( iEnemy, ammo, clip );
        
        // Only drop the weapon if it is the user's primary weapon
        if ( SHARED_IsPrimaryWeapon( iWeapon ) )
        {
            client_cmd( iEnemy, "drop" );
        }
    }
}



// Wait for the user to stop moving
public _NE_ULT_EntangleWait( parm[4] )
{

    new id = parm[0];

    if ( !p_data_b[id][PB_ISCONNECTED] )
    {
        return;
    }

    new vOrigin[3];
    get_user_origin( id, vOrigin );
    
    // Checking to see if the user has actually stopped yet?
    if ( vOrigin[0] == parm[1] && vOrigin[1] == parm[2] && vOrigin[2] == parm[3] )
    {
        SHARED_SetSpeed( id );

        // Reset the user's speed in ENTANGLE_TIME amount of time
        set_task( ENTANGLE_TIME, "SHARED_ResetMaxSpeed", TASK_RESETSPEED + id );
        
        // Entangle the user
        NE_ULT_EntangleEffect( id )
    }

    // If not lets run another check in 0.1 seconds
    else
    {
        parm[1] = vOrigin[0];
        parm[2] = vOrigin[1];
        parm[3] = vOrigin[2];

        set_task( 0.1, "_NE_ULT_EntangleWait", TASK_ENTANGLEWAIT + id, parm, 4 );
    }
    return;
}

public NE_ULT_EntangleEffect( id )
{

    // Get the user's origin
    new vOrigin[3];
    get_user_origin( id, vOrigin );
    
    // Play the entangle sound
    emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0
, PITCH_NORM );

    new iStart[3], iEnd[3], iHeight;
    new iRadius    = 20, iCounter = 0;
    new x1, y1, x2, y2;

    // Some sweet crap that I don't understand courtesy of SpaceDude - draws the "cylinder" around the player
    while ( iCounter <= 7 )
    {
        if ( iCounter == 0 || iCounter == 8 )
            x1 = -iRadius;
        else if ( iCounter == 1 || iCounter == 7 )
            x1 = -iRadius * 100/141;
        else if ( iCounter == 2 || iCounter == 6 )
            x1 = 0;
        else if ( iCounter == 3 || iCounter == 5 )
            x1 = iRadius*100/141
        else if ( iCounter == 4 )
            x1 = iRadius

        if ( iCounter <= 4 )
            y1 = sqroot( iRadius*iRadius-x1*x1 );
        else
            y1 = -sqroot( iRadius*iRadius-x1*x1 );

        ++iCounter;

        if ( iCounter == 0 || iCounter == 8 )
            x2 = -iRadius;
        else if ( iCounter == 1 || iCounter==7 )
            x2 = -iRadius*100/141;
        else if ( iCounter == 2 || iCounter==6 )
            x2 = 0;
        else if ( iCounter == 3 || iCounter==5 )
            x2 = iRadius*100/141;
        else if ( iCounter == 4 )
            x2 = iRadius;
        
        if ( iCounter <= 4 )
            y2 = sqroot( iRadius*iRadius-x2*x2 );
        else
            y2 = -sqroot( iRadius*iRadius-x2*x2 );

        iHeight = 16 + 2 * iCounter;

        while ( iHeight > -40 )
        {
            
            iStart[0]    = vOrigin[0] + x1;
            iStart[1]    = vOrigin[1] + y1;
            iStart[2]    = vOrigin[2] + iHeight;
            iEnd[0]        = vOrigin[0] + x2;
            iEnd[1]        = vOrigin[1] + y2;
            iEnd[2]        = vOrigin[2] + iHeight + 2;
            
            Create_TE_BEAMPOINTS( iStart, iEnd, g_iSprites[SPR_BEAM], 0, 0, ( fl
oatround( ENTANGLE_TIME ) * 10 ), 10, 5, 10, 108, 23, 255, 0 );

            iHeight -= 16;
        }
    }

    return;
}

NE_Evasion( id, iHitZone )
{
    static iSkillLevel;

    // Check to see if they should evade this shot?
    iSkillLevel = SM_GetSkillLevel( id, SKILL_EVASION );

    if ( iSkillLevel > 0 && random_float( 0.0, 1.0 ) <= p_evasion[iSkillLevel-1] )
    {
        new iGlowIntensity = random_num( 20, 50 );
        
        // Head shot
        if ( iHitZone & (1 << HITGROUP_HEAD) )
        {
            iGlowIntensity += 250;
        }

        // Chest
        else if ( iHitZone & (1 << HITGROUP_CHEST) )
        {
            iGlowIntensity += 75;
        }
        
        // Make the user glow!
        SHARED_Glow( id, 0, 0, iGlowIntensity, 0 );

        Create_ScreenFade( id, (1<<10), (1<<10), (1<<12), 0, 0, 255, g_GlowLevel[id][2] );

        return 1;
    }

    return 0;
}

NE_SkillsOffensive( iAttacker, iVictim, iWeapon, iDamage, iHitPlace )
{
    static iSkillLevel;

    // Trueshot Aura
    iSkillLevel = SM_GetSkillLevel( iAttacker, SKILL_TRUESHOT );
    if ( iSkillLevel > 0 )
    {
        static iTempDamage;
        iTempDamage = floatround( float( iDamage ) * p_trueshot[iSkillLevel-1] );
        
        // Damage the user
        WC3_Damage( iVictim, iAttacker, iTempDamage, iWeapon, iHitPlace );

        // Make the user glow!
        SHARED_Glow( iVictim, ( 2 * iTempDamage ), 0, 0, 0 );

        // Create a screen fade
        Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, iTempDamage );
    }
}

NE_SkillsDefensive( iAttacker, iVictim, iDamage, iHitPlace )
{
    static iSkillLevel;

    // Thorns Aura ( attacker could be dead... i.e. nade )
    iSkillLevel = SM_GetSkillLevel( iVictim, SKILL_THORNS );
    if ( iSkillLevel > 0 && is_user_alive( iAttacker ) )
    {
        static iAdditionalDamage;
        iAdditionalDamage = floatround( float( iDamage ) * p_thorns[iSkillLevel-1] );
        
        // Damage the user
        WC3_Damage( iAttacker, iVictim, iAdditionalDamage, CSW_THORNS, iHitPlace
 );

        // Make the user glow!
        SHARED_Glow( iAttacker, ( 3 * iAdditionalDamage ), 0, 0, 0 );
        
        // Create a screen fade
        Create_ScreenFade( iAttacker, (1<<10), (1<<10), (1<<12), 0, 0, 255, iAdditionalDamage )
    }
}

Спасибо за помощь и внимание

Сама модель по размерам выглядит почти как и спрайт ( игрок туда влезает полностью )

Пример: ( и ето конечный результат )

Если всё выйдет, я потом покажу какой красивый результат с анимацией получиться в игре :-)

Отредактировал: $@NyA, - 22.5.2018, 17:55


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 22.5.2018, 20:17
Сообщение #2
Стаж: 10 лет

Сообщений: 4755
Благодарностей: 3837
Полезность: 693

найди прекеш и замени спрайт на модель.


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 22.5.2018, 20:23
Сообщение #3


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

csnet,
Та да,ещё бы всё было бы так просто) Пробовал уже.Там видишь заданные кординаты для спрайта,а у меня модель готовая.Надо без их.


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя daywer
сообщение 22.5.2018, 20:44
Сообщение #4


Стаж: 11 лет
Город: Санкт-Петербург


Сообщений: 136
Благодарностей: 121
Полезность: 1051

Цитата($@NyA @ 22.5.2018, 21:23) *
csnet,
Та да,ещё бы всё было бы так просто) Пробовал уже.Там видишь заданные кординаты для спрайта,а у меня модель готовая.Надо без их.

Как entity ставь его и все.(Удалять его через N секунд(действия ульты))


Написание плагинов на заказ.(sql,sqlite,nvault)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 22.5.2018, 20:55
Сообщение #5


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

daywer,
Ето на таком примере?
Код:
    new Ent = create_entity("info_target")

if(is_valid_ent(Ent)){

new Float:f_Origin[3]
entity_get_vector(id, EV_VEC_origin, f_Origin)
f_Origin[0] += 50.0
entity_set_origin(Ent, f_Origin)

entity_set_model(Ent, g_Model)


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 22.5.2018, 22:56
Сообщение #6
Стаж: 13 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

2$@NyA

У меня к вам вопрос: Зачем мне, как человеку, имеющему желание вам помочь, надо ковыряться в каком-то мусоре ?

Предоставьте код, который вы используете для установки модели и вам скажут, в чем проблема (если он не работает).

Код на создание объекта (в данном случае, модели):
Код
    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

    if(!pev_valid(ent))
        return;

    set_pev(ent, pev_classname, "megoelf");

    engfunc(EngFunc_SetModel, ent, sz_MODEL);

    new Float:fOrigin[3]
    
    pev(id, pev_origin, fOrigin)
    
    engfunc(EngFunc_SetOrigin, ent, fOrigin);




Отредактировал: SISA, - 22.5.2018, 23:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 23.5.2018, 1:19
Сообщение #7


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

SISA,
Получилось следующее.Ладно модель можно потом уменьшить и перевернуть ( уже анимацию поставил вращения )
Cкиншоты



Осталось последнее,что-бы исчезала модель.ENTANGLE_TIME - отвечает в секундах,когда пропадёт.В данном случаи 10 сек.
Код:
#define    ENTANGLE_TIME        10.0

Код:
Create_TE_BEAMPOINTS( iStart, iEnd, g_iSprites[SPR_BEAM], 0, 0, ( fl
oatround( ENTANGLE_TIME ) * 10 ), 10, 5, 10, 108, 23, 255, 0 );


Мой результат
Код:
public NE_ULT_EntangleEffect( id )
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

if(!pev_valid(ent))
return;

set_pev(ent, pev_classname, "elf_ultimate");
set_pev(ent, pev_sequence, 0)
set_pev(ent, pev_framerate, 1.0)

engfunc(EngFunc_SetModel, ent, sz_MODEL);

new Float:fOrigin[3]

pev(id, pev_origin, fOrigin)

engfunc(EngFunc_SetOrigin, ent, fOrigin);

// Play the entangle sound
emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0, PITCH_NORM );

}



МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя daywer
сообщение 23.5.2018, 8:12
Сообщение #8


Стаж: 11 лет
Город: Санкт-Петербург


Сообщений: 136
Благодарностей: 121
Полезность: 1051

$@NyA, Через Таск(set_task) можешь удаление сделать.Удаление обьектов еще нужно сделать в новом раунде.(events.cpp > EVENT_NewRound)




Написание плагинов на заказ.(sql,sqlite,nvault)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 23.5.2018, 14:00
Сообщение #9


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Решено
Код:

#define ENTANGLE_TIME 10.0
#define TASK_ENTREMOVE 0x917

set_task(ENTANGLE_TIME, "Task_EntRemove", ent + TASK_ENTREMOVE);


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 20.8.2018, 18:13
Сообщение #10


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Вернусь.
При срабатывании ультимейта модель показываеться через раз.Бывает что с 5 раза покажеться.При этом сама способность срабатывает,игрок обездвижен - а модели нет.Незнаете в чём дело?

Код:
#define	ENTANGLE_TIME		10.0
#define TASK_ENTREMOVE 0x917

new sz_MODEL[] = "models/elf_ultimate.mdl"
new sz_MODEL2[] = "models/elf_ultimate2.mdl"

// Initiate Ultimate
public NE_ULT_Entangle( iCaster, iEnemy )
{

// Follow the user until they stop moving...
Create_TE_BEAMFOLLOW( iEnemy, g_iSprites[SPR_TRAIL], 10, 5, 10, 108, 23, 255 );

// User is now stunned so we can't do any other stun abilities
p_data_b[iEnemy][PB_STUNNED] = true;

// Set the speed of the enemy (this will auto-stun them)
SHARED_SetSpeed( iEnemy );

// Start waiting for the user to stop...
new parm[4];
parm[0] = iEnemy;
parm[1] = 0;
parm[2] = 0;
parm[3] = 0;
_NE_ULT_EntangleWait( parm );

// Drop the user's weapon
if ( get_pcvar_num( CVAR_wc3_entangle_drop ) )
{
new ammo, clip;
new iWeapon = get_user_weapon( iEnemy, ammo, clip );

// Only drop the weapon if it is the user's primary weapon
if ( SHARED_IsPrimaryWeapon( iWeapon ) )
{
client_cmd( iEnemy, "drop" );
}
}
}



// Wait for the user to stop moving
public _NE_ULT_EntangleWait( parm[4] )
{

new id = parm[0];

if ( !p_data_b[id][PB_ISCONNECTED] )
{
return;
}

new vOrigin[3];
get_user_origin( id, vOrigin );

// Checking to see if the user has actually stopped yet?
if ( vOrigin[0] == parm[1] && vOrigin[1] == parm[2] && vOrigin[2] == parm[3] )
{
SHARED_SetSpeed( id );

// Reset the user's speed in ENTANGLE_TIME amount of time
set_task( ENTANGLE_TIME, "SHARED_ResetMaxSpeed", TASK_RESETSPEED + id );

// Entangle the user
NE_ULT_EntangleEffect( id )
}

// If not lets run another check in 0.1 seconds
else
{
parm[1] = vOrigin[0];
parm[2] = vOrigin[1];
parm[3] = vOrigin[2];

set_task( 0.1, "_NE_ULT_EntangleWait", TASK_ENTANGLEWAIT + id, parm, 4 );
}
return;
}

public NE_ULT_EntangleEffect( id )
{
new num = random_num(0,1)
if(num > 1 || num < 0)
return PLUGIN_HANDLED

new gVic = read_data(2), Float:flOrigin[3]
pev(gVic, pev_origin, flOrigin)
new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))

engfunc(EngFunc_SetOrigin, ent, flOrigin);

switch(random_num(0,1))
{
case 0: engfunc(EngFunc_SetModel, ent, sz_MODEL)
case 1: engfunc(EngFunc_SetModel, ent, sz_MODEL2)
}

set_pev(ent, pev_classname, "elf_ultimate");
set_pev(ent, pev_sequence, 0)
set_pev(ent, pev_framerate, 1.0)

set_task(ENTANGLE_TIME, "Task_EntRemove", ent + TASK_ENTREMOVE);

// Play the entangle sound
emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0, PITCH_NORM );

return PLUGIN_HANDLED
}

public Task_EntRemove(ent)
{
ent -= TASK_ENTREMOVE;

if(!pev_valid(ent))
return;

set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME);
}

NE_Evasion( id, iHitZone )
{
static iSkillLevel;

// Check to see if they should evade this shot?
iSkillLevel = SM_GetSkillLevel( id, SKILL_EVASION );

if ( iSkillLevel > 0 && random_float( 0.0, 1.0 ) <= p_evasion[iSkillLevel-1] )
{
new iGlowIntensity = random_num( 20, 50 );

// Head shot
if ( iHitZone & (1 << HITGROUP_HEAD) )
{
iGlowIntensity += 250;
}

// Chest
else if ( iHitZone & (1 << HITGROUP_CHEST) )
{
iGlowIntensity += 75;
}

// Make the user glow!
SHARED_Glow( id, 0, 0, iGlowIntensity, 0 );

Create_ScreenFade( id, (1<<10), (1<<10), (1<<12), 0, 0, 255, g_GlowLevel[id][2] );

return 1;
}

return 0;
}

NE_SkillsOffensive( iAttacker, iVictim, iWeapon, iDamage, iHitPlace )
{
static iSkillLevel;

// Trueshot Aura
iSkillLevel = SM_GetSkillLevel( iAttacker, SKILL_TRUESHOT );
if ( iSkillLevel > 0 )
{
static iTempDamage;
iTempDamage = floatround( float( iDamage ) * p_trueshot[iSkillLevel-1] );

// Damage the user
WC3_Damage( iVictim, iAttacker, iTempDamage, iWeapon, iHitPlace );

// Make the user glow!
SHARED_Glow( iVictim, ( 2 * iTempDamage ), 0, 0, 0 );

// Create a screen fade
Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, iTempDamage );
}
}

NE_SkillsDefensive( iAttacker, iVictim, iDamage, iHitPlace )
{
static iSkillLevel;

// Thorns Aura ( attacker could be dead... i.e. nade )
iSkillLevel = SM_GetSkillLevel( iVictim, SKILL_THORNS );
if ( iSkillLevel > 0 && is_user_alive( iAttacker ) )
{
static iAdditionalDamage;
iAdditionalDamage = floatround( float( iDamage ) * p_thorns[iSkillLevel-1] );

// Damage the user
WC3_Damage( iAttacker, iVictim, iAdditionalDamage, CSW_THORNS, iHitPlace );

// Make the user glow!
SHARED_Glow( iAttacker, ( 3 * iAdditionalDamage ), 0, 0, 0 );

// Create a screen fade
Create_ScreenFade( iAttacker, (1<<10), (1<<10), (1<<12), 0, 0, 255, iAdditionalDamage )
}
}





МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя OLAF
сообщение 20.8.2018, 18:57
Сообщение #11


Стаж: 9 лет

Сообщений: 494
Благодарностей: 756
Полезность: 1440

Цитата($@NyA @ 23.5.2018, 14:00) *
Решено
Код:

#define ENTANGLE_TIME 10.0
#define TASK_ENTREMOVE 0x917

set_task(ENTANGLE_TIME, "Task_EntRemove", ent + TASK_ENTREMOVE);


оффтоп

кто-то обещал показать как будет все это в игре, хоть и появились новые баги не забудь после фикса.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 20.8.2018, 22:50
Сообщение #12


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

OLAF,
Модель перевернули и уменьшили.Там как-бы ничего нет интересного)Ну в будущем можно игрока подкинуть вверх с моделей,как-бы в смерч попал))
ВИДЕО
А то что ты сказал,то по таску убираеться модель ( это не то )


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 21.8.2018, 19:56
Сообщение #13


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Вот ещё заметил.Если модель неотображаеться с первого раза на игроку,то она отображаеться по середине карты сверху.
Незнаю,может этим помог smile.gif dntknw.gif


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 22.8.2018, 12:28
Сообщение #14


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Это
Код:
    new num = random_num(0,1)
if(num > 1 || num < 0)
return PLUGIN_HANDLED

new gVic = read_data(2), Float:flOrigin[3]
pev(gVic, pev_origin, flOrigin)


Этим
Код:
    new Float:flOrigin[3]
pev(id, pev_origin, flOrigin)


И всё.


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 10.10.2018, 1:36
Сообщение #15


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

Стаж: 16 лет

Сообщений: 984
Благодарностей: 526
Полезность: 1038

Помогите домучать,что-бы модель исчезалась плавно при убийстве противника.
Там она исчезает резко по Таску.
И есть уже готовый пример плавного исчезновения по окончании 10 секунд.
Вот его я немогу подстроить после убийства

Вот здесь
Код:
public Task_EntFind(taskid)
{
new ent = taskid - TASK_ENTFIND;

if(!pev_valid(ent)) {
remove_task(taskid);
return;
}

new iEnemy = pev(ent, pev_iuser4);

if (!is_user_alive(iEnemy)) {
remove_task(taskid);
remove_task(ent + TASK_ENTREMOVE);
set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME);
return;
}
}


Пример уже готовый "плавного"
Код:
public UltimateThink(ent)   {
if (!pev_valid(ent)) {
return HAM_IGNORED;
}

switch(pev(ent, pev_impulse)) {
case STATUS_NONE:{
set_pev(ent, pev_movetype, MOVETYPE_FLY);
set_pev(ent, pev_solid, SOLID_NOT);
set_pev(ent, pev_rendermode, kRenderTransAlpha);

set_pev(ent, pev_renderamt, 100.0);
set_pev(ent, pev_velocity, Float:{0.0, 0.0, VERTICAL_SPEED});
set_pev(ent, pev_avelocity, Float:{0.0, HORISONTAL_SPEED, 0.0})
set_pev(ent, pev_impulse, STATUS_EFFECT);
}
case STATUS_EFFECT: {
if (pev(ent, pev_renderamt) > 0.0) {
set_pev(ent, pev_renderamt, floatmax(0.0, pev(ent, pev_renderamt) - STEP));
} else {
set_pev(ent, pev_flags, FL_KILLME);
set_pev(ent, pev_impulse, STATUS_KILL);
}
}
}

set_pev(ent,pev_nextthink,get_gametime() + 0.1)

return HAM_SUPERCEDE;
}


Весь код

Код:
#define ENTANGLE_TIME   10.0    // Время исчезновения модели Ультимейта

#define TASK_ENTREMOVE 0x917

#define TASK_ENTFIND 648911118719
#define FIND_TIME 0.1 // Время исчезновения Ульты ( секунды )

#define STEP 10.0
#define VERTICAL_SPEED 20.0
#define HORISONTAL_SPEED 60.0

enum (+= 1) {
STATUS_NONE = 0,
STATUS_EFFECT,
STATUS_KILL
}

public NE_ULT_EntangleEffect( id )
{
new Float:flOrigin[3]
pev(id, pev_origin, flOrigin)
new ent=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))

engfunc(EngFunc_SetOrigin, ent, flOrigin);

switch(random_num(0,2))
{
case 0: engfunc(EngFunc_SetModel, ent, sz_MODEL)
case 1: engfunc(EngFunc_SetModel, ent, sz_MODEL2)
case 2: engfunc(EngFunc_SetModel, ent, sz_MODEL3)
}

set_pev(ent, pev_classname, "elf_ultimate");
set_pev(ent, pev_sequence, 0)
set_pev(ent, pev_framerate, 1.0)
set_pev(ent, pev_iuser4, id)

set_task(FIND_TIME, "Task_EntFind", ent + TASK_ENTFIND, _, _, "b");

set_pev(ent, pev_nextthink, get_gametime() + ENTANGLE_TIME)
set_pev(ent, pev_rendermode, kRenderFxNone);



// Play the entangle sound
emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_ENTANGLING], 1.0, ATTN_NORM, 0, PITCH_NORM );

return PLUGIN_HANDLED
}

public UltimateThink(ent) {
if (!pev_valid(ent)) {
return HAM_IGNORED;
}

switch(pev(ent, pev_impulse)) {
case STATUS_NONE:{
set_pev(ent, pev_movetype, MOVETYPE_FLY);
set_pev(ent, pev_solid, SOLID_NOT);
set_pev(ent, pev_rendermode, kRenderTransAlpha);

set_pev(ent, pev_renderamt, 100.0);
set_pev(ent, pev_velocity, Float:{0.0, 0.0, VERTICAL_SPEED});
set_pev(ent, pev_avelocity, Float:{0.0, HORISONTAL_SPEED, 0.0})
set_pev(ent, pev_impulse, STATUS_EFFECT);
}
case STATUS_EFFECT: {
if (pev(ent, pev_renderamt) > 0.0) {
set_pev(ent, pev_renderamt, floatmax(0.0, pev(ent, pev_renderamt) - STEP));
} else {
set_pev(ent, pev_flags, FL_KILLME);
set_pev(ent, pev_impulse, STATUS_KILL);
}
}
}

set_pev(ent,pev_nextthink,get_gametime() + 0.1)

return HAM_SUPERCEDE;
}

public Task_EntFind(taskid)
{
new ent = taskid - TASK_ENTFIND;

if(!pev_valid(ent)) {
remove_task(taskid);
return;
}

new iEnemy = pev(ent, pev_iuser4);

if (!is_user_alive(iEnemy)) {
remove_task(taskid);
remove_task(ent + TASK_ENTREMOVE);
set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME);
return;
}
}


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: