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

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

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

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

Использовать только 1 спрайт

Статус пользователя r1nk0
сообщение 12.1.2015, 13:27
Сообщение #1


Стаж: 12 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

● Всем привет.помогите кто шарит,исправить плагин так что бы использовался только 1 спрайт при замене дыма,и не загружались остальные

● Проще говоря плагин замены спрайта дыма,на установленный мной.

● Что бы остальные не загружались это я понял что удалить все строки кроме нужной в

Код
public plugin_precache( ) {
    g_szSmokeSprites[ 0 ] = precache_model( "sprites/gas_puff_01y.spr" );
    g_szSmokeSprites[ 1 ] = precache_model( "sprites/gas_puff_01r.spr" );
    g_szSmokeSprites[ 2 ] = precache_model( "sprites/gas_puff_01b.spr" );
    g_szSmokeSprites[ 3 ] = precache_model( "sprites/gas_puff_01g.spr" );
    g_szSmokeSprites[ 4 ] = precache_model( "sprites/gas_puff_01m.spr" );
    g_szSmokeSprites[ 5 ] = precache_model( "sprites/gas_puff_01o.spr" );


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

Код
new iSmoke;
                
                if( iCvar == 2 )
                    iSmoke = get_user_team( iOwner ); // i did indexes as team, 1 - red, 2 - blue, 3 - green( spec oO )
                else
                    iSmoke = random_num( 0, 5 );


Тема плагина на alliedmods

код плагина
Код
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "1.1"

new const g_szClassname[] = "colored_smokenade";

new g_szSmokeSprites[ 6 ];
new g_Cvar_Enabled;

public plugin_init( ) {
    register_plugin( "Colored Smoke", VERSION, "xPaw" );
    
    register_cvar( "colored_smoke", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
    set_cvar_string( "colored_smoke", VERSION );
    
    g_Cvar_Enabled = register_cvar( "sv_colored_smoke", "1" );
    
    register_forward( FM_EmitSound, "FwdEmitSound" );
    register_touch( g_szClassname, "worldspawn", "FwdTouch_FakeSmoke" );
    register_think( g_szClassname, "FwdThink_FakeSmoke" );
}

public plugin_precache( ) {
    g_szSmokeSprites[ 0 ] = precache_model( "sprites/gas_puff_01y.spr" );
    g_szSmokeSprites[ 1 ] = precache_model( "sprites/gas_puff_01r.spr" );
    g_szSmokeSprites[ 2 ] = precache_model( "sprites/gas_puff_01b.spr" );
    g_szSmokeSprites[ 3 ] = precache_model( "sprites/gas_puff_01g.spr" );
    g_szSmokeSprites[ 4 ] = precache_model( "sprites/gas_puff_01m.spr" );
    g_szSmokeSprites[ 5 ] = precache_model( "sprites/gas_puff_01o.spr" );
    
    precache_sound( "weapons/grenade_hit1.wav" );
}

public FwdEmitSound( iOrigEnt, iChannel, const szSample[], Float:fVol, Float:fAttn, iFlags, iPitch ) {
    new iCvar = get_pcvar_num( g_Cvar_Enabled );
    if( iCvar > 0 ) {
        static const szSmokeSound[] = "weapons/sg_explode.wav";
        
        if( equal( szSample, szSmokeSound ) ) {
            // cache origin, angles and model
            new Float:vOrigin[ 3 ], Float:vAngles[ 3 ], szModel[ 64 ], iOwner;
            iOwner = entity_get_edict( iOrigEnt, EV_ENT_owner );
            entity_get_vector( iOrigEnt, EV_VEC_origin, vOrigin );
            entity_get_vector( iOrigEnt, EV_VEC_angles, vAngles );
            entity_get_string( iOrigEnt, EV_SZ_model, szModel, charsmax( szModel ) );
            
            // remove entity from world
            entity_set_vector( iOrigEnt, EV_VEC_origin, Float:{ 9999.9, 9999.9, 9999.9 } );
            entity_set_int( iOrigEnt, EV_INT_flags, FL_KILLME );
            
            // create new entity
            new iEntity = create_entity( "info_target" );
            if( iEntity > 0 ) {
                entity_set_string( iEntity, EV_SZ_classname, g_szClassname );
                
                entity_set_origin( iEntity, vOrigin );
                entity_set_vector( iEntity, EV_VEC_angles, vAngles );
                
                entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_TOSS );
                entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );
                
                entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 21.5 );
                entity_set_float( iEntity, EV_FL_gravity, 0.5 );
                entity_set_float( iEntity, EV_FL_friction, 0.8 );
                
                entity_set_model( iEntity, szModel );
                
                new Float:vVelocity[ 3 ];
                vVelocity[ 0 ] = random_float( -220.0, 220.0 );
                vVelocity[ 1 ] = random_float( -220.0, 220.0 );
                vVelocity[ 2 ] = random_float(  200.0, 300.0 );
                entity_set_vector( iEntity, EV_VEC_velocity, vVelocity );
                
                emit_sound( iEntity, iChannel, szSample, fVol, fAttn, iFlags, iPitch );
                
                // Create fake smoke
                new iSmoke;
                
                if( iCvar == 2 )
                    iSmoke = get_user_team( iOwner ); // i did indexes as team, 1 - red, 2 - blue, 3 - green( spec oO )
                else
                    iSmoke = random_num( 0, 5 );
                
                // Store the smoke number in entity, we will use it later
                entity_set_int( iEntity, EV_INT_iuser4, iSmoke );
                
                message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
                write_byte( TE_FIREFIELD );
                engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
                engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
                engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
                write_short( 100 );
                write_short( g_szSmokeSprites[ iSmoke ] );
                write_byte( 100 );
                write_byte( TEFIRE_FLAG_ALPHA );
                write_byte( 1000 );
                message_end();
                
                message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
                write_byte( TE_FIREFIELD );
                engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
                engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
                engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
                write_short( 150 );
                write_short( g_szSmokeSprites[ iSmoke ] );
                write_byte( 10 );
                write_byte( TEFIRE_FLAG_ALPHA | TEFIRE_FLAG_SOMEFLOAT );
                write_byte( 1000 );
                message_end( );
            }
        }
    }
}

