Скрипты - Страница 191 - Форум HeroesWorld-а

Вернуться   Форум HeroesWorld-а > Все о игре Герои 5. All about Heroes 5 > Герои Меча и Магии 5 - Картостроительство (Редактор карт)
Имя
Пароль
Карта сайта Регистрация Справка Пользователи Календарь Все разделы прочитаны
Быстрая навигация по основным разделам форума:
Кланы HW Турниры на HW КАРТЫ и Картостроительство Heroes 6 Heroes 5 Heroes 4 Heroes 3 Heroes 2 Heroes 1 Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
 
Опции темы
Старый 15.10.2018, 15:31   #2851
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
Регистрация: 10.01.2016
Сообщения: 109
OrnsteinDragonslayer - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Нибрус
Помогите мне!
Как-только создают скрипт(простой, на анимацию атаки) у меня вылетает редактор карт.

А ты пишешь скрипт внутри редактора? Советую юзать отдельную прогу для этого дела, потому что сам редактор собсна вылетает вечно. Называется HoMM5MapScriptsEditor.
__________________
Автор карты: Долина расхитителей
Карта Выбор мира - в разработке.
OrnsteinDragonslayer вне форума   Ответить с цитированием
Старый 15.10.2018, 20:42   #2852
LetoX
Регистрация: 16.11.2017
Сообщения: 51
LetoX - уровень боевого духа
По умолчанию Re: Скрипты

лично мне не удобно пользоваться этой прогой, просто перед тем, как закрыть окно, копируй текст и, если вылетело, вставляй его обратно.
LetoX вне форума   Ответить с цитированием
Старый 05.11.2018, 16:03   #2853
Dyrman
 
Аватар для Dyrman
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3455
Dyrman - уровень боевого духа Dyrman - уровень боевого духа Dyrman - уровень боевого духа
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию Re: Скрипты

Всем Добра!

Есть код:

Код:
local slot = -1; local i_count = 0; local id, count; local temp_name = NHF_tempName_F("Nemor"); local count_umertvie = GetHeroCreatures("Nemor", CREATURE_WIGHT); if count_umertvie > 0 then for i = 0,6 do id, count = GetObjectArmySlotCreature(temp_name,i); if id == CREATURE_WIGHT then slot = i; end; if count == 0 then i_count = i_count + 1; end; end; if i_count == 6 then AddHeroCreatures("Nemor", CREATURE_SKELETON , 1); sleep(); RemoveHeroCreatures("Nemor", CREATURE_WIGHT, count_umertvie); sleep(); AddHeroCreatures("Nemor", CREATURE_BANSHEE , count_umertvie,slot); sleep(); RemoveHeroCreatures("Nemor", CREATURE_SKELETON, 1); sleep(); else RemoveHeroCreatures("Nemor", CREATURE_WIGHT, count_umertvie); sleep(); AddHeroCreatures("Nemor", CREATURE_BANSHEE , count_umertvie,slot); sleep(); end; end;

В режиме мультиплеера Умертвия сразу же заменяются на Баньши. В режиме же одиночной, чтобы увидеть изменение, необходимо выходить из интерфейса героя и вновь заходить. Можно ли это вылечить?
Dyrman вне форума   Ответить с цитированием
Старый 11.11.2018, 22:41   #2854
AlekseyS
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 157
AlekseyS - уровень боевого духа
По умолчанию Re: Скрипты

Подскажите пожалуйста: как заставить боевые скрипты работать в городе? Ставлю скрипт на враж. героя - ничего, на город- тоже ничего.
AlekseyS вне форума   Ответить с цитированием
Старый 12.11.2018, 17:10   #2855
LetoX
Регистрация: 16.11.2017
Сообщения: 51
LetoX - уровень боевого духа
По умолчанию Re: Скрипты

посмотрите стрипты на карте Эхо Пустоты, там в городе боевой скрипт
LetoX вне форума   Ответить с цитированием
Старый 12.11.2018, 21:16   #2856
AstralLein
 
Аватар для AstralLein
Регистрация: 02.06.2017
Адрес: На планете Земля.
Сообщения: 1449
AstralLein - уровень боевого духа AstralLein - уровень боевого духа
По умолчанию Re: Скрипты

нужно начинать осаду (команда SiegeTown) через скрипт и в настройках команды указать нужный скрипт.
__________________
Карты для героев 5:
"Плата за любовь"
"Путь некроманта"

Карты для Disciples 3:
"Противостояние"

Моды для Disciples 3:
"Астельнаир"(сладкое отсутствие разработки)
AstralLein сейчас на форуме   Ответить с цитированием
Старый 12.11.2018, 21:22   #2857
AlekseyS
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 157
AlekseyS - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от AstralLein
нужно начинать осаду (команда SiegeTown) через скрипт и в настройках команды указать нужный скрипт.

