Custom Smoke by bionext

Custom Smoke by bionext 1.07

Нет прав для скачивания
Сообщения
2,750
Реакции
3,013
Помог
61 раз(а)
bionext Поддержка legacy кода устаревшего AMXX 1.8.2 это конечно "хорошо", но у меня со временем выработался на такие вещи некий стиль, не настаиваю, но мне такого варианта поддержка больше по душе в коде, нежели прямые внесения каркасов #ifdef-typed костыльных :crazy:

Код:
-#if AMXX_VERSION_NUM < 183
-   engfunc( EngFunc_WriteCoord, vOrigin[ 0 ] );
-   engfunc( EngFunc_WriteCoord, vOrigin[ 1 ] );
-   engfunc( EngFunc_WriteCoord, vOrigin[ 2 ] + 50 );
-#else
-   write_coord_f( vOrigin[ 0 ] );
-   write_coord_f( vOrigin[ 1 ] );
-   write_coord_f( vOrigin[ 2 ] + 50 );
-#endif
Код:
+#if !defined write_coord_f
+    #include <fakemeta>
+    #define write_coord_f(%1)    engfunc( EngFunc_WriteCoord, %1 )
+#endif
 
Последнее редактирование:
Сообщения
273
Реакции
424
Помог
5 раз(а)
wopox1337, только так
Код:
#if !defined write_coord_f
-    #include <fakemeta>
    #define write_coord_f(%1)    engfunc( EngFunc_WriteCoord, %1 )
#endif
Код:
+#include <fakemeta>
#if !defined write_coord_f
    #define write_coord_f(%1)    engfunc( EngFunc_WriteCoord, %1 )
#endif
потому что
Код:
unregister_forward(FM_PrecacheEvent, g_fwid, 1);
fakemeta.inc
:smile3:
 
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Скрытое содержимое для пользователей: bionext
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
Tranquillity, а как откатить? Cумбурно всё получилось, не успел описать ресурс на работу дёрнули.
 
Сообщения
349
Реакции
73
Помог
1 раз(а)
iOS, так и должно быть. Еще не разобрался в чем причина7
 

iOS

Сообщения
323
Реакции
100
Помог
5 раз(а)
GALAXY, неа. Позже потестирую. Ставил стандартный спрайт, и другие пробовал. Тоже самое.
 
Сообщения
2
Реакции
1
Is there a possibility to slow down the "speed" of the smokepuffs?