public FwdTouch_FakeSmoke( iEntity, iWorld ) {
    if( !is_valid_ent( iEntity ) )
        return PLUGIN_CONTINUE;
    
    // Bounce sound
    emit_sound( iEntity, CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM, 0, PITCH_NORM );
    
    new Float:vVelocity[ 3 ];
    entity_get_vector( iEntity, EV_VEC_velocity, vVelocity );
    
    if( vVelocity[ 1 ] <= 0.0 && vVelocity[ 2 ] <= 0.0 ) {
        new Float:vOrigin[ 3 ];
        new iSmoke = entity_get_int( iEntity, EV_INT_iuser4 );
        entity_get_vector( iEntity, EV_VEC_origin, vOrigin );
        
        // Make small smoke near grenade on ground
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
        write_byte( TE_FIREFIELD );
        engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
        engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
        engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 10 );
        write_short( 2 );
        write_short( g_szSmokeSprites[ iSmoke ] );
        write_byte( 2 );
        write_byte( TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA );
        write_byte( 30 );
        message_end();
    }
    
    return PLUGIN_CONTINUE;
}

public FwdThink_FakeSmoke( iEntity ) {
    if( !is_valid_ent( iEntity ) )
        return PLUGIN_CONTINUE;
    
    remove_entity( iEntity );
    
    return PLUGIN_CONTINUE;
}

Прикрепленные файлы:
Прикрепленный файл  Smoke.rar ( 21,82 килобайт ) Кол-во скачиваний: 7


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.1.2015, 13:36
Сообщение #2


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

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


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "1.1"

new const g_szClassname[] = "colored_smokenade";

new g_szSmokeSprites;
new g_Cvar_Enabled;