Та я решил проблему: поставил скрипт на атакующего игрока.
AlekseyS вне форума   Ответить с цитированием
Старый 29.12.2018, 19:54   #2858
AlekseyS
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 157
AlekseyS - уровень боевого духа
По умолчанию Re: Скрипты

Есть код:
Код:
function dwellings() for i, dw_type in {"FAIRIE_TREE", "WOOD_GUARD_QUARTERS", "HIGH_CABINS", "PRESERVE_MILITARY_POST"} do for j, dw in GetObjectNamesByType(dw_type) do ELF_DWLS[dw] = "откл" SetObjectEnabled(dw, nil) Trigger(4, dw, "TransformDwelling") end end startThread(dwellings2) end startThread(dwellings) function dwellings2() while 1 do repeat sleep() until IsPlayerCurrent(1) for dwelling, state in ELF_DWLS do if state == "вкл" then ELF_DWLS[dwelling] = "откл" SetObjectEnabled(dwelling, nil) Trigger(4, dwelling, "TransformDwelling") end end repeat sleep() until not IsPlayerCurrent(1) for dwelling, state in ELF_DWLS do if state == "откл" then ELF_DWLS[dwelling] = "вкл" SetObjectEnabled(dwelling, 1) Trigger(4, dwelling, nil) end end end end function TransformDwelling(hero, hut) if GetCurrentPlayer() == 1 then QuestionBox (path.."transformd.txt" , 'transformnok("'..hut..'")' ); end end function transformnok(hut) if not (GetPlayerResource(1, CRYSTAL) >= 15 and GetPlayerResource(1,GEM) >= 10) then ShowFlyingSign(path.."nores.txt",hut,-1,10) return end SetPlayerResource(1,CRYSTAL, (GetPlayerResource(1,CRYSTAL) - 15)) SetPlayerResource(1,GEM, (GetPlayerResource(1,GEM) - 10)) PlayVisualEffect('/Effects/_(Effect)/Spells/Bless.xdb#xpointer(/Effect)', hut) sleep(5) Trigger(4, hut, nil) ELF_DWLS[hut] = nil ReplaceDwelling(hut,TOWN_HEAVEN) sleep(1) SetObjectOwner(hut,1) SetObjectEnabled(hut,true) sleep(1) return function() end end

Мне нужно сделать, что если одно задание активно или невыполненное, тогда перестройку строений разрешить, а если выполнено, то нет. Так вот, можете подсказать, пожалуйста, куда мне написать саму проверку?
AlekseyS вне форума   Ответить с цитированием
Старый 29.12.2018, 20:49   #2859
Gerter
 
Аватар для Gerter
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 326
Gerter - уровень боевого духа
По умолчанию Re: Скрипты

Код:
function TransformDwelling(hero, hut) local state = GetObjectiveState('нужное_задание') if GetCurrentPlayer() == 1 and (state == OBJECTIVE_ACTIVE or state == OBJECTIVE_FAILED) then QuestionBox (path.."transformd.txt" , 'transformnok("'..hut..'")' ); end end

как-то так, если правильно понял условия
__________________
Сценарий для HoMM V:
Сердце ночи v 1.3a

Кампания за Академию/ТЭ - в активной разработке

I heard your voice through a photograph
I thought it up it brought up the past
Once you know you can never go back
I’ve got to take it on the otherside
Gerter вне форума   Ответить с цитированием
Старый 29.12.2018, 20:58   #2860
AlekseyS
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 157
AlekseyS - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Gerter
Код:
function TransformDwelling(hero, hut) local state = GetObjectiveState('нужное_задание') if GetCurrentPlayer() == 1 and (state == OBJECTIVE_ACTIVE or state == OBJECTIVE_FAILED) then QuestionBox (path.."transformd.txt" , 'transformnok("'..hut..'")' ); end end

как-то так, если правильно понял условия

Все работает, спасибо.
AlekseyS вне форума   Ответить с цитированием
Старый 13.01.2019, 13:24   #2861
Grigoriy
Регистрация: 02.11.2016
Сообщения: 16
Grigoriy - уровень боевого духа
По умолчанию Re: Скрипты

Приветствую. Может кто найдётся для указания нужного решения по скрипту:
В общем, есть определённая группа существ, которых по заданию надо будет уничтожить, при этом надо в определённый игровой день провести проверку их существования, чтобы указать на выполнение/невыполнение задания и, в случае, если какие-то из этих существ ещё находятся на карте, то передать их в армию определённого героя. Знаю, что нечто подобное реализовывалось в первой миссии кампании Фриды, однако как там это реализовано я, к сожалению, не понимаю
Grigoriy вне форума   Ответить с цитированием
Старый 13.01.2019, 14:27   #2862
Gerter
 
Аватар для Gerter
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 326
Gerter - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Grigoriy
Приветствую. Может кто найдётся для указания нужного решения по скрипту:
В общем, есть определённая группа существ, которых по заданию надо будет уничтожить, при этом надо в определённый игровой день провести проверку их существования, чтобы указать на выполнение/невыполнение задания и, в случае, если какие-то из этих существ ещё находятся на карте, то передать их в армию определённого героя. Знаю, что нечто подобное реализовывалось в первой миссии кампании Фриды, однако как там это реализовано я, к сожалению, не понимаю

так, я не знаю, какие у вас общие познания в скриптах, поэтому попробую на пальцах:

Сначала нужно задать скриптовые имена нужным отрядам в редакторе и настроить их так, чтобы они гарантированно присоединялись к героям нужного вам игрока(нужные пункты выделены на скрине)

Нажмите на изображение для увеличения
Название:  sdfsf.png
Просмотров: 4
Размер:	24.8 Кбайт
ID:	58323

Затем, уже в скрипте, для удобства запилить таблицу, через которую будет определять наличие отрядов на карте:
Код:
stacks = {'скриптовое_имя_отряда_1', 'скриптовое_имя_отряда_2'... и т.д}

Потом использовать триггер нового дня для ежедневной проверки на существование отрядов:
Код:
function NewDay() if GetDate(DAY) == 'день, когда нужно произвести проверку' then -- далее проверка существования отрядов и передача нужному герою for i, stack in stacks do if IsObjectExists(stack) then MakeHeroInteractWithObject('Скриптовое_имя_нужного_героя', stack) end end end end Trigger(NEW_DAY_TRIGGER, 'NewDay')
__________________
Сценарий для HoMM V:
Сердце ночи v 1.3a

Кампания за Академию/ТЭ - в активной разработке

I heard your voice through a photograph
I thought it up it brought up the past
Once you know you can never go back
I’ve got to take it on the otherside
Gerter вне форума   Ответить с цитированием
Старый 13.01.2019, 14:58   #2863
Grigoriy
Регистрация: 02.11.2016
Сообщения: 16
Grigoriy - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Gerter
так, я не знаю, какие у вас общие познания в скриптах, поэтому попробую на пальцах:

Сначала нужно задать скриптовые имена нужным отрядам в редакторе и настроить их так, чтобы они гарантированно присоединялись к героям нужного вам игрока(нужные пункты выделены на скрине)

Вложение 58323

Затем, уже в скрипте, для удобства запилить таблицу, через которую будет определять наличие отрядов на карте:
Код:
stacks = {'скриптовое_имя_отряда_1', 'скриптовое_имя_отряда_2'... и т.д}

Потом использовать триггер нового дня для ежедневной проверки на существование отрядов:
Код:
function NewDay() if GetDate(DAY) == 'день, когда нужно произвести проверку' then -- далее проверка существования отрядов и передача нужному герою for i, stack in stacks do if IsObjectExists(stack) then MakeHeroInteractWithObject('Скриптовое_имя_нужного_героя', stack) end end end end Trigger(NEW_DAY_TRIGGER, 'NewDay')

Благодарю за ответ
То, что можно задать разное отношение существа к разным игрокам, я не знал
Таблицу из существ показанную выше я создал, но указанные существа, по квесту, могут быть уничтожены до указанного времени, то бишь, как я со своей дурной головушкой это понимаю, мне ещё нужна функция на проверку существования этих существ в принципе, для выполнения задания до указанного дня
Grigoriy вне форума   Ответить с цитированием
Старый 13.01.2019, 15:41   #2864
Gerter
 
Аватар для Gerter
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 326
Gerter - уровень боевого духа
По умолчанию Re: Скрипты

ну это просто, делаете поток проверки:
Код:
function CheckStacks() while 1 do local x for i, stack in stacks do if IsObjectExists(stack) then x = not nil end end if not x then SetObjectiveState('нужное_задание', OBJECTIVE_COMPLETED) break end if GetDate(DAY) == нужный_день then break end sleep() end end startThread(CheckStacks)
__________________
Сценарий для HoMM V:
Сердце ночи v 1.3a

Кампания за Академию/ТЭ - в активной разработке

I heard your voice through a photograph
I thought it up it brought up the past
Once you know you can never go back
I’ve got to take it on the otherside
Gerter вне форума   Ответить с цитированием
Старый 13.01.2019, 16:19   #2865
Grigoriy
Регистрация: 02.11.2016
Сообщения: 16
Grigoriy - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Gerter
ну это просто, делаете поток проверки:
Код:
function CheckStacks() while 1 do local x for i, stack in stacks do if IsObjectExists(stack) then x = not nil end end if not x then SetObjectiveState('нужное_задание', OBJECTIVE_COMPLETED) break end if GetDate(DAY) == нужный_день then break end sleep() end end startThread(CheckStacks)

Ага. Большое спасибо
Grigoriy вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход


Часовой пояс GMT +4, время: 21:33.


vBulletin v3.5.0, Copyright ©2000-2019, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование  Rambler\'s Top100   Рейтинг@Mail.ru

Авторские права - Copyright © 2002-2018 www.HeroesWorld.ru All rights reserved (new server)


На правах рекламы:123123