←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Errory w semiclip

Locked

  • +
  • -
góruś's Photo góruś 29.03.2011

Witam, wyskakuję mi error w semiclipie (dołączam również sma w załączniku)

L 03/29/2011 - 20:03:25: [ENGINE] Invalid player 5 (not in-game)
L 03/29/2011 - 20:03:25: [AMXX] Displaying debug trace (plugin "sm.amxx")
L 03/29/2011 - 20:03:25: [AMXX] Run time error 10: native error (native "entity_range")
L 03/29/2011 - 20:03:25: [AMXX] [0] sm.sma::client_PreThink (line 61)


sma

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "semiclip"
#define VERSION "1.0"
#define AUTHOR "diablix"

const Float:DYSTANS = 100.0

new Przenikaj;
new Druzyna[ 33 ];
new Gracze;

new bool:Solidny[33];
new bool:Duch[33];

public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR );
register_forward( FM_AddToFullPack, "fwdFullPack", 1 );
Gracze = get_maxplayers();

Przenikaj = register_cvar( "new_semiclip", "1" );
}

public client_disconnect(id) Druzyna[id] = 0;


public client_PreThink(id)
{
if(!get_pcvar_num(Przenikaj))
return FMRES_IGNORED;

static Think, i;

if(Think > id)
{
for( i = 1; i <= Gracze; i++ )
{
if( !is_user_alive(i) )
{
Solidny[ i ] = false;

continue;
}

Druzyna[i] = _:get_user_team( i );
Solidny[i] = entity_get_int( i, EV_INT_solid ) == SOLID_SLIDEBOX ? true : false;
}
}

Think = id;

if(!Solidny[ id ])
return FMRES_IGNORED;

for(i = 1; i <= Gracze; i++ )
{
if( !Solidny[i] || Duch[i] || id == i || Float:entity_range(id, i) > DYSTANS)
{
continue;
}

if( Druzyna[i] == Druzyna[id] )
{
Duch[i] = true;

entity_set_int(i, EV_INT_solid, SOLID_NOT);
}
}

return FMRES_IGNORED;
}

public client_PostThink(id)
{
if(get_pcvar_num(Przenikaj))
{
static i;

for(i = 1; i <= Gracze; i++)
{
if( is_user_alive(i) && Duch[i])
{
Duch[i] = false;

entity_set_int(i, EV_INT_solid, SOLID_SLIDEBOX );
}
}
}
}

public fwdFullPack(iHandle, e, iEntity, id, iFlags, iPlayer, pSet)
{
if(!get_pcvar_num(Przenikaj) || !iPlayer || id == iEntity || !is_user_alive(id) || !is_user_alive(iEntity))
return FMRES_IGNORED;

if( Solidny[id] && Solidny[iEntity] && Druzyna[id] == Druzyna[iEntity])
{
static Float:fDystans;
fDystans = entity_range(id, iEntity);

if( fDystans < DYSTANS)
{
set_es(iHandle, ES_Solid, SOLID_NOT );
set_es(iHandle, ES_RenderMode, kRenderTransAlpha );
set_es(iHandle, ES_RenderAmt, floatround( fDystans * 3));
}
}

return FMRES_IGNORED;
}

czyli błąd jest w

if( !Solidny[i] || Duch[i] || id == i || Float:entity_range(id, i) > DYSTANS)

Czy coś trzeba dodać? Sprawdzenie czy is_user_alive rozwiążę problem?

Attached Files

  • Attached File  sm.sma   2.16KB   36 downloads

Edited by gorusio, 29.03.2011 19:17.
Quote

  • +
  • -
DarkGL's Photo DarkGL 29.03.2011

Attached File  sm.amxx   4.68KB   8 downloads
Attached File  sm.sma   2.15KB   71 downloads
Quote

  • +
  • -
góruś's Photo góruś 29.03.2011

działa dobrze, thanks // do zamknięcia
Quote
Locked