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/
Капрал Хикс 567 Опубликовано 23 Февраля Поделиться Опубликовано 23 Февраля И снова я с безумными идеями добавить новые фишки в многострадальный task_manager.script. Вроде есть возможность задать уникальную иконку циклическому заданию с чтением её из конфига, но как? В SoC Recession Addon в news_manager.script нашёл упоминание такого. Но как оно там работает - непонятно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1516550
drMiha 0 Опубликовано 23 Февраля Поделиться Опубликовано 23 Февраля @Im-not, понял, спасибо большое за информацию и за файлик! Странно это все, конечно, сегодня немного модифицировал код и ставил аддон "Воля Отступника". Начал ловить странные вылеты, если Не использую очередь. При использовании очереди, все нормально (под использованием имею ввиду взять значение/создать новую очередь (хотя если в это условие никогда не заходят, то остается только действие "взять значение")). Странно это все. Похоже, что функция или от старой версии осталась или делалась с запасом на все возможные использования (что я одобряю полностью, но разобраться в этом сложно, конечно ). Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1516552
h0N0r 416 Опубликовано 23 Февраля Поделиться Опубликовано 23 Февраля @Капрал Хикс Если за ориг. ТЧ, то у класса CGameTask (lua_help.script) нету метода для смена иконки. В ЗП он есть, пример чтения из конфига - task_objects.script (self.icon). https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1516556
Colder 12 Опубликовано 11 Марта Поделиться Опубликовано 11 Марта Подскажите как вывести в GUI окне количество итемов. Заголовок спойлера (редактируемый) local List = rx_utils.collect_section(ini, "loadout_points_" ..num) for k,v in pairs(List) do itt.item_name:SetText(gts(axr_base.get_inv_name(v))) -- имя itt.item_count:SetText(k) -- номер строки \ а нужно количество таблица в ltx [loadout_points_1] novice_outfit = 1 wpn_bm16 = 1 ammo_12x70_buck = 2 [loadout_points_2] bandage = 2 wpn_pm = 1 ammo_9x18_fmj = 3 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517000
Blum 127 Опубликовано 13 Марта Поделиться Опубликовано 13 Марта (изменено) @Colder тут local List = rx_utils.collect_section(ini, "loadout_points_" ..num) должно быть так local List = rx_utils.collect_sections(ini, {"loadout_points_" ..num}) Вот эта функция работает у меня из main_menu Рабочий код function bb(num) local ini1 =ini_file("misc\\proba.ltx") --local itt local List = rx_utils.collect_sections(ini1, {"loadout_points_" ..num}) for k,v in pairs(List) do -- itt.item_name:SetText(gts(axr_base.get_inv_name(v))) -- имя -- itt.item_count:SetText(k) -- номер строки \ а нужно количество --k = name --v = count sms("%c[sender]"..translate("name_obschaya_set")..":\\n%c[sms_red]"..k.." = "..v, nil, "nano", 30000) end end Изменено 13 Марта пользователем Blum Форматирование(сохранено в названии файлов) 1 ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517043
Капрал Хикс 567 Опубликовано 16 Марта Поделиться Опубликовано 16 Марта Занятная древняя опечатка в xr_conditions.script: function esc_bandits_die(sctor,npc) if has_alife_info("esc_kill_bandits_quest_kill") or has_alife_info("esc_kill_bandits_noquest_kill") then return true end return false end У аргумента должно быть actor по идее-то... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517124
Chypakabra 1 022 Опубликовано 16 Марта Поделиться Опубликовано 16 Марта Очень древняя опечатка в bind_stalker.script в function actor_binder:save(packet), и что забавно (нет), не видел ни одного мода где её исправили, печаль. --' Сохраняем данные об отключенном вводе if self.st.disable_input_time == nil then packet:w_bool(false) else packer:w_bool(true) -- ????????????????? utils.w_CTime(packet, self.st.disable_input_time) end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517128
Blum 127 Опубликовано 17 Марта Поделиться Опубликовано 17 Марта (изменено) @Капрал Хикс Внутри функции ни один из аргументов не задействован, поэтому всё проходит без ошибки. @Chypakabra Видимо disable_input_time всегда равен nil или вся функция целиком осталась для красоты Изменено 17 Марта пользователем Blum ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517134
Kirgudu 1 370 Опубликовано 17 Марта Поделиться Опубликовано 17 Марта 10 часов назад, Chypakabra сказал: disable_input_time В оригинале это свойство принимает значение только в функции, накладывающей эффект после удара в морду (см. xr_effects.actor_punch), а она, емнип, нигде не используется. Как уже совершенно справедливо заметил @Blum , до ошибки дело просто не доходит, потому никто не заметил и не исправил. Такого мусора в скриптах полно, вычищать можно долго. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517147
Blum 127 Опубликовано 17 Марта Поделиться Опубликовано 17 Марта @Капрал Хикс а вот эта функция в escape_dialog.script function bandits_die(actor,npc) if has_info("esc_kill_bandits_quest_kill") and not has_info("esc_kill_bandits_noquest_kill") then return true end return false end Ничего не напоминает? 1 ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517150
_Val_ 2 790 Опубликовано 22 Марта Поделиться Опубликовано 22 Марта 17.03.2026 в 00:39, Chypakabra сказал: не видел ни одного мода где её исправили, печаль. Цитата --' Сохраняем данные об отключенном вводе if self.st.disable_input_time == nil then packet:w_bool(false) else packet:w_bool(true) --// boryan67 utils.w_CTime(packet, self.st.disable_input_time) packet:w_u16(self.st.disable_input_idle) --// boryan67 end Сами знаете где)) 1 Краткий гид по моду Тайные Тропы 2 ПАРТИКЛЫ TERRA Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517261
Colder 12 Опубликовано 2 Апреля Поделиться Опубликовано 2 Апреля (изменено) Всем привет. Пытаюсь принудительно завершить задания. Заголовок спойлера (редактируемый) function on_update(status) local tm = task_manager.get_random_task() local active = tm.active_task_by_type for desc, task_id in pairs(active) do --// активные задания local task_status = tm.task_info[task_id].status if task_status == "completed" then tm:task_complete(p1) -- пробовал так, но сразу вылет при взятии какого-либо предмета txt_tip.pda_test() -- сообщение на проверку end end end Изменено 2 Апреля пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517553
Blum 127 Опубликовано 2 Апреля Поделиться Опубликовано 2 Апреля (изменено) @Colder Ну начнем с того,что смотря в "cycle_task" ...вижу "active_task_by_type" и понимаю что возвращает она таблицу.{}..Ну если хотите массив...Возможно в вашем коде это не так...? А у вас local active =.....И начинаете перебирать таблицу.Но это у вас совсем не таблица, там скорее всего одна единственная запись.. Я так понимаю, что скрипт task_manager вашей разработки? Поэтому не могу ничего сказать ни про объект tm , ни про параметр p1. Можно попробовать например вывести в лог p1...И не только p1..Возможно увидите ошибку...И вообще при написании скриптов надо иметь возможность вывода и просмотра в логе параметров...значений...и т.д. Полезно будет...потом можно удалить или закоментировать. Изменено 3 Апреля пользователем Blum ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517555
Colder 12 Опубликовано 11 Апреля Поделиться Опубликовано 11 Апреля Помогите прочитать секцию supplies у торговцев. Движок огср. Скрытый текст Вот так вызываю: local supply_level = supply_level(npc, true) or 1 self.supply_lvl:SetText(gts("st_sulpplies_level").. " " .. supply_level) Сама функция: function supply_level(npc, as_num) local profile = trade_manager.get_trade_profile(npc:id(), "cfg_ltx") log1("dxr_trade: ".. profile) --// профиль торговца local config = trade_manager.get_trade_cfg(profile) if not config then return end local str = config:r_string("trader", "buy_supplies") if not (str) then return end local condlist = xr_logic.parse_condlist(npc, "trader", "buy_supplies", str) —// тут не читает str = condlist and xr_logic.pick_section_from_condlist(db.actor, npc, condlist) if as_num then local num = str_explode(str, "_") return tonumber(num[2]) else return str end end Соответственно в ltx supplies_1, supplies_2 ... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517969
Blum 127 Опубликовано 12 Апреля Поделиться Опубликовано 12 Апреля (изменено) @Colder первый параметр вроде не должен быть npc.. === -- список, что должно быть в продаже str = utils.cfg_get_string(ini_cfg, "trader", "buy_supplies", npc, false, "") if str then tt.buy_supplies = xr_logic.parse_condlist(str, npc, "trade_manager", "buy_supplies") else abort(npc:name() .. " invalid line: [buy_supplies] " .. cfg) end Получилось что-то? из прошлого сообщения, непонятно..Что-то серьезное затеял? Изменено 13 Апреля пользователем Blum 1 ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1517996
Colder 12 Опубликовано 13 Апреля Поделиться Опубликовано 13 Апреля 12.04.2026 в 18:47, Blum сказал: первый параметр вроде не должен быть npc.. не помогло Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1518063
Blum 127 Опубликовано 13 Апреля Поделиться Опубликовано 13 Апреля (изменено) @Colder Посмотри саму функцию в xr_logic.script function parse_condlist(src) Предназначение: Распарсивает условия вида: {+infop1} section1 %-infop2%, {+infop3 -infop4} section2 ... в таблицу. Там в функции есть строки printf(..... Раскоментируй их прямо в xr_logic и получишь сообщения для поиска ошибки. = Кстати xr_logic.parse_condlist возвращает таблицу, а у тебя снова...local condlist Может так надо ? local condlist{} = .. npc, "trader", "buy_supplies" только для сообщений об ошибках в ОП2.2 .В OGSR вообще один параметр только (src)..Обрабатывается вроде только str Изменено 14 Апреля пользователем Blum ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1518065
Colder 12 Опубликовано 14 Апреля Поделиться Опубликовано 14 Апреля @Blum пробовал, тоже нет! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1518105
Blum 127 Опубликовано 14 Апреля Поделиться Опубликовано 14 Апреля (изменено) @Colder str вида: {+infop1} section1 %-infop2%, {+infop3 -infop4} section2 ... в таблицу Вот что у сидора должно быть. Это из ОП 2.2 [trader] buy_condition = trader_generic_buy sell_condition = {+esc_kill_bandits_quest_done} trader_after_fabric_sell, trader_start_sell buy_supplies = {+esc_kill_bandits_quest_done} supplies_after_fabric, supplies_start Изменено 14 Апреля пользователем Blum ....- "И не важно куда подует ветер..." Freddie Mercury. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1518106
АтомныйФизик 0 Опубликовано 27 Апреля Поделиться Опубликовано 27 Апреля А как сделать так чтобы при начале новой игры выдавалось задание? (типо Убить Стрелка) Платформа ТЧ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1518683
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти