Скрипты для начинающих - Страница 11 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

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

Ответ
Страница 11 из 28
 
Опции темы
#151
Старый 24.11.2017, 17:20
  #151
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Где-то читал, что вроде надо писать не
startThread( "replacecreature" )
а
startThread( replacecreature)
например, попробовал и такой вариант, тоже результата не дало
Точно! Уже забыл, но поправка верная.
Про вычитание лучников, учли?
Ну, а так попрошу предоставить, что пишет консоль. Как её включить, есть в faq.

Поправил у себя код. Там ещё я sleep пропустил, растяпа.
Ment вне форума
Ответить с цитированием
#152
Старый 24.11.2017, 17:24
  #152
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

MentВпрочем, код, что я написал, имеет слабое звено. Подозреваю, у Вас там не 9999 лучников на самом деле. Ошибку выдаст. Надо сделать проверку точного числа лучников и это точное число вычитать! Если смысл в том, чтобы в армии их больше не было. Но пока проверьте без вычитания лучников просто.

Вроде бы команда RemoveHeroCreatures если убирать больше существ, чем у героя есть, или даже, если убирать тех существ, которых у героя вообще нет.
На всякий случай проверил без этой строчки, всё равно результата никакого.
zahar0z вне форума
Ответить с цитированием
#153
Старый 24.11.2017, 17:25
  #153
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Ладно. Тогда не забыть sleep и включить консоль.
Ment вне форума
Ответить с цитированием
#154
Старый 24.11.2017, 17:28
  #154
^
32MeTpa
 
Аватар для 32MeTpa
📖
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
По умолчанию
Re: Скрипты для начинающих

	function replacecreature ()
    while (1) do
    sleep(2);
    local herocr = GetHeroCreatures( "Sarge", CREATURE_ARCHER );
    if herocr >= 1 and 
GetTownBuildingLevel("cheast_town", TOWN_BUILDING_DWELLING_2 ) == 2 then
        RemoveHeroCreatures( "Sarge", CREATURE_ARCHER, herocr );
        AddHeroCreatures( "Sarge", CREATURE_LONGBOWMAN, herocr );
        sleep(1);
        break
     end;
    end;
end;

startThread(replacecreature);

Я бы так написал. Разве что если нужно, чтобы лучников становилось 1 шт, тогда herocr в строчке AddHeroCreatures заменить на 1
32MeTpa вне форума
Ответить с цитированием
#155
Старый 24.11.2017, 17:42
  #155
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

MentНу, а так попрошу предоставить, что пишет консоль. Как её включить, есть в faq.
консоль действительно ругается, вот так



сейчас буду пытаться разобраться что это значит
zahar0z вне форума
Ответить с цитированием
#156
Старый 24.11.2017, 17:48
  #156
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

О да, там не = в проверке, а == должно стоять. Как в скрипте 32MeTpa
К слову, его скрипт должен заработать.
Ment вне форума
Ответить с цитированием
#157
Старый 24.11.2017, 18:09
  #157
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

32MeTpa
	function replacecreature ()
    while (1) do
    sleep(2);
    local herocr = GetHeroCreatures( "Sarge", CREATURE_ARCHER );
    if herocr >= 1 and 
GetTownBuildingLevel("cheast_town", TOWN_BUILDING_DWELLING_2 ) == 2 then
        RemoveHeroCreatures( "Sarge", CREATURE_ARCHER, herocr );
        AddHeroCreatures( "Sarge", CREATURE_LONGBOWMAN, herocr );
        sleep(1);
        break
     end;
    end;
end;

startThread(replacecreature);

Работает замечательно, всем огромное спасибо.
Только пара маленьких вопросов, почему == а не =?
И что нужно сделать, чтобы скрипт работал постоянно (пока возведено строение), а не один раз?
Нужно что-то сделать с этой строчкой "while (1) do", я правильно догадываюсь?
zahar0z вне форума
Ответить с цитированием
#158
Старый 24.11.2017, 18:11
  #158
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

почему == а не =?
Для присваивания значения одно равно, для операции сравнения -- два.
И что нужно сделать, чтобы скрипт работал постоянно (пока возведено строение), а не один раз?
Каждый день, что ли? Ну, тогда можно поставить Trigger(NEW_DAY_TRIGGER,...). Иначе я Вас не понял.
Если надо постоянно заменять лучников на арбалетчиков, просто уберите break из кода 32МеТра.
Ment вне форума
Ответить с цитированием
#159
Старый 25.11.2017, 13:44
  #159
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

MentЕсли надо постоянно заменять лучников на арбалетчиков, просто уберите break из кода 32МеТра.
Да именно это и надо. Понял. Благодарю.)

Добавлено через 19 часов 28 минут
Снова всем доброго времени суток.

