По моему коду выше: с двелами в подземке , которые перестраиваются в крестьянские дома, беда- они смещаются и стают недоступными... Как это решить?
Сообщения от Скрипты
гномьи двеллы перестраиваются? если так, то у них blocked tiles отличаются от прочих двеллов 1 уровня, поэтому такая проблема возникает. Точно не знаю как решить, либо изменять эти тайлы у гномьего двелла, либо не перестраивать, а уничтожать старый двелл(RazeBuilding) и создавать новый(CreateDwelling).
гномьи двеллы перестраиваются?
если так, то у них blocked tiles отличаются от прочих двеллов 1 уровня, поэтому такая проблема возникает. Точно не знаю как решить, либо изменять эти тайлы у гномьего двелла, либо не перестраивать, а уничтожать старый двелл(RazeBuilding) и создавать новый(CreateDwelling).
А вот как определить в моем коде, что это двелы 1 уровня? (Другие перестраиваются нормально)
Смени тайлы гномьим двеллингам. Я так делал в Плате за любовь.
Смени тайлы гномьим двеллингам. Я так делал в Плате за любовь.
Понял
В принципе, могу скинуть уже измененные файлы гномьих двеллингов.
Добавлено через 57 секунд
Так, как работает random?
Точнее,
random (3) - это какой промежуток? От 0 до 2 или от 0 до 3?
Добавлено через 57 секунд
Так, как работает random?
Точнее,
random (3) - это какой промежуток? От 0 до 2 или от 0 до 3?
Смени тайлы гномьим двеллингам. Я так делал в Плате за любовь.
Не получилось. Возвращаюсь к вопросу:
как определить в моем коде, что это двелы 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
random (3) - это какой промежуток? От 0 до 2 или от 0 до 3?
по двеллам - FORTRESS_DEFENDERS - это, если не ошибаюсь, тип гномьего 1 двелла
0-2
по двеллам - FORTRESS_DEFENDERS - это, если не ошибаюсь, тип гномьего 1 двелла
Спасибо)
Попытался так записать, но ничего не происходит:
function TransformDwelling(hero, hut)
if GetCurrentPlayer() == 1 then
if hut =="FORTRESS_DEFENDERS" then
QuestionBox (path.."transform.txt" , 'transformnok("'..hut..'")' )
end
end
end
не, здесь hut - это имя объекта. По типу можно распределить в функции dwellings(), на объекты типа FORTRESS_DEFENDERS навешивать триггер отличный от остальных. Если проверять в самой функции трансформа, то как то так:
if contains(GetObjectNamesByType('FORTRESS_DEFENDERS'), hut) then
не, здесь hut - это имя объекта. По типу можно распределить в функции dwellings(), на объекты типа FORTRESS_DEFENDERS навешивать триггер отличный от остальных. Если проверять в самой функции трансформа, то как то так:if contains(GetObjectNamesByType('FORTRESS_DEFENDERS'), hut) then
Работает! Спасибо огромное :smile20:
Пытаюсь реализовать такую фишку:
1. В определенный момент сделать сохранение на карте через Save()
2. Запустить другую карту через WarpToMap()
3. С другой карты загрузить сделанный сейв.
При загрузке сейва, неважно, руками или через Load() игра вылетает, без каких-либо ошибок, просто вылет на рабочий стол. Мб кто-нибудь знает, это задуманная механика или как-то можно исправить?
Сделанный руками сейв или автосейв при этом загружается абсолютно нормально. Думал, дело в том, что сейв нужно прописать в ресурсах карты, но это ничего не меняет(
1. В определенный момент сделать сохранение на карте через Save()
2. Запустить другую карту через WarpToMap()
3. С другой карты загрузить сделанный сейв.
При загрузке сейва, неважно, руками или через Load() игра вылетает, без каких-либо ошибок, просто вылет на рабочий стол. Мб кто-нибудь знает, это задуманная механика или как-то можно исправить?
Сделанный руками сейв или автосейв при этом загружается абсолютно нормально. Думал, дело в том, что сейв нужно прописать в ресурсах карты, но это ничего не меняет(
Вот код:
Попытался сделать так, чтобы герои возрождались в таверне спустя время, но теперь ни один герой не возрождается. В консоле ошибок нет... В чем собственно ошибка?
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")Попытался сделать так, чтобы герои возрождались в таверне спустя время, но теперь ни один герой не возрождается. В консоле ошибок нет... В чем собственно ошибка?
Вот код: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")
Попытался сделать так, чтобы герои возрождались в таверне спустя время, но теперь ни один герой не возрождается. В консоле ошибок нет... В чем собственно ошибка?
Если нужно возрождение героев после некоторого срока после их смерти, можно зарезервировать их за игроком и выставлять по мере необходимости функцией DeployReserveHero.
Статистика
Приветствуем новейшего участника:
recijeb
Сейчас на сайте 8 пользователей 1253 гостей
Посетители сегодня 32
- Валера 111
- Граф Орлов
- Джек
- Драккошка
- Дугал
- Злобный Ящур
- Небо
- Нэйко
- Саргон
- ALVYDAS
- Arandor
- AstralLein
- burymm
- Dark Jack
- dotahcxun
- elizbar1967
- fktifzobr@mail.ru
- Golvek
- Happy Life
- Heroist
- Hottler
- HwKeeper
- IchGViji
- kcfgogbfalgfl
- LifeForm
- Narron
- OrnsteinDragonslayer
- PingWing
- Ple-Sen
- Sir Syddan
- Siverfale
- Valery59