Скрипты для начинающих - Страница 11 - Форум 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. Так же здесь обсуждаем картостроительство.

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

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

Поправил у себя код. Там ещё я sleep пропустил, растяпа.
__________________
"Если во имя идеала человеку приходится делать подлости, то цена этому идеалу — дерьмо."




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

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

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

Ладно. Тогда не забыть sleep и включить консоль.
__________________
"Если во имя идеала человеку приходится делать подлости, то цена этому идеалу — дерьмо."




Ment вне форума   Ответить с цитированием
Старый 24.11.2017, 17:28   #154
32MeTpa
 
Аватар для 32MeTpa
Регистрация: 06.08.2011
Сообщения: 150
32MeTpa - уровень боевого духа
По умолчанию 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 вне форума   Ответить с цитированием
Старый 24.11.2017, 17:42   #155
zahar0z
Регистрация: 09.06.2017
Сообщения: 39
zahar0z - уровень боевого духа
По умолчанию Re: Скрипты для начинающих

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



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

О да, там не = в проверке, а == должно стоять. Как в скрипте 32MeTpa
К слову, его скрипт должен заработать.
__________________
"Если во имя идеала человеку приходится делать подлости, то цена этому идеалу — дерьмо."




Ment вне форума   Ответить с цитированием
Старый 24.11.2017, 18:09   #157
zahar0z
Регистрация: 09.06.2017
Сообщения: 39
zahar0z - уровень боевого духа
По умолчанию 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 вне форума   Ответить с цитированием
Старый 24.11.2017, 18:11   #158
Ment
 
Аватар для Ment
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21537
Ment - уровень боевого духа Ment - уровень боевого духа Ment - уровень боевого духа
По умолчанию Re: Скрипты для начинающих

Цитата:
почему == а не =?
Для присваивания значения одно равно, для операции сравнения -- два.
Цитата:
И что нужно сделать, чтобы скрипт работал постоянно (пока возведено строение), а не один раз?
Каждый день, что ли? Ну, тогда можно поставить Trigger(NEW_DAY_TRIGGER,...). Иначе я Вас не понял.
Если надо постоянно заменять лучников на арбалетчиков, просто уберите break из кода 32МеТра.
__________________
"Если во имя идеала человеку приходится делать подлости, то цена этому идеалу — дерьмо."




Ment вне форума   Ответить с цитированием
Старый 25.11.2017, 13:44   #159
zahar0z
Регистрация: 09.06.2017
Сообщения: 39
zahar0z - уровень боевого духа
По умолчанию Re: Скрипты для начинающих

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Опции темы

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

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


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


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

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

Авторские права - Copyright © 2002-2008 www.HeroesWorld.ru All rights reserved


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