Нужно решить ещё одну штуку, возможно ли скриптами или как-то ещё разрешить бесконечное строительство, а не одно строение в день (желательно в конкретном городе, но если не возможно то допустимо и во всех городах)?

Ну и продолжаю я тут экспериментировать со скриптами и заметил такую штуку. Скрипт на добавление/убирание существа при постройке определённого строения (как и другие скрипты я полагаю) срабатывает только после выхода из экрана города. Это создаёт некоторые неудобства для моей задумки.

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

Заранее спасибо за советы, вы мне тут очень помогаете.
zahar0z вне форума
Ответить с цитированием
#160
Старый 25.11.2017, 21:02
  #160
^
32MeTpa
 
Аватар для 32MeTpa
📖
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
По умолчанию
Re: Скрипты для начинающих

zahar0zНужно решить ещё одну штуку, возможно ли скриптами или как-то ещё разрешить бесконечное строительство, а не одно строение в день (желательно в конкретном городе, но если не возможно то допустимо и во всех городах)?

Насколько мне известно - такое сделать нельзя, хотя может я просто не все хитрости знаю. Единственно, что на ум приходит - реализовать через кастомное походное заклинание talkbox с вариантами постройки зданий, но для этого довольно массивный скрипт нужен.

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

Тут все еще печальнее, в окне города работают только общеигровые функции типа random, sqrt и т.д., да 2 функции, вызывающиеся при найме героя или существ. Так что в городе, как мне кажется, вообще ничего сделать нельзя.
32MeTpa вне форума
Ответить с цитированием
#161
Старый 27.11.2017, 15:46
  #161
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Понятно, ещё такой вопрос можно ли привязать активацию скрипта к кастомной кнопке? Или это работает только с кастомными походными заклинаниями?
zahar0z вне форума
Ответить с цитированием
#162
Старый 28.11.2017, 17:13
  #162
^
ssdeathtt
📖
Регистрация: 14.03.2017
Сообщения: 6
Регистрация: 14.03.2017
Сообщения: 6
По умолчанию
Re: Скрипты для начинающих

Здравствуйте! Помогите пожалуйста как сделать так, чтобы когда ты своим героем подошел к войску (К примеру ангелу) вылезло сообщение, а потом уже они к тебе присоединились? И еще если можно, чтобы войско (Ангел) сделал действие "Воскрешение" или как он празднует победу в сражение (Поднимая руку вверх)...
ssdeathtt вне форума
Ответить с цитированием
#163
Старый 13.01.2018, 12:45
  #163
^
Bendy
📖
Регистрация: 08.01.2018
Сообщения: 4
Регистрация: 08.01.2018
Сообщения: 4
По умолчанию
Re: Скрипты для начинающих

А как сделать так ,чтобы герою раз в неделю приходил караван с сообщением.И еще как сделать так,чтобы какое-то строение горело ,к примеру хижина крестьян.
Bendy вне форума
Ответить с цитированием
#164
Старый 20.01.2018, 03:33
  #164
^
Drmax4
📖
Регистрация: 20.01.2018
Сообщения: 1
Регистрация: 20.01.2018
Сообщения: 1
По умолчанию
Re: Скрипты для начинающих

Доброго времени суток. Хотелось бы, чтобы кто-нибудь рассказал о том, как сделать так, чтобы при определенном игровом событии, игроку(1) переходил в собственность другой игрок(2), (конкретно в моем случае - при проигрыше игрока(1)). И как на время жизни игрока(1) сделать игрока(2) неактивным?
Drmax4 вне форума
Ответить с цитированием
#165
Старый 20.01.2018, 19:34
  #165
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Drmax4, в качестве идеи, которую можно попробовать (скрипт получается совсем не простым):
1) Убрать из главных квестов задания наподобие "герой должен выжить". В этом случае при потере всех героев и замков игра не должна выдавать проигрыш. (вроде бы была такая возможность, если я ничего не путаю). Если не получится, то тогда придётся придумывать другое событие для перехода игрока.
2) Отловить событие проигрыша игрока. Например по триггеру окончания боя (COMBAT_RESULTS_TRIGGER) проверять сколько у него в наличии героев (GetPlayerHeroes) и замков (GetObjectOwner для всех замков на карте).
3) Второй игрок в это время может находится с отключенным ИИ (EnableHeroAI), без замков и так, чтобы его ход вообще не показывался (DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes). Или просто выключить ИИ героев, а замок пусть стоит без дела. А ещё можно поместить героев в резерв (в редакторе карт есть такая функция). Тут я не уверен, что именно вы хотите получить на выходе.
4) По нужному событию герои, замки и что нужно ещё переводится в собственность игрока 1 функцией SetObjectOwner.
Jack_of_shadows вне форума
Ответить с цитированием
Ответ
Страница 11 из 28


Опции темы



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


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

Яндекс цитирование    Top.Mail.Ru