Консоль не жалуется, спросил у знакомого, который в этом дерьме разбирается и он говорит мне, что все я нормально написал и сделал, должно работать, но просто не работает потому-что не работает. И как это понять? Какого черта оно не работает?
Консоль не жалуется, спросил у знакомого, который в этом дерьме разбирается и он говорит мне, что все я нормально написал и сделал, должно работать, но просто не работает потому-что не работает. И как это понять? Какого черта оно не работает?
Текстовый файл где создавали? Должна быть кодировка Unicode. Не UTF-8, хоть это тоже юник
Сделал, не заработало. После даже слеш убрал, как рекомендовал "Долгий", но все также. Понимаете, смех в том, что даже эта команда не работает, хотя как я и писал ранее, даже знакомый сказал, что я все сделал правильно:
SetObjectEnabled("dolmen1", false);
Единственная команда, которая у меня заработала, это:
Но это первый скрипт, который я написал для карты, после этого, такое ощущение, что больше никакие скрипты, которые я вписываю, не работают.
Решил прикольнуться, зашел сейчас в сам редактор -> свою карту -> Map Properties -> Script -> нажимаю кнопку Script и сразу вылетает редактор. Но как я понял, это обычный случай для обычного редактора.
Сделал, не заработало. После даже слеш убрал, как рекомендовал "Долгий", но все также. Понимаете, смех в том, что даже эта команда не работает, хотя как я и писал ранее, даже знакомый сказал, что я все сделал правильно:
SetObjectEnabled("dolmen1", false);
Единственная команда, которая у меня заработала, это:
Это первый скрипт, который я прописал, после этого, такое ощущение, что больше никакие скрипты, которые я вписываю, не работают.
Окей, тогда по новой. Открывай свой текстовый файл, копируй что там написано. После этого открой файлы карты, удали его. Перезапусти карту. Потом поставь объект Signpost(указатель), в нём слева в MessageFile нажми New, введи то же название что было у твоего файла и нажми Ok, после откроется пустое окно с этим файлов. Вставляй туда свой текст, жми Окей, закрывай карту и тестируй в игре появится ли текст.
Если не сработает, скинь свою карту("названиекарты.h5m" файл в папке Maps)
Добавлено через 6 минут Shiroyasha2910
Решил прикольнуться, зашел сейчас в сам редактор -> свою карту -> Map Properties -> Script -> нажимаю кнопку Script и сразу вылетает редактор. Но как я понял, это обычный случай для обычного редактора.
Не пользуйся этой кнопкой, представь что её нет) Скрипты пиши/редактируй либо в текстовом файле в корне файлов карты(как я, и многие другие делают), либо же пользуйся HoMM5MapScriptsEditor(вообще, в ней рекомендую и писать скрипты, а потом переносить в текст. Однако не советую в нём делать заметки на русской раскладке, т.к. при переносе в lua файлик может полететь русский текст и тогда тот станет "ломаным арабским" Точно так же может случиться если русский текст скопировать из lua файлика карты и перенести в ScriptsEditor)
Окей, тогда по новой. Открывай свой текстовый файл, копируй что там написано. После этого открой файлы карты, удали его. Перезапусти карту. Потом поставь объект Signpost(указатель), в нём слева в MessageFile нажми New, введи то же название что было у твоего файла и нажми Ok, после откроется пустое окно с этим файлов. Вставляй туда свой текст, жми Окей, закрывай карту и тестируй в игре появится ли текст.
Если не сработает, скинь свою карту("названиекарты.h5m" файл в папке Maps)
Не, это работает. В карте уже добавленные задания или тексты с указателей работают. Может быть это просто на дольмене не работает? Заработало, поменял на дерево Сильваны и заработало, только теперь после прочтения текста, я не могу зайти в героя, а другой, игровой текст (например: ваш герой больше не может ходить на этом ходу, заклинание изучено) начал отображаться через секунд 5-10 от изначального. Короче, походу я воистину гений, если у меня такие простые команды вызывают баги в игре -_-
Насчёт редактора я знаю) Поэтому изначально пользуюсь ScriptsEditor))
Shiroyasha2910, у тебя всё равно не запускается функция из OBJECT_TOUCH_TRIGGER?
Добавлено через 38 минут Shiroyasha2910
Не, это работает. В карте уже добавленные задания или тексты с указателей работают. Может быть это просто на дольмене не работает? Заработало, поменял на дерево Сильваны и заработало, только теперь после прочтения текста, я не могу зайти в героя, а другой, игровой текст (например: ваш герой больше не может ходить на этом ходу, заклинание изучено) начал отображаться через секунд 5-10 от изначального. Короче, походу я воистину гений, если у меня такие простые команды вызывают баги в игре -_-
Задержки скорее всего вызывает какой-то цикл(или циклы, если их несколько), я не зря просил карту залить. А с дольменом ошибка вероятно от того, что ты в дольмене прописал скриптовое имя по другому, не так как в Trigger( OBJECT_TOUCH_TRIGGER, "", "")
Shiroyasha2910, у тебя всё равно не запускается функция из OBJECT_TOUCH_TRIGGER?
Добавлено через 38 минут Задержки скорее всего вызывает какой-то цикл(или циклы, если их несколько), я не зря просил карту залить. А с дольменом ошибка вероятно от того, что ты в дольмене прописал скриптовое имя по другому, не так как в Trigger( OBJECT_TOUCH_TRIGGER, "", "")
Понял тебя. Возможен-ли вариант, чтобы я тебе куда-нибудь в личные сообщения скинул карту?
Точно не находит по "BUILDING_GARRISON"? Если нет, то остаётся один способ: парсить map.xdb собственной программой, устанавливая всем объектам типа гарнизон скриптовое имя
Да, к сожалению... Ни BUILDING_GARRISON, ни в принципе по BUILDING. Решил это дело протестировать на одной из карт где у бота во владении шахты, домики и гарнизоны. Через BUILDING набрал массив владений бота и сделал SetObjectOwner, и у всех зданий бота, кроме гарнизонов, сменился владелец. Не отслеживаются даже те гарнизоны, которые имеют имена.
Добавлено через 8 часов 26 минут Прописал себе небольшой скрипт:
function NoFlee( n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20 ) heroeslist = { n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20 } for key, heroes in heroeslist do if IsObjectExists( heroes ) ~= nil then DenyAIHeroFlee( heroes, 1 ) print("Герой ", heroes, " больше не покидает бои пока не погибнет") end end end
Всё работает, но дико напрягает ругань консоли на неверный первый аргумент в IsObjectExists, который возникает из-за незаполненых аргументов. Можно ли как-то переписать скрипт или что-то добавить, чтобы массив заполнялся только заполненными аргументами? Или же переписать так, чтобы консоль не ругалась на пустые аргументы.
Азгалор, в функцию можно сразу передавать таблицу:
function NoFlee(heroeslist) for key, heroes in heroeslist do if IsObjectExists( heroes ) ~= nil then DenyAIHeroFlee( heroes, 1 ) print("Герой ", heroes, " больше не покидает бои пока не погибнет") end end end
-- Пример использования NoFlee({n1, n2, n3});
РПГ-сценарий для HoMM5: Путь героя ЧаВо по созданию карт для HoMM5: ЧаВо
Здравствуйте. Возникла странная проблема с откастовкой заклинаний в боевом скрипте.
function DefenderCreatureDeath (unit) if exist ('Priest') then sleep (2) SetUnitManaPoints(Osillian, GetUnitManaPoints(Osillian)+50) sleep (1) UnitCastAimedSpell (Osillian, SPELL_RESURRECT, unit) sleep (5) UnitCastAimedSpell (Osillian, SPELL_CELESTIAL_SHIELD, unit) end end
В данном куске скрипта мне необходимо, чтобы после смерти стека защитников их герой воскрешал их, а затем навешивал небесный щит. Воскрешение работает нормально, а вот небесный щит не хочет накидываться ни в какую. В консоли пишет рядовое "Unit can't cast aimed spell...". Уже два дня бьюсь над тем, в чем соль, был бы очень признателен, если бы кто-нибудь подсказал).
И еще один вопросик: мне нужно, чтобы в ход героя противника его лучник, назовем его 'Hunter', стрелял по какому-то из существ героя игрока, при этом не по конкретному. Но у меня не хватает воображения на то, чтобы понять, как это сделать. Вроде как, нужно составить таблицу существ, которые будут входить в пул выбора лучника, но непонятно, как ее сделать, плюс еще здесь ведь не будет работать обычный commandShot, так что как заставить потом лучника непосредственно стрелять?