Скрипты - Страница 149 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 149 из 254
 
Опции темы
#2221
Старый 18.05.2016, 22:33
  #2221
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
По умолчанию
Re: Скрипты

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
Jack_of_shadows вне форума
Ответить с цитированием
#2222
Старый 18.05.2016, 22:52
  #2222
^
Квант
 
Аватар для Квант
📖
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
По умолчанию
Re: Скрипты

Не совсем понимаю, что происходит во втором примере.

	hero_level = 1; -- задаем переменной значение?

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

function bar()
  local some_variable = hero_level; -- локальная для функции переменная равна глобальной переменной? (1?)
end
Квант вне форума
Ответить с цитированием
#2223
Старый 18.05.2016, 23:12
  #2223
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
По умолчанию
Re: Скрипты

	-- инициализируем переменную каким-нибудь состояним по-умолчанию.
-- Не обязательно, но очень полезно, так как если мы случайно обратимся к ней раньше,
-- чем ее создадим, скрипт вылетит. Инициализация в начале файла
-- гарантирует что переменная точно всегда будет существовать.
hero_level = 1; -- задаем переменной значение?

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

-- в любой последующий момент из любой другой функции мы можем использовать это значение.
-- скажем более осмысленный пример - дадим герою крестьян столько же, какой у него был уровень:
function bar()
  AddHeroCreatures('hero_name', CREATURE_PEASANT, hero_level);
end
Jack_of_shadows вне форума
Ответить с цитированием
#2224
Старый 19.05.2016, 15:19
  #2224
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

В мультиплеерной карте применил в скрипте функцию MoveCamera. Для того игрока, который активировал триггер все прекрасно сработало, но при наступлении хода второго игрока, камера опять совершила перемещение в заданную точку.
Так и должно работать или можно исправить?
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2225
Старый 19.05.2016, 18:57
  #2225
^
Квант
 
Аватар для Квант
📖
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
По умолчанию
Re: Скрипты

Нужно бы текст скрипта хоть приблизительно.
Триггер после прохода камеры был обнулён?

Jack_of_shadows
Спасибо большое. Всё оказалось проще, чем я думал. Оказывается, я немного ошибся) Свой скрипт сделал с такой переменной - работает.
Квант вне форума
Ответить с цитированием
#2226
Старый 19.05.2016, 23:15
  #2226
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

function mummytalk()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mummy1', nil)
CreateMonster('monster1',CREATURE_MATRIARCH,1,55,7 7,0,MONSTER_MOOD_FRIENDLY,MONSTER_COURAGE_ALWAYS_J OIN,180)
sleep(2)
CreateMonster('monster2',CREATURE_MATRIARCH,5,54,7 4,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','monste r1',-1,3)
sleep(5)
end
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mummy1', 'mummytalk')

для игрока, который этот триггер запускает все корректно работает, но при начале следующего хода второй игрок получает перемещение камеры в эту точку и весь список FlyingSign выскакивает
Думаю, может в начале каждого хода попробовать камеру на игрока насильно центрировать
Костыль, конечно, но как иначе обойти эту проблему?
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2227
Старый 19.05.2016, 23:20
  #2227
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2374
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2374
Выставка наград
По умолчанию
Re: Скрипты

Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2228
Старый 19.05.2016, 23:21
  #2228
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25998
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25998
По умолчанию
Re: Скрипты

Костыль, конечно, но как иначе обойти эту проблему?
Перед тем, как запускать какие-то скрипты, сделать проверку на номер игрока. Всё просто. Номер игрока должен совпадать с обладателем героя, активировавшим триггер.
Есть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
О, ну так даже проще, наверное.
__________________
Неужто я зашла настолько далеко
Твоей спины не видя?

Я знаю точно, сей путь мне по плечу —
Ведь кому ещё?






Стикеры GBF в Telegram
Неужто я зашла настолько далеко
Твоей спины не видя?

Я знаю точно, сей путь мне по плечу —
Ведь кому ещё?






Стикеры GBF в Telegram
Ment вне форума
Ответить с цитированием
#2229
Старый 20.05.2016, 00:50
  #2229
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

RedHeavenHeroЕсть функция MoveCameraForPlayers, вроде как. Ну и с отлетающим сообщением просто нужно заменить -1 на номер игрока.
да, заработало как надо, спасибо за оперативный ответ
а MoveCameraForPlayers - секретная такая функция, стал искать по ней инфу, нашел много интересного про патч 3.1
всем рекомендую
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2230
Старый 22.05.2016, 16:59
  #2230
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

всю голову сломал, не могу понять как работает функция QuestionBoxForPlayers
она возвращает значение или просто должна запускать одну из двух функций?
можете разъяснить подробнее принцип действия?
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2231
Старый 22.05.2016, 20:32
  #2231
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
Регистрация: 08.09.2013
Сообщения: 495
Выставка наград
По умолчанию
Re: Скрипты

Medyan, есть такие понятия, как модальное и немодальное окно.
Модальное - скрипт будет висеть на строчке вызова окна, пока пользователь его не закроет (так работает MessageBox).
Немодальное - скрипт откроет окно и продолжит выполняться дальше, забыв о нем (так работает QuestionBox).
Команда открытия немодального окна не может ничего вернуть, потому что пользователь нажмет кнопку на нем когда она давно уже отработает. Поэтому в ней используется другой механизм - передаются названия функций, соответствующих вариантам ответов, а окно само вызывает эти функции после нажатия пользователем одной из кнопок.
Jack_of_shadows вне форума
Ответить с цитированием
#2232
Старый 23.05.2016, 15:12
  #2232
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

Спасибо, Jack, очень доходчиво объяснил
Правда оказалось, что функция у меня не работала не потому что я принцип неправильно понял, а потому что в орфографии ошибся... бывает.
Назрел такой вопрос, количество Темной энергии у некроманта поддается какому либо воздействию (или хотя бы просто подсчету)?
То же про возможность воздействовать на количество существ доступных для тренировки у рыцарей, можно как-то скриптами поменять это?
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2233
Старый 23.05.2016, 15:23
  #2233
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2374
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2374
Выставка наград
По умолчанию
Re: Скрипты

Тёмная энергия поддаётся только подсчёту, для чего существует функция GetPlayerNecroEnergy(номер_игрока).
На количество доступных для тренировки существ, вроде тоже влиять нельзя скриптами. Можно сделать отдельное здание, посетив которое, игрок сможет тренировать дополнительных существ, как вариант.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2234
Старый 24.05.2016, 12:51
  #2234
^
Medyan
 
Аватар для Medyan
📖
Регистрация: 14.12.2007
Сообщения: 30
Регистрация: 14.12.2007
Сообщения: 30
По умолчанию
Re: Скрипты

спасибо, и еще вопрос:
можно ли как-нибудь определить велись ли раскопки на клетке карты?
или копал ли герой в определенный момент?
пока что приходит в голову определять положение игрока и следить за изменением очков хода, и если положение не меняется, а очки ходов обнулились - значит копал (и параллельно надо следить, не призывал ли он существ из замка, ведь в этом случае, тоже ходы тратятся)
__________________
и немедленно выпил...
и немедленно выпил...
Medyan вне форума
Ответить с цитированием
#2235
Старый 14.06.2016, 17:44
  #2235
^
Леонариус Хапер
 
Аватар для Леонариус Хапер
📖
Регистрация: 08.06.2016
Сообщения: 10
Регистрация: 08.06.2016
Сообщения: 10
Вопрос
Re: Скрипты

У меня возник вопрос. Как с помощью скриптов проиграть ролик после завершения задания? Вот выполнил задание, посмотрел ролик, продолжил играть.
Кстати, по поводу роликов...
Как вставить свою озвучку? Нужный формат есть, а вставить в диалоговую сцену не получается. Заранее спасибо!
Леонариус Хапер вне форума
Ответить с цитированием
Ответ
Страница 149 из 254


Опции темы



Часовой пояс GMT +4, время: 10:05.


vBulletin v3.5.0, Copyright ©2000-2022, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru