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

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

Аватар пользователя
#1322
хм, странно. Если прописывать такой код, то ошибки нет. Сейчас попробую с консолью еще раз поиграть и выложить всю функцию. Наверное, не к тому придрался...

Добавлено через 32 минуты
да, понятно, ошибка была скорее всего из-за того, что я удалил объект, а затем пытался к нему привязать touch триггер.

А вот такой вопрос: как быть с выдачей герою определенных навыков?
Во-первых, я битый час потратил, пытаясь найти Огненные Войны (Магия призыва на элемов). Вроде, нашел у demon perk, и то не уверен. Так теперь еще не знаю, как его правильно установить. Пишу так:
if HasHeroSkill ('Berein' , 12) == nil then
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 53)
GiveHeroSkill ('Berein' , 97)
end

Дает только усовершенствованную магию призыва...Как быть?

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1323
Heroist
хм, странно. Если прописывать такой код, то ошибки нет. Сейчас попробую с консолью еще раз поиграть и выложить всю функцию. Наверное, не к тому придрался...

Добавлено через 32 минуты
да, понятно, ошибка была скорее всего из-за того, что я удалил объект, а затем пытался к нему привязать touch триггер.

А вот такой вопрос: как быть с выдачей герою определенных навыков?
Во-первых, я битый час потратил, пытаясь найти Огненные Войны (Магия призыва на элемов). Вроде, нашел у demon perk, и то не уверен. Так теперь еще не знаю, как его правильно установить. Пишу так:
if HasHeroSkill ('Berein' , 12) == nil then
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 53)
GiveHeroSkill ('Berein' , 97)
end

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1324
спасибо, помогло.

Добавлено через 7 минут
ну, и (очень надеюсь) последний вопрос на сегодня:

Ув. RedHeavenHero - вот немного видоизмененный код вашей функции на превращение двеллингов людей.
Собственно говоря, я бы хотел, чтобы все это великолепие начинало свое работу, когда небольшая и скромная переменная, dwel её название в скрипте, приравнивалась к гордой и непокорной единице (dwel = 1). Однако, в следствии моего тугого соображения и полного не знания данных функций скрипта, никак у меня не получается совладать и подчинить своей воле непокорный цикл с for и тп и тд. Прикладываю код сейчасшней функции и надеюсь на скорую помощь. =)
function starthut()
if dwel == 1 then
for i,hut in GetObjectNamesByType('PEASANT_HUT') do
SetObjectEnabled(hut, nil)
Trigger(4, hut, 'replace_hut')
end
end
end
startThread(starthut)

function replace_hut(hero, hut)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut, nil)
SetObjectEnabled(hut, 1)
ReplaceDwelling(hut, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut)
end
end

----------------------------------------

function starthut2()
if dwel == 1 then
for i,hut2 in GetObjectNamesByType('ARCHERS_HOUSE') do
SetObjectEnabled(hut2, nil)
Trigger(4, hut2, 'replace_hut2')
end
end
end
startThread(starthut2)

function replace_hut2(hero, hut2)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut2, nil)
SetObjectEnabled(hut2, 1)
ReplaceDwelling(hut2, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut2)
end
end

----------------------------------------

function starthut3()
if dwel == 1 then
for i,hut3 in GetObjectNamesByType('BARRACKS') do
SetObjectEnabled(hut3, nil)
Trigger(4, hut3, 'replace_hut3')
end
end
end
startThread(starthut3)

function replace_hut3( hero , hut3)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut3, nil)
SetObjectEnabled(hut3, 1)
ReplaceDwelling(hut3, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut3)
end
end
--------------------------------------

function starthut4()
if dwel == 1 then
for i,hut4 in GetObjectNamesByType('HEAVEN_MILITARY_POST') do
SetObjectEnabled(hut4, nil)
Trigger(4, hut4, 'replace_hut4')
end
end
end
startThread(starthut4)

function replace_hut4(hero, hut4)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut4, nil)
SetObjectEnabled(hut4, 1)
ReplaceDwelling(hut4, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut4)
end
end

