Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Я думаю, если это стандартная карта без всяких кастомных штук, то можно просто в 1 день скриптом просмотреть всех героев всех игроков, если есть некромантия - значит это некромант, призыв - значит демон и т.д., и запомнить результаты в глобальную таблицу (ключ - номер игрока, значение - фракция). А потом можно использовать её хоть по отношению к героям, хоть к замкам.
Ребята помогите. У меня почему-то после вопроса (QuestionBox) и ответа "ОК" не проигрывается битва (StartCombat). Если же StartCombat скопировать в функцию с вопросом, то всё ок - работает. В вопросе делал ссылку на другую функцию.
Доброго времени суток всем, подскажите такую вещь, пожалуйста, кто знает.
Можно ли настроить выполнение функции не по конкретному тригеру из списка тригеров а по какому то другому, скажем постройке здания или появлению у определённого героя или определённого игрока определённого артефакта или существа.
что-то похожее кажется делает команда, запускающая новый поток(что такое поток правда в душе не знаю) startThread( fProc, vParam1, vParam2, ... ) по идее если я правильно понимаю, она должна постоянно проверять наличие определённого условия, но вот как ей пользоваться я чего то не могу разобраться.
если конкретно то мне нужно при постройке определённого строения в городе заменить у героя одно существо другим
пока у меня выходит как то так
function replacecreature (); if GetHeroCreatures( "Sarge", CREATURE_ARCHER ) >= 1; and GetTownBuildingLevel( "cheast_town", TOWN_BUILDING_DWELLING_2 ) = 2; then AddHeroCreatures( "Sarge", CREATURE_LONGBOWMAN, 1 ); RemoveHeroCreatures( "Sarge", CREATURE_ARCHER, 9999 ); else nil; end; end;
function replacecreature () while 1 do if GetHeroCreatures( "Sarge", CREATURE_ARCHER ) >= 1 and GetTownBuildingLevel( "cheast_town", TOWN_BUILDING_DWELLING_2 ) == 2 then RemoveHeroCreatures( "Sarge", CREATURE_ARCHER, 9999 ); AddHeroCreatures( "Sarge", CREATURE_LONGBOWMAN, 1 ); end; sleep(4); end; end;
startThread( replacecreature );
А так?
за одно, как бэ случайно пропалил мод который пытаюсь склепать
Заинтриговали... --- Впрочем, код, что я написал, имеет слабое звено. Подозреваю, у Вас там не 9999 лучников на самом деле. Ошибку выдаст. Надо сделать проверку точного числа лучников и это точное число вычитать! Если смысл в том, чтобы в армии их больше не было. Но пока проверьте без вычитания лучников просто.
function replacecreature () while 1 do if GetHeroCreatures( "Sarge", CREATURE_ARCHER ) >= 1 and GetTownBuildingLevel( "cheast_town", TOWN_BUILDING_DWELLING_2 ) = 2 then RemoveHeroCreatures( "Sarge", CREATURE_ARCHER, 9999 ); AddHeroCreatures( "Sarge", CREATURE_LONGBOWMAN, 1 ); end; end; end;
startThread( "replacecreature" );
Проверил, всё так же не работает (не запускается причём, как если здание построено с самого начала карты, так и если его строишь уже во время игры)
Где-то читал, что вроде надо писать не startThread( "replacecreature" ) а startThread( replacecreature) например, попробовал и такой вариант, тоже результата не дало
В руководстве у новика, насчёт startThread есть ещё такой кусок while(1) do local heroes = GetPlayerHeroes(PLAYER_1) for i, h in heroes do if.... но как это применить и что это значит я понятия не имею ибо нуб