Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
Graff46 598 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 1 час назад, TIGER_VLAD сказал: Вот только тогда игрок сможет выйти за пределы локации и упасть например) Ставите невидимую стену или пишите скрипт который будет вызывать нужные эффекты когда ГГ входит в заданную область координат Ссылка на комментарий
Graff46 598 Опубликовано 19 Августа 2017 Поделиться Опубликовано 19 Августа 2017 3 часа назад, Graff46 сказал: Нету Нету в чистом ТЧ в Экстейсшоне есть, но у меня не робит... Выходом из этой ситуации я вижу только составление математического выражения которое из расчета длины строки передаваемой в статик будет задавать статику высоту... Ссылка на комментарий
=VENOM= 50 Опубликовано 20 Августа 2017 Поделиться Опубликовано 20 Августа 2017 (изменено) Согласен с TIGER_VLAD, для себя такую проблему решал давным-давно - похоже, тем же способом, что и в ЧН на болотах (точно не помню, в ЧН не играл с момента выхода игры, наверное ). 2 варианта: первый попроще, если вокруг левелчейнджера есть много свободного места, "накрываем" его рестриктором, с шейпом, бОльшим, чем у левелчейнджера. В его логике выставляем условия, при которых рестриктор будет "возвращать" игрока в заданную (заданные) точки функцией set_actor_position+set_actor_direction, не давая ему "добраться" до левелчейнджера. И, может быть, даже с соответствующим сообщением, типа "дорога закрыта" . Второй вариант, если пространство у перехода ограничено, и рестриктором не получается надёжно перекрыть левелчейнждер - логику рестриктора, перемещающую игрока оставляем, как и в первом случае, а вот сам левелчейнджер придётся спонить/удалять уже либо из логики рестриктора (что очень удобно, в общем-то), либо где-то в другом месте, где удобнее разработчику. Изменено 20 Августа 2017 пользователем =VENOM= 1 1 Ссылка на комментарий
Graff46 598 Опубликовано 20 Августа 2017 Поделиться Опубликовано 20 Августа 2017 (изменено) Можно ли на ТЧ получить имя шрифта или размер шрифта в GUI статике? GUIWindow:GetFont() Возвращает непонятный объект\класс Изменено 20 Августа 2017 пользователем Graff46 Ссылка на комментарий
UnLoaded 313 Опубликовано 20 Августа 2017 Поделиться Опубликовано 20 Августа 2017 6 минут назад, Graff46 сказал: Возвращает непонятный объект\класс С объектом\классом все понятно - CGameFont. Вот только толку от этого мало - в скрипты из этого класса ничего не экспортировано, кроме флагов выравнивания текста. Цитата Выходом из этой ситуации я вижу только составление математического выражения которое из расчета длины строки передаваемой в статик будет задавать статику высоту... Не выйдет у Вас ни чего, т.к. для этого надо много чего иметь экспортированного в скрипты - а нету ! Ну не нужно это было ПЫСам... Самый простой вариант - правка движка. Я вот у себя экспортнул AdjustHeightToText() - проверил, все прекрасно работает. Ссылка на комментарий
macron 1 890 Опубликовано 20 Августа 2017 Поделиться Опубликовано 20 Августа 2017 В 19.08.2017 в 23:23, Lebedev30 сказал: В 19.08.2017 в 23:19, nego сказал: Здравствуйте ВАМ. Как можно в ТЧ...04 сделать арты, увеличивающие переносимый вес? Меня этот вопрос интересовал и давно, но для ТЧ даже таких модов не встречалось или инструкций. Лучше на ЧН или ЗП переходи. Сразу видно, в OLR не играли. Ссылка на комментарий
nego 35 Опубликовано 21 Августа 2017 Поделиться Опубликовано 21 Августа 2017 (изменено) Цитата Сразу видно, в OLR не играли Я не играю. Я делаю мелкие модификации для мальчишек. Вот они играют. Изменено 21 Августа 2017 пользователем nego Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч. Ссылка на комментарий
Graff46 598 Опубликовано 21 Августа 2017 Поделиться Опубликовано 21 Августа 2017 (изменено) В 20.08.2017 в 23:38, UnLoaded сказал: Не выйдет у Вас ни чего, Вот реализация ввода строки с переносами в кастом статик и его растягивание под текст function start(t, fntName, kegl) -- t - вводимый текст: fntName* - шрифт; kegl* - размер шрифта var = doc_viewer.DocUI() level.start_stop_menu(var, true) str_ln_px = string.len(t)*(0.35*kegl) cnt_str = math.ceil(str_ln_px/list:GetWidth()) for str in string.gmatch(t, "\\n") do cnt_str = cnt_str+1 end offst_ht = math.ceil(cnt_str*30) list:SetHeight(offst_ht) --list:SetFont(GetFontGraffiti22()) list:SetText(t) end list это объект статика Изменено 22 Августа 2017 пользователем Graff46 Ошибки исправлял Ссылка на комментарий
UnLoaded 313 Опубликовано 21 Августа 2017 Поделиться Опубликовано 21 Августа 2017 2 часа назад, Graff46 сказал: Вот реализация ввода строки... И где это будет работать ? Т.е. под какую версию исходного движка ? 2 часа назад, Graff46 сказал: list это объект статика doc_viewer.DocUI() - а это что ? "kegl" каким образом задается\вычисляется ? GetFontGraffiti22() - это из какой версии движка ? Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 (изменено) 9 часов назад, UnLoaded сказал: И где это будет работать ? ТЧ оригинал. doc_viewer.script Скрытый текст local var, list, str_ln local str_ln_px, offst_ht, cnt_str = 0, 0, 1 --*************************************************************** function start(t, fntName, kegl) var = doc_viewer.DocUI() level.start_stop_menu(var, true) str_ln_px = string.len(t)*(0.35*kegl) cnt_str = math.ceil(str_ln_px/list:GetWidth()) for str in string.gmatch(t, "\\n") do cnt_str = cnt_str+1 end offst_ht = math.ceil(cnt_str*30) list:SetHeight(offst_ht) --list:SetFont(GetFontGraffiti22()) list:SetText(t) end --*************************************************************** class "DocUI" (CUIScriptWnd) function DocUI:__init() super() self:InitControls() self:InitCallBacks() end function DocUI:__finalize() end function DocUI:InitControls() local xml = CScriptXmlInit() self:Init(0,0,1024,768) xml:ParseFile("DocUI.xml") self.frame1 = xml:InitFrame("frame1", self) self.st = xml:InitStatic("frame1:Static1", self.frame1) self.descr_scroll = xml:InitScrollView("frame1:Static1:descr_scroll", self.st) list = xml:InitStatic("frame1:Static1:Static2", self.descr_scroll) self:Register(xml:Init3tButton("frame1:button1", self.frame1), "button1") end function DocUI:InitCallBacks() self:AddCallback("button1", ui_events.BUTTON_CLICKED, self.button1_button_clicked, self) end function DocUI:button1_button_clicked() self:Hide() end function DocUI:Hide() self:GetHolder():start_stop_menu(self, true) end Кегль задаём сами - это как правило число в конце названия шрифта. Изменено 22 Августа 2017 пользователем Graff46 Описал кегль Ссылка на комментарий
UnLoaded 313 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 @Graff46 Беру свои слова обратно. Хотя так и не получил ответа: "kegl" - как вычисляется\откуда берется, + смущают как всегда "волшебные" числа str_ln_px = string.len(t)*(0.35*kegl) и offst_ht = math.ceil(cnt_str*30)... Ссылка на комментарий
UnLoaded 313 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 Только что, Graff46 сказал: Кегль задаём сами - это как правило число в конце названия шрифта. Понятно. Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 (изменено) 31 минуту назад, UnLoaded сказал: Хотя так и не получил ответа: Числа подбирал и пользовался конвертерами из пунктов в пиксели + некоторые свои расчёты... Всё это очень приблизительно с округлением в большую сторону, т. е. скролл возмет весь текст + немного пустого места снизу будет. _________________ Хотел бы получить разъяснения как писать шрифты в метод :SetFont(СFont*). Изменено 22 Августа 2017 пользователем Graff46 Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 Внимание в моём посте была ошибка: параметр t - это не какой не шрифт, а вводимый в статик текст! Ссылка на комментарий
UnLoaded 313 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 44 минуты назад, Graff46 сказал: Хотел бы получить разъяснения как писать шрифты в метод :SetFont(СFont*). local font = GetFontGraffiti22Russian() какой-то-статик:SetFont(font) Список шрифтов, доступных в скриптах(нашел поиском в движке, то что экспортировано(в 1.0007rc1)), в виде ф-ций их получения: "GetFontSmall" "GetFontMedium" "GetFontDI" "GetFontGraffiti19Russian" "GetFontGraffiti22Russian" "GetFontLetterica16Russian" "GetFontLetterica18Russian" "GetFontGraffiti32Russian" "GetFontGraffiti50Russian" "GetFontLetterica25" 1 Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 В дополнение... Что бы в ГУИ элементах работали переносы строк стоит провести такое преобразование: function inline_str (str) return string.gsub(str, "[\r\n]",'\\n') end Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 (изменено) Подскажите что за число возвращает метод? какоетоЧисло, ключ, секция = ini_file:r_line(string) Изменено 22 Августа 2017 пользователем Graff46 Ссылка на комментарий
7.9 174 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 6 часов назад, UnLoaded сказал: писок шрифтов, доступных в скриптах(нашел поиском в движке, то что экспортировано(в 1.0007rc1)), в виде ф-ций их получения: "GetFontSmall" "GetFontMedium" "GetFontDI" "GetFontGraffiti19Russian" "GetFontGraffiti22Russian" "GetFontLetterica16Russian" "GetFontLetterica18Russian" "GetFontGraffiti32Russian" "GetFontGraffiti50Russian" "GetFontLetterica25" Мне, в своё время, удалось реально задействовать только эти: GetFontLetterica16Russian()) GetFontLetterica18Russian()) GetFontGraffiti19Russian()) GetFontGraffiti22Russian()) GetFontArialN21Russian()) GetFontHeaderRussian()) GetFontBigDigit()) Вообще, неплохо-бы если-б ещё шрифтов добавили... всё легко Ссылка на комментарий
Graff46 598 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 Только что, 7.9 сказал: если-б ещё шрифтов добавили... Так вроде шрифты можно конфигурировать и наследовать в файле fonts.ltx. И я находил сборку шрифтов для больших экранов на ТЧ и они работали. Ссылка на комментарий
7.9 174 Опубликовано 22 Августа 2017 Поделиться Опубликовано 22 Августа 2017 (изменено) Я больше про сам набор символов имел в виду, про сами текстуры шрифтов. Помню "смайлы" хотел что-бы в текст вставить можно было, чего-то ещё то-же хотел... Изменено 22 Августа 2017 пользователем 7.9 всё легко Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти