Не исчезает дым в новом раунде

Сообщения
20
Реакции
-1
Ошибка
Дым не исчезает в новом раунде
ОС
Linux
Amx Mod X
190
Билд
3.11.0.767
ReGamedll
5.21.0.540
Версия Metamod
1.21p38
Список метамодулей
reapi
fakemeta
hamsandwich
Список плагинов
Все плагины отключены
Автор плагина
bionext
Версия плагина
1.09
Исходный код
#include < amxmodx >
#include < reapi >

#pragma semicolon 1

// Modified by mx?! at 18.01.2020, base version was 1.07
// Changes:
// Old AMXX versions support dropped (now plugin require 183+)
// Plugin ported to ReAPI (base version uses fakemeta & engine)
// Refactoring
// Added AMXX autoconfig option
// Added new cvar 'sv_smokestyle'
// Default 'sv_smokeduration' cvar value raised from 10.0 to 15.0
//
// Version 1.09 changes:
// Added 'fps friendly' mode, just set cvar 'sv_smokespritescount' to 0
#define VERSION "1.09"

/* -------------------- */

// Create config in 'configs/plugins', and execute it?
#define AUTO_CFG

// Use reliable messages (guaranteed delivery, but can cause client overflow)
// Comment to use unreliable messages
#define USE_RELIABLE

// Path to custom smoke sprite
new const SMOKE_SPRITE[ ] = "sprites/gas_puff_gray_opaque.spr";
//new const SMOKE_SPRITE[ ] = "sprites/26.spr";
//new const SMOKE_SPRITE[ ] = "sprites/gas_puff_gray_transparent.spr";

// Sprites count in 'fps friendly' mode
#define FPS_MODE_SPRITES_COUNT 100

/* -------------------- */

#if defined USE_RELIABLE
#define MSG_TYPE MSG_ALL
#else
#define MSG_TYPE MSG_BROADCAST
#endif

new const CUSTOM_CLASSNAME[ ] = "custom_smoke";

new g_iCvar_Enebled;
new Float:g_flCvar_Duration;
new g_iCvar_SpritesCount;
new g_iCvar_Style;
new g_iSmokeSpriteIndex;

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

if( !file_exists( SMOKE_SPRITE ) )
{
set_fail_state( "Can't find '%s'", SMOKE_SPRITE );
}

g_iSmokeSpriteIndex = precache_model( SMOKE_SPRITE );

force_unmodified( force_exactfile, { 0, 0, 0 }, { 0, 0, 0 }, SMOKE_SPRITE );
}

public plugin_init( )
{
func_RegCvars( );

RegisterHookChain( RG_CGrenade_ExplodeSmokeGrenade, "OnExplodeSmokeGrenade_Pre" );
RegisterHookChain( RG_CSGameRules_RestartRound, "OnRestartRound_Pre" );
}

