Герои Меча и Магии 5 - Картостроительство (Редактор карт)В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.
Добавлено через 6 минут да, кстати, можно-ли сделать объект недоступным только для определенного игрока, как регион?
если привести пример, мне нужно, чтобы игрок 3 мог спокойно проходить через заставу, а игрок 1 мог только тыкаться в неё, и получить разные задания, но без битвы или захвата заставы. Или придется ставить перед ней мини-регион?
Добавлено через 6 минут да, кстати, можно-ли сделать объект недоступным только для определенного игрока, как регион?
если привести пример, мне нужно, чтобы игрок 3 мог спокойно проходить через заставу, а игрок 1 мог только тыкаться в неё, и получить разные задания, но без битвы или захвата заставы. Или придется ставить перед ней мини-регион?
Можно, например, временным включением/выключением триггера:
function enabling()
while 1 do
SetObjectEnabled('garrison', nil);
Trigger(4, 'garrison', 'kvest');
while GetCurrentPlayer() == 1 do
sleep(1);
end;
SetObjectEnabled('garrison', 1);
Trigger(4, 'garrison', nil);
while GetCurrentPlayer() ~= 1 do
sleep(1);
end;
end;
end;
Тогда все игроки, кроме первого, смогут ходить через заставу. А первый сможет только получать от неё квесты.
function Prepare () hero = GetDefenderHero () x1 = GetDefenderCreatures () end function Start () if GetCreatureType (x1[0]) == 114 then SummonCreature (DEFENDER , 122, 1, 12, 1) SummonCreature (DEFENDER , 122, 1, 12, 10) end end
Но написано, что неправильный аргумент при вызове функции GetCreatureType. Дело в том, что до этого я активирую startcombat, может быть, он не принимает монстра 114 за защищающегося?
У вас массив юнитов определяется в подготовке к бою, и функция к этому времени их не чувствует. Нужно определение х1 переместить в функцию старт самым первым.
хм, странно, вчера еще помню не работало, а сейчас вроде все нормально...
снова спасибо, выручаете прямо меня =)
Добавлено через 24 минуты
RedHeavenHeroМожно, например, временным включением/выключением триггера:
function enabling()
while 1 do
SetObjectEnabled('garrison', nil);
Trigger(4, 'garrison', 'kvest');
while GetCurrentPlayer() == 1 do
sleep(1);
end;
SetObjectEnabled('garrison', 1);
Trigger(4, 'garrison', nil);
while GetCurrentPlayer() ~= 1 do
sleep(1);
end;
end;
end;
Тогда все игроки, кроме первого, смогут ходить через заставу. А первый сможет только получать от неё квесты.
Я немного не понял, а как потом снять блокировку для игрока 1, например, с добавлением новой переменной. Т.е. где-то в другом месте я указываю "a = 1", а не 0, и тогда застава открывается и для меня.
r=random(5)
function cr()
if IsHeroAlive('Sun')
then
OpenCircleFog(r,r,0,10,PLAYER_1)
OpenCircleFog(0,0,0,9999,PLAYER_1)
end;
end;
Trigger(NEW_DAY_TRIGGER,'cr')
Этот скрипт каждый день пока жив герой Sun(ну я карту делаю это один из глвных новых персонажей созданных с нуля)должен открывать случайный кусочек карты ,но он неоткрывет !
Добавлено через 3 минуты Скажите почему.Пожалуйста а то не смогу спать спокойно(вылечил бессонницу не хочу опять страдать )
Sun -- это точно нужное имя героя? Вы его задавали в Shared? r=random(5) -- надо засунуть в тело функции, иначе только один раз вызовется. OpenCircleFog(0,0,0,9999,PLAYER_1) -- это для теста, я верно понял?
Sun -- это точно нужное имя героя? Вы его задавали в Shared? r=random(5) -- надо засунуть в тело функции, иначе только один раз вызовется. OpenCircleFog(0,0,0,9999,PLAYER_1) -- это для теста, я верно понял?
Да в shared задано.
Понятно в тело значит в тело.
Да для теста.
Добавлено через 2 минуты А как сделать чтобы было рандомное число а то только пять и всё?
Больше не вижу пока, почему он может не работать ( Консоль что-нибудь пишет? Кстати, у скрипта есть несколько минусов. В частности он открывает регионы только по диагонали (чтобы такого не было, нужны две переменные: r1 и r2). Также их лучше в функции OpenCircleFog(r,r,0,10,PLAYER_1) умножать на что-то, а то разброс в пять клеток не особо велик. Но это уже тонкости.
А потом например как город захватишь можно прикратить карту открывать?
Можно. Поставьте триггер на захват объекта и переменную, которая равна 0, если объект не захвачен и 1 в противном случае. А в if IsHeroAlive('Sun') добавить тогда проверку на эту переменную, чему она равна.
Спасибо.А срегионом може тоже самое проделать? Тоесть: если run=1 то непроходишь.А если run=0 то проходишь.Однако это будет вешаться на палатку ключника ну тут я теперь заню,отключить обьект и повесить триггер что при столкновении run=0.