Whatever
Аватар пользователя
#1325
1)Можно ли заблокировать регион для определённого героя?
2)Можно ли чтобы герой не мог отдать свою армию, но мог забрать к себе?
И всё для 1.6
502 Bad Gateway
__________________________________
nginx/0.8.54
Аватар пользователя
#1326
для версии 1.6??????Зачем???

1) Ну, поставить проверку на этот регион, и если там нужный герой - то блокировать регион. А когда герой из него выходит - разблокировать...
2) Сложнее...Наверно, да, с помощью ВЕЧНОГО определения кол существ в армии. Хотя, нет, бред, армия еще и в боях тратится...

Whatever
Аватар пользователя
#1327
Правильно ли я понимаю, что lua в Героях 5 кастрирован до определённого перечня функций, заданных разработчиками игры, и не поддерживает встроенные функции, такие как setmetatable, package и module? Т.е. в лучшем случае можно создавать статические классы без поддержки создания типов (объектов-экземпляров класса)? А модули имитировать через функцию doFile?
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
В ответ пользователю Heroist
Аватар пользователя
#1328
Heroist
спасибо, помогло.

Добавлено через 7 минут
ну, и (очень надеюсь) последний вопрос на сегодня:

Ув. RedHeavenHero - вот немного видоизмененный код вашей функции на превращение двеллингов людей.
Собственно говоря, я бы хотел, чтобы все это великолепие начинало свое работу, когда небольшая и скромная переменная, dwel её название в скрипте, приравнивалась к гордой и непокорной единице (dwel = 1). Однако, в следствии моего тугого соображения и полного не знания данных функций скрипта, никак у меня не получается совладать и подчинить своей воле непокорный цикл с for и тп и тд. Прикладываю код сейчасшней функции и надеюсь на скорую помощь. =)
function starthut()
if dwel == 1 then
for i,hut in GetObjectNamesByType('PEASANT_HUT') do
SetObjectEnabled(hut, nil)
Trigger(4, hut, 'replace_hut')
end
end
end
startThread(starthut)

function replace_hut(hero, hut)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut, nil)
SetObjectEnabled(hut, 1)
ReplaceDwelling(hut, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut)
end
end

----------------------------------------

function starthut2()
if dwel == 1 then
for i,hut2 in GetObjectNamesByType('ARCHERS_HOUSE') do
SetObjectEnabled(hut2, nil)
Trigger(4, hut2, 'replace_hut2')
end
end
end
startThread(starthut2)

function replace_hut2(hero, hut2)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut2, nil)
SetObjectEnabled(hut2, 1)
ReplaceDwelling(hut2, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut2)
end
end

----------------------------------------

function starthut3()
if dwel == 1 then
for i,hut3 in GetObjectNamesByType('BARRACKS') do
SetObjectEnabled(hut3, nil)
Trigger(4, hut3, 'replace_hut3')
end
end
end
startThread(starthut3)

function replace_hut3( hero , hut3)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut3, nil)
SetObjectEnabled(hut3, 1)
ReplaceDwelling(hut3, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut3)
end
end
--------------------------------------

function starthut4()
if dwel == 1 then
for i,hut4 in GetObjectNamesByType('HEAVEN_MILITARY_POST') do
SetObjectEnabled(hut4, nil)
Trigger(4, hut4, 'replace_hut4')
end
end
end
startThread(starthut4)

function replace_hut4(hero, hut4)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut4, nil)
SetObjectEnabled(hut4, 1)
ReplaceDwelling(hut4, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut4)
end
end
Если убрать проверку этой переменной (dwel) во всех стартовых функциях (starthut), то строения будут превращаться только, если это условие выполнится. До этого героя туда не пустят.
В триггерах можно было делать ссылку на одну функцию, а не на 4 одинаковых.

Добавлено через 4 минуты
Nargott
Правильно ли я понимаю, что lua в Героях 5 кастрирован до определённого перечня функций, заданных разработчиками игры, и не поддерживает встроенные функции, такие как setmetatable, package и module? Т.е. в лучшем случае можно создавать статические классы без поддержки создания типов (объектов-экземпляров класса)? А модули имитировать через функцию doFile?
Ну, да, можно и так сказать.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1329
RedHeavenHero - как раз в этом и проблема, что "до этого не пустят". Там на карте несколько хижин с собственными именами, хотелось бы, чтобы функция начала давать имена, триггировать и превращать только, когда я уже выполню все задания хижин - т.е - когда dwell = 1.

