Ошибка ZM

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
87
Реакции
20
[DEBUG ShowHUD] taskid: 0 | id: -2900
Возможно пролаг проскакивает (в таких случаях ещё обычно все подвисают на секунду, после чего смотришь в ТАБе а там якобы у всех игроков из плоти и крови (не ботов) резко высокий пинг), из-за чего в taskid попадает пустое число, которое автоматом превращается в ноль. Код я ещё раз пересмотрел, не вижу такого сценария, в котором бы кодом намерено передавался 0 в функцию ShowHUD, поэтому это, должно быть, конкретно случай когда сервер не вывозит и даёт нулину.
Конкретно в этом случае, временно поставьте проверку вначале функции ShowHUD , после server_print("[DEBUG ShowHUD] taskid: %d | id: %d", taskid, id); перед // Player died? , вот такую проверку:
Код:
if (id < 1 || id > g_maxplayers)
{
   server_print("[DEBUG ShowHUD] player id %d is out of bounds, issuing return...", id);
   return;
}
Таким образом мы проверяем, если айди меньше 1 (первый игрок) или больше максимального количества игроков, мы не работаем с этим айди. Перед этим мы также заново принтим(server_print) этот айди с сообщением о том, что айди вне рамок(мы понимаем, что это от 1 до макс. игроков), для наглядности.

Ну и проследите, что после этого нововведения измениться, и если заработает, подобным образом залатаете и refill_bpammo. Ну а коли нет, отправите вновь вывод идентичным образом.
DEBUG ShowHUD] taskid: 2902 | id: 2
[DEBUG ShowHUD] taskid: 2913 | id: 13
[DEBUG ShowHUD] taskid: 0 | id: -2900
L 01/21/2025 - 21:14:55: [FAKEMETA] Invalid entity
L 01/21/2025 - 21:14:55: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/21/2025 - 21:14:55: Ошибка плагина 10: native error (native "pev")
L 01/21/2025 - 21:14:55: [AMXX] [0] zombie_plague402.sma::ShowHUD (line 10257)
[DEBUG ShowHUD] taskid: 2919 | id: 19
[DEBUG ShowHUD] taskid: 2911 | id: 11
[DEBUG ShowHUD] taskid: 2912 | id: 12
[DEBUG ShowHUD] taskid: 2902 | id: 2
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
[DEBUG ShowHUD] taskid: 0 | id: -2900 ну тут очевидно, что индекс выходит за рамки массива, вот и ошибка.
После строки // Player died?
Код:
if(!is_user_valid(id))
    return;
Levka4, а с чего ты взял что это 'пролаг', а не например id servera(0)??
 
Последнее редактирование:
Сообщения
91
Реакции
87
Помог
7 раз(а)
Дурная затея кэшировать статус игрока в переменные если для проверки есть нативы
 

Вложения

Сообщения
34
Реакции
-1
Спасибо помогло кажется))

Как здесь Реакции Ставить?

Но появились еще может кто-то подскажет))Хочу уже доделать))
Вот Логи
L 01/23/2025 - 18:45:51: [AMXX] [0] zombie_plague402.sma::task_hide_money (line 9525)
L 01/23/2025 - 18:45:51: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/23/2025 - 18:45:51: [AMXX] Run time error 4: index out of bounds

Кусок кода !

// Hide Player's Money Task
public task_hide_money(taskid)
{
// Not alive
if (!g_isalive[ID_SPAWN])
return;

// Hide money
message_begin(MSG_ONE, g_msgHideWeapon, _, ID_SPAWN)
write_byte(HIDE_MONEY) // what to hide bitsum
message_end()

// Hide the HL crosshair that's drawn
message_begin(MSG_ONE, g_msgCrosshair, _, ID_SPAWN)
write_byte(0) // toggle
message_end()
}

Лог
L 01/23/2025 - 18:45:50: [AMXX] [0] zombie_plague402.sma::show_menu_buy1 (line 4199)
L 01/23/2025 - 18:45:50: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/23/2025 - 18:45:50: [AMXX] Run time error 4: index out of bounds
L 01/23/2025 - 18:45:50: [AMXX] [0] zombie_plague402.sma::show_menu_buy1 (line 4199)

