Господа геройщики, помогите пожалуйста с данными вопросами: !) Как сделать большое окно сообщения, не стандартный MessageBox, а крупнее? (там еще свиток слева) ") Можно ли редактировать Дневник миссии? (то куда записываются диалоги и получение заданий) №)Как сделать так, чтобы при покупке карты у картографа открывалась и вода, и суша?
Заранее спасибо)
1). Это мод. Его можно найти на форуме или, открыв карту с данным модом, архиватором и покопаться в папке UI. 2). Да, заменяя одно задание на другое, скриптом. 3). Либо установкой ещё одного картографа на воду, либо скриптом.
2) Я имею ввиду именно добавить туда какой-то свой текст, и какая функция редактирует этот Дневник? 3)Можно пример скрипта?
2).в верхней панели редактора нужно активировать Map properties tree. Там есть папка Objectives. Primary для основных заданий. Secondary для дополнительных. Common для всеобщих. Player specific для отдельных для конкретного игрока. Стандартное задание kill'em all - основное, всеобщее. Графа CaptionFileRef для имени задания, descriptionFileRef для описания. 3).Нужно дать скриптовое имя картографу в окне слева в параметре name. Всё, что написано в скрипте кириллицей, заменить на то, что требуется:
HERO = 0; SetObjectEbabled("скрипт_имя_картографа",nil); function cartographer(hero,obj) HERO = hero; QuestionBoxForPlayers(GetObjectOwner(HERO),"ссылка_на_файл_с_текстом_на_покупку_карт","yes"); end; function yes() if GetPlayerResource(GetObjectOwner(HERO),6) >= цена_карт then SetPlayerResource(GetObjectOwner(HERO),6, GetPlayerResource(GetObjectOwner(HERO),6)-цена_карт); OpenCircleFog(50,50,0,999,GetObjectOwner(HERO)); Trigger(OBJECT_TOUCH_TRIGGER,"скрипт_имя_картографа",nil); else MessageBoxForPlayers(GetObjectOwner(HERO),"ссылка_на_файл_с_текстом_что_не_хватает_денег"); end; end; Trigger(OBJECT_TOUCH_TRIGGER,"скрипт_имя_картографа","cartographer");
PS Использовать OpenCircleFog это гениально, не додумался бы)
Забыл деньги за карту взять. Обновил скрипт
EnterEscСтатистика
Зарегистрирован:
Сообщения:32
Снова нужна помощь. Как сделать так, чтобы вражеские герои преследовали твоего героя и вступали с ним в бой, даже если для них бой проигрышный? SetAIHeroAttractor и SetAIPlayerAttractor не работают(
Снова нужна помощь. Как сделать так, чтобы вражеские герои преследовали твоего героя и вступали с ним в бой, даже если для них бой проигрышный? SetAIHeroAttractor и SetAIPlayerAttractor не работают(
В значение "привлекательности" ставьте идентификатор "2", что означает — "забыть про опасности и бежать тыркаться с ним"... По крайней мере у меня так работало. Думаю, если эти функции не помогают, придётся использовать слишком хитрые схемы, типа принять координаты твоего героя и поставить в них бежать компу через MoveHero, каждый день повторяя это, и в потоке каком-нибудь проверять, если там CalcHeroMoveCost(...)<100 then StartCombat(...) . Думаю, такая схема вас устроит?)
Эх, если бы у меня параметр 2 работал в этой функции... Кстати сложной конструкцией тоже не очень, GetObjectPosition при NEW_DAY_TRIGGER считает координаты на начало дня игрока, за этот ход герой сдвинется и координаты станут неактуальны для компьютера(
GerterСтатистика
Зарегистрирован:
Сообщения:865
можно ведь просто зациклить MoveHeroRealTime, чтобы враг постоянно шел в позицию нужного героя. А вот циклить CalcHeroMoveCost лучше не надо, игра лагать начинает, если сделать бесконечный цикл с этой функцией
можно ведь просто зациклить MoveHeroRealTime, чтобы враг постоянно шел в позицию нужного героя. А вот циклить CalcHeroMoveCost лучше не надо, игра лагать начинает, если сделать бесконечный цикл с этой функцией
Не знаю..
function check_loop() while 1 do local x, y, floor=GetObjectPosition("nMyhero"); if CalcHeroMoveCost(?)("nAI", x, y, floor)<=100 then StartCombat(...); end; sleep(1) MoveHero("nAI", x, y, floor); end; end;
startThread(check_loop);
Проверяли, что вылетает? Просто зацикленный MoveHero будет двигать компа "в нас", но интерактивить не заставит, и игрок сам будет решать, нападать или нет, а цель, по-моему, чтобы комп сам напал на нас...
Если использовать MoveHeroRealTime, этого достаточно для нападения, но RealTime есть RealTime, это будет прямо в любой момент происходить, во время хода игрока возможно, и убежать будет нельзя. Обычный MoveHero возможно требует StartCombat, да. Хотя не уверен, но мне казалось, что сталкивался с таким. Аттракторы не работают. Если поведение ваших героев не задаётся жёстко и вам надо, чтобы хотя бы иногда и неточно они нацеливались на что-то, аттрактор может прокатить, но для жёсткой цели его не надо использовать. И даже если он рабоьает нормально у картостроителя, то скорее всего всё равно найдутся игроки, у которых работать не будет.
Если использовать MoveHeroRealTime, этого достаточно для нападения, но RealTime есть RealTime, это будет прямо в любой момент происходить, во время хода игрока возможно, и убежать будет нельзя. Обычный MoveHero возможно требует StartCombat, да. Хотя не уверен, но мне казалось, что сталкивался с таким. Аттракторы не работают. Если поведение ваших героев не задаётся жёстко и вам надо, чтобы хотя бы иногда и неточно они нацеливались на что-то, аттрактор может прокатить, но для жёсткой цели его не надо использовать. И даже если он рабоьает нормально у картостроителя, то скорее всего всё равно найдутся игроки, у которых работать не будет.
Если использовать MoveHeroRealTime, этого достаточно для нападения, но RealTime есть RealTime, это будет прямо в любой момент происходить, во время хода игрока возможно, и убежать будет нельзя. Обычный MoveHero возможно требует StartCombat, да. Хотя не уверен, но мне казалось, что сталкивался с таким. Аттракторы не работают. Если поведение ваших героев не задаётся жёстко и вам надо, чтобы хотя бы иногда и неточно они нацеливались на что-то, аттрактор может прокатить, но для жёсткой цели его не надо использовать. И даже если он рабоьает нормально у картостроителя, то скорее всего всё равно найдутся игроки, у которых работать не будет.
мув можно без проблем делать только на ходе нужного игрока, конструкцией типа:
while 1 do while not IsPlayerCurrent(нужный_игрок) do sleep() end MoveHeroRealTime(...) sleep() end
а насчет CalcHeroMoveCost, была у меня задачка постоянно проверять расстояние между 2 героями, так вот эта функция в цикле вызывала лаги в игре, пришлось считать просто расстояние в клетках
Нет войне.
Лоли НикитаСтатистика
Зарегистрирован:
Сообщения:34
Здравствуйте, мне нужна помощь с одним скриптом, но я не знаю как его сделать. При взаимодействии с определённым объектом, должен появляться диалог, такой же как от команды messagebox, но с несколькими вариантами ответа. Заранее спасибо тому кто напишет мне как осуществить эту команду. И ещё один вопрос можно и если можно, то как сделать так чтобы скрипт выполнял команду: герой может передвигаться по карте и открывать области, но будет виден только кусочек карты вокруг героя, а в месте до куда не достаёт радиус обзора героя будет чёрным, таким образом можно будет сделать лабиринт где герой сможет видеть лишь немного, а все места где он был не будут видны на карте. Надеюсь вы поймёте что я хотел спросить, так как я не сильно понимаю как объяснить свою задумку.
Здравствуйте, мне нужна помощь с одним скриптом, но я не знаю как его сделать. При взаимодействии с определённым объектом, должен появляться диалог, такой же как от команды messagebox, но с несколькими вариантами ответа. Заранее спасибо тому кто напишет мне как осуществить эту команду. И ещё один вопрос можно и если можно, то как сделать так чтобы скрипт выполнял команду: герой может передвигаться по карте и открывать области, но будет виден только кусочек карты вокруг героя, а в месте до куда не достаёт радиус обзора героя будет чёрным, таким образом можно будет сделать лабиринт где герой сможет видеть лишь немного, а все места где он был не будут видны на карте. Надеюсь вы поймёте что я хотел спросить, так как я не сильно понимаю как объяснить свою задумку.
Здравствуйте. Не буду приводить здесь скрипт функции TalkBoxForPlayers, так как это всё подробно описано у многоуважаемого Jack_of_shadows Вот его материал ЧаВо_от_ Jack_of_Shadows Посмотрите обязательно. Я так понимаю, вы хотите уменьшить обзор героя? Установите расширенный редактор карт (поищите, как то сделать). Далее, View=>Game Database=>New Window. Затем выберите Resource=>Select Tables=>Put ticks on all. Затем откройте карту, для которой вам нужен уменьшенный обзор. В окне слева сверху щёлкните по панели, должен появиться большой список из "непонятных";) строчек. Ищите что-то вроде RPGStats, точнее не скажу. Нажмёте, в окне появится папочка, вы на ней плюсик, появится исчо одна, на ней тоже +, затем появится серая надпись GameMechanics, по ней двойной щелчок. В окне снизу слева появится таблица со значениями. На adventute жмите плюсик, ищите BaseHeroLookRange, и поменяйте с 12 на 1, например. Вуоля. Рекомендую запретить скриптом Разведку и Бесшумного преследователя.Внимание! После описанной процедуры уменьшения обзора ваша карта станет модом, и обзор уменьшится везде, где по соседству есть ваша карта.
Добавлено через 5 минут Лоли Никита
И ещё один вопрос можно и если можно, то как сделать так чтобы скрипт выполнял команду: герой может передвигаться по карте и открывать области, но будет виден только кусочек карты вокруг героя, а в месте до куда не достаёт радиус обзора героя будет чёрным, таким образом можно будет сделать лабиринт где герой сможет видеть лишь немного, а все места где он был не будут видны на карте. Надеюсь вы поймёте что я хотел спросить, так как я не сильно понимаю как объяснить свою задумку.
С нетерпением жду вашего лабиринта) Не в обиду никому и не в деферамбы себе, надеюсь, мой лабиринт будет достойным ответом вашему, несмотря на отсутствие скриптов и модов;)