DONT_IGNORE_MONSTERS не работает для игроков

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
40
Реакции
12
Помог
1 раз(а)
Ошибка
Ошибки выполнения/компиляции нет
ОС
Windows
Amx Mod X
AMX Mod X 1.9.0.5294 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Dec 3 2021 22:52:28
Built from: https://github.com/alliedmodders/amxmodx/commit/363871a8
Build ID: 5294:363871a8
Core mode: JIT+ASM32
Билд
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.13.0.788-dev
Build date: 07:37:36 Jul 12 2023 (3378)
Build from: https://github.com/dreamstalker/rehlds/commit/f955b07
ReGamedll
ReGameDLL version: 5.22.0.593-dev
Build date: 03:10:24 Jul 11 2023
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/e1d1c11
Версия Metamod
Metamod-r v1.3.0.131, API (5:13)
Metamod-r build: 18:51:28 Jul 11 2022
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/adc9414
Список метамодулей
[ 1] Reunion        RUN   -    reunion_mm.dll          v0.1.92d     ini  Start Never
[ 2] AMX Mod X RUN - amxmodx_mm.dll v1.9.0.5294 ini Start ANY
[ 3] ReAimDetector RUN - reaimdetector_amxx.dll v0.2.2 pl2 ANY Never
[ 4] FakeMeta RUN - fakemeta_amxx.dll v1.9.0.5294 pl2 ANY ANY
[ 5] Ham Sandwich RUN - hamsandwich_amxx.dll v1.9.0.5294 pl2 ANY ANY
[ 6] CStrike RUN - cstrike_amxx.dll v1.9.0.5294 pl2 ANY ANY
[ 7] Engine RUN - engine_amxx.dll v1.9.0.5294 pl2 ANY ANY
[ 8] Fun RUN - fun_amxx.dll v1.9.0.5294 pl2 ANY ANY
Список плагинов
[  1] Admin Base              1.9.0.5294  AMXX Dev Team     admin.amxx       running
[ 2] Admin Commands 1.9.0.5294 AMXX Dev Team admincmd.amxx running
[ 3] Admin Help 1.9.0.5294 AMXX Dev Team adminhelp.amxx running
[ 4] Multi-Lingual System 1.9.0.5294 AMXX Dev Team multilingual.am running
[ 5] Menus Front-End 1.9.0.5294 AMXX Dev Team menufront.amxx running
[ 6] Players Menu 1.9.0.5294 AMXX Dev Team plmenu.amxx running
[ 7] Maps Menu 1.9.0.5294 AMXX Dev Team mapsmenu.amxx running
[ 8] Admin Votes 1.9.0.5294 AMXX Dev Team adminvote.amxx running
[ 9] SentryGun AI 1.5a Lain SentryGun_AI.am running
[ 10] SentryGun cstrike 1.5a Lain SentryGun_cstri running
Автор плагина
Lain, Smiley и другие, где есть engfunc(..., DONT_IGNORE_MONSTERS, ...)
Версия плагина
1.0
Исходный код
public bool:is_hull_vacant(Float:vecOrigin[3], HullNumber, pSkipEnt = 0) {

new ptr

engfunc(EngFunc_TraceHull, vecOrigin, vecOrigin, DONT_IGNORE_MONSTERS, iHullNumber, pSkipEnt, ptr)

if (get_tr2(ptr, TR_StartSolid) || get_tr2(ptr, TR_AllSolid) || !get_tr2(ptr, TR_InOpen))

return false

return true
}
Приветствую всех тех, кто не испугался заголовка темы и зашел сюда, чтобы помочь. Проблема заключается в том, что функция engfunc(EngFunc_TraceHull, vecOrigin, vecOrigin, DONT_IGNORE_MONSTERS, iHullNumber, pSkipEnt, ptr) не реагирует на игроков, то есть не имеет значения, аргумент DONT_IGNORE_MONSTERS или IGNORE_MONSTERS, результат один и тот же. И эта проблема касается всех плагинов, где есть подобная проверка на свободное место. Выключал все модули и плагины, кроме Reunion и Amx Mod X. Предполагаю, что проблема в rehlds или regamedll. Вопрос такой: в каком модуле, на ваш взгляд, вероятнее всего ошибка и куда лучше всего сообщить об обнаруженной ошибке?
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
"Ошибка" в движке, то есть hlds, куда вызывается TraceHull.
Можно сделать функцию с проверкой коробок игроков по координатам.

Ещё из догадок, что игрока на месте проверки нет, поэтому и место куда хотят переместить игрока свободно.
 
Сообщения
40
Реакции
12
Помог
1 раз(а)
fl0wer, ранее написал функцию такого вида
C++:
static bool:IsHullVacant(Float:vecOrigin[3], iHullNumber, pSkipEnt = 0) {
    new ptr
    engfunc(EngFunc_TraceHull, vecOrigin, vecOrigin, DONT_IGNORE_MONSTERS, iHullNumber, pSkipEnt, ptr)
    
    if (get_tr2(ptr, TR_StartSolid) || get_tr2(ptr, TR_AllSolid) || !get_tr2(ptr, TR_InOpen))
        return false
    
    new ent = engfunc(EngFunc_FindEntityInSphere, -1, vecOrigin, distance)

    if (ent <= get_maxplayers() && ent > 0)
        return false
    
    return true
}
Однако, высматривать в плагинах TraceHull и заменять функцию, где это нужно, мне кажется дурным тоном. Насчет наличия игрока: он в точке точно есть, потому что если даже проверка одного каким-то невероятным образом проскочила, то из остальных 19, хотя бы на ком-то, должна же была сработать? Спасибо за ответ, иду изучать код rehlds
 
Сообщения
40
Реакции
12
Помог
1 раз(а)
Решил проблему изменением значения квара
Diff:
-sv_force_ent_intersection "1"
+sv_force_ent_intersection "0"
Ошибка в rehlds, думаю, либо в функции SV_CheckSphereIntersection в r_studio.cpp, либо в условии на 1225 строке в world.cpp
 
Статус
В этой теме нельзя размещать новые ответы.

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

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