public OnExplodeSmokeGrenade_Pre( pEnt )
{
if( !g_iCvar_Enebled || !is_entity( pEnt ) )
{
return HC_CONTINUE;
}

new Float:vOrigin[ 3 ];
get_entvar( pEnt, var_origin, vOrigin );

emit_sound( pEnt, CHAN_WEAPON, "weapons/sg_explode.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );

set_entvar( pEnt, var_flags, FL_KILLME );

new pSmokeEnt = rg_create_entity( "info_target", .useHashTable = false );

if( !pSmokeEnt )
{
return HC_SUPERCEDE;
}

set_entvar( pSmokeEnt, var_classname, CUSTOM_CLASSNAME );
set_entvar( pSmokeEnt, var_nextthink, get_gametime( ) );
set_entvar( pSmokeEnt, var_origin, vOrigin );
set_entvar( pSmokeEnt, var_animtime, g_flCvar_Duration );
SetThink( pSmokeEnt, "OnThink_Pre" );

return HC_SUPERCEDE;
}

public OnThink_Pre( pEnt )
{
if( !is_entity( pEnt ) )
{
return;
}

new Float:vOrigin[ 3 ];
get_entvar( pEnt, var_origin, vOrigin );

func_SendFireFieldMsg( vOrigin, 100, g_iCvar_SpritesCount ? g_iCvar_SpritesCount : FPS_MODE_SPRITES_COUNT, TEFIRE_FLAG_ALPHA, 11 );

if(g_iCvar_SpritesCount) {
func_SendFireFieldMsg( vOrigin, 150, 5, TEFIRE_FLAG_ALPHA | TEFIRE_FLAG_SOMEFLOAT, 11 );
}

new Float:fFreq = g_iCvar_SpritesCount ? 0.25 : 1.0;

new Float:flTime = Float:get_entvar( pEnt, var_animtime ) - fFreq;

if( flTime > 0.0 )
{
set_entvar( pEnt, var_nextthink, get_gametime( ) + fFreq );
set_entvar( pEnt, var_animtime, flTime );
}
else
{
set_entvar( pEnt, var_flags, FL_KILLME );
}
}

func_SendFireFieldMsg( const Float:vOrigin[ 3 ], iRadius, iSpritesCount, iFlags, iDuration )
{
if(g_iCvar_Style)
{
iFlags |= TEFIRE_FLAG_PLANAR;
}

message_begin( MSG_TYPE, SVC_TEMPENTITY );
write_byte( TE_FIREFIELD );
write_coord_f( vOrigin[ 0 ] );
write_coord_f( vOrigin[ 1 ] );
write_coord_f( vOrigin[ 2 ] + 50 );
write_short( iRadius );
write_short( g_iSmokeSpriteIndex );
write_byte( iSpritesCount );
write_byte( iFlags );
write_byte( iDuration );
message_end( );
}

public OnRestartRound_Pre( )
{
new pEnt = MaxClients;

while( ( pEnt = rg_find_ent_by_class( pEnt, CUSTOM_CLASSNAME, .useHashTable = false ) ) )
{
set_entvar( pEnt, var_flags, FL_KILLME );
}
}

func_RegCvars( )
{
bind_pcvar_num(
create_cvar(
"sv_customsmoke",
"1",
.description = "Enable custom smoke (1/0) ?" ),
g_iCvar_Enebled
);

bind_pcvar_float(
create_cvar(
"sv_smokeduration",
"15.0",
.has_min = true, .min_val = 1.0,
.description = "Smoke duration in seconds" ),
g_flCvar_Duration
);

bind_pcvar_num(
create_cvar(
"sv_smokespritescount",
"30",
.has_min = true, .min_val = 0.0,
.description = "Smoke sprites count (set to 0 to enable 'fps friendly' mode)" ),
g_iCvar_SpritesCount
);

bind_pcvar_num(
create_cvar(
"sv_smokestyle",
"0",
.description = "Smoke style: 0 - default, 1 - compact" ),
g_iCvar_Style
);

#if defined AUTO_CFG
AutoExecConfig( );
#endif
}
Не исчезает дым в новом раунде
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
11
Реакции
3
lowamxx, квары то прописывал в конфиг? И если да, что в них указано?
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
bloodyhawk, враки, у меня исчезает без проблем. Последняя версия Re... всего для win, включая AMXX.
И совсем не понял почему засланная мессага "TE_FIREFIELD" мешает установленному флагу FL_KILLME для энтити в "подходящем" кадре think'а удалить энтитю (сурсы не глядел).
 
Последнее редактирование:

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
gang,
Код:
// Create config in 'configs/plugins', and execute it?
#define AUTO_CFG
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
gang, Как первый, так и второй вопрос не имеем смысла, от слова совсем.
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
gang, он имеет в виду, что в этом плагине автоматически создаётся конфиг со всеми кварами.
 
Сообщения
11
Реакции
3
gang, он имеет в виду, что в этом плагине автоматически создаётся конфиг со всеми кварами.
Да это то я понял, но ведь человек мог поиграть со значениями, что и привело его к этой проблеме. Или это технически невозможно?
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
gang, нет, квары не должны влиять на то, чтобы дым не исчезал.
 
Сообщения
1,560
Реакции
1,573
Помог
2 раз(а)
Вот исчезает :dntknw:

 

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

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