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

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

В ответ пользователю Jewily
Аватар пользователя
Jewill
Спасибо.Не знаете ли кстати,возможно ли каким-то образом давать герою одного класса перки другого(GiveHeroSkill может выдать навык первого уровня,но отказывается выдавать умения) только скриптами.Или нужно менять что-то в GameMechanics в структуре героя?[/QUOTE]
Не совсем уверен как GiveHeroSkill работает, но ею спокойно можно только навыки выдавать и повышать. На счет перков ею получается выдать только перк, который герой может изучить прямо сейчас, и он при этом должен относиться к расовому колесу умений героя.
Могу ошибаться, но чужой навык с перками только в редакторе выставить можно.
В ответ пользователю 32MeTpa
Аватар пользователя
Спасибо,как я понял путём тестов,GiveHeroSkill работает именно так,как вы сказали.Т.е она выдает лишь доступные перки по расовой принадлежности
Аватар пользователя
Здравствуйте,уважаемые.Помогите ,пожалуйста,советом - как с помощью скрипта и какого именно, осуществить такую ситуацию: создать монстра-NPC, дать ему скриптовое имя,и название. При взаимодействии с ним ,запускается диалог, исходя из которого, нам предлагается квест (!) от которого можно отказаться с возможностью взять его позже, или принять его.При выполнении задания и взаимодействии с ним, выдаётся награда и NPC исчезает. Заранее спасибо...
Аватар пользователя
Привет всем.Возможно ли сделать такую проверку,чтобы если определённый игрок управляется AI,то просто не выполнять скрипт карты,а если человек,то выполнить.Делается вроде через DoFile и создания нескольких доп.луа файлов,но как конкретно это реализовать не знаю.Может кто подскажет?
В ответ пользователю Jewily
Аватар пользователя
Jewill
Привет всем.Возможно ли сделать такую проверку,чтобы если определённый игрок управляется AI,то просто не выполнять скрипт карты,а если человек,то выполнить.Делается вроде через DoFile и создания нескольких доп.луа файлов,но как конкретно это реализовать не знаю.Может кто подскажет?
Можно создать рядом с MapScript.lua (или в другой папке, главное потом путь правильно написать) другие луа файлы и в них писать скрипты. Чтобы написанные там скрипты выполнялись, в MapScript нужно написать:
doFile('script.lua')
Соответственно, чтобы они не выполнялись, если игрок компьютер, можно сделать проверку:
if IsAIPlayer(PLAYER_..) == 0 then
doFile('script.lua')
end;
Здесь 0 - если игрок человек, 1 - если компьютер.
Аватар пользователя
Как обратится к определённому значению в строчном массиве?Например,как обратиться к 3 герою с помощью GetPlayerHeroes?
Аватар пользователя
У меня возник вопрос касательно AdvMap можно ли затемнять участки? хотелось бы кое-что реализовать

Добавлено через 4 минуты
Vladislav A-V
Здравствуйте,уважаемые.Помогите ,пожалуйста,советом - как с помощью скрипта и какого именно, осуществить такую ситуацию: создать монстра-NPC, дать ему скриптовое имя,и название. При взаимодействии с ним ,запускается диалог, исходя из которого, нам предлагается квест (!) от которого можно отказаться с возможностью взять его позже, или принять его.При выполнении задания и взаимодействии с ним, выдаётся награда и NPC исчезает. Заранее спасибо...
Думаю если есть свободное место на карте, которое никто не видит(можно в подземелье), то можно в него наставить таких NPC хоть сто даже в одной клетке всех разместить(Лучше в разные, а то лагает) и просто их перемещать в нужные места, так проще и не нужно будет настраивать в скриптах Rotation, а то он обычно как-то не так настраивается(сбрасывается на 0).
В ответ пользователю Jewily
Аватар пользователя
Jewill
Как обратится к определённому значению в строчном массиве?Например,как обратиться к 3 герою с помощью GetPlayerHeroes?
Также, как и к любому другому массиву с индексами:
heroes = GetPlayerHeroes(1);
hero = heroes[3];
Только надо учесть, что в этой функции нумерация с 0 начинается, т.е. чтобы обратиться к 3-у герою, нужно писать heroes[2].
DarkLordax
У меня возник вопрос касательно AdvMap можно ли затемнять участки? хотелось бы кое-что реализовать
Не совсем понятно, что конкретно нужно. Если затемнять освещение, то участками не получится, только глобальное скриптом менять. Например, пересекая регион.
Если про туман войны, то затемнить уже открытые территории нельзя. Только запретить открытие новых функцией SetWarfogBehaviour.
Люди, нужна помощь. Хочу создать квест: у одного героя до определенного уровня в бою должны быть дебаффы на инициативу и атаку. Вопрос вот в чем: после боя эти дебаффы убираются, а как сделать так чтобы после битвы они сразу снова появлялись?
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
так попробуй:
Trigger(COMBAT_RESULTS_TRIGGER, 'CombatResult')

