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

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

Аватар пользователя
7 лет назад
Люди, нужна помощь:
Как сделать так, чтобы у героя, допустим при входе в регион, кол-во всех его существ уменьшилось в 2 раза? Заранее спасибо.

ну самое банальное повесить на регион что-то такое:
for slot = 0, 6 do
local creature, count = GetObjectArmySlotCreature(hero, slot)
if not (creature == 0 or count == 0) then
RemoveHeroCreatures(hero, creature, count/2)
end
end
Аватар пользователя
7 лет назад
Всем привет! Помогите, как увеличить количество очков хода для героя?
Аватар пользователя
7 лет назад
Известно, что через "RazeTown" можно уничтожить город. А наоборот можно? Допустим, изначально на карте руины, а при выполнении определенного условия руины заменяются действующим городом.
В ответ пользователю Valkar
7 лет назад
Мне надо чтобы зарезервированный герой появлялся в начале недели второго месяца, но при ещё должно вызываться задание, задание вызывается, а вот герой (как я уже сказал) не появляется
function Blue ()
SetObjectiveState("blue", OBJECTIVE_ACTIVE);
local MONTH=GetDate (2)
if day == 0
then DeployReserveHero ("Maeve", 66, 3, 0, 0)
sleep (5)
MoveCamera (66, 3, 0, 50, 0, 0, 1, 1)
end ;
end;
Аватар пользователя
6 лет назад
Есть ли возможность через код включать/выключать подсветку объектов(которая при зажатии альта)? Скрипта точно нет, но может консольная команда есть?
В ответ пользователю Gerter
Аватар пользователя
6 лет назад
Gerter
Есть ли возможность через код включать/выключать подсветку объектов(которая при зажатии альта)? Скрипта точно нет, но может консольная команда есть?

Если бы такой чит был, мы бы уже о нём давно знали бы, да и, честно говоря, это необходимое зло в такой игре как Герои, в 3дшной её итерации.

А вот у меня, кстати, такой момент - пытаюсь реализовать квест с выполнением оного двумя путями: один через выплату золотом и ожидание н-ого кол-ва дней, а другой через нахождение нужного существа и его уничтожение. И вот с моментом ожидания какая-то беда, никак не хочет отрабатывать скрипт, как я только его там не крутил, причём никаких ошибок в консоли нет.
Скрипт:
centHero = ""

SetObjectEnabled("cent0", nil);
SetDisabledObjectMode("cent0", DISABLED_INTERACT);
sleep(1);

function Centaurquest(heroname)
if GetCurrentPlayer()==1 and centavr == 0 then
StartAdvMapDialog( 2 );
sleep(5);
centavr = 1;
trader = 1;
MessageBox("Maps/SingleMissions/orcs2/centtext10.txt");
elseif GetCurrentPlayer()==1 and centavr == 1 and trader == 1 then
MessageBox("Maps/SingleMissions/orcs2/centtext1.txt");
elseif GetObjectOwner( heroname ) == PLAYER_1 and centavr == 1 and trader == 3 then
centHero = heroname
QuestionBox("Maps/SingleMissions/orcs2/centtext4.txt", "Centaurquestcomplite");
elseif GetCurrentPlayer()==1 and centavr == 2 then
MessageBox("Maps/SingleMissions/orcs2/centtext2.txt");
end;
end;

function Centaurquestcomplite()
if HasArtefact( centHero, 17 ) == true then
StartAdvMapDialog( 3 );
sleep(1);
PlayObjectAnimation( "cent0", "happy", ONESHOT );
sleep(1);
RemoveArtefact( centHero, 17 );
SetTownBuildingLimitLevel("port", TOWN_BUILDING_DWELLING_2, 2);
centavr = 2;
elseif HasArtefact( centHero, 17 ) == false then
MessageBox("Maps/SingleMissions/orcs2/centtext3.txt");
end;
end;

function Centaurquesttrader()
if GetCurrentPlayer()==1 and centavr == 1 and trader == 1 then
QuestionBox("Maps/SingleMissions/orcs2/centtext5.txt", "Traderyes", "Traderno");
end;
end;

function Traderyes()
if GetPlayerResource(PLAYER_1, GOLD) >= 10000 then
dealtime = GetDate(ABSOLUTE_DAY);
SetPlayerResource(PLAYER_1, GOLD, GetPlayerResource(PLAYER_1, GOLD) - 10000 );
sleep(1);
trader = 2;
RemoveObject("thief");
sleep(1);
elseif GetPlayerResource(PLAYER_1, GOLD) < 10000 then
MessageBox("Maps/SingleMissions/orcs2/ubivectext6.txt");
end;
end;

Trigger(NEW_DAY_TRIGGER, 'TradeDay');
function TradeDay()
if ((GetDate(ABSOLUTE_DAY) - dealtime) == 4) then
MessageBox("Maps/SingleMissions/orcs2/centtext8.txt");
GiveArtifact("главныйгерой", 17);
trader = 3;
end;
end;

function Traderno()
MessageBox("Maps/SingleMissions/orcs2/centtext7.txt");
end;

