Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты для начинающих
Показать сообщение отдельно
#101
Старый 25.02.2017, 15:21
  #101
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты для начинающих

А можно немного всё расшифровать, пожалуйста? Прям вот по полочками и кажду частичку, если не трудно.
Это общий подход для любого языка программирования - если вы используете какую-нибудь сложную конструкцию несколько раз (а MessageBox явно на карте будет не один), то можно всю повторяющуюся рутину вынести в отдельную функцию, а писать только то, что изменяется от раза к разу. На примере вашего
MessageBox ("/Maps/SingleMission/Scenario 1/quest1.txt");
Каждый раз в подобном случае вы будете повторять:
MessageBox - достаточно короткое название функции, но можно придумать и гораздо короче.
"/Maps/SingleMission/Scenario 1/" - путь у всех текстовых файлов вероятно будет один.
".txt" - расширение файла тоже не изменяется.
В результате всё, что будет повторятся, описывается один раз в новой функции, с удобным для вас и желательно коротким названием. В функцию передается только изменяющаяся часть - название файла. С помощью оператора ".." строчки склеиваются в одну. Второй параметр функции cb - аналогичен такому же второму параметру оригинального MessageBox (не буду объяснять его смысл, для этого есть документация). Второй параметр необязательный, можно его не указывать.
	-- функция-обёртка вокруг MessageBox. Помещается где-нибудь в начале файла:
function MsgBox(text, cb)
  MessageBox(GetMapDataPath()..text..'.txt', cb);
end

-- пример вызова сообщения, вместо MessageBox ("/Maps/SingleMission/Scenario 1/quest1.txt"); достаточно написать:
MsgBox('quest1');
Если вы критически осмотрите свой код, уверен найдете кучу похожих мест, где можно оптимизировать громоздкие конструкции.

P.S. Конечно, если планируется написать для карты 100 строк кода и всё, то можно на подобные советы не заморачиваться.
Jack_of_shadows вне форума
Ответить с цитированием