Привет, скажите пожалуйста а можно ли скриптами заблокировать возможность получить определенный навык или два при взятии навыка?
Скриптом нельзя, только делать мод.
Впервые здесь? Я Роха — провести быструю экскурсию?
Привет, скажите пожалуйста а можно ли скриптами заблокировать возможность получить определенный навык или два при взятии навыка?
Привет!
К сожалению, нет
function IsoldaS()
local hero="Isolda"
local lvl=GetHeroLevel("Isolda")
if lvl == 3 then
TeachHeroSpell(hero, 12)
elseif lvl == 5 then
TeachHeroSpell(hero, 11)
elseif lvl == 8 then
TeachHeroSpell(hero, 15)
elseif lvl == 10 then
TeachHeroSpell(hero, 14)
elseif lvl == 15 then
TeachHeroSpell(hero, 13)
elseif lvl == 18 then
TeachHeroSpell(hero, 17)
elseif lvl == 20 then
TeachHeroSpell(hero, 18)
elseif lvl == 23 then
TeachHeroSpell(hero, 212)
elseif lvl == 25 then
TeachHeroSpell(hero, 210)
elseif lvl == 28 then
TeachHeroSpell(hero, 215)
elseif lvl == 30 then
TeachHeroSpell(hero, 214)
elseif lvl == 33 then
TeachHeroSpell(hero, 211)
elseif lvl == 35 then
TeachHeroSpell(hero, 213)
elseif lvl == 38 then
TeachHeroSpell(hero, 21)
elseif lvl == 40 then
TeachHeroSpell(hero, 20)
end
end
Trigger(HERO_LEVELUP_TRIGGER, "Isolda", "IsoldaS")
Ваш код выполняется только на старте карты. Соответственно, вам нужно вешать триггер не только на старте, но и по появлении героя:
function UpdateHeroSpecs(hero)
if hero == 'Isolda' then
Trigger(HERO_LEVELUP_TRIGGER, hero, 'IsoldaSpec')
elseif hero == 'AnotherHero' then
--...
else
--...
end
end
for pl = PLAYER_1, PLAYER_8 do
if GetPlayerState(pl) == PLAYER_ACTIVE then
Trigger(PLAYER_ADD_HERO_TRIGGER, pl, 'UpdateHeroSpecs')
end
end
function IsoldaSpec()
local hero="Isolda"
local lvl=GetHeroLevel("Isolda")
if lvl == 3 then
TeachHeroSpell(hero, 12)
elseif lvl == 5 then
TeachHeroSpell(hero, 11)
elseif lvl == 8 then
TeachHeroSpell(hero, 15)
elseif lvl == 10 then
TeachHeroSpell(hero, 14)
elseif lvl == 15 then
TeachHeroSpell(hero, 13)
elseif lvl == 18 then
TeachHeroSpell(hero, 17)
elseif lvl == 20 then
TeachHeroSpell(hero, 18)
elseif lvl == 22 then
TeachHeroSpell(hero, SPELL_BLIND)
elseif lvl == 23 then
TeachHeroSpell(hero, 212)
elseif lvl == 25 then
TeachHeroSpell(hero, 210)
elseif lvl == 28 then
TeachHeroSpell(hero, 215)
elseif lvl == 30 then
TeachHeroSpell(hero, 214)
elseif lvl == 33 then
TeachHeroSpell(hero, 211)
elseif lvl == 35 then
TeachHeroSpell(hero, 213)
elseif lvl == 38 then
TeachHeroSpell(hero, 21)
elseif lvl == 40 then
TeachHeroSpell(hero, 20)
end
end
function UpdateHeroSpecs(hero)
if hero == 'Isolda' then
Trigger(HERO_LEVELUP_TRIGGER, hero, 'IsoldaSpec')
end
end
for pl = PLAYER_1, PLAYER_8 do
if GetPlayerState(pl) == PLAYER_ACTIVE then
Trigger(PLAYER_ADD_HERO_TRIGGER, pl, 'UpdateHeroSpecs')
end
end
А что не работает, что пишет консоль?) Визуально я очевидных ошибок не вижу, но, возможно, это просто половина двенадцатого ночи 😁
Не выдаётся на старте или при найме героя?)
Всякое/карты:
Добавление недостающей музыки гномам
Приветствую! А был ли у кого код на дополнительный бафф баффающим объектам? Например, хочется мне объекту Разорванный флаг(даёт бонусы на боевой дух и удачу на 1 бой) дать ещё какой-то бонус, ну скажем бафф к скорости. Естественно, бафф будет работать так же как и оригинальный, т.е. через GiveHeroBattleBonus(). Будет вешаться всем кто коснётся объекта, и не выдастся повторно до тех пор пока герой не сразится с кем-нибудь. Пока что есть мысль написать код, который будет заносить в список всех кто трогает объект, и добавлять им метку типа allow_touch = 0(если 0, то баффа при повторном касании не будет), а потом в функции из COMBAT_RESULTS_TRIGGER отслеживать кто бой завершил, и если это один из наших посетителей - выдавать ему разрешение(0 на 1 менять) на повторный забафф от флага. Но может быть есть вариант попроще?)
Всякое/карты:
Добавление недостающей музыки гномам
Долгий, любопытно, спасибо) А персонаж(и) heroT - это кто? Это ведь полный код механики?
-- Pyramid
function golemhouse()
StartDialogScene("/DialogScenes/DefiantMage/S1/DialogScene.xdb#xpointer(/DialogScene)");
MessageBox(quest1);
SetObjectiveState("sec1", OBJECTIVE_ACTIVE, p1);
local gems = GetPlayerResource(p1, GEM)
if gremlins >= 1000 and gems >= 100 then
QuestionBox(pyramidpath, "yes", "no");
end
end
Trigger(OBJECT_TOUCH_TRIGGER, golem, "golemhouse")
function yes()
RemoveHeroCreatures(hero, CREATURE_GREMLIN, 1000);
SetPlayerResource(p1, GEM, gems - 100);
end
function no()
print("cancel")
endКак сделать так, чтобы при взаимодействии с объектом кат-сцена и сообщение выводились 1 раз, а проверка на выполнение требований была постоянной?