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

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

В ответ пользователю Grigoriy
Аватар пользователя
6 лет назад
Grigoriy
Орку через скрипт можно как-то добавить походные заклинания? Стандартной командой не выходит
скорее всего нельзя, орки(точнее любой герой с гневом) учить заклинания вообще никаким способом неспособны
Нет войне.
В ответ пользователю OrnsteinDragonslayer
6 лет назад
OrnsteinDragonslayer
Ребята, у меня возник вопрос. Подскажите, что не так?
Условия: есть эльфийский город, принадлежащий, собсна, эльфу (игрок 3). Если его захватит Игрок 2, то провал задания и проигрыш.
...
Эта команда не справляется. После захвата города ничего не происходит. Ошибок никаких нет. Где я мог ошибиться? Спасибо заранее

Вообще, реализация с зацикленной проверкой не самый оптимальный вариант.
Как то так, наверное (в игре не проверял)

Вложения 1
1 файл • Общий размер: 12,6 KB
6 лет назад
Привет) помогите, пожалуйста. Я хочу чтоб по прошествию какого то времени, игрок захвативший город смог купить все накопленные войска в нейтральном городе, а он «нейтральный город» откуда то берет деньги и сам их покупает. Я даже отключил в настройках возможность постройки ратуши, но это все равно не помогло(
В ответ пользователю JonnyP
Аватар пользователя
6 лет назад
JonnyP
Вообще, реализация с зацикленной проверкой не самый оптимальный вариант.
Как то так, наверное (в игре не проверял)


Не помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
А единичка, кстати потому, что задание проваливается для первого игрока.
function onObjectCapture( prevOwner, newOwner, hero, object )
if prewOwner == PLAYER_3 and newOwner == PLAYER_2 then
Trigger( OBJECT_CAPTURE_TRIGGER, 'houseElf', nil )
SetObjectiveState ('q4', OBJECTIVE_FAILED, PLAYER_1 )
sleep(10)
Loose()
end
end
Trigger(OBJECT_CAPTURE_TRIGGER, 'houseElf', 'onObjectCapture' )
Автор карт:
Долина расхитителей
Выбор мира
В ответ пользователю OrnsteinDragonslayer
Аватар пользователя
6 лет назад
OrnsteinDragonslayer
Не помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
А единичка, кстати потому, что задание проваливается для первого игрока.
function onObjectCapture( prevOwner, newOwner, hero, object )
if prewOwner == PLAYER_3 and newOwner == PLAYER_2 then
Trigger( OBJECT_CAPTURE_TRIGGER, 'houseElf', nil )
SetObjectiveState ('q4', OBJECTIVE_FAILED, PLAYER_1 )
sleep(10)
Loose()
end
end
Trigger(OBJECT_CAPTURE_TRIGGER, 'houseElf', 'onObjectCapture' )


function onObjectCapture(PrevOwner, NewOwner)

if PrevOwner == 3 and NewOwner == 2 then

Trigger(5, 'houseElf', nil)
SetObjectiveState ('q4', 4, 1)
sleep(10)
Loose()

end

end

Trigger(5, 'houseElf', 'onObjectCapture')

Внимательнее надо с именами переменных
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира
В ответ пользователю OrnsteinDragonslayer
6 лет назад
OrnsteinDragonslayer
Не помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
Суть ошибки я передал - функция принимает 4 параметра + излишняя проверка с бесконечным циклом. Возможно синтаксис неверный (я писал что не проверял в игре).
Попробуй "print"-ы повставлять, посмотри что в консоли будет.

... А единичка, кстати потому, что задание проваливается для первого игрока.
... Условия: есть эльфийский город, принадлежащий, собсна, эльфу (игрок 3). Если его захватит Игрок 2, то провал задания и проигрыш.
Чтобы не было путаницы используй константы - PLAYER_1, PLAYER_... и т.д., это неплохая устоявшаяся практика.
В условиях такого не было, поэтому расценил это как ошибку, но это в принципе не важно.
Master
...Внимательнее надо с именами переменных
В смысле? Я не нахожу отличий. Если речь про стиль написания переменных то это не имеет значения (PascalCase или camelCase).
В ответ пользователю Killer5029
Аватар пользователя
6 лет назад
Killer5029
Привет) помогите, пожалуйста. Я хочу чтоб по прошествию какого то времени, игрок захвативший город смог купить все накопленные войска в нейтральном городе, а он «нейтральный город» откуда то берет деньги и сам их покупает. Я даже отключил в настройках возможность постройки ратуши, но это все равно не помогло(

Может это можно как-то легче сделать, но я бы в такой ситуации не строил бы изначально ни одного здания с существами в этом городе. После того, как город перейдет к игроку, скриптами можно построить любые здания в этом городе, а также (вроде) добавить существ для выкупа.
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира
В ответ пользователю MasteR
6 лет назад
MasteR
Может это можно как-то легче сделать, но я бы в такой ситуации не строил бы изначально ни одного здания с существами в этом городе. После того, как город перейдет к игроку, скриптами можно построить любые здания в этом городе, а также (вроде) добавить существ для выкупа.
Не помнишь какой командой можно построить здания в городе?
В ответ пользователю Killer5029
Аватар пользователя
6 лет назад
Killer5029
Не помнишь какой командой можно построить здания в городе?
UpgradeTownBuilding(имя_города, id здания)

по поводу добавления существ для выкупа - для этого есть функция SetObjectDwellingCreatures(имя_города, id существа, число)
Нет войне.
В ответ пользователю JonnyP
Аватар пользователя
6 лет назад
JonnyP
В смысле? Я не нахожу отличий. Если речь про стиль написания переменных то это не имеет значения (PascalCase или camelCase).

В параметре функции prevOwner, а в теле функции prewOwner.
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира
В ответ пользователю Gerter
6 лет назад
Gerter
UpgradeTownBuilding(имя_города, id здания)

по поводу добавления существ для выкупа - для этого есть функция SetObjectDwellingCreatures(имя_города, id существа, число)
я написал такой скрипт(не работает)
local a=0;
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
then SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;
end;

Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

В чем может быть ошибка? подскажите пожалуйста)
В ответ пользователю Killer5029
Аватар пользователя
6 лет назад
Killer5029
я написал такой скрипт(не работает)
local a=0;
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
then SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;
end;

Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

В чем может быть ошибка? подскажите пожалуйста)

во-первых, вот так:
local a = 0
вне функций лучше не писать
во-вторых, вот эта строчка:
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
нейтральный игрок - это PLAYER_NONE. PLAYER_NAME - это что вообще? нужно использовать константы номера игрока, например, PLAYER_1.

кроме того, в определении функции zoloto нужно указать, что у нее есть параметры prewOwner и newOwner:
function zoloto(prewOwner, newOwner)
Нет войне.
В ответ пользователю Gerter
6 лет назад
Gerter
во-первых, вот так:
local a = 0
вне функций лучше не писать
во-вторых, вот эта строчка:
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
нейтральный игрок - это PLAYER_NONE. PLAYER_NAME - это что вообще? нужно использовать константы номера игрока, например, PLAYER_1.

кроме того, в определении функции zoloto нужно указать, что у нее есть параметры prewOwner и newOwner:
function zoloto(prewOwner, newOwner)

PLAYER_NAME - это любой игрок. Я хочу чтоб скрипт работал, когда любой игрок захватит этот город
Аватар пользователя
6 лет назад
ну тогда вообще не надо проверять номер игрока, который захватывает город
Нет войне.
В ответ пользователю Gerter
6 лет назад
Gerter
ну тогда вообще не надо проверять номер игрока, который захватывает город
то есть можно оставить так?
local a = 0
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;


Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

Добавлено через 2 минуты
Gerter
ну тогда вообще не надо проверять номер игрока, который захватывает город
то есть можно так оставить?
local a = 0
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;


Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

Статистика

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