function CombatResult(fight_id)
local winner = GetSavedCombatArmyHero(fight_id, 1)
if winner == 'нужный_герой' then
наложить штрафы заново
end
end
Нет войне.
Аватар пользователя
Вопрос к знатокам ИИ, который касается в большей степени механики игры чем самих скриптов, но и их тоже:

Если скриптами видоизменять ландшафт карты в процессе игры, нормально ли реагирует ИИ на эти изменения? или расчеты возможных действий по карте ведутся вначале и изменяя что либо кардинально (например пути движения) можно сломать логику компа?
Карты для Heroes V: Повелители орды:
Multiplayer: Господство, Извечное противостояние, Война за Магию, Торговая империя, Анатомия войны, Эксперимент
SingleScenario: Последний Рубеж, Трон, Элиралис, Вернуться домой!, Лабиринты разума
Campaign: Колонизация
В ответ пользователю KioM
Аватар пользователя
KioM
Вопрос к знатокам ИИ, который касается в большей степени механики игры чем самих скриптов, но и их тоже:

Если скриптами видоизменять ландшафт карты в процессе игры, нормально ли реагирует ИИ на эти изменения? или расчеты возможных действий по карте ведутся вначале и изменяя что либо кардинально (например пути движения) можно сломать логику компа?

я не замечал изменений в ИИ. Просто отметит, что зона непроходима теперь
Карты для героев 5

"Плата за любовь"
"Путь некроманта"
"Темные грани"
"Рок Гримхейма"
Есть проблема:
function IsDjezebetDead()
SetObjectiveState("obj1",OBJECTIVE_COMPLETED)
SetObjectiveState("alive",OBJECTIVE_COMPLETED)
sleep(10)
SetObjectRotation(Edward,55)
SetObjectPosition(Edward,19,76,0,0)
SetObjectPosition(C1,21,77,0,0)
SetObjectPosition(C2,22,74,0,0)
SetObjectPosition("mage",20,74)
StartAdvMapDialog(0)
startThread(End)
end

function End()
StartDialogScene(path.."S3/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
Win()
end

После победы над героем должен запуститься диалог, а потом катсцена, но вместо этого сразу засчитывается победа( то есть ни диалог, ни ролик не проигрываются) В чем проблема то?
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
В ответ пользователю AlekseyS
Аватар пользователя
AlekseyS

После победы над героем должен запуститься диалог, а потом катсцена, но вместо этого сразу засчитывается победа( то есть ни диалог, ни ролик не проигрываются) В чем проблема то?
Возможно при выполнении квеста автоматически засчитывается победа, т.е. если переместить
SetObjectiveState("obj1",OBJECTIVE_COMPLETED)
SetObjectiveState("alive",OBJECTIVE_COMPLETED)
на место Win(), то все скорее всего сработает. Или в настройках квестов покопаться, чтобы победа по их завершению не засчитывалась.
В ответ пользователю 32MeTpa
32MeTpa
Возможно при выполнении квеста автоматически засчитывается победа, т.е. если переместить
SetObjectiveState("obj1",OBJECTIVE_COMPLETED)
SetObjectiveState("alive",OBJECTIVE_COMPLETED)
на место Win(), то все скорее всего сработает. Или в настройках квестов покопаться, чтобы победа по их завершению не засчитывалась.


Спасибо. Так и оказалось... Из-за второго квеста засчитывалась победа, хотя у обоих заданий стоят одинаковые параметры.
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения

Статистика

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