Код 4199

// Buy Menu 1
public show_menu_buy1(taskid)
{
// Get player's id
static id
(taskid > g_maxplayers) ? (id = ID_SPAWN) : (id = taskid);

// Player dead?
if (!g_isalive[id])
return;

// Zombies or survivors get no guns
if (g_zombie[id] || g_survivor[id])
return;

// Bots pick their weapons randomly / Random weapons setting enabled
if (get_pcvar_num(cvar_randweapons) || g_isbot[id])
 
Сообщения
87
Реакции
20
Leonid228, Вначале функции перед
// Not alive
if (!g_isalive[ID_SPAWN])
return;
так же добавьте
Код:
if (ID_SPAWN < 1 || ID_SPAWN > g_maxplayers)
   return;
Ну или по тому же пути, что Code_0xABC:
Код:
if (!is_user_valid(ID_SPAWN))
   return;
Реакцию поставить не сможете, вам нужна роль "Участник" на данном форуме :smile3:. Рад помочь.


Code_0xABC, Я несколько раз бегло пересмотрел код мода, что прикреплён здесь, в этом всём нагромождении таск с исполнением ShowHUD посылается игроку только при client_putinserver с нескончаемым циклом, а убирается цикличный таск уже при выходе игрока с сервера, то есть работа идёт исключительно с id игроков. Может и посылается айди сервера, но тогда почему в taskid не передаётся TASK_SHOWHUD из enum , а тупо 0? Выстраивая логическую цепочку исходя из этого вопроса, я пришёл к заключению, что на момент "пролага" в коде происходит утечка переменных или типа того от того, что там творится с сервером от кучи ошибок или ещё от чего, а искажённые на момент "пролага" переменные создают непонятные проблемы.

Ещё что заметил тут
Код:
// Client leaving
public fw_ClientDisconnect(id)
{
    // Check that we still have both humans and zombies to keep the round going
    if (g_isalive[id]) check_round(id)
 
    // Temporarily save player stats?
    if (get_pcvar_num(cvar_statssave)) save_stats(id)
 
    // Remove previous tasks
    remove_task(id+TASK_TEAM)
    remove_task(id+TASK_MODEL)
    remove_task(id+TASK_FLASH)
    remove_task(id+TASK_CHARGE)
    remove_task(id+TASK_SPAWN)
    remove_task(id+TASK_BLOOD)
    remove_task(id+TASK_AURA)
    remove_task(id+TASK_BURN)
    remove_task(id+TASK_NVISION)
    remove_task(id+TASK_SHOWHUD)
Логичнее было бы на первое место поставить таски, а потом уже проверку на последнего зомби/человека и сохранение параметров игрока в БД. Тем более, что обе функции не взаимодействуют с этими тасками, подвязанными к игроку, но MeRcyLeZZ'у, наверняка, лучше было знать, раз всё на соплях держится, но работает. (MeRcyLeZZ ‒ создатель Zombie Plague , если кто не знает.)

Flymic24, ZP 4.3 пестрит подобными чудесами технологии. Должно быть, мод предстаёт таким в силу своего возраста, а может это шедевро-оптимизация, кто знает наверняка :pardon:.
 
Сообщения
34
Реакции
-1
Leonid228
В случае с у вас проскакивает сценарий, когда передаётся id игрока, большее за максимальное количество игроков (MAX_PLAYERS оно же MaxClients оно же get_maxplayers()), либо id равняется нулю, что не есть индексом игрока, из-за чего fakemeta ругается на невалидность энтити (в этом случае, игрока).
В случае с

ошибка "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); .
Таким образом мы выводим(принтим) все переменные, которые передаются в проблемные функции, в консоль всякий раз, когда они вызываются. Вследствии этого, когда что-то вновь пойдёт не так, мы уже возможно увидим, что именно пошло не так.
Я так понял ети функции можна убрать уже?))
 
Сообщения
34
Реакции
-1
Levka4,
Спасибо помогло))

