А вообще, по простому, -
Ошибка -
Undefined variable
Говорит, о том, что использована, неопределенная переменная.
На примере простого скрипта
Private["_A", "_SUMMA"]
_SUMMA = _A + 1;
Данный скрипт выдаст ошибку -
Undefined variable _A
Не определена переменная _A
Ибо, к несуществующему пытались прибавить - 1.
Правильный скрипт:
Private["_A", "_SUMMA"]
_A = 1; //Вместо 1 - любое число. - Важно то, что переменная станет определенной, и инициализированной.
_SUMMA = _A + 1;
В твоем случае - для начала, правильно отформатируй код, чтобы видеть, где есть условия, и что в них приходит.
По этому куску хер поймешь без форматирования, где там заканчиваются(закрываются) скобки.
И пользуйтесь уже diag_log функцией.
Сложно чтоль прочитать как она работает?
Если переменной _loot нету, в 146 строке - смотри ВЫШЕ, где она получает значение.
А значение судя по коду, она получает только тут:
_loot = (((lootworldObject_list select _lootClass) select 1) select _selecteditem);
Вот после данной строки и добавь -
diag_log(format["Переменная _loot содержит: %1", _loot]);
Далее смотри РПТ, и -
1. Если данной строки нет, => в данный участок скрипт не попадает. - Смотри почему.
2. Если данный участок есть, но в РПТ строка -
Переменная _loot содержит: any
=> (((lootworldObject_list select _lootClass) select 1) select _selecteditem); вот эта строка, нихера не выбрала. И разбирайся уже с переменными которые внутри нее - lootworldObject_list select _lootClass и _selecteditem - что там, и откуда они идут.