Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
7 лет назад
Ну ок(Просто лень всё прописывать, у самого какая-то фигня со скриптом на карте)

2) Делаем регион, и меняем Приоритет на что-то нужное(Не проверял!), ну и можно поставить на другие объекты приоритет -1

итог примерно такой:
-хм... что-то в регионе, эй вы шлемоголовые, к вам гости
- ОК! Пофиг на всё есть враг!
В ответ пользователю DarkLordax
Аватар пользователя
7 лет назад
DarkLordax
Ну ок(Просто лень всё прописывать, у самого какая-то фигня со скриптом на карте)

2) Делаем регион, и меняем Приоритет на что-то нужное(Не проверял!), ну и можно поставить на другие объекты приоритет -1

итог примерно такой:
-хм... что-то в регионе, эй вы шлемоголовые, к вам гости
- ОК! Пофиг на всё есть враг!
Про этот приоритет - это скрипт или функция?
Аватар пользователя
7 лет назад
Вроде должна быть функция SetAIPlayerAttractor, но есть SetAIHeroAttractor(Ну скрипт,ну понятно!)
Одна для определённого героя, другая чисто для игрока
вот что-то ещё

DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes
должно быть в файле о скриптах
В ответ пользователю DarkLordax
Аватар пользователя
7 лет назад
DarkLordax
Ну вот что здесь не так!

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 минуты
Как я могу выдать герою Совершенную некромантию?
В ответ пользователю AstralLein
7 лет назад
AstralLein
Как я могу выдать герою Совершенную некромантию?

1.Кулон мастерства
2.В редакторе у героя настроить в PrimarySkillMastery - MASTERY_EXTRA_EXPERT.
Через GiveHeroSkill не получиться, к сожалению.(Лично у меня не получилось)
Аватар пользователя
7 лет назад
Я имею ввиду выдать по выполнению квеста. Скриптом.

Добавлено через 33 секунды
Была карта где такой фокус вроде как проворачивали...
В ответ пользователю AstralLein
7 лет назад
AstralLein
Я имею ввиду выдать по выполнению квеста. Скриптом.

Как вариант: дать игроку Кулон и если некромантия ниже искусной, то повысить через GiveHeroSkill.
Аватар пользователя
7 лет назад
GiveHeroSkill повышает уровень знания навыка?
В ответ пользователю AstralLein
7 лет назад
AstralLein
GiveHeroSkill повышает уровень знания навыка?

Да. Но повысить расовое умение через него до совершенного нельзя
Аватар пользователя
7 лет назад
Тьфу. Придется артефакт все-таки выдавать... вот блин... а вся суть то была: обучить 3 героев искусной некромантии и получить Совершенную некромантию для Арантира.
В ответ пользователю AstralLein
Аватар пользователя
7 лет назад
AstralLein
не советую никогда использовать слово false! Дело вряд ли в нем, хотя кто знает, но кроме ошибок в консоль false и true у меня еще не вызывали ничего.

Добавлено через 1 минуту
Использовать эти два слова в корне не верно. Есть nil, 0, 1 и т.д. Это уже от команды скриптовой зависит.

Добавлено через 52 минуты
Как я могу выдать герою Совершенную некромантию?
У меня была вот такая беда MesageBox(Одна s)!
7 лет назад
Есть проблема: вот код
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

все хорошо работает, но...(см. скрин)

Что может это вызывать? Просто хочется, чтобы консоль была чиста, а не выдавала ошибку.
Вложения 1
1 файл • Общий размер: 28,0 KB
В ответ пользователю AlekseyS
Аватар пользователя
7 лет назад
AlekseyS
Есть проблема: вот код
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.

Лечится добавлением двух минусов
QuestionBox(path.."tom2.txt",'Dragon("'..hero..'")--')
тогда исполняемый код будет иметь вид:
'Dragon("'..hero..'")--()'
то есть, лишние скобки будут закомментированы.
В ответ пользователю RedHeavenHero
7 лет назад
RedHeavenHero
Это из-за вызова коллбека с параметром. По-умолчанию скриптовая машина просто добавляет две скобки (и параметры, в некоторых случаях) к имени и исполняет получившийся код. Если же вызывать коллбек с пользовательскими параметрами, то исполняемый код выходит каким-то таким:
'Dragon("'..hero..'")()'
то есть после вызова функции Dragon будет еще вызван результат, возвращенный из нее, а так как функция ничего не возвращает, то и получается ошибка попытки вызова nil.

Лечится добавлением двух минусов
QuestionBox(path.."tom2.txt",'Dragon("'..hero..'")--')
тогда исполняемый код будет иметь вид:
'Dragon("'..hero..'")--()'
то есть, лишние скобки будут закомментированы.

Помогло, спасибо

Статистика

Приветствуем новейшего участника: recijeb