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

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

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

Ответ
Страница 192 из 260
 
Опции темы
#2866
Старый 17.01.2019, 22:51
  #2866
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

По моему коду выше: с двелами в подземке , которые перестраиваются в крестьянские дома, беда- они смещаются и стают недоступными... Как это решить?
AlekseyS вне форума
Ответить с цитированием
#2867
Старый 17.01.2019, 23:23
  #2867
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

гномьи двеллы перестраиваются? если так, то у них blocked tiles отличаются от прочих двеллов 1 уровня, поэтому такая проблема возникает. Точно не знаю как решить, либо изменять эти тайлы у гномьего двелла, либо не перестраивать, а уничтожать старый двелл(RazeBuilding) и создавать новый(CreateDwelling).
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2868
Старый 18.01.2019, 19:20
  #2868
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Gerterгномьи двеллы перестраиваются?
Да, именно они.
Gerterесли так, то у них blocked tiles отличаются от прочих двеллов 1 уровня, поэтому такая проблема возникает. Точно не знаю как решить, либо изменять эти тайлы у гномьего двелла, либо не перестраивать, а уничтожать старый двелл(RazeBuilding) и создавать новый(CreateDwelling).

А вот как определить в моем коде, что это двелы 1 уровня? (Другие перестраиваются нормально)
AlekseyS вне форума
Ответить с цитированием
#2869
Старый 18.01.2019, 19:27
  #2869
^
AstralLein
 
Аватар для AstralLein
📖
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
По умолчанию
Re: Скрипты

Смени тайлы гномьим двеллингам. Я так делал в Плате за любовь.
__________________
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
AstralLein вне форума
Ответить с цитированием
#2870
Старый 18.01.2019, 19:33
  #2870
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

AstralLeinСмени тайлы гномьим двеллингам. Я так делал в Плате за любовь.

Понял
AlekseyS вне форума
Ответить с цитированием
#2871
Старый 18.01.2019, 20:55
  #2871
^
AstralLein
 
Аватар для AstralLein
📖
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
По умолчанию
Re: Скрипты

В принципе, могу скинуть уже измененные файлы гномьих двеллингов.

Добавлено через 57 секунд
Так, как работает random?

Точнее,

random (3) - это какой промежуток? От 0 до 2 или от 0 до 3?
__________________
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
AstralLein вне форума
Ответить с цитированием
#2872
Старый 18.01.2019, 20:56
  #2872
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

AstralLeinСмени тайлы гномьим двеллингам. Я так делал в Плате за любовь.

Не получилось. Возвращаюсь к вопросу:
как определить в моем коде, что это двелы 1 уровня?
(Не обращайте внимание, что тут эльфийские строения)

	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 вне форума
Ответить с цитированием
#2873
Старый 18.01.2019, 20:56
  #2873
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

random (3) - это какой промежуток? От 0 до 2 или от 0 до 3?
0-2

по двеллам - FORTRESS_DEFENDERS - это, если не ошибаюсь, тип гномьего 1 двелла
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2874
Старый 18.01.2019, 21:04
  #2874
^
AstralLein
 
Аватар для AstralLein
📖
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3900
По умолчанию
Re: Скрипты

Gerter0-2

по двеллам - FORTRESS_DEFENDERS - это, если не ошибаюсь, тип гномьего 1 двелла

Спасибо)
__________________
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

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

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
AstralLein вне форума
Ответить с цитированием
#2875
Старый 18.01.2019, 21:13
  #2875
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Попытался так записать, но ничего не происходит:

	function TransformDwelling(hero, hut)
if GetCurrentPlayer() == 1  then
if hut =="FORTRESS_DEFENDERS" then
QuestionBox (path.."transform.txt" , 'transformnok("'..hut..'")' )
end
end
end
AlekseyS вне форума
Ответить с цитированием
#2876
Старый 18.01.2019, 21:18
  #2876
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

не, здесь hut - это имя объекта. По типу можно распределить в функции dwellings(), на объекты типа FORTRESS_DEFENDERS навешивать триггер отличный от остальных. Если проверять в самой функции трансформа, то как то так:
	if contains(GetObjectNamesByType('FORTRESS_DEFENDERS'), hut) then
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2877
Старый 18.01.2019, 21:27
  #2877
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Gerterне, здесь hut - это имя объекта. По типу можно распределить в функции dwellings(), на объекты типа FORTRESS_DEFENDERS навешивать триггер отличный от остальных. Если проверять в самой функции трансформа, то как то так:
	if contains(GetObjectNamesByType('FORTRESS_DEFENDERS'), hut) then

Работает! Спасибо огромное
AlekseyS вне форума
Ответить с цитированием
#2878
Старый 31.01.2019, 23:57
  #2878
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

Пытаюсь реализовать такую фишку:
1. В определенный момент сделать сохранение на карте через Save()
2. Запустить другую карту через WarpToMap()
3. С другой карты загрузить сделанный сейв.

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