and maybe you want to add in plugin_init
Код:
   register_event("TextMsg", "FwdClear", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
to ensure that the Smoke is cleared on RoundRestart too


// google translate:
Есть ли возможность замедлить «скорость» курения?


и, возможно, вы хотите добавить в plugin_init
Код:
   register_event("TextMsg", "FwdClear", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
чтобы гарантировать, что дым очищается на RoundRestart тоже
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
Daniele386, Thanks for the hint, I will add a clear when restarting in the next version. For simulated smoke, the tempentity (TE_FIREFIELD) of burning fire is used. If you use something else then it is probably possible.
 

tim

Сообщения
9
Реакции
1
Неверный раздел форума
не компилится все другие плагины компилит без проблем а этот не хочет ткните что я делаю не так

//// custom_smoke.sma
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(107) : error 036: empty statement
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(108) : error 036: empty statement
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(109) : error 036: empty statement
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(119) : error 036: empty statement
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(120) : error 036: empty statement
// C:\Users\Vendetta\Desktop\AmxModX 1.8.2_fix\custom_smoke.sma(121) : error 036: empty statement
//
// 6 Errors.
// Could not locate output file compiled\custom_smoke.amx (compile failed).
//
// Compilation Time: 0,11 sec
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
tim, Скорее всего у вас кривой amxx так как судя по ошибкам в нём отсутствует найтив write_byte. Проверьте наличие в инклюде messages.inc наличие строки
Код:
native write_byte(x);
 

tim

Сообщения
9
Реакции
1
bionext,
native message_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0);
native message_end();
native write_byte(x);
native write_char(x);
native write_short(x);
native write_long(x);
native write_entity(x);
native write_angle(x);
native write_coord(x);
native write_string(const x[]);

компилятор нормальый с темы что кидал выше алексис да и на других пробовал такая же ошибка вылазит
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
tim, тогда скомпилируйте вот это
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>

#define VERSION "1.05"
#define SMOKE_SPRITE "sprites/gas_puff_gray_opaque.spr"

new const g_szClassname[] = "custom_smoke";
new g_fwid
new g_evCreateSmoke;
new g_szSmokeSprite;
new g_Cvar_Enabled;
new g_Cvar_Duration;
new g_Cvar_CountSprites;
new g_Clear;
new g_iCvar_Enebled;
new g_iCountSprites;

public plugin_init( )
{
   register_plugin( "Custom Smoke", VERSION, "bionext" );

   g_Clear = 0;
   g_iCvar_Enebled = 0;
   g_Cvar_Enabled = register_cvar( "sv_customsmoke", "1" );
   g_Cvar_Duration = register_cvar( "sv_smokeduration", "10.0" );
   g_Cvar_CountSprites = register_cvar( "sv_smokespritescount", "100" );

   unregister_forward(FM_PrecacheEvent, g_fwid, 1);

   register_think( g_szClassname, "FwdThink_BlackSmoke" );
   register_forward(FM_PlaybackEvent, "FwdPlaybackEvent");
   register_logevent("FwdClear", 2, "1=Round_End");
   register_logevent("FwdStart", 2, "1=Round_Start");
}

public FwdClear( )
{
   g_Clear = 1;
}

public FwdStart( )
{
   g_iCvar_Enebled = get_pcvar_num( g_Cvar_Enabled );
   g_Clear = 0;
}

public plugin_precache( )
{
   g_szSmokeSprite = precache_model( SMOKE_SPRITE );
   g_fwid = register_forward(FM_PrecacheEvent, "FwdPrecacheEvent", 1);
   force_unmodified(force_exactfile, {0,0,0},{0,0,0}, SMOKE_SPRITE);
}

public FwdPlaybackEvent( iFlags , iEntity , iEventindex, Float:fDelay, Float:vOrigin[3], Float:vAngles[3], Float:fParam1, Float:fParam2, iParam1, iParam2, iBparam1, iBparam2 )
{
   if(iEventindex != g_evCreateSmoke || iBparam2 || !g_iCvar_Enebled)
      return FMRES_IGNORED;

   new iEnt = create_entity( "info_target" );

   if( !iEnt )
      return FMRES_IGNORED;
  
   g_iCountSprites = get_pcvar_num( g_Cvar_CountSprites );
   new Float:fDuration = get_pcvar_float( g_Cvar_Duration );
          
   entity_set_string( iEnt, EV_SZ_classname, g_szClassname );
   entity_set_float( iEnt, EV_FL_nextthink, get_gametime( ));
   entity_set_vector( iEnt, EV_VEC_origin, vOrigin );
   entity_set_float( iEnt, EV_FL_animtime, fDuration );

   return FMRES_SUPERCEDE;
}

public FwdPrecacheEvent(type, const name[])
{
   if (equal("events/createsmoke.sc", name))
   {
      g_evCreateSmoke = get_orig_retval();
      return FMRES_HANDLED;
   }

   return FMRES_IGNORED;
}

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

   if( g_Clear > 0 )
   {
      entity_set_int( iEntity,EV_INT_flags, FL_KILLME );
      return PLUGIN_CONTINUE;
   }

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

   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( g_iCountSprites );
   write_byte( TEFIRE_FLAG_ALPHA );
   write_byte( 11 );
   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( 11 );
   message_end( );

   new Float:time = entity_get_float(iEntity,EV_FL_animtime);
   time = time - 1.0;

   if( time > 0.0 )
   {
      entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 1.0 );
      entity_set_float( iEntity, EV_FL_animtime, time );
   }
   else
   {
      entity_set_int( iEntity,EV_INT_flags, FL_KILLME );
   }

   return PLUGIN_CONTINUE;
}
 

tim

Сообщения
9
Реакции
1
bionext, а вот теперь все без ошибок спасибо!
напишите в чем была проблема а то тут минусы ставят будто я дуб зеленый=)
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
tim, проблема в версии amxx в ней нет нейтива write_coord_f и почему-то компилятор не распознал дерективу
Код:
#if !defined write_coord_f
    #define write_coord_f(%1) engfunc( EngFunc_WriteCoord, %1 );
#endif
у меня просьба проверить как скомпилируется такой вариант как в прикреплённом файле.
 

Вложения

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

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