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

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

Аватар пользователя
Добавлено через 8 минут

function Start()
hero = GetAttackerHero
UnitCastGlobalSpell(hero, 54)
end

пишет в панели "wrong type of argument 1 when calling function UnitGlobalCast" , что не так?

Whatever
В ответ пользователю Heroist
Аватар пользователя
Heroist
Добавлено через 8 минут

function Start()
hero = GetAttackerHero
UnitCastGlobalSpell(hero, 54)
end

пишет в панели "wrong type of argument 1 when calling function UnitGlobalCast" , что не так?
После GetAttackerHero должны стоять скобки (). Эта функция всегда возвращает 'attacker-hero' так что можно её не использовать.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

А можно ли сделать случайный выбор заклинания? Сейчас поясню:

function Start()
hero = GetAttackerHero ()
cast = random (5)
if cast == 0 then
UnitCastGlobalSpell(hero, 54)
elseif cast == 1 then
UnitCastGlobalSpell(hero, 24)
elseif cast == 2 then
UnitCastGlobalSpell(hero, 25)
elseif cast == 3 then
UnitCastGlobalSpell(hero, 28)
elseif cast == 4 then
UnitCastGlobalSpell(hero, 29)
elseif cast == 5 then
UnitCastGlobalSpell(hero, 23)
end
end

?

Whatever
Аватар пользователя
ай-ай-ай, жалко. А как же быть, можно ли как-нибудь сделать случайный каст? Может быть вызывать random каждый день, а потом в баттл скрипте его запрашивать?

Whatever
В ответ пользователю Heroist
Аватар пользователя
Можно после каждой битвы:
function rndcast()
while 1 do
SetGameVar('spell', random(5))
local index = GetLastSavedCombatIndex()
while index == GetLastSavedCombatIndex() do
sleep(10)
end
end
end
startThread(rndcast)
А в боевом скрипте строчкой
cast = GetGameVar('spell')+0
заменить строку
cast = random (5)
Да, и random(5) вернёт случайное число от 0 до 4. То есть random(n) возвращает случайное число от 0 до n-1.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
да, теперь действительно кастует рандомно. Теперь, однако, ошибка в другом, никакие заклинание, кроме молитвы, он скастовать не может. Я ему прописываю вроде бы, массовые ускорение, каменную кожу и тп, а он пишет, что "hero can't cast #25, 24 и тп"
Вот вырезка скрипта опять таки:

if cast == 0 then
UnitCastGlobalSpell(hero, 54) --- молитва, работает
elseif cast == 1 then
UnitCastGlobalSpell(hero, 24) --- спешка
elseif cast == 2 then
UnitCastGlobalSpell(hero, 25) --- каменная кожа
elseif cast == 3 then
UnitCastGlobalSpell(hero, 28) --- bloodlust
elseif cast == 4 then
UnitCastGlobalSpell(hero, 29) --- отклонение
elseif cast == 5 then
UnitCastGlobalSpell(hero, 23) --- сила пророка
end

Поясните, пожалуйста, этот момент, в остальном вроде, наступает ясность.

Добавлено через 1 минуту
тьфу, простите, вопрос снят. надо mass spell ы было искать =)

Большое Вам спасибо.

Whatever
В ответ пользователю Heroist
Аватар пользователя
Первое, что приходит в голову - нехватка маны. На эти заклинания расходуется мана, и её должно хватать.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
да, кстати, нехватка маны тоже, проверил =)
А сделать заклинания бесплатными при этом автокасте возможно?

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
да, я уже сделал. Просто в начале боя узнавал сколько у него маны, потом давал 100, а после рандом каста возвращал столько, сколько было в начале боя. Большое Вам спасибо! Теперь мне стало нАмного понятнее =)

Добавлено через 3 часа 55 минут
назрел новый вопрос:

-А как сделать проверку на имя героя при старте боя?
Я записываю так:

hero = GetAttackerHero ()
if GetHeroName(hero) == 'Alaric' then

Но ничего не работает...Даже если записывать проще:

hero = GetAttackerHero ()
if hero == 'Alaric'

Ps: Я вас, наверно, уже достал, но очень хочется в этом разобраться)

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
Батл скрипт:

function Start()
hero = GetAttackerHero ()
if GetHeroName("hero") == 'Alaric' then
cast = GetGameVar('spell')+0
mana = GetUnitManaPoints (hero)
SetUnitManaPoints (hero, 100)
if cast == 0 then
UnitCastGlobalSpell(hero, 54)
elseif cast == 1 then
UnitCastGlobalSpell(hero, 221)
elseif cast == 2 then
UnitCastGlobalSpell(hero, 218)
elseif cast == 3 then
UnitCastGlobalSpell(hero, 220)
elseif cast == 4 then
UnitCastGlobalSpell(hero, 219)
elseif cast == 5 then
UnitCastGlobalSpell(hero, 216)
end
SetUnitManaPoints (hero, mana)
end

Скрипт:

function rndcast()
while 1 do
SetGameVar('spell', random(6))
local index = GetLastSavedCombatIndex()
while index == GetLastSavedCombatIndex() do
sleep(10)
end
end
end
startThread(rndcast)

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

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

Добавлено через 13 часов 59 минут
так, остался самый главный вопрос на сегодня:

А как быть с привязкой баттлскрипта к герою? Дело в том, что мне хотелось бы нанимать такого героя, скажем, в таверне, но в этом случае он появляется на карте без привязанного скрипта и теряет свои функции.
Есть ли функция, чтобы, если на карте появился такой герой, автоматически привязывать к нему баттлскрипт? Или есть другой путь?

Whatever

Статистика

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

Сейчас на сайте 9 пользователей 1285 гостей