Leonid228
В случае с
L 01/14/2025 - 18:44:56: [FAKEMETA] Invalid entity
L 01/14/2025 - 18:44:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/14/2025 - 18:44:56: [AMXX] Run time error 10: native error (native "pev")
L 01/14/2025 - 18:44:56: [AMXX] [0] zombie_plague402.sma::ShowHUD (line 10255)
у вас проскакивает сценарий, когда передаётся
id
игрока, большее за максимальное количество игроков (
MAX_PLAYERS
оно же
MaxClients
оно же
get_maxplayers()
), либо
id
равняется нулю, что не есть индексом игрока, из-за чего fakemeta ругается на невалидность энтити (в этом случае, игрока).
В случае с
L 01/14/2025 - 18:46:03: Info (map "zm_biohazard_base_mx") (file "addons/amxmodx/logs/error_20250114.log")
L 01/14/2025 - 18:46:03: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/14/2025 - 18:46:03: [AMXX] Run time error 4: index out of bounds
L 01/14/2025 - 18:46:03: [AMXX] [0] zombie_plague402.sma::refill_bpammo (line 9108)
ошибка "index out of bounds" говорит о том, что в код было передано такое значение
id
, что вышло за рамки размера массива
g_isalive
ЛИБО
g_zombie
(это у вас в обоих 33, что в квадратных скобках указано при создании массива).
Давайте так. В функцию
ShowHUD перед строчкой
10250 // Player died?
добавьте вот такую строчку:
server_print("[DEBUG ShowHUD] taskid: %d | id: %d", taskid, id);
.
В функцию
refill_bpammo перед строчкой
9107 // Player died or turned into a zombie
добавьте такую строчку:
server_print("[DEBUG refill_bpammo] id: %d", id);
.
Таким образом мы выводим(принтим) все переменные, которые передаются в проблемные функции, в консоль всякий раз, когда они вызываются. Вследствии этого, когда что-то вновь пойдёт не так, мы уже возможно увидим, что именно пошло не так.
Пост-скриптум: Когда в следующий раз опять появятся эти ошибки, показывайте сразу вывод в консоль этих ошибок вместе с этими добавленными строчками, т.е. часть лога с этой ошибкой, в который выписывается всё, что выписывается в консоль как есть, если такой лог вообще есть, а я не уверен, что такой есть. Просто если когда после этого принта сразу будет выводить ошибку, будет сразу видно, какая переменная и когда фальшивит.