function Thiefdead()
while 1 do
sleep(10);
if IsObjectExists ("thief") == nil and trader == 0 then
MessageBox("Maps/SingleMissions/orcs2/centtext9.txt");
trader = 3;
break;
elseif IsObjectExists ("thief") == nil and trader == 1 then
MessageBox("Maps/SingleMissions/orcs2/centtext9.txt");
trader = 3;
break;
elseif IsObjectExists ("thief") == nil and trader == 2 then
MessageBox("Maps/SingleMissions/orcs2/centtext6.txt");
break;
end;
end;
end;

startThread( Thiefdead );
Аватар пользователя
6 лет назад
Grigoriy, не очень хорошая затея выкладывать сто строк кода и просить искать в них ошибку. Для начала просто поставьте принты в каждой функции и внутри каждого if'а.
В ответ пользователю Jack_of_shadows
Аватар пользователя
6 лет назад
Jack_of_shadows
Grigoriy, не очень хорошая затея выкладывать сто строк кода и просить искать в них ошибку. Для начала просто поставьте принты в каждой функции и внутри каждого if'а.

Я учту это на будущее, спасибо. Тем временем скрипт заработал как надо, стоило мне поставить триггер нового дня после функции, а не перед. Даже интересно
6 лет назад
Приветик, помните в последней миссии за Арантира были города где можно сделать только один грейд существ. У меня три вопроса.
1. Как это сделать?
2. Можно ли это сделать другим расам?
3. Можно ли сделать только 1ый, а не 2ой грейд.
В ответ пользователю thenekoor
Аватар пользователя
6 лет назад
thenekoor
Приветик, помните в последней миссии за Арантира были города где можно сделать только один грейд существ. У меня три вопроса.
1. Как это сделать?
2. Можно ли это сделать другим расам?
3. Можно ли сделать только 1ый, а не 2ой грейд.
В редакторе выделите город, слева в дереве свойств найдите CreaturesUpgradesFilter, разверните. Чтобы запретить 1ый грейд добавляйте в ForbiddenBasicUpgradeTiers (ПКМ - Add) строки, в них записывайте уровень нужного существа. Соответственно, чтобы запретить всю ветку, нужно добавить 7 элементов и в них указать уровни от 1 до 7. ForbiddenAlterUpgradeTiers - все то же самое, только для запрета 2го грейда. Их, кстати, можно комбинировать.

Добавлено через 23 часа 32 минуты
Может кто сталкивался с таким или есть идеи?
Вылетает игра при использовании MoveHeroRealTime или даже при CalcHeroMoveCost на соседнюю, пустую клетку. Вылетает не с начала карты, но во второй половине, ближе к концу.
Аватар пользователя
6 лет назад
могу предположить, что игра плохо справляется с большим количеством функций типа талкбокса. И по моим наблюдениям, функции, связанные с просчитыванием хода тоже игру неслабо грузят - если, скажем, запустить CalcHeroMoveCost в бесконечном потоке, игра начнет ощутимо лагать. И если в начале игра еще справляется, то как раз ближе к концу карты, ей возможно перестает хватать ресурсов, отсюда и вылеты. Но это только предположения, точно не могу сказать
Аватар пользователя
6 лет назад
Так а какие условия использования? Может там добавление значений в таблицу и память утекает?
Талкбокса я бы бояться не стал. Работает как часы.
В ответ пользователю Gerter
Аватар пользователя
6 лет назад
Jack_of_shadows
Так а какие условия использования? Может там добавление значений в таблицу и память утекает?
Если конкретно CalcHeroMoveCost - то можно просто в консоль ее написать, вылетит.
На счет прошедшего куска карты сложно сказать, там очень много всего. Пытался повторить баг дважды, пройдя до момента вылета с теми же условиями, и все сработало нормально.
Gerter
И по моим наблюдениям, функции, связанные с просчитыванием хода тоже игру неслабо грузят - если, скажем, запустить CalcHeroMoveCost в бесконечном потоке, игра начнет ощутимо лагать. И если в начале игра еще справляется, то как раз ближе к концу карты, ей возможно перестает хватать ресурсов, отсюда и вылеты.
Звучит здраво, попробую в начале и в середине карты позапускать побольше MoveHeroRealTime, может что выйдет.

Добавлено через 1 час 49 минут
Нет, сколько не пытался, вручную вылет вызвать не получилось.
В ответ пользователю Gerter
Аватар пользователя
6 лет назад
Gerter
Есть ли возможность через код включать/выключать подсветку объектов(которая при зажатии альта)? Скрипта точно нет, но может консольная команда есть?
Если еще актуально:
команда ui_adventure_hilight_radius 0 отключает подсветку, чтобы ее включить обратно вместо 0 ставим значение больше.
Лучше, если то, что было изначально задано.
В ответ пользователю RedHeavenHero
Аватар пользователя
6 лет назад
RedHeavenHero
Если еще актуально:
команда ui_adventure_hilight_radius 0 отключает подсветку, чтобы ее включить обратно вместо 0 ставим значение больше.
Лучше, если то, что было изначально задано.
эту команду я пробовал, но это не то, к сожалению. меня интересовала возможность именно включить эффект подсветки в игре, ну т.е. имитировать нажатие альта, но это похоже невозможно

Статистика

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

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