Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
function artifact_objective() while 1 do * if HasArtefact("Brem", 13) then * * SetObjectiveState("dopzadanie1", OBJECTIVE_COMPLETED); * * break * end; sleep (2); end; end;
function newday() if GetDate(DAY)==2 then MessageBox(path.."day2.txt"); sleep(5); MessageBox(path.."day2-2.txt"); end
if GetDate(DAY)==3 then MessageBox(path.."day3.txt"); end
if GetDate(DAY)==4 then MessageBox(path.."day4.txt"); end
if GetDate(DAY)==5 then MessageBox(path.."day5.txt"); SetObjectiveState("zadanie4", OBJECTIVE_ACTIVE, 1); if GetObjectOwner("ditana")==PLAYER_1 then SetObjectiveState("zadanie4", OBJECTIVE_COMPLETED, 1); TeachHeroSpell("Brem", 18); end; end
if GetDate(DAY)==6 then MessageBox(path.."day6.txt"); SetObjectiveState("dopzadanie1", OBJECTIVE_ACTIVE, 1); startThread(artifact_objective) end; end
if GetDate(DAY)==7 then MessageBox(path.."day7.txt"); end; Trigger(NEW_DAY_TRIGGER, "newday");
Есть еще одна многострадальная проблема с городом с квестовым именем "ditana", задание на его взятие появляется, а вот при выполнении задания ничего не происходит. При этом в самой карте делал поиск по названию, игра такой объект находит.
У меня есть 1 большой скрипт. qwert(1,2 и3 ) - это квесты. Дальше я задал 2 переменных со значениями идентификаторов( монахи и ангелы). gar_(1,2,3 и 4) - гарнизоны.*Calid и**Nymus - 2 демона. Дальше у меня идет проверка: если гарнизон принадлежит 4 игроку -демонам, то они будут двигаться в замок, расположенный на координатах 41,14. Потом, если выполнено задание qwert3, то к переменный, которые отвечают за идентификаторы ангелов и монахов, будет прибавлена единица и они станут грейженными существами. Дальше, если день недели равен 6 и квест qwert1 выполнен, то во все 4 гарнизона должны прийти 15 монахов, а если задание*qwert3 выполнено, то они будут инквизиторами, и если квест qwert2 выполнен и день недели равен 5, то в гарнизоны прибудут ангелы, также, если квест3 выполнен грейженные. Дальше идет вторая часть функции: Если день равен 7, то на карте появляется демон, он движется в сторону гарнизона, и также в 14 день недели появляется нимус, который тоже движется в сторону гарнизона, но уже другого, того какой ближе к нему. Скрипт прекрасно работал на начальной стадии, но когда я приписал скрипт, который находится вначале, отвечающий за приоритетную точку демонов, то все сломалось( Сначала первоначально они должны появляться, и бежать к гарнизону, захватывать его, стоять 1 день в гарнизоне, и на новый день их приоритетной точкой становится замок, и они бегут к нем). Буду очень благодарен тому, кто поможет разобраться. function demon() local p1 =GetObjectiveState ('qwert1',PLAYER_1); local p =GetObjectiveState ('qwert2',PLAYER_1); local opr = 9 * local opr3 = 13 * local p2 = GetObjectiveState ('qwert3', 1); * local ggg =GetObjectOwner('gar_1'); local ggg1 =GetObjectOwner('gar_2'); local ggg2 =GetObjectOwner('gar_3'); local ggg3 =GetObjectOwner('gar_4'); * if* ggg =4* then * MoveHero('Calid',41,14,0); * MoveHero('Nymus',41,14,0); * elseif ggg1 =4* * then * MoveHero('Calid',41,14,0); * MoveHero('Nymus',41,14,0); elseif ggg2 = 4* * then * MoveHero('Calid',41,14,0); * MoveHero('Nymus',41,14,0); * elseif ggg3 < 4 then * * MoveHero('Calid',41,14,0); * MoveHero('Nymus',41,14,0); * end; * end; local p2 = GetObjectiveState ('qwert3', 1); if p2 == OBJECTIVE_COMPLETED then opr= opr+1 * if p2 == OBJECTIVE_COMPLETED then opr= opr3+1 if p1 ==OBJECTIVE_COMPLETED and GetDate(DAY_OF_WEEK ) == 6 then AddObjectCreatures('gar_1',* opr, 15); AddObjectCreatures('gar_2',* opr, 15); AddObjectCreatures('gar_3',* opr, 15); AddObjectCreatures('gar_4',* opr, 15); elseif p ==OBJECTIVE_COMPLETED and GetDate(DAY_OF_WEEK ) == 5 then AddObjectCreatures('gar_1',* opr3, 3); AddObjectCreatures('gar_2',* opr3, 3); AddObjectCreatures('gar_3',* opr3, 3); AddObjectCreatures('gar_4',* opr3, 3); elseif GetDate( 0 ) == 7 then DeployReserveHero('Calid',2,16,0,0); sleep(5); MoveHero('Calid',7,15,0); elseif GetDate( 0 ) == 14 then DeployReserveHero('Nymus',5,1,0,0); sleep(5); MoveHero('Nymus',5,4,0);
Добавлено через 4 минуты Также по поводу прошлого скрипта, про который я спрашивал.* В одной из кампаний героев 5 в мисии за лигу теней, был квест: У игрока в армии дракон, и он не должен погибнуть, если он погибал в какой-нибудь битве, то игрок проигрывал. Я хочу сделать такой же скрипт: У меня в армии появляются 4 крестьянина, потом я должен идти с ними до одного места, и как дойду, они должны исчезнуть( Все, что я написал я могу сделать). А вот как сделать так, чтоб после любой из битв, если они погибают, то задание проваливается.
Navkratis у вас функция newday идёт, потом if'ы на дни со второго по шестой, потом вы функцию закрыли end'ом, потом идёт if для седьмого дня. Очевидно, последний if тоже должен быть внутри функции, а не снаружи.
Navkratis у вас функция newday идёт, потом if'ы на дни со второго по шестой, потом вы функцию закрыли end'ом, потом идёт if для седьмого дня. Очевидно, последний if тоже должен быть внутри функции, а не снаружи.
Большое спасибо, помогло, тот дополнительный end в 6 дне ставил для startThread-а, видимо, это было излишне:) Теперь бы еще разобраться с проблемой города. но, пожалуй, оставлю ее напоследок, когда закончу работу над скриптами.
Лоли Никита, тоже проверьте свои end'ы, там что-то явно не то. Если судить по эндам, ваша функция заканчиается перед строкой
local p2 = GetObjectiveState ('qwert3', 1);
И к чему тогда объявление этой кучи локальных переменных? Также, я не в курсе, но точно ли если писать if в одну строку, как у вас:
if p2 == OBJECTIVE_COMPLETED then opr= opr+1
То end после этого не нужен? В любом случае после последнего elseif, а именно в конце кода, end требуется. Это не считая end'а, который закрывает всю функцию, и сейчас не там стоит.
В качестве рекомендации, переменные лучше называть более понятно, это не только нам на форуме облегчит, но и сами путаться не будете. Лучше длинное название, немного времени потеряется на печать, много времени приобретёте при отладке.
То же с пробелами. Если на форуме оно отображается верно (с тем исключением, что форум звёздочек понаставил), очень рекомендую отступы соблюдать как положено. А то у вас хаос полнейший, понятно, что интуитивно вы эти end'ы не расставите, без подробного счёта.
А возможно ли задать приоритет герою, чтобы он через препятствия шел? Просто я ставлю* MoveHero, а герой мой появляется за гарнизоном и не идет к приоритетной цели - замок. Он просто стоит на одном месте и не желает двигаться, пока я армию не заберу из гарнизона, и только потом он идет через него к замку.
Гарнизон с армией - непроходимый объект для функции MoveHero; создать "великий аттрактор" для компа героя можно функцией SetAIHeroAttractor(sObjectName, sHeroName, nPrioprity), где priority - приоритетность, принимающая значения от -1 до 2. 0 - снимает приоритетность.
function tainiki() while 1 do * if HasArtefact("Brem", 23) and if HasArtefact("Brem", 28) and if HasArtefact("Brem", 68) then * * SetObjectiveState("dopzadanie2", OBJECTIVE_COMPLETED); * * break * end; sleep (2); end; end;
if GetDate(DAY)==8 then MessageBox(path.."day8.txt"); SetObjectiveState("dopzadanie2", OBJECTIVE_ACTIVE, 1); startThread(tainiki) end;
программа MapScriptEditor пишет про неожиданный символ возле if (в функции tainiki). Условием выполнения задачи должно быть наличие у героя трех артефактов. Что здесь не так? :o
Добавлено через 5 часов 30 минут Однако... Во время выполнения скрипта выше (т.е. на 8 день) в консоли появляется надпись, что обьектива dopzadanie 2 не найдена и задание не выдается.
В параметрах задания должно стоять KIND_MANUAL, такое же скриптовое имя, как в скрипте, и Is Initialy Active = true. У вас всё так?
В одном из руководств написано "Is Initialy Active - если true, задание активно при старте карты", а мне нужно, чтобы оно активировалось лишь на восьмой день, поэтому стоит false. Что интересно, есть полностью идентичное dopzadanie1, оно активируется и выполняется, в*dopzadanie2 все пункты из Map Properites Free расставил аналогично, но результат иной.
Добавлено через 30 минут Неожиданно появилась идея, в чем могла быть причина, сейчас проверю.
Добавлено через 17 минут В общем, данный вопрос снимается, оказалось, что в Map Properites Free ошибся с уровнем вложений, и dopzadanie 2 оказалось для второго игрока:o Пока что задание запустилось, надеюсь, его выполнение также пропишется.