Снова проблемка нарисовалась(( делаеш одно выскакивает другое((

Вот лог
L 01/26/2025 - 06:12:07: [AMXX] Run time error 4: index out of bounds
L 01/26/2025 - 06:12:07: [AMXX] [0] zombie_plague402.sma::fm_cs_set_user_model (line 13160)
L 01/26/2025 - 06:12:07: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 06:12:07: [AMXX] Run time error 4: index out of bounds
L 01/26/2025 - 06:12:07: [AMXX] [0] zombie_plague402.sma::fm_cs_set_user_model (line 13160)
L 01/26/2025 - 06:12:07: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 06:12:07: [AMXX] Run time error 4: index out of bounds
L 01/26/2025 - 06:12:07: [AMXX] [0] zombie_plague402.sma::fm_cs_set_user_model (line 13160)
L 01/26/2025 - 06:12:07: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")


Вот часть кода

Код:
// Set User Model
public fm_cs_set_user_model(taskid)
{
    set_user_info(ID_MODEL, "model", g_playermodel[ID_MODEL])
}

// Get User Model -model passed byref-
stock fm_cs_get_user_model(player, model[], len)
{
    get_user_info(player, "model", model, len)
}

// Update Player's Model on all clients (adding needed delays)
public fm_user_model_update(taskid)
{
    static Float:current_time
    current_time = get_gametime()
 
Сообщения
34
Реакции
-1
Вот еще ((

Лог

L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)
L 01/26/2025 - 12:02:56: Invalid menu id -8176204(4)
L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)
L 01/26/2025 - 12:02:56: Invalid menu id -8176256(4)
L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)


Код:
    // Retrieve extra item id
    static buffer[2], dummy, itemid
    menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
    itemid = buffer[0]
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
Вот еще ((

Лог

L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)
L 01/26/2025 - 12:02:56: Invalid menu id -8176204(4)
L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)
L 01/26/2025 - 12:02:56: Invalid menu id -8176256(4)
L 01/26/2025 - 12:02:56: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 01/26/2025 - 12:02:56: [AMXX] Run time error 10: native error (native "menu_item_getinfo")
L 01/26/2025 - 12:02:56: [AMXX] [0] zombie_plague402.sma::menu_extras3 (line 13444)


Код:
    // Retrieve extra item id
    static buffer[2], dummy, itemid
    menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
    itemid = buffer[0]
Проверь количество параметров в menu_item_getinfo
 
Сообщения
34
Реакции
-1
И снова ошибка( как исправить её?
L 02/01/2025 - 18:55:46: [AMXX] Displaying debug trace (plugin "zombie_plague402.amxx", version "4.3 Fix5a")
L 02/01/2025 - 18:55:46: [AMXX] Run time error 10: native error (native "ArrayGetString")
L 02/01/2025 - 18:55:46: [AMXX] [0] zombie_plague402.sma::ambience_sound_effects (line 9437)

Код:
    else // Infection Mode
    {
        iRand = random_num(0, ArraySize(sound_ambience1) - 1)
        ArrayGetString(sound_ambience1, iRand, sound, charsmax(sound))
        duration = ArrayGetCell(sound_ambience1_duration, iRand)
    }
 
Сообщения
67
Реакции
9
Помог
2 раз(а)
Leonid228, возможно звуки в настройках неправильно прописаны. Если несколько звуков, то и длина к каждому звуку должна быть указана
 
Сообщения
34
Реакции
-1
Leonid228, может ты сносишь уже этот плагин? попробуй это
Поверь яб уже удалил-бы это но там система уровней и все такое и все вшито в гланий мод((( я готовый деньги заплатить чтоб его переписали или с нуля сделали такой сервер!!
 
Сообщения
67
Реакции
9
Помог
2 раз(а)
Leonid228, я же ответил тебе, тут zombieplague.ini нужно смотреть
У тебя либо звук не указан там, либо их несколько, но не выставлено время
Похожая тема - https://dev-cs.ru/threads/41783/
 
Сообщения
34
Реакции
-1
Leonid228, я же ответил тебе, тут zombieplague.ini нужно смотреть
У тебя либо звук не указан там, либо их несколько, но не выставлено время
Похожая тема - https://dev-cs.ru/threads/41783/
Я понял))) спасибо я уже решил это))) просто может здесь есть люди которые могут
этот мод весь исправить за не бесплатно чтоб ошибок не било((
 
Статус
В этой теме нельзя размещать новые ответы.

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

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