Сделанный руками сейв или автосейв при этом загружается абсолютно нормально. Думал, дело в том, что сейв нужно прописать в ресурсах карты, но это ничего не меняет(
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2879
Старый 09.02.2019, 19:10
  #2879
^
AlekseyS
📖
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
Регистрация: 02.04.2018
Адрес: Минск
Сообщения: 203
По умолчанию
Re: Скрипты

Вот код:
	Ornel=0
Ornel_d=0
--
Gl=0
Gl_d=0
--
Dug=0
Dug_d=0
--
Airi=0
Airi_d=0

Mive=0
Mive_d=0

function DeathHavenHero(hero)
if hero== Ornella then
Ornel_d=1
Ornel=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath(Ornella,0)
print("Глория убита")
end
if hero==Glen then
Gl_d=1
Gl=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath(Glen,0)
end
--
if hero=="Orrin" then
Dug_d=1
Dug=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Orrin",0)
end

if hero=="Ving" then
Airi_d=1
Airi=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Ving",0)
end
if hero=="Maeve" then
Mive_d=1
Mive=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Maeve",0)
end
end

Trigger (PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, "DeathHavenHero")

dayd={8,7,6,5}

function NewDay()
if GetDate(MONTH)==2 and GetDate(WEEK)==2 then
coef={1.5,2,2.5,3}
end
if Ornel_d==1 and GetDate(DAY)-Ornel== dayd[diff] then
MakeHeroReturnToTavernAfterDeath(Ornella,1,1)
Ornel_d=0
print("Глория готова")
end

if Gl_d==1 and GetDate(DAY)- Gl== dayd[diff] then
MakeHeroReturnToTavernAfterDeath(Glen,1,1)
Gl_d=0
print("Глен готов")
end

if Dug_d==1 and GetDate(DAY)- Dug== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Orrin",1,1)
Dug_d=0
print("Дугал готов")
end

if Airi_d==1 and GetDate(DAY)- Airi== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Ving",1,1)
Airi_d=0
print("Айрис готова")
end

if Mive_d==1 and GetDate(DAY)- Mive== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Maeve",1,1)
Mive_d=0
print("Мив готова")
end
end

Trigger(0,"NewDay")

Попытался сделать так, чтобы герои возрождались в таверне спустя время, но теперь ни один герой не возрождается. В консоле ошибок нет... В чем собственно ошибка?
AlekseyS вне форума
Ответить с цитированием
#2880
Старый 09.02.2019, 19:21
  #2880
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

AlekseySВот код:
	Ornel=0
Ornel_d=0
--
Gl=0
Gl_d=0
--
Dug=0
Dug_d=0
--
Airi=0
Airi_d=0

Mive=0
Mive_d=0

function DeathHavenHero(hero)
if hero== Ornella then
Ornel_d=1
Ornel=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath(Ornella,0)
print("Глория убита")
end
if hero==Glen then
Gl_d=1
Gl=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath(Glen,0)
end
--
if hero=="Orrin" then
Dug_d=1
Dug=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Orrin",0)
end

if hero=="Ving" then
Airi_d=1
Airi=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Ving",0)
end
if hero=="Maeve" then
Mive_d=1
Mive=GetDate(DAY)
MakeHeroReturnToTavernAfterDeath("Maeve",0)
end
end

Trigger (PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, "DeathHavenHero")

dayd={8,7,6,5}

function NewDay()
if GetDate(MONTH)==2 and GetDate(WEEK)==2 then
coef={1.5,2,2.5,3}
end
if Ornel_d==1 and GetDate(DAY)-Ornel== dayd[diff] then
MakeHeroReturnToTavernAfterDeath(Ornella,1,1)
Ornel_d=0
print("Глория готова")
end

if Gl_d==1 and GetDate(DAY)- Gl== dayd[diff] then
MakeHeroReturnToTavernAfterDeath(Glen,1,1)
Gl_d=0
print("Глен готов")
end

if Dug_d==1 and GetDate(DAY)- Dug== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Orrin",1,1)
Dug_d=0
print("Дугал готов")
end

if Airi_d==1 and GetDate(DAY)- Airi== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Ving",1,1)
Airi_d=0
print("Айрис готова")
end

if Mive_d==1 and GetDate(DAY)- Mive== dayd[diff] then
MakeHeroReturnToTavernAfterDeath("Maeve",1,1)
Mive_d=0
print("Мив готова")
end
end

Trigger(0,"NewDay")

Попытался сделать так, чтобы герои возрождались в таверне спустя время, но теперь ни один герой не возрождается. В консоле ошибок нет... В чем собственно ошибка?
Функция MakeHeroReturnToTavernAfterDeath только устанавливает внутренний флаг героя, чтобы он сразу после смерти возвращался в таверну. У вас в момент смерти флаг стоит в состоянии по умолчанию, то есть "не возвращать в таверну". После прошедшего срока установка флага в положение "возвращать" не создаст героя чудесным образом ни у кого в таверне хотя бы потому, что игра даже не понимает, в таверну какого игрока класть этого героя, он ведь мертв и никому не принадлежит.

Если нужно возрождение героев после некоторого срока после их смерти, можно зарезервировать их за игроком и выставлять по мере необходимости функцией DeployReserveHero.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
Ответ
Страница 192 из 260


Опции темы



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


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

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