Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Привет вот столкнулся впервые с необходимостью написания скрипта но я туг в программировании и к тому же не знаю границ возможности а именно нужно запрограммировать ворота так что бы при уничтожении всей армии находящийся в них ворота переходил под мою юрисдикцию а охрана в воротах возрождалась в двое может у вас уже есть похожий набросок оч был бы рад содействию
да гарнизон нет суть не в том что бы он стал моим а в том что бы вся армия которую я выбил возродилась но уже под моим началом естественно неизвлекаемая плюс удвоилась
function capture_gar(hero) local a = {}; a[1], a[3], a[5], a[7], a[9], a[11], a[13] = GetObjectCreaturesTypes("имя гарнизона"); for i = 1, 7 do if a[i*2-1] ~= 0 then a[i*2] = 2 * GetObjectCreatures("имя гарнизона", a[i*2-1]); end; end; SetObjectEnabled("имя гарнизона", 1); Trigger(4, "имя гарнизона", nil); MakeHeroInteractWithObject(hero, "имя гарнизона"); local i = GetLastSavedCombatIndex(); while i == GetLastSavedCombatIndex() do sleep(1); end; if not IsHeroAlive(hero) then SetObjectEnabled("имя гарнизона", nil); Trigger(4, "имя гарнизона", "capture_gar"); return end; for i = 1, 7 do if a[i*2] then AddObjectCreatures("имя гарнизона", a[i*2-1], a[i*2]); end; end; DenyGarrisonCreaturesTakeAway("имя гарнизона", 1); end;
Тут надо только заменить "имя гарнизона" на скриптовое имя вашего гарнизона. В скрипте оно должно писаться в кавычках, а в редакторе (в поле Name в свойствах объекта) - без.
да гарнизон нет суть не в том что бы он стал моим а в том что бы вся армия которую я выбил возродилась но уже под моим началом естественно неизвлекаемая плюс удвоилась
даёшь своим "воротам" имя. например vorota vorotaF - функция, которая запуститься при взятии объекта дальше объявляешь триггер Trigger(OBJECT_CAPTURE_TRIGGER, "vorota", "vorotaF");
дальше прописывешь саму функцию
vorotaF(nPrevOwnerID, nNewOwnerID, sHeroName, sObjectID) nPrevOwnerID - номер игрока - бывшего владельца nNewOwnerID - текущий владелец sHeroName - имя героя, захватившего ворота sObjectID - название твоих ворот(vorota)
эти параметры передаются в функцию после того как у гарнизона сменяется владелец. Если не важно кто захватил гарнизон - скобки можно оставить пустыми.
в теле функции для добавления существ в гарнизон использовать команду AddObjectCreatures( sObjectName, nGreatureID, nCount );
где sObjectName - имя ворот(указывается в кавычках!!!) nGreatureID - ID существа(в документах к редактору есть документ со всеми IDs) nCount - количество добавляемых существ.
Trigger(OBJECT_CAPTURE_TRIGGER, "vorota", nil ); - обнуление тригера, тоже в теле функции!!!
и не забыть в конце поставить end;
вот и всё. Если важно какой именно игрок и герой захватывает, в скобке у функции указывать все параметры и писать в теле функции условное выражение if ....... end;
gar="имя гарнизона" gar_army={} for i = 0, 6 do local t, n = GetObjectArmySlotCreature(gar, i) gar_army={t, n} end
Trigger(5, gar, 'capture_gar')
function capture_gar(oldowner, newowner, hero, gar) for i = 0, 6 do if gar_army[1] ~= 0 then AddObjectCreatures(gar, gar_army[1], gar_army[2]*2) end end DenyGarrisonCreaturesTakeAway(gar, 1) Trigger(5, gar, nil) end
что я не так сделал ? открыл редактором карту нашел гарнизон открыл свойства пробелом нажал edit script вставил текст нажал ок
чтом написать скрипт для карты, в редакторе открой Map properties(быстро это можно сделать нажав кнопку M). В ней выбери вкладку Scripts, нажми Edit script и пиши
кто знает, как заставить супер сильного героя-компа не нападать на моего героя? Судя по описаню, attractor тут не спасет, а дружбу тоже заводить не хочется, надо, чтобы ты мог атаковать, а он нет...
Отключить его SetObjectEnabled("...",nil); и двигать по карте вручную ) Триггер ещё понадобится установить на прикосновение, чтобы другой герой напасть мог.