

Стаж: 18 лет
Сообщений: 987
Благодарностей: 529
Полезность: 1050
|
Опредилял,в каких именно плагинах это случаеться и клиента выкидывает из игры с ошибкой в консоль. Host_Error: WriteDest_Parm: not a clientПроисходит это в какой-то из моментов убийства от Газа себя же или другого игрока Ошибке не нравиться что-то типа - message_begin / write_short / write_byte больших значенийПоетому скидую сюда 2 Кода.Может там совсем и не в этом дело В этом точно уверенКод:
#include <amxmodx> #include <engine> #include <fakemeta>
#define VERSION "1.1"
new const g_szClassname[] = "smoke_effect";
new g_szSmokeSprites;
public plugin_init( ) { register_plugin( "Smoke Effect", VERSION, "xPaw" ); register_forward( FM_EmitSound, "FwdEmitSound" ); register_think( g_szClassname, "FwdThink_FakeSmoke" ); }
public plugin_precache( ) { g_szSmokeSprites = precache_model( "sprites/smoke_effect/smoke_effect.spr" ) }
public FwdEmitSound( iOrigEnt, iChannel, const szSample[], Float:fVol, Float:fAt tn, iFlags, iPitch ) {
static const szSmokeSound[] = "weapons/sg_explode.wav"; if( equal( szSample, szSmokeSound ) ) { 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 ) ); entity_set_vector( iOrigEnt, EV_VEC_origin, Float:{ 9999.9, 9999.9, 9999.9 } ); entity_set_int( iOrigEnt, EV_INT_flags, FL_KILLME ); 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, iP itch ); 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( 50 ); write_byte( 100 ); write_byte( 1000 ); message_end(); } } }
public FwdThink_FakeSmoke( iEntity ) { if( !is_valid_ent( iEntity ) ) return PLUGIN_CONTINUE; remove_entity( iEntity ); return PLUGIN_CONTINUE; } В етом на 50 %Код:
#include <amxmodx> #include <fakemeta> #include <hamsandwich>
#pragma semicolon 1
#define PLUGIN "Gas Poison" #define AUTHOR "ConnorMcLeod" #define VERSION "2.0.0"
#define PEV_PDATA_SAFE 2
#define MAX_PLAYERS 32
#define m_bitsDamageType 76 // VEN
#define OFFSET_TEAM 114 #define fm_get_user_team(%1) get_pdata_int(%1,OFFSET_TEAM)
#define write_coord_f(%1) engfunc(EngFunc_WriteCoord, %1)
#define GASNADE_HURT -666 #define GASNADE_HEAL -777
new g_pCvarRadius, g_pCvarCheckTime, g_pCvarDmg, g_pCvarFF, g_pCvarLife, g_pCvar Restore, g_pCvarNoSmoke, g_pCvarEnabled, g_pCvarGasFade, g_msgScreenFade; new mp_friendlyfire;
new g_iMaxPlayers;
new g_iHealer;
new Float:g_fLastHurt[MAX_PLAYERS+1]; new Float:g_fDmgToRestore[MAX_PLAYERS+1];
new g_iForwardEmitSound; new HamHook:g_iHamTouch, HamHook:g_iHamThink;
public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); register_cvar("gasnade", VERSION, FCVAR_SERVER);
g_pCvarEnabled = register_cvar("amx_gasnades", "1");
g_pCvarDmg = register_cvar("amx_gasdmg", "15"); g_pCvarRadius = register_cvar("amx_gasradius", "90"); g_pCvarCheckTime = register_cvar("amx_gascheck", "1"); g_pCvarFF = register_cvar("amx_gasobeyFF", "0"); g_pCvarLife = register_cvar("amx_gaslife", "23"); g_pCvarRestore = register_cvar("amx_gas_restore", "0"); g_pCvarNoSmoke = register_cvar("amx_gas_nosmoke", "0"); g_pCvarGasFade = register_cvar("amx_gasfade", "1"); g_msgScreenFade = get_user_msgid("ScreenFade"); register_event("HLTV", "Event_HLTV_NewRound", "a", "1=0", "2=0");
g_iMaxPlayers = get_maxplayers(); mp_friendlyfire = get_cvar_pointer("mp_friendlyfire");
Event_HLTV_NewRound(); }
public plugin_pause() { new iEnt = FM_NULLENT; while( (iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "trigger_hurt")) > 0 ) { if( pev(iEnt, pev_iuser1) == GASNADE_HURT ) engfunc(EngFunc_RemoveEntity, iEnt); } Healer(0); }
public Event_HLTV_NewRound() { new iEnt = FM_NULLENT; while( (iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "trigger_hurt")) > 0 ) { if( pev(iEnt, pev_iuser1) == GASNADE_HURT ) engfunc(EngFunc_RemoveEntity, iEnt); }
for(new id=1; id<=g_iMaxPlayers; id++) { g_fLastHurt[id] = g_fDmgToRestore[id] = 0.0; }
if( get_pcvar_num(g_pCvarEnabled) ) { if( !g_iForwardEmitSound ) { g_iForwardEmitSound = register_forward(FM_EmitSound, "EmitSound"); }
if( g_iHamTouch ) { EnableHamForward(g_iHamTouch); } else { g_iHamTouch = RegisterHam(Ham_Touch, "trigger_hurt", "HurtTouch"); }
if( g_iHamThink ) { EnableHamForward(g_iHamThink); } else { g_iHamThink = RegisterHam(Ham_Think, "trigger_hurt", "HurtThink"); }
Healer(get_pcvar_num(g_pCvarRestore) ? 1 : 0); } else { if( g_iForwardEmitSound ) { unregister_forward(FM_EmitSound, g_iForwardEmitSound); g_iForwardEmitSound = 0; }
if( g_iHamTouch ) { DisableHamForward(g_iHamTouch); }
if( g_iHamThink ) { DisableHamForward(g_iHamThink); }
Healer(0); } }
public EmitSound(iEntity, iChannel, const szSample[], Float:fVol, Float:fAttn, i Flags, iPitch) { if( !equal(szSample, "weapons/sg_explode.wav") ) return;
new iEnt = engfunc( EngFunc_CreateNamedEntity , engfunc( EngFunc_AllocString , "trigger_hurt") );
dllfunc(DLLFunc_Spawn, iEnt);
new Float:fRadius = get_pcvar_float(g_pCvarRadius); new Float:fMins[3], Float:fMaxs[3]; for(new i; i<3; i++) { fMins[i] = -fRadius; fMaxs[i] = fRadius; } engfunc(EngFunc_SetSize , iEnt , fMins , fMaxs );
new Float:fOrigin[3]; pev(iEntity, pev_origin, fOrigin); engfunc(EngFunc_SetOrigin, iEnt, fOrigin);
set_pev(iEnt, pev_dmg, get_pcvar_float(g_pCvarDmg));
set_pev(iEnt, pev_iuser1, GASNADE_HURT);
new iOwner = pev(iEntity, pev_owner); if( pev_valid(iOwner) == PEV_PDATA_SAFE ) { set_pev(iEnt, pev_iuser2, fm_get_user_team(iOwner)); set_pev(iEnt, pev_owner, iOwner); }
set_pev(iEnt, pev_nextthink, get_gametime() + get_pcvar_float(g_pCvarLife));
if( get_pcvar_num(g_pCvarNoSmoke) ) { emit_sound(iEntity, iChannel, szSample, fVol, fAttn, iFlags, iPitch); engfunc(EngFunc_RemoveEntity, iEntity); } }
public HurtThink(iEnt) { if( pev(iEnt, pev_iuser1) == GASNADE_HURT ) { engfunc(EngFunc_RemoveEntity, iEnt); } }
public screen_fade(id) { message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id); write_short(1<<10); write_short(1<<10); write_short(0x0000); write_byte(0); write_byte(255); write_byte(0); write_byte(150); message_end(); }
public HurtTouch(iEnt, id) { static iPod; iPod = pev(iEnt, pev_iuser1); if( (iPod != GASNADE_HURT && iPod != GASNADE_HEAL) || !(1 <= id <= g_iMaxPlayers) ) { return HAM_IGNORED; }
new iOwner = pev(iEnt, pev_owner);
if( iPod == GASNADE_HURT && get_pcvar_num(g_pCvarFF) && !get_pcvar_num(mp_friendlyfire) && pev(iEnt, pev_iuser2) == fm_get_user_team(id) ) { return HAM_SUPERCEDE; }
static Float:flTime, Float:flDmgTime; flTime = get_gametime(); pev(iEnt, pev_dmgtime, flDmgTime); if( flDmgTime > flTime ) { static Float:flPainFinished; pev(iEnt, pev_pain_finished, flPainFinished); if( flTime != flPainFinished ) { static iImpulse; iImpulse = pev(iEnt, pev_impulse); if ( iImpulse & (1<<(id-1)) ) return HAM_SUPERCEDE;
set_pev(iEnt, pev_impulse, iImpulse | (1<<(id-1))); } } else { set_pev(iEnt, pev_impulse, (1<<(id-1))); }
static Float:flDmg, Float:flCheckTime; pev(iEnt, pev_dmg, flDmg); flCheckTime = get_pcvar_float(g_pCvarCheckTime);
if(get_pcvar_num(g_pCvarGasFade)) screen_fade(id);
if( iPod == GASNADE_HURT ) { TakeDamage(id, iEnt, iOwner, flDmg, DMG_SLOWFREEZE); g_fDmgToRestore[id] += flDmg; g_fLastHurt[id] = flTime; } else { if( flTime - g_fLastHurt[id] > flCheckTime && g_fDmgToRestore[id]) { if( g_fDmgToRestore[id] < flDmg ) { flDmg = g_fDmgToRestore[id]; } g_fDmgToRestore[id] -= flDmg; TakeHealth(id, flDmg); } }
set_pev(iEnt, pev_pain_finished, flTime); set_pev(iEnt, pev_dmgtime, flTime + flCheckTime);
return HAM_SUPERCEDE; }
Healer(iStatus) { if( iStatus ) { if( !pev_valid(g_iHealer) ) { g_iHealer = engfunc( EngFunc_CreateNamedEntity , engfunc( EngFunc_Al locString, "trigger_hurt") ); dllfunc(DLLFunc_Spawn, g_iHealer); engfunc(EngFunc_SetSize , g_iHealer , Float:{-4096.0, -4096.0, -4096.0} , Float:{4096.0, 4096.0, 4096.0} ); set_pev(g_iHealer, pev_iuser1, GASNADE_HEAL); } set_pev(g_iHealer, pev_dmg, get_pcvar_float(g_pCvarDmg)); } else { if( pev_valid(g_iHealer) ) { engfunc(EngFunc_RemoveEntity, g_iHealer); g_iHealer = FM_NULLENT; } } }
TakeHealth(id, Float:flDmg) { new Float:flHealth, Float:flMaxHealth;
pev(id, pev_health, flHealth); pev(id, pev_max_health, flMaxHealth);
if( flMaxHealth <= flHealth ) return;
flHealth += flDmg;
if( flHealth > flMaxHealth ) flHealth = flMaxHealth;
set_pev(id, pev_health, flHealth); }
TakeDamage(id, iEnt, iAttacker, Float:flDmg, iDmgBit) { new Float:flHealth; pev(id, pev_health, flHealth);
flHealth -= flDmg;
if( flHealth < 1 ) { ExecuteHamB( Ham_Killed, id, iAttacker, 0 ); return; }
set_pev(id, pev_health, flHealth);
set_pev(id, pev_dmg_take, flDmg); set_pdata_int(id, m_bitsDamageType, iDmgBit); set_pev(id, pev_dmg_inflictor, iEnt); }

• МультиМод CS •
|