Ñêðèïòû äëÿ íà÷èíàþùèõ - Ñòðàíèöà 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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ïî óìîë÷àíèþ
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ïî óìîë÷àíèþ
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ïî óìîë÷àíèþ
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
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ïî óìîë÷àíèþ
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
Ñîîáùåíèÿ: 515
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 08.09.2013
Ñîîáùåíèÿ: 515
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû äëÿ íà÷èíàþùèõ

Drmax4, в качестве идеи, которую можно попробовать (скрипт получается совсем не простым):
1) Убрать из главных квестов задания наподобие "герой должен выжить". В этом случае при потере всех героев и замков игра не должна выдавать проигрыш. (вроде бы была такая возможность, если я ничего не путаю). Если не получится, то тогда придётся придумывать другое событие для перехода игрока.
2) Отловить событие проигрыша игрока. Например по триггеру окончания боя (COMBAT_RESULTS_TRIGGER) проверять сколько у него в наличии героев (GetPlayerHeroes) и замков (GetObjectOwner для всех замков на карте).
3) Второй игрок в это время может находится с отключенным ИИ (EnableHeroAI), без замков и так, чтобы его ход вообще не показывался (DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes). Или просто выключить ИИ героев, а замок пусть стоит без дела. А ещё можно поместить героев в резерв (в редакторе карт есть такая функция). Тут я не уверен, что именно вы хотите получить на выходе.
4) По нужному событию герои, замки и что нужно ещё переводится в собственность игрока 1 функцией SetObjectOwner.
Jack_of_shadows âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 11 èç 28


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 07:57.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru