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

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

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

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

ColoredSmoke.sma

, Разноцветный дым
oxotnukoff
сообщение 10.9.2015, 21:26
Сообщение #1
Стаж: 13 лет

Сообщений: 164
Благодарностей: 44
Полезность: 128

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

#define FIRST_THINK 39546
#define FIRST_TOUCH 23921

new const g_szClassname[] = "colored_smokenade";

new g_szSmokeSprites[ 6 ];
new g_Cvar_Enabled;

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

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

register_touch( "grenade", "worldspawn", "FwdTouch_Grenade" );
register_touch( g_szClassname, "worldspawn", "FwdTouch_FakeSmoke" );
register_think( g_szClassname, "FwdThink_FakeSmoke" );
}

public plugin_precache( ) {
g_szSmokeSprites[ 0 ] = precache_model( "sprites/gas_puff_01r.spr" );
g_szSmokeSprites[ 1 ] = precache_model( "sprites/gas_puff_01g.spr" );
g_szSmokeSprites[ 2 ] = precache_model( "sprites/gas_puff_01b.spr" );
g_szSmokeSprites[ 3 ] = precache_model( "sprites/gas_puff_01y.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 FwdTouch_Grenade( iEntity, iWorld ) {
if( !get_pcvar_num( g_Cvar_Enabled ) )
return PLUGIN_CONTINUE;

static const szSmoke[] = "models/w_smokegrenade.mdl";
static szModel[ 26 ];
entity_get_string( iEntity, EV_SZ_model, szModel, charsmax( szModel ) );

if( equali( szModel, szSmoke ) ) {
static Float:vVelocity[ 3 ];
entity_get_vector( iEntity, EV_VEC_velocity, vVelocity );

if( vector_length( vVelocity ) <= 200.0 ) {
new iFake = create_entity( "info_target" );

// If created smoke is not valid, let cs explode standart 1 then...
if( !is_valid_ent( iFake ) )
return PLUGIN_CONTINUE;

entity_set_string( iFake, EV_SZ_classname, g_szClassname );
entity_set_edict( iFake, EV_ENT_owner, entity_get_edict( iEntity, EV_ENT_owner ) );
entity_set_int( iFake, EV_INT_movetype, MOVETYPE_BOUNCE );
entity_set_int( iFake, EV_INT_solid, SOLID_NOT );

new Float:vOrigin[ 3 ], Float:vAngles[ 3 ];
entity_get_vector( iEntity, EV_VEC_origin, vOrigin );
entity_get_vector( iEntity, EV_VEC_angles, vAngles );

entity_set_vector( iFake, EV_VEC_origin, vOrigin );
vVelocity[ 2 ] += 150.0;
entity_set_vector( iFake, EV_VEC_velocity, vVelocity );
entity_set_vector( iFake, EV_VEC_angles, vAngles );
entity_set_int( iFake, EV_INT_fixangle, 1 );
entity_set_model( iFake, szModel );

entity_set_int( iFake, EV_INT_iuser3, FIRST_TOUCH );
entity_set_int( iFake, EV_INT_iuser4, FIRST_THINK );
entity_set_float( iFake, EV_FL_nextthink, get_gametime( ) + 0.6 );

// Delete Original Smoke
entity_set_int( iEntity, EV_INT_flags, FL_KILLME );

// Detonate Smoke
emit_sound( iFake, CHAN_WEAPON, "weapons/sg_explode.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );

new iOrigin[ 3 ], iRandomSmoke;
FVecIVec( vOrigin, iOrigin );
iRandomSmoke = random_num( 0, 5 );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ] + 50 );
write_short( 100 );
write_short( g_szSmokeSprites[ iRandomSmoke ] );
write_byte( 100 );
write_byte( TEFIRE_FLAG_ALPHA );
write_byte( 1000 );
message_end();

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ] + 50 );
write_short( 150 );
write_short( g_szSmokeSprites[ iRandomSmoke ] );
write_byte( 10 );
write_byte( TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA );
write_byte( 1000 );
message_end( );
}
}

return PLUGIN_CONTINUE;
}

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

