Оправяне на грешка "[FUN] Invalid player 15"

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от EMOTO2.COM » 06 Авг 2020, 15:32

Много рядко се случва да показва грешката в лога но искам да я изчистя и нея :D Защо ли си мисля , че ще трябва проста проверка за играча дали е кънектнат?

Код за потвърждение: Избери целия код

[FUN] Invalid player 15
[AMXX] Run time error 10: native error (native "set_user_gravity")
[AMXX]    [0] slow_motion.sma::damage_event (line 120)

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>

#define SLOWMO_C4EXPLOSION 1
#define SLOWMO_LASTKILL 2
#define SLOWMO_NADEKILL 4
#define SLOWMO_KNIFEKILL 8
#define SLOWMO_HSKILL 16
#define SLOWMO_SPECIALEFFECT 32

#define SLOWMO_RATE 0.2


new g_slowmo[33]
new g_maxplayers
new g_bombPlanted
new Float:g_bombOri[3]
new bool:g_isDead[33]
new g_exploSpr

getSlowMoFlags()
{
  new flags[32]
  get_cvar_string("adv_slowmo", flags, 31)
  return read_flags(flags)
}

public plugin_init()
{
  register_plugin("Slow motion", "1.2", "KroT@L")
  register_cvar("adv_slowmo", "acde")
  register_event("ResetHUD", "resethud_event", "b")
  register_event("DeathMsg", "death_event", "a")
  register_event("Damage", "damage_event", "b")
  register_event("SendAudio","bombplanted_event","a","2&%!MRAD_BOMBPL")
  register_event("SendAudio", "end_round", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  register_event("TextMsg", "end_round", "a", "2&#Game_C", "2&#Game_w")
  g_maxplayers = get_maxplayers() + 1
}

public plugin_precache()
{
  g_exploSpr = precache_model("sprites/fexplo.spr")
}

public client_connect(id)
{
  g_slowmo[id] = 0
  g_isDead[id] = false
}

public resethud_event(id)
{
  g_slowmo[id] = 0
  g_isDead[id] = false
}

public death_event()
{
  new id = read_data(2)
  new wname[32]
  read_data(4, wname, 31)
  if(equal(wname, "grenade"))
  {
    if(getSlowMoFlags() & SLOWMO_NADEKILL)
    {
      set_task(0.1, "slowDown", id)
      set_user_gravity(id, 0.3)
      g_slowmo[id] = 1
    }
  }
  if(equal(wname, "knife"))
  {
    if(getSlowMoFlags() & SLOWMO_KNIFEKILL)
    {
      g_slowmo[id] = 1
    }
  }
  if(read_data(3) == 1)
  {
    if(getSlowMoFlags() & SLOWMO_HSKILL)
    {
      g_slowmo[id] = 1
    }
  }
  new players[32], inum
  get_players(players, inum, "ae", (get_user_team(id) == 1) ? "TERRORIST" : "CT")
  if(!inum)
  {
    if(getSlowMoFlags() & SLOWMO_LASTKILL)
    {
      g_slowmo[id] = 1
    }
  }
}

public damage_event(id)
{
  if(!is_user_alive(id))
  {
    if(g_bombPlanted && !g_isDead[id])
    {
      new ent = entity_get_edict(id, EV_ENT_dmg_inflictor)
      if(is_valid_ent(ent))
      {
        new classname[32]
        entity_get_string(ent, EV_SZ_classname, classname, 31)
        new model[32]
        entity_get_string(ent, EV_SZ_model, model, 31)
        if(equal(classname, "grenade") && equal(model, "")
        && entity_get_int(ent, EV_INT_spawnflags) == 1 && entity_get_int(ent, EV_INT_effects) == 128)
        {
          if(getSlowMoFlags() & SLOWMO_C4EXPLOSION)
          {
            new Float:vel[3]
            entity_get_vector(id, EV_VEC_velocity, vel)
            set_task(0.1, "slowDown", id)
            set_user_gravity(id, 0.3)
            g_slowmo[id] = 1
          }
          g_isDead[id] = true
        }
      }
    }
  }
}

public slowDown(id)
{
  new Float:vel[3]
  entity_get_vector(id, EV_VEC_velocity, vel)
  vel[0] /= 3.0
  vel[1] /= 3.0
  vel[2] /= 2.0
  entity_set_vector(id, EV_VEC_velocity, vel)
}

public bombplanted_event()
{
  g_bombPlanted = 1
  new c4 = find_ent_by_class(-1, "grenade")
  while(c4 > 0)
  {
    new model[32]
    entity_get_string(c4, EV_SZ_model, model, 31)
    if(equal(model, "models/w_c4.mdl"))
    {
      entity_get_vector(c4, EV_VEC_origin, g_bombOri)
      return
    }
    c4 = find_ent_by_class(c4, "grenade")
  }
}

public bombexploded_event()
{
  if(getSlowMoFlags() & SLOWMO_C4EXPLOSION)
  {
    new ori[3]
    FVecIVec(g_bombOri, ori)
    message_begin(MSG_PVS, SVC_TEMPENTITY, ori)
    write_byte(3)
    write_coord(ori[0])
    write_coord(ori[1])
    write_coord(ori[2])
    write_short(g_exploSpr)
    write_byte(30)
    write_byte(1)
    write_byte(0)
    message_end()
  }
}

public end_round()
{
  set_task(2.0, "resetBombPlanted", 9798415)
}

public resetBombPlanted()
{
  g_bombPlanted = 0
}

public server_frame()
{
  for(new i = 1; i < g_maxplayers; i++)
  {
    if(g_slowmo[i] == 1)
    {
      if(getSlowMoFlags() & SLOWMO_SPECIALEFFECT)
      {
        new Float:fr = entity_get_float(i, EV_FL_framerate)
        fr = (fr > SLOWMO_RATE) ? (fr - 0.03) : SLOWMO_RATE
        entity_set_float(i, EV_FL_framerate, fr)
      }
      else
      {
        entity_set_float(i, EV_FL_framerate, SLOWMO_RATE)
      }
    }
  }
  return PLUGIN_CONTINUE
}
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от Orangegame14 » 06 Авг 2020, 16:03

Има ли някакво специфично събитие, при което се случва? Например случва ли се винаги, когато някой бъде взривен с граната или не?

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от EMOTO2.COM » 11 Авг 2020, 03:42

Ами както написъх много рядко излиза... виждам я в лога а не в момента при игра. Иначе ефекта го има при убиване на играч с граната, от бомбата, с нож и с каска.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от SmirnoffBG » 11 Авг 2020, 10:59

Да както ти каза: Трябва проверка дали е конектнат.
Или с др думи:
Ред 101:

Код за потвърждение: Избери целия код

if(!is_user_alive(id))
>>

Код за потвърждение: Избери целия код

if(!is_user_alive(id) && is_user_connected(id))
Последно промяна от SmirnoffBG на 13 Авг 2020, 00:44, променено общо 1 път.
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от OciXCrom » 11 Авг 2020, 12:53

SmirnoffBG написа: 11 Авг 2020, 10:59 Да както ти каза: Трябва проверка дали е конектнат.
Или с др думи:
Ред 101:
if(!is_user_alive(id))
>>
if(!is_user_alive(id) && is_user_connected(id))
Самата is_user_alive функция съдържа is_user_connected проверка...

Код за потвърждение: Избери целия код

static cell AMX_NATIVE_CALL is_user_alive(AMX *amx, cell *params) /* 1 param */
{
	int index = params[1];

	if (index < 1 || index > gpGlobals->maxClients)
	{
		return FALSE;
	}

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

	if (!pPlayer->ingame)
	{
		return FALSE;
	}

	if (g_bmod_tfc)
	{
		edict_t *e = pPlayer->pEdict;
		if (e->v.flags & FL_SPECTATOR ||
			(!e->v.team || !e->v.playerclass))
		{
			return FALSE;
		}
	}

	return pPlayer->IsAlive() ? TRUE : FALSE;
}
С тази промяна правиш все едно да е if(is_user_alive(id) && is_user_connected(id) && is_user_connected(id)).

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от EMOTO2.COM » 11 Авг 2020, 15:03

Грешката може би излиза при лагнал/забил играч и съответно всичко да се забавя. Ако го направя

Код за потвърждение: Избери целия код

if(!is_user_connected(id) && is_user_alive(id))
не е ли по-добре или изобщо проблема няма как да е от това?
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от JackEyedJones » 11 Авг 2020, 15:39

Самата is_user_alive функция съдържа is_user_connected проверка...

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от SmirnoffBG » 13 Авг 2020, 00:40

OciXCrom написа: 11 Авг 2020, 12:53 Самата is_user_alive функция съдържа is_user_connected проверка...
С тази промяна правиш все едно да е if(is_user_alive(id) && is_user_connected(id) && is_user_connected(id)).
Той проверява дали човека не е жив!
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Оправяне на грешка "[FUN] Invalid player 15"

Мнение от OciXCrom » 13 Авг 2020, 14:18

Всъщност прав си. В този случай, понеже проверката е !is_user_alive, ще върне false и ако не е connected.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Semrush [Bot] и 6 госта