Добавлено через 47 минут
кстати, (с этого я всегда начинаю вопрос, да) , в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1330
Heroist
RedHeavenHero - как раз в этом и проблема, что "до этого не пустят". Там на карте несколько хижин с собственными именами, хотелось бы, чтобы функция начала давать имена, триггировать и превращать только, когда я уже выполню все задания хижин - т.е - когда dwell = 1.

Добавлено через 47 минут
кстати, (с этого я всегда начинаю вопрос, да) , в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)
То есть нужно, чтобы до того, как двел станет равным единице, все строения работали как обычно. И, как только двел=1, то все захваченные до этого строения превращаются, а на остальные накладывается триггер. Я прав?
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1331
в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)
Принципиальное отличие в том, что в мультиплеере боевые скрипты (действующие в бою) не работают.
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Аватар пользователя
#1332
RedHeavenHero - да, совершенно верно. Именно так мне и хотелось бы =)

Nargott - спасибо, догадывался, но не был уверен, а проверять лень. А все остальное, типа добавления армии, артефактов и тп работает?

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1333
function start_dwellings()
local t, n = {}, 0
for i, dwelling in GetObjectNamesByType('PEASANT_HUT') do
n = n + 1
t[n] = dwelling
end
for i, dwelling in GetObjectNamesByType('ARCHERS_HOUSE') do
n = n + 1
t[n] = dwelling
end
for i, dwelling in GetObjectNamesByType('BARRACKS') do
n = n + 1
t[n] = dwelling
end
for i, dwelling in GetObjectNamesByType('HEAVEN_MILITARY_POST') do
n = n + 1
t[n] = dwelling
end
for i, dwelling in t do
if GetObjectOwner(dwelling) == 1 then
ReplaceDwelling(dwelling, 4)
else
SetObjectEnabled(dwelling, nil)
Trigger(4, dwelling, 'replace_dwelling')
end
end
end

function replace_dwelling(hero, dwelling)
if hero == 'Berein' then
ReplaceDwelling(dwelling, 4)
SetObjectEnabled(dwelling, 1)
Trigger(4, dwelling, nil)
sleep()
MakeHeroInteractWithObject(hero, dwelling)
end
end
Вместо dwell = 1 вызываем функцию start_dwellings.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1334
startThread(start_dwellings) достаточно?

благодарю

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1335
Heroist
startThread(start_dwellings) достаточно?

благодарю
Да, достаточно. Или можно написать просто start_dwellings() в данном случае.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1336
Пробую ввести скрипт и карта перестаёт работать!!!!!!!!!!
Вылетели две карты. Скрипты этих несчастных карт:
obs = 0

function a ()
obs = obs + 1
end;

Trigger(NEW_DAY_TRIGGER,"a");

function b ()
QuestionBox(GetMapDataPath().."mrkobsgst","yes",nil);
end;

function yes
SetPlayerResource(1,6,-10000);
obs = obs + 10
end;

function c (heroname)
ShowFlyingSign({GetMapDataPath().."getobstxt",obs=obs},heroname);
end;

Trigger(OBJECT_TOUCH_TRIGGER,"mrkobs1","b");
Trigger(OBJECT_TOUCH_TRIGGER,"getobs1","c");

Второй скрипт не сохранился.

В начале этих карт какой- то странный файл "index.bin"

ЧТО ВСЁ ЭТО ЗНАЧИТ?:smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile35: :smile35: :smile35: :smile35: :smile35: :smile35: :smile35: :smile35: :smile35: :smile35: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile51: :smile45: :smile45: :smile45: :smile45: :smile45: :smile45: :smile45: :smile45: :smile45: :smile45: :smile33: :smile33: :smile33: :smile33: :smile33: :smile33: :smile33: :smile33: :smile33:
502 Bad Gateway
__________________________________
nginx/0.8.54

Статистика

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

Сейчас на сайте 6 пользователей 1514 гостей