Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
#2255
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
Аватар пользователя
#2256
Не совсем понимаю, что происходит во втором примере.
hero_level = 1; -- задаем переменной значение?

function foo()
hero_level = GetHeroLevel('hero'); -- в функции переменная равна уровню героя?
end

function bar()
local some_variable = hero_level; -- локальная для функции переменная равна глобальной переменной? (1?)
end
Всё, что сейчас происходит во мне, тоже является частью Вселенной. (с) Иванов Александр.
Цикл кампаний "Дыхание Смерти" из трёшки в четвёртом исполнении
Учебная карта
Астралия
За Королеву!
Подземелья и Дьяволы
Отголоски войны
Освобождение
Аватар пользователя
#2257
-- инициализируем переменную каким-нибудь состояним по-умолчанию.
-- Не обязательно, но очень полезно, так как если мы случайно обратимся к ней раньше,
-- чем ее создадим, скрипт вылетит. Инициализация в начале файла
-- гарантирует что переменная точно всегда будет существовать.
hero_level = 1; -- задаем переменной значение?

-- когда появилась необходимость запомнить текущий уровень героя,
-- вызываем эту функцию, глобальная переменная запоминает его значение
-- до тех пор, пока не будет переприсвоена снова.
function foo()
hero_level = GetHeroLevel('hero'); -- в функции переменная равна уровню героя?
end

-- в любой последующий момент из любой другой функции мы можем использовать это значение.
-- скажем более осмысленный пример - дадим герою крестьян столько же, какой у него был уровень:
function bar()
AddHeroCreatures('hero_name', CREATURE_PEASANT, hero_level);
end
Аватар пользователя
#2258
В мультиплеерной карте применил в скрипте функцию MoveCamera. Для того игрока, который активировал триггер все прекрасно сработало, но при наступлении хода второго игрока, камера опять совершила перемещение в заданную точку.
Так и должно работать или можно исправить?
и немедленно выпил...
Аватар пользователя
#2259
Нужно бы текст скрипта хоть приблизительно.
Триггер после прохода камеры был обнулён?

Jack_of_shadows
Спасибо большое. Всё оказалось проще, чем я думал. Оказывается, я немного ошибся) Свой скрипт сделал с такой переменной - работает.
Всё, что сейчас происходит во мне, тоже является частью Вселенной. (с) Иванов Александр.
Цикл кампаний "Дыхание Смерти" из трёшки в четвёртом исполнении
Учебная карта
Астралия
За Королеву!
Подземелья и Дьяволы
Отголоски войны
Освобождение
Аватар пользователя
#2260
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 выскакивает
Думаю, может в начале каждого хода попробовать камеру на игрока насильно центрировать
Костыль, конечно, но как иначе обойти эту проблему?
и немедленно выпил...
Аватар пользователя
#2261
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#2262
Костыль, конечно, но как иначе обойти эту проблему?
Перед тем, как запускать какие-то скрипты, сделать проверку на номер игрока. Всё просто. Номер игрока должен совпадать с обладателем героя, активировавшим триггер.
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
О, ну так даже проще, наверное.
 

К А
Стикеры GBF в Telegram
В ответ пользователю RedHeavenHero
Аватар пользователя
#2263
RedHeavenHero
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
да, заработало как надо, спасибо за оперативный ответ
а MoveCameraForPlayers - секретная такая функция, стал искать по ней инфу, нашел много интересного про патч 3.1
всем рекомендую
и немедленно выпил...
Аватар пользователя
#2264
всю голову сломал, не могу понять как работает функция QuestionBoxForPlayers
она возвращает значение или просто должна запускать одну из двух функций?
можете разъяснить подробнее принцип действия?
и немедленно выпил...
Аватар пользователя
#2265
Medyan, есть такие понятия, как модальное и немодальное окно.
Модальное - скрипт будет висеть на строчке вызова окна, пока пользователь его не закроет (так работает MessageBox).
Немодальное - скрипт откроет окно и продолжит выполняться дальше, забыв о нем (так работает QuestionBox).
Команда открытия немодального окна не может ничего вернуть, потому что пользователь нажмет кнопку на нем когда она давно уже отработает. Поэтому в ней используется другой механизм - передаются названия функций, соответствующих вариантам ответов, а окно само вызывает эти функции после нажатия пользователем одной из кнопок.
Аватар пользователя
#2266
Спасибо, Jack, очень доходчиво объяснил
Правда оказалось, что функция у меня не работала не потому что я принцип неправильно понял, а потому что в орфографии ошибся... бывает.
Назрел такой вопрос, количество Темной энергии у некроманта поддается какому либо воздействию (или хотя бы просто подсчету)?
То же про возможность воздействовать на количество существ доступных для тренировки у рыцарей, можно как-то скриптами поменять это?
и немедленно выпил...
Аватар пользователя
#2267
Тёмная энергия поддаётся только подсчёту, для чего существует функция GetPlayerNecroEnergy(номер_игрока).
На количество доступных для тренировки существ, вроде тоже влиять нельзя скриптами. Можно сделать отдельное здание, посетив которое, игрок сможет тренировать дополнительных существ, как вариант.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#2268
спасибо, и еще вопрос:
можно ли как-нибудь определить велись ли раскопки на клетке карты?
или копал ли герой в определенный момент?
пока что приходит в голову определять положение игрока и следить за изменением очков хода, и если положение не меняется, а очки ходов обнулились - значит копал (и параллельно надо следить, не призывал ли он существ из замка, ведь в этом случае, тоже ходы тратятся)
и немедленно выпил...
В ответ пользователю Medyan
Аватар пользователя
#2269
У меня возник вопрос. Как с помощью скриптов проиграть ролик после завершения задания?:confused: Вот выполнил задание, посмотрел ролик, продолжил играть.
Кстати, по поводу роликов...
Как вставить свою озвучку? Нужный формат есть, а вставить в диалоговую сцену не получается. Заранее спасибо!

Статистика

Приветствуем новейшего участника: Emil

Сейчас на сайте 5 пользователей 1038 гостей