if( entity_get_int( iEntity, EV_INT_iuser3 ) == FIRST_TOUCH ) {
// Touch sound
emit_sound( iEntity, CHAN_WEAPON, "weapons/grenade_hit1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );
entity_set_int( iEntity, EV_INT_iuser3, 0 );
}

return PLUGIN_CONTINUE;
}

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

if( entity_get_int( iEntity, EV_INT_iuser4 ) == FIRST_THINK ) {
entity_set_int( iEntity, EV_INT_iuser4, 0 );
entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_TOSS );
entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 21.0 );
} else
remove_entity( iEntity );

return PLUGIN_CONTINUE;
}
Помогите сделать так что бы Плагин загружал один дым
Код
g_szSmokeSprites[ 0 ] = precache_model( "sprites/gas_puff_01r.spr" );

я оставил одну строчку sprites/gas_puff_01r.spr
проблема в том что новый дым он загружает но остальные прозрачные

Отредактировал: Bloo, - 10.9.2015, 21:34
Причина: Выдано устное предупреждение!
Прикрепленные файлы:
Прикрепленный файл  2815_gas_puff_2.rar ( 7,72 килобайт ) Кол-во скачиваний: 14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 10.9.2015, 22:07
Сообщение #2
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

oxotnukoff, так попробуй
Код:

new g_szSmokeSprites[ 1 ];
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя -ZVER- Contra
сообщение 10.9.2015, 22:08
Сообщение #3


Стаж: 17 лет

Сообщений: 168
Благодарностей: 17
Полезность: < 0

Код:
new g_szSmokeSprites;

g_szSmokeSprites = precache_model( "sprites/gas_puff_01r.spr" );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 10.9.2015, 22:13
Сообщение #4
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

-ZVER- Contra, ну да чет я тупанул) этот вариант будет правильнее
и еще это тоже заменить нужно
Код:

new iOrigin[ 3 ];
         FVecIVec( vOrigin, iOrigin );
          
         message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
         write_byte( TE_FIREFIELD );
         write_coord( iOrigin[ 0 ] );
         write_coord( iOrigin[ 1 ] );
         write_coord( iOrigin[ 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 );
         write_coord( iOrigin[ 0 ] );
         write_coord( iOrigin[ 1 ] );
         write_coord( iOrigin[ 2 ] + 50 );
         write_short( 150 );
         write_short( g_szSmokeSprites );
         write_byte( 10 );
         write_byte( TEFIRE_FLAG_ALLFLOAT | TEFIRE_FLAG_ALPHA );
         write_byte( 1000 );
         message_end( );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
oxotnukoff
сообщение 10.9.2015, 23:27
Сообщение #5
Стаж: 13 лет

Сообщений: 164
Благодарностей: 44
Полезность: 128

Цитата
Спасибо помогло
good.gif derisive.gif
1. Можно пожалуйста сделать чтоб дым был без анимации? blush.gif
2.нижняя часть на месте а вод верхняя
3. ширину и радиус самого спрея уменьшить можно или это одельный вопрос

Отредактировал: oxotnukoff, - 10.9.2015, 23:37
Прикрепленные файлы:
Прикрепленное изображение Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
oxotnukoff
сообщение 11.9.2015, 0:16
Сообщение #6
Стаж: 13 лет

Сообщений: 164
Благодарностей: 44
Полезность: 128

Цитата
оу а стандартый дым как заменить на черный?
huh.gif
Прикрепленные файлы:
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
oxotnukoff
сообщение 12.9.2015, 11:14
Сообщение #7
Стаж: 13 лет

Сообщений: 164
Благодарностей: 44
Полезность: 128

Код
Готово

Кто поможет убрать анимацию дыма который на
Исходник
Код
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "1.0"

new const g_szClassname[] = "black_smokenade";

new g_szSmokeSprite;
new g_Cvar_Enabled;

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

public plugin_precache( ) {
   g_szSmokeSprite = precache_model( "sprites/black_smoke.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 );
            
            // Store the smoke number in entity, we will use it later
            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_szSmokeSprite );
            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_szSmokeSprite );
            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_szSmokeSprite );
      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;
}


Отредактировал: oxotnukoff, - 12.9.2015, 11:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: