Возник вопрос: существует созданный моб, со своими характеристиками и абилками. Возможно ли как-то редактировать его учитывая уровень выбранной сложности? При загрузке карты
Или только созданием 4х одинаковых мобов с разными настройками под 4е сложности?
function HEAL.UseHeal(pl, ans) if not ans then HEAL.heal_arts_on = {} for key, art in Healing_arts do if HasArtefact(MAIN_HERO, art.id) then table.insert(HEAL.heal_arts_on, art.id) end end HEAL.len = length(HEAL.heal_arts_on)-1 print(HEAL.len, ' - длина 'массива) --Выводит минус единицу - длина массива sleep() if 0 < HEAL.len <= 4 then ---ВОТ ЗДЕСЬ ПАДАЕТ СКРИПТ. print('Проверка') --НЕ ВЫВОДИТСЯ В КОНСОЛЬ HEAL.variant = 1 local pthheal = "Interface/CustomAbilities/UseFirstAidKit/" local options = {} local values = {} while not values and not options do sleep() end for i=1, HEAL.len do print (HEAL.len) print('Проверка 2 ', HEAL.heal_arts_on) options=pthheal..'Use_'..i..'...' values= artifacts[HEAL.heal_arts_on].name -- end while not options[HEAL.len] do sleep() end options[HEAL.len+1]=Talk.BACK Talk.mode = 1
elseif HEAL.len <= 0 then print('Ai?oe') ---ТОЖЕ НЕ ВЫВОДИТСЯ В КОНСОЛЬ Talk.mode = 1 Talk.NewDialog("/UI/MessageBox/Warning.xdb#xpointer(/Texture)", pthheal.."WarningNoKit", pthheal.."NoKit", nil) end elseif ans then if HEAL.variant == 1 then if 0 STALKER.ChangeHealth(artifacts[HEAL.heal_arts_on[ans]].heal) RemoveArtefact(MAIN_HERO, HEAL.heal_arts_on[ans]) end end end end
Эта функция вызывается из книги заклинаний, первый вызов проходит нормально, второй с ошибкой в указанном месте. Даже не знаю, в чём проблема, хотя наверняка с областью видимости. Но как исправить (а главное, что?) не знаю...
если HEAL.len = -1, то проверка 0<heal.len выдаст nil, которое уже будет сравниваться с 4, что и провоцирует ошибку. проще написать условие if heal.len> 0 and HEAL.len <=4
Крестьяне должны постоянно атаковать, но не атакуют. Не подскажете что не так?
}{0TT@6bI4Статистика
Зарегистрирован:
Сообщения:2 070
Ну и имечко у вашей функции. Лучше назовите "Peas_working". По поводу неработы: вы ход передавали? Функция "нового дня" начинает работать со второго дня. Также, в консоли ошибки есть?
function Win() while 1 do sleep(10) if IsHeroAlive("Quroq") == nil then StartDialogScene("/Maps/SingleMissions/ne5/St3/DialogScene.xdb#xpointer(/DialogScene)"); sleep(10) StartDialogScene("/Maps/SingleMissions/ne5/St4/DialogScene.xdb#xpointer(/DialogScene)"); sleep(10) Win(); break; end; sleep(3) end; end;
startThread(Win);
Проигрыш диалогов (по непонятной для меня причине) зациклен. Команда Win не срабатывает. Подскажите, где я допустил ошибку..
}{0TT@6bI4Статистика
Зарегистрирован:
Сообщения:2 070
Вот этот кусок sleep(10) Win();
Запускает функцию заново, а все потому, что вы неправильно выбрали название. Назовите функцию WinCheckLoop и соответственно, startThread(WinCheckLoop)
Не подскажете есть ли команды которая проверяет наличие определённого количества денег, отнемает определённое количество денег?
}{0TT@6bI4Статистика
Зарегистрирован:
Сообщения:2 070
pl1gold = GetPlayerResource(PLAYER_номер, GOLD) SetPlayerResource(PLAYER_номер, GOLD, pl1gold - d), Где d — дельта. Если у игрока нет столько денен, то выдаст ошибку.