Ну ок(Просто лень всё прописывать, у самого какая-то фигня со скриптом на карте)
2) Делаем регион, и меняем Приоритет на что-то нужное(Не проверял!), ну и можно поставить на другие объекты приоритет -1
итог примерно такой: -хм... что-то в регионе, эй вы шлемоголовые, к вам гости - ОК! Пофиг на всё есть враг!
Про этот приоритет - это скрипт или функция?
DarkLordax
7 лет назад
Вроде должна быть функция SetAIPlayerAttractor, но есть SetAIHeroAttractor(Ну скрипт,ну понятно!) Одна для определённого героя, другая чисто для игрока вот что-то ещё
DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes должно быть в файле о скриптах
function pobor1() if GetObjectiveState("SQ1", 1) ==OBJECTIVE_UNKNOWN then SetObjectiveState("SQ1", OBJECTIVE_ACTIVE, 1); MessageBox("Maps/SingleMissions/C1W1/poborQ1.txt", "nothing"); if IsObjectExists("pobornik1") ==false then if IsObjectExists("pobornik2") ==false then if IsObjectExists("pobornik3") ==false then SetObjectiveState("SQ1", OBJECTIVE_COMPLETED, 1); SetObjectEnabled("dwellquest1", true); SetObjectOwner("dwellquest1", 1); Trigger(OBJECT_TOUCH_TRIGGER, "dwellquest1", nil) end; end; end; elseif GetObjectiveState("SQ1", 1) ==OBJECTIVE_ACTIVE then if IsObjectExists("pobornik1") ==false then if IsObjectExists("pobornik2") ==false then if IsObjectExists("pobornik3") ==false then MesageBox("Maps/SingleMissions/C1W1/poborEND.txt", "nothing"); SetObjectEnabled("dwellquest1", true); SetObjectOwner("dwellquest", 1); SetObjectiveState("SQ1", OBJECTIVE_COMPLETED, 1); Trigger(OBJECT_TOUCH_TRIGGER, "dwellquest1", nil) end; end; end; end end Trigger(OBJECT_TOUCH_TRIGGER, "dwellquest1", "pobor1")
Всемогущая консоль пишет ERROR attempt to call a nil value Но где данный nil value!
Короче всё работает только если всех трёх врагов убить(pobornik) до того как взять задание, тогда оно выполниться! Если сначала взять задание то потом вылазит какой-то nil value!
не советую никогда использовать слово false! Дело вряд ли в нем, хотя кто знает, но кроме ошибок в консоль false и true у меня еще не вызывали ничего.
Добавлено через 1 минуту Использовать эти два слова в корне не верно. Есть nil, 0, 1 и т.д. Это уже от команды скриптовой зависит.
Добавлено через 52 минуты Как я могу выдать герою Совершенную некромантию?
1.Кулон мастерства 2.В редакторе у героя настроить в PrimarySkillMastery - MASTERY_EXTRA_EXPERT. Через GiveHeroSkill не получиться, к сожалению.(Лично у меня не получилось)
AstralLein
7 лет назад
Я имею ввиду выдать по выполнению квеста. Скриптом.
Добавлено через 33 секунды Была карта где такой фокус вроде как проворачивали...
Да. Но повысить расовое умение через него до совершенного нельзя
AstralLein
7 лет назад
Тьфу. Придется артефакт все-таки выдавать... вот блин... а вся суть то была: обучить 3 героев искусной некромантии и получить Совершенную некромантию для Арантира.
function portal(hero) if GetObjectOwner(hero) == 1 then if GetObjectiveState("tom") == OBJECTIVE_UNKNOWN then MessageBox(path.."tom1.txt") end if GetObjectiveState("tom") == OBJECTIVE_ACTIVE then QuestionBox(path.."tom2.txt",'Dragon("'..hero..'")') end end end
Trigger(OBJECT_TOUCH_TRIGGER, "portal","portal")
function Dragon(hero) local week = ceil(GetDate(DAY) / 7) sleep(3) -- StartCombat(hero,nil,3,84, diff * week, 84, diff * week, 84, diff * week,nil,'BattleResult',nil,nil) end
все хорошо работает, но...(см. скрин)
Что может это вызывать? Просто хочется, чтобы консоль была чиста, а не выдавала ошибку.
function portal(hero) if GetObjectOwner(hero) == 1 then if GetObjectiveState("tom") == OBJECTIVE_UNKNOWN then MessageBox(path.."tom1.txt") end if GetObjectiveState("tom") == OBJECTIVE_ACTIVE then QuestionBox(path.."tom2.txt",'Dragon("'..hero..'")') end end end
Trigger(OBJECT_TOUCH_TRIGGER, "portal","portal")
function Dragon(hero) local week = ceil(GetDate(DAY) / 7) sleep(3) -- StartCombat(hero,nil,3,84, diff * week, 84, diff * week, 84, diff * week,nil,'BattleResult',nil,nil) end
все хорошо работает, но...(см. скрин)
Что может это вызывать? Просто хочется, чтобы консоль была чиста, а не выдавала ошибку.
Это из-за вызова коллбека с параметром. По-умолчанию скриптовая машина просто добавляет две скобки (и параметры, в некоторых случаях) к имени и исполняет получившийся код. Если же вызывать коллбек с пользовательскими параметрами, то исполняемый код выходит каким-то таким:
'Dragon("'..hero..'")()'
то есть после вызова функции Dragon будет еще вызван результат, возвращенный из нее, а так как функция ничего не возвращает, то и получается ошибка попытки вызова nil.
Это из-за вызова коллбека с параметром. По-умолчанию скриптовая машина просто добавляет две скобки (и параметры, в некоторых случаях) к имени и исполняет получившийся код. Если же вызывать коллбек с пользовательскими параметрами, то исполняемый код выходит каким-то таким:
'Dragon("'..hero..'")()'
то есть после вызова функции Dragon будет еще вызван результат, возвращенный из нее, а так как функция ничего не возвращает, то и получается ошибка попытки вызова nil.