public plugin_init( ) {
register_plugin( "Colored Smoke", VERSION, "xPaw" );

register_cvar( "colored_smoke", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
set_cvar_string( "colored_smoke", VERSION );

g_Cvar_Enabled = register_cvar( "sv_colored_smoke", "1" );

register_forward( FM_EmitSound, "FwdEmitSound" );
register_touch( g_szClassname, "worldspawn", "FwdTouch_FakeSmoke" );
register_think( g_szClassname, "FwdThink_FakeSmoke" );
}

public plugin_precache( ) {
g_szSmokeSprites = precache_model( "sprites/gas_puff_01y.spr" );

precache_sound( "weapons/grenade_hit1.wav" );
}

public FwdEmitSound( iOrigEnt, iChannel, const szSample[], Float:fVol, Float:fAttn, iFlags, iPitch ) {
new iCvar = get_pcvar_num( g_Cvar_Enabled );
if( iCvar > 0 ) {
static const szSmokeSound[] = "weapons/sg_explode.wav";

if( equal( szSample, szSmokeSound ) ) {
// cache origin, angles and model
new Float:vOrigin[ 3 ], Float:vAngles[ 3 ], szModel[ 64 ], iOwner;
iOwner = entity_get_edict( iOrigEnt, EV_ENT_owner );
entity_get_vector( iOrigEnt, EV_VEC_origin, vOrigin );
entity_get_vector( iOrigEnt, EV_VEC_angles, vAngles );
entity_get_string( iOrigEnt, EV_SZ_model, szModel, charsmax( szModel ) );

// remove entity from world
entity_set_vector( iOrigEnt, EV_VEC_origin, Float:{ 9999.9, 9999.9, 9999.9 } );
entity_set_int( iOrigEnt, EV_INT_flags, FL_KILLME );

// create new entity
new iEntity = create_entity( "info_target" );
if( iEntity > 0 ) {
entity_set_string( iEntity, EV_SZ_classname, g_szClassname );

entity_set_origin( iEntity, vOrigin );
entity_set_vector( iEntity, EV_VEC_angles, vAngles );

entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_TOSS );
entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );

entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 21.5 );
entity_set_float( iEntity, EV_FL_gravity, 0.5 );
entity_set_float( iEntity, EV_FL_friction, 0.8 );

entity_set_model( iEntity, szModel );

new Float:vVelocity[ 3 ];
vVelocity[ 0 ] = random_float( -220.0, 220.0 );
vVelocity[ 1 ] = random_float( -220.0, 220.0 );
vVelocity[ 2 ] = random_float( 200.0, 300.0 );
entity_set_vector( iEntity, EV_VEC_velocity, vVelocity );

emit_sound( iEntity, iChannel, szSample, fVol, fAttn, iFlags, iPitch );

// Store the smoke number in entity, we will use it later
entity_set_int( iEntity, EV_INT_iuser4, iSmoke );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
write_short( 100 );
write_short( g_szSmokeSprites );
write_byte( 100 );
write_byte( TEFIRE_FLAG_ALPHA );
write_byte( 1000 );
message_end();

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
write_short( 150 );
write_short( g_szSmokeSprites );
write_byte( 10 );
write_byte( TEFIRE_FLAG_ALPHA | TEFIRE_FLAG_SOMEFLOAT );
write_byte( 1000 );
message_end( );
}
}
}
}

public FwdTouch_FakeSmoke( iEntity, iWorld ) {
if( !is_valid_ent( iEntity ) )
return PLUGIN_CONTINUE;

// Bounce sound
emit_sound( iEntity, CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM, 0, PITCH_NORM );

new Float:vVelocity[ 3 ];
entity_get_vector( iEntity, EV_VEC_velocity, vVelocity );

if( vVelocity[ 1 ] <= 0.0 && vVelocity[ 2 ] <= 0.0 ) {
new Float:vOrigin[ 3 ];
entity_get_vector( iEntity, EV_VEC_origin, vOrigin );

// Make small smoke near grenade on ground
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 10 );
write_short( 2 );
write_short( g_szSmokeSprites );
write_byte( 2 );
write_byte( TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA );
write_byte( 30 );
message_end();
}

return PLUGIN_CONTINUE;
}

public FwdThink_FakeSmoke( iEntity ) {
if( !is_valid_ent( iEntity ) )
return PLUGIN_CONTINUE;

remove_entity( iEntity );

return PLUGIN_CONTINUE;
}


Как-то так


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя r1nk0
сообщение 12.1.2015, 13:51
Сообщение #3


Стаж: 12 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

Скрытый текст


sad.gif


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.1.2015, 13:56
Сообщение #4


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

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


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "1.1"

new const g_szClassname[] = "colored_smokenade";

new g_szSmokeSprites;
new g_Cvar_Enabled;

