Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
12 лет назад
а были же где-то всплывающие иконки монстров? на каком-то объекте? или мне казалось...
Аватар пользователя
12 лет назад
Были (вечное рабство, драконий комплект), но они никак не связаны со скриптами.
Аватар пользователя
12 лет назад
блин, чего-то не работает скрипт.
function burn()
----
for i, hut in GetObjectNamesByType('PEASANT_HUT') do
Trigger(4, hut, 'hutF')
end
-----
startThread(burn2)
end

startThread(burn)

---

fires = 0

function burn2(hero, hut)
while 1 do
sleep(1)
if GetCurrentPlayer() == 1 and fires == 0 then
SetObjectEnabled(hut , nil)
fires = 1
elseif GetCurrentPlayer() == 2 or GetCurrentPlayer() == 3 or GetCurrentPlayer() == 4 then
SetObjectEnabled(hut , true)
fires = 0
end
end
end

----

hutt = 0

----

fire2 = 0

function hutF(hero, hut)
if GetCurrentPlayer() == 1 and fire2 == 0 then
sleep(1)
QuestionBox ( "/Maps/SingleMissions/NewRandomMap 43/burn1.txt" , 'burnok' , 'burnno');
sleep(1)
end
end

function burnok(hero, hut)
sleep(1)
BlockGame()
--burn hut effects
hutt = hutt + 1
Trigger(4, hut, nil)
UnblockGame()
end

function burnno(hero, hut)
sleep(1)
fire2 = 1
SetObjectEnabled(hut, true)
sleep(1)
MakeHeroInteractWithObject('Nymus' , hut)
sleep(1)
SetObjectEnabled(hut, nil)
fire2 = 0
end


собственно, главное, что меня интересует, это как заставить скрипт считывать имя hut и использовать его в других ф-иях. Если пишу в скобках после названия ф-ии, почему-то не пашет(
на переменные можно не обращать внимания, просто ф-ий, где они будут, пока еще нет.
пробовал через GameVar вывести hut, но оно его не считывает.
ну и в кавычках вообще перестает видеть объект(
Аватар пользователя
12 лет назад
Сохрани hut в какую-нибудь глобальную переменную с другим именем, например, current_hut.
А вообще аргументы в функции передаются как обычно
функция(список_аргументов)
или
startThread(функция, список_аргументов)

Добавлено через 41 секунду
И, если хочешь делать MakeHeroInteractWithObject, то триггер надо отключать тоже.

Добавлено через 1 минуту
Кстати, а зачем столько минусов между строк?
Аватар пользователя
12 лет назад
SetGameVar ('hut2' , hut)
---
hut3 = GetGameVar('hut2')
---
SetObjectEnabled('hut3', true)

так правильно? (кавычки там и все такое)

Добавлено через 55 секунд
Кстати, а зачем столько минусов между строк?

надо. я уставший и начинаю путаться, не могу отличить одно от другого. Вот и ставлю enterы и минусики)))
Аватар пользователя
12 лет назад
SetGameVar - это общеигровая переменная, а не глобальная. Глобальная, это та, что не локальная.
В данном скрипте глобальными переменными будут являться burn, fires, burn2, hutt, fire2, hutF, burnok, burnno.
надо. я уставший и начинаю путаться, не могу отличить одно от другого. Вот и ставлю enterы и минусики)))
Попробуй каждый следующий уровень (после слов function ...(), do, then и перевода на новую строку ставить таб вначале).
Аватар пользователя
12 лет назад
а как мне hut превратить в глобальную?
Аватар пользователя
12 лет назад
Она глобальная по умолчанию.
Аватар пользователя
12 лет назад
ааа.

Ладно.

Ну и почему тогда не работает-то?))
Аватар пользователя
12 лет назад
Ещё: startThread(burn2) нужно писать внутри цикла.
В ответ пользователю RedHeavenHero
Аватар пользователя
12 лет назад
RedHeavenHero
Ещё: startThread(burn2) нужно писать внутри цикла.

ага, это просмотрел. Исправим.

Добавлено через 6 минут
Так и не понял, почему тогда не работает. Раз ф-ия глобальная, значит кавычки не нужны? Но все-равно enabled не ставитцо.
Аватар пользователя
12 лет назад
Сейчас посмотрю, вникну в суть и выложу свою версию скрипта. Ок?
Аватар пользователя
12 лет назад
Буду очень признателен) Если что, я хотел еще подобного рода ф-ии сделать с башнями лучников, бараками и хэйвенским постом.
В ответ пользователю Heroist
Аватар пользователя
12 лет назад
Пока так. Если будут ошибки, говори какие, будем исправлять. ;)
HAVEN_DWLS = {}
hutt = 0

function burn()
for i, dw_type in {"PEASANT_HUT", "ARCHERS_HOUSE", "BARRACKS", "HEAVEN_MILITARY_POST"} do
for j, dw in GetObjectNamesByType(dw_type) do
HAVEN_DWLS[dw] = "откл"
SetObjectEnabled(dw, nil)
Trigger(4, dw, "BurnHavenDwelling")
end
end
startThread(burn2)
end

startThread(burn)

function burn2()
while 1 do
repeat
sleep()
until IsPlayerCurrent(1)
for dwelling, state in HAVEN_DWLS do
if state == "вкл" then
HAVEN_DWLS[dwelling] = "откл"
SetObjectEnabled(dwelling, nil)
Trigger(4, dwelling, "BurnHavenDwelling")
end
end
repeat
sleep()
until not IsPlayerCurrent(1)
for dwelling, state in HAVEN_DWLS do
if state == "откл" then
HAVEN_DWLS[dwelling] = "вкл"
SetObjectEnabled(dwelling, 1)
Trigger(4, dwelling, nil)
end
end
end
end

function BurnHavenDwelling(hero, hut)
if GetCurrentPlayer() == 1 then
QuestionBox ( "/Maps/SingleMissions/NewRandomMap 43/burn1.txt" , 'burnok("'..hut..'")' , 'burnno("'..hut..'")');
end
end

function burnok(hut)
Trigger(4, hut, nil)
hutt = hutt + 1
HAVEN_DWLS[hut] = nil
end

function burnno(hut)
SetObjectEnabled(hut, 1)
Trigger(4, hut, nil)
sleep(1)
MakeHeroInteractWithObject('Nymus' , hut)
sleep(1)
SetObjectEnabled(hut, nil)
Trigger(4, hut, "BurnHavenDwelling")
end
Аватар пользователя
12 лет назад
а что должно быть на месте "вкл" и "откл" ?

Статистика

Приветствуем новейшего участника: recijeb