Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Set/GetGameVar сохраняет уж слишком глобально, с помощью нее можно переносить данные между приключенческим и боевым режимом, а также между картами. Внутри одной карты все гораздо проще:
function foo() local var1 = 1; -- var1 локальная, видна только в этой функции var2 = 2; -- var2 глобальная, может быть использована где угодно end
Более хорошим тоном является конечно все переменные внутри функций делать локальными, а глобальные объявлять снаружи, скажем в начале файла:
hero_level = 1;
function foo() hero_level = GetHeroLevel('hero'); end
function bar() local some_variable = hero_level; end
-- инициализируем переменную каким-нибудь состояним по-умолчанию. -- Не обязательно, но очень полезно, так как если мы случайно обратимся к ней раньше, -- чем ее создадим, скрипт вылетит. Инициализация в начале файла -- гарантирует что переменная точно всегда будет существовать. hero_level = 1; -- задаем переменной значение?
-- когда появилась необходимость запомнить текущий уровень героя, -- вызываем эту функцию, глобальная переменная запоминает его значение -- до тех пор, пока не будет переприсвоена снова. function foo() hero_level = GetHeroLevel('hero'); -- в функции переменная равна уровню героя? end
-- в любой последующий момент из любой другой функции мы можем использовать это значение. -- скажем более осмысленный пример - дадим герою крестьян столько же, какой у него был уровень: function bar() AddHeroCreatures('hero_name', CREATURE_PEASANT, hero_level); end
В мультиплеерной карте применил в скрипте функцию MoveCamera. Для того игрока, который активировал триггер все прекрасно сработало, но при наступлении хода второго игрока, камера опять совершила перемещение в заданную точку. Так и должно работать или можно исправить?
function mummytalk() Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mummy1', nil) CreateMonster('monster1',CREATURE_MATRIARCH,1,55,77,0,MONSTER_MOOD_FRIENDLY,MONSTER_COURAGE_ALWAYS_JOIN,180) sleep(2) CreateMonster('monster2',CREATURE_MATRIARCH,5,54,74,0,MONSTER_MOOD_WILD,MONSTER_COURAGE_ALWAYS_FIGHT,180) MoveCamera( 55, 77, 0, 40, 0.7, 5, 0, 0); sleep(5) for m=1,3 do ShowFlyingSign(dir..'MATRIARCH'..m..'.txt','monster1',-1,3) sleep(5) end end Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mummy1', 'mummytalk')
для игрока, который этот триггер запускает все корректно работает, но при начале следующего хода второй игрок получает перемещение камеры в эту точку и весь список FlyingSign выскакивает Думаю, может в начале каждого хода попробовать камеру на игрока насильно центрировать Костыль, конечно, но как иначе обойти эту проблему?
Костыль, конечно, но как иначе обойти эту проблему?
Перед тем, как запускать какие-то скрипты, сделать проверку на номер игрока. Всё просто. Номер игрока должен совпадать с обладателем героя, активировавшим триггер.
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
да, заработало как надо, спасибо за оперативный ответ а MoveCameraForPlayers - секретная такая функция, стал искать по ней инфу, нашел много интересного про патч 3.1 всем рекомендую
всю голову сломал, не могу понять как работает функция QuestionBoxForPlayers она возвращает значение или просто должна запускать одну из двух функций? можете разъяснить подробнее принцип действия?
Medyan, есть такие понятия, как модальное и немодальное окно. Модальное - скрипт будет висеть на строчке вызова окна, пока пользователь его не закроет (так работает MessageBox). Немодальное - скрипт откроет окно и продолжит выполняться дальше, забыв о нем (так работает QuestionBox). Команда открытия немодального окна не может ничего вернуть, потому что пользователь нажмет кнопку на нем когда она давно уже отработает. Поэтому в ней используется другой механизм - передаются названия функций, соответствующих вариантам ответов, а окно само вызывает эти функции после нажатия пользователем одной из кнопок.
Спасибо, Jack, очень доходчиво объяснил Правда оказалось, что функция у меня не работала не потому что я принцип неправильно понял, а потому что в орфографии ошибся... бывает. Назрел такой вопрос, количество Темной энергии у некроманта поддается какому либо воздействию (или хотя бы просто подсчету)? То же про возможность воздействовать на количество существ доступных для тренировки у рыцарей, можно как-то скриптами поменять это?
Тёмная энергия поддаётся только подсчёту, для чего существует функция GetPlayerNecroEnergy(номер_игрока). На количество доступных для тренировки существ, вроде тоже влиять нельзя скриптами. Можно сделать отдельное здание, посетив которое, игрок сможет тренировать дополнительных существ, как вариант.
спасибо, и еще вопрос: можно ли как-нибудь определить велись ли раскопки на клетке карты? или копал ли герой в определенный момент? пока что приходит в голову определять положение игрока и следить за изменением очков хода, и если положение не меняется, а очки ходов обнулились - значит копал (и параллельно надо следить, не призывал ли он существ из замка, ведь в этом случае, тоже ходы тратятся)
У меня возник вопрос. Как с помощью скриптов проиграть ролик после завершения задания?:confused: Вот выполнил задание, посмотрел ролик, продолжил играть. Кстати, по поводу роликов... Как вставить свою озвучку? Нужный формат есть, а вставить в диалоговую сцену не получается. Заранее спасибо!