public plugin_init( ) {
register_plugin( "Colored Smoke", VERSION, "xPaw" );

register_cvar( "colored_smoke", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
set_cvar_string( "colored_smoke", VERSION );

g_Cvar_Enabled = register_cvar( "sv_colored_smoke", "1" );

register_forward( FM_EmitSound, "FwdEmitSound" );
register_touch( g_szClassname, "worldspawn", "FwdTouch_FakeSmoke" );
register_think( g_szClassname, "FwdThink_FakeSmoke" );
}

public plugin_precache( ) {
g_szSmokeSprites = precache_model( "sprites/gas_puff_01y.spr" );

precache_sound( "weapons/grenade_hit1.wav" );
}

public FwdEmitSound( iOrigEnt, iChannel, const szSample[], Float:fVol, Float:fAttn, iFlags, iPitch ) {
new iCvar = get_pcvar_num( g_Cvar_Enabled );
if( iCvar > 0 ) {
static const szSmokeSound[] = "weapons/sg_explode.wav";

if( equal( szSample, szSmokeSound ) ) {
// cache origin, angles and model
new Float:vOrigin[ 3 ], Float:vAngles[ 3 ], szModel[ 64 ];
entity_get_vector( iOrigEnt, EV_VEC_origin, vOrigin );
entity_get_vector( iOrigEnt, EV_VEC_angles, vAngles );
entity_get_string( iOrigEnt, EV_SZ_model, szModel, charsmax( szModel ) );

// remove entity from world
entity_set_vector( iOrigEnt, EV_VEC_origin, Float:{ 9999.9, 9999.9, 9999.9 } );
entity_set_int( iOrigEnt, EV_INT_flags, FL_KILLME );

// create new entity
new iEntity = create_entity( "info_target" );
if( iEntity > 0 ) {
entity_set_string( iEntity, EV_SZ_classname, g_szClassname );

entity_set_origin( iEntity, vOrigin );
entity_set_vector( iEntity, EV_VEC_angles, vAngles );

entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_TOSS );
entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );

entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 21.5 );
entity_set_float( iEntity, EV_FL_gravity, 0.5 );
entity_set_float( iEntity, EV_FL_friction, 0.8 );

entity_set_model( iEntity, szModel );

new Float:vVelocity[ 3 ];
vVelocity[ 0 ] = random_float( -220.0, 220.0 );
vVelocity[ 1 ] = random_float( -220.0, 220.0 );
vVelocity[ 2 ] = random_float( 200.0, 300.0 );
entity_set_vector( iEntity, EV_VEC_velocity, vVelocity );

emit_sound( iEntity, iChannel, szSample, fVol, fAttn, iFlags, iPitch );


message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
write_short( 100 );
write_short( g_szSmokeSprites );
write_byte( 100 );
write_byte( TEFIRE_FLAG_ALPHA );
write_byte( 1000 );
message_end();

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
write_short( 150 );
write_short( g_szSmokeSprites );
write_byte( 10 );
write_byte( TEFIRE_FLAG_ALPHA | TEFIRE_FLAG_SOMEFLOAT );
write_byte( 1000 );
message_end( );
}
}
}
}

public FwdTouch_FakeSmoke( iEntity, iWorld ) {
if( !is_valid_ent( iEntity ) )
return PLUGIN_CONTINUE;

// Bounce sound
emit_sound( iEntity, CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM, 0, PITCH_NORM );

new Float:vVelocity[ 3 ];
entity_get_vector( iEntity, EV_VEC_velocity, vVelocity );

if( vVelocity[ 1 ] <= 0.0 && vVelocity[ 2 ] <= 0.0 ) {
new Float:vOrigin[ 3 ];
entity_get_vector( iEntity, EV_VEC_origin, vOrigin );

// Make small smoke near grenade on ground
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 10 );
write_short( 2 );
write_short( g_szSmokeSprites );
write_byte( 2 );
write_byte( TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA );
write_byte( 30 );
message_end();
}

return PLUGIN_CONTINUE;
}

public FwdThink_FakeSmoke( iEntity ) {
if( !is_valid_ent( iEntity ) )
return PLUGIN_CONTINUE;

remove_entity( iEntity );

return PLUGIN_CONTINUE;
}

))


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя r1nk0
сообщение 12.1.2015, 14:17
Сообщение #5


Стаж: 12 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

как то странно плагин работает,все нормально замена идет,но когда в дым входишь фпс проседает нереально,такое ощущение что он рисует там не 1 спрайт дыма,а сразу штук 5,в оригинальном плагине такого нет.Да и сам заменяемый спрайт нормальный.

Доперло что мой спрайт имеет и вес и расширение больше почти в 3 раза 96х96 в оригинале (спрайт дыма) мой же 256 на 256 и весит в 6 раз больше,от этого и лаги.

Отредактировал: r1nk0, - 12.1.2015, 16:08


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: