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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Шипэтя 0 Опубликовано 25 Июля 2021 Поделиться Опубликовано 25 Июля 2021 3 минуты назад, I am Dead сказал: Это называется условие Извиняюсь за не знание, не судите я начинаю осваивать скрипты и по это много ошибаюсь, а может есть статейка где что то подобное рассказывается ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391161
I am Dead 918 Опубликовано 25 Июля 2021 Поделиться Опубликовано 25 Июля 2021 4 минуты назад, Шипэтя сказал: Извиняюсь за не знание, не судите я начинаю осваивать скрипты и по это много ошибаюсь, а может есть статейка где что то подобное рассказывается ? Не видел я такой статьи, могу только скинуть пример как это сделано Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391162
Шипэтя 0 Опубликовано 25 Июля 2021 Поделиться Опубликовано 25 Июля 2021 4 минуты назад, I am Dead сказал: скинуть пример Мне это подходит Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391164
Rod_K 1 Опубликовано 25 Июля 2021 Поделиться Опубликовано 25 Июля 2021 (изменено) Подскажите, пожалуйста, как прописать логику враждебному нпс так, чтобы он не атаковал актора при приближении к нему, не сходил с точки спавна и постоянно проигрывал анимацию состояния транса (trans_0_idle_0)? Короче, примерно тоже самое, что и в тч, когда монолитовцы сидят вокруг кучи мусора и вращают головами. Изменено 25 Июля 2021 пользователем Rod_K Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391186
Labadal 68 Опубликовано 25 Июля 2021 Поделиться Опубликовано 25 Июля 2021 Подскажите, как добавить новую кнопку в пда? Делаю по аналогии с кнопкой "центр на меченом", но кнопки не появляется. Пробовал удалить секцию кнопки "центр на меченом", но вылета не было, просто кнопка не появилась. Значит - её нигде не требуют. Но моя кнопка даже с готовой секцией не появляется. Неужели это тоже движковая тема? Всем спасибо God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391188
naxac 2 605 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 3 часа назад, Labadal сказал: Неужели это тоже движковая тема? Да. 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391190
Zander_driver 10 357 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 (изменено) 6 часов назад, Labadal сказал: Пробовал удалить секцию кнопки "центр на меченом", но вылета не было, просто кнопка не появилась. Значит - её нигде не требуют. Часть элементов движковых интерфейсов строится по принципу if (uiXml.NavigateToNode("какая-то нода xml", 0)) { Т.е. если их удалить из xml-конфига, элемент исчезает без вылета. Вернуть на место - появляется. Другие элементы требуются без проверок и их удаление из конфигов вызовет вылет. Но в любом случае, и те и другие спрашивает движок. Чтобы эта "какая-то нода" была прочитана, движок должен ее запросить. В дефолтном ТЧ, емнип, чтением xml-конфигов любых в принципе, только движок и занимается. Изменено 26 Июля 2021 пользователем Zander_driver 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391193
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 Подскажите, почему получается вылет при определении переменной ini-файла: local ltx="weapons\\upgrade.ltx" local ini=ini_reader.iniReader(ltx) --вылет local ini=ini_file(ltx) --тоже вылет Скрытый текст [error]Expression : fatal error [error]Function : CInifile::r_section [error]File : Xr_ini.cpp [error]Line : 397 [error]Description : Can't open section '%s' [error]Arguments : wpn_ak74 ... Скрытый текст [wpn_ak74_kalibr]:wpn_ak74 ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap, ammo_5.56x45_gd inv_name = wpn-ak74_kalibr description = enc_kalibr_wpn_ak74 inv_grid_x = 41 inv_grid_y = 9 cost = 3200 silencer_name = wpn_addon_sil_556_ar silencer_x = 225 silencer_y = 15 cheat_item = true Думается, из-за ":wpn_ak74" после имени секции. Но как тогда явно указать такой файл для чтения из него? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391196
Zander_driver 10 357 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 Только что, phalcor сказал: Подскажите, почему получается вылет при определении переменной ini-файла: Потому, что это надо делать как-то так: local kn_ini = ini_file([[weapons\\upgrade.ltx]]) Только что, phalcor сказал: Думается А думается неправильно. Наследовать секции в файлах, подключаемых таким образом, можно так же как и в обычных конфигах. 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391197
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 @Zander_driver Всё тоже самое - тот же вылет! Пробовал так: local kn_ini = ini_file([[weapons\\upgrade.ltx]]) --так вылета нет, но в log пишет: WARNING: CLocatorAPI::check_for_file file not found file z:\op21-repack\gamedata\config\weapons\\upgrade.ltx in files list (size = 83322) соответственно, так как файл не найден, то и чтения из него не будет... Пробуем убрать один слэш: local kn_ini = ini_file([[weapons\upgrade.ltx]]) --так вылет. Как же сделать присвоение переменной ini?! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391198
WinCap 324 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 (изменено) @phalcor, может так: local kn_ini = ini_file("weapons\\upgrade.ltx") P.S. Ищи примеры кода в папке "scripts", там всё есть. Изменено 26 Июля 2021 пользователем WinCap S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391199
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 Ситуация немного проясняется. Дело всё-таки в наследуемой секции. Вот у меня в файле upgrade.ltx такая запись: [wpn_ak74_kalibr]:wpn_ak74 Если добавить наследуемую секцию [wpn_ak74] в ЭТОТ ЖЕ файл, всё работает! Если она в другом файле - вылет, расписанный мною выше. Получается, подключить такой файл через переменную ini = ini_file(имя) невозможно? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391200
WinCap 324 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 (изменено) @phalcor, нужно выбрать "вышестоящий" файл, тот в котором подключен upgrade.ltx. Рискну предположить, что это: local kn_ini = ini_file("weapons.ltx") Изменено 26 Июля 2021 пользователем WinCap S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391202
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 @WinCap, попробовал weapons.ltx - там тоже вылет. В общем, у меня задача стояла такая - определить, является ли запрашиваемый параметр оружия "родным" (прописанным непосредственно под секцией это оружия), или же он наследуемый. Пока решения не вижу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391203
Zander_driver 10 357 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 Только что, phalcor сказал: Если добавить наследуемую секцию [wpn_ak74] в ЭТОТ ЖЕ файл, всё работает! Естественно, родитель для наследования должен быть виден там, где ты его наследуешь. Если ты хочешь, чтобы все выше-объявленные секции конфига были видны для твоей, то и подключай его к system.ltx, и доступ получай через system_ini(). Файлы, доступ к которым получается через ini_file(), подключаются как отдельная система конфига, независимая и несвязанная с system_ini. К ним может быть тоже что-то подключено через #include, но это все равно будет обособленная система. Только что, phalcor сказал: В общем, у меня задача стояла такая - определить, является ли запрашиваемый параметр оружия "родным" (прописанным непосредственно под секцией это оружия), или же он наследуемый. Есть такая идея... local ltx = system_ini() function found_line(section, line) local lc = ltx:line_count(section) local a = 1 while a < lc do local key = '' local value = '' local r = ltx:r_line(section, a, key, value) if r and key == line then return true end a = a + 1 end return false end Методы line_count и r_line точно есть в OGSR (Это не я добавил). Есть ли они в оригинальном ТЧ, честно говоря не помню. Если есть, то должно сработать. Если же нету, то боюсь, не существует способа узнать то что тебе нужно из скриптов. 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391206
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 @Zander_driver , спасибо за идею, методы у меня работают (ОП 2.1), вот только функция всегда выдаёт "true", т.е. какой параметр ей в line не укажи, она его всегда найдёт в system_ini() - оно и правильно, ведь это обобщённое, так сказать хранилище всех параметров данной секции. Ну что жеж, констатируем - нет у нас методов против Кости Сапрыкина для решения моей задачи по определению, оригинален или наследуем параметр. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391213
WinCap 324 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 (изменено) 7 минут назад, phalcor сказал: вот только функция всегда выдаёт "true" Это естественно. После прочтения ini-файла, наследуемые параметры копируются в конечную секцию, и присутствую в ней в полном составе. 7 минут назад, phalcor сказал: нет у нас методов ... по определению, оригинален или наследуем параметр. Здесь возможен только "костыль". Если точно знать имя конечной секции, а также имя наследуемой, то можно прочитать параметр дважды - из одной и из другой секции. Если параметр различается, значит, он был переопределен. По другому никак. Изменено 26 Июля 2021 пользователем WinCap 2 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391214
phalcor 60 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 8 минут назад, WinCap сказал: Если точно знать имя конечной секции, а также имя наследуемой, то можно прочитать параметр дважды - из одной и из другой секции. А вот это идея. Остаётся узнать, а есть ли способ прочитать в переменную parent-секцию (то, что после двоеточия) - [wpn_ak74_m1]:wpn_ak74 ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391216
WinCap 324 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 (изменено) 4 минуты назад, phalcor сказал: есть ли способ прочитать в переменную parent-секцию Нет. Если это действительно необходимо для реализации какой-то мега крутой идеи, то можно вручную составить таблицу наследований секций: local tbl = { ["wpn_ak74_m1"] = "wpn_ak74", и т.д. } Изменено 26 Июля 2021 пользователем WinCap 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391217
Zander_driver 10 357 Опубликовано 26 Июля 2021 Поделиться Опубликовано 26 Июля 2021 Только что, WinCap сказал: можно вручную составить таблицу наследований секций: Или написать некий алгоритм парсера, который просканирует конфиги и составит такую таблицу автоматически. Реализацию можно подсмотреть во всяческих редакторах конфигов сталкера, которых уже множество расплодилось. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/569/#findComment-1391224
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти