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 Ссылка на комментарий
Kirgudu 1 250 Опубликовано 7 Ноября 2024 Поделиться Опубликовано 7 Ноября 2024 28 минут назад, Norman Eisenherz сказал: anim_head, anim_global Это же просто строки, если правильно помню. Как они могут давать вылет при определении типа? Но вообще интересный вопрос, надо будет поэкспериментировать как-нибудь. 1 Инструмент Ссылка на комментарий
DimoNULL 0 Опубликовано 8 Ноября 2024 Поделиться Опубликовано 8 Ноября 2024 Надеюсь меня не казнят за то, что я второй раз задаю вопрос. Как сделать проверку на то, есть ли соприкосновение какой либо отдельной части динамического объекта с любым статическим объектом на карте? Например м землёй, или стеной какого либо здания, и тд. Ссылка на комментарий
Капрал Хикс 541 Опубликовано 8 Ноября 2024 Поделиться Опубликовано 8 Ноября 2024 Можно ли отследить, что ГГ обыскивает труп именно мутанта и в таком случае не отображать отношение мутанта к ГГ (баг с "другом")? Ссылка на комментарий
Stalkersof 185 Опубликовано 8 Ноября 2024 Поделиться Опубликовано 8 Ноября 2024 (изменено) А можно как-то скриптом увеличивать ранг ГГ, добавлять очки, а то в моде куча предметов на локациях бесхозных уникальных. Можно попробовать сделать что-то типа бонусов. Идея какая-то такая витает. ОГСР движок. Изменено 8 Ноября 2024 пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
mole venomous 3 518 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 db.actor:set_character_rank(db.actor:character_rank() + number) 1 3 Здесь могла быть ваша реклама. Ссылка на комментарий
Stalkersof 185 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 (изменено) Ребята а можно в хранилище данных на огср движке. Хранить таблицы, пополнять их и читать. Сделал я на калбеке on_item_take (obj) систему вознаграждения при поднятии уникальных предметов. Но есть проблемка если выкинуть предмет и снова подобрать то опять система сработает. Вот думаю может таблицу надо создавать уже поднятых предметов и проверять их наличие(что они уже были подобранны), чтоб повторно скрипт не срабатывал на уже поднятый предмет. Если можно на огср дайте пример кода. function item_take(obj) local sect = obj:section() local reputation local rang for i=1,#list_items do if sect == list_items[i].section then reputation = list_items[i].reputation rang = list_items[i].rang db.actor:change_character_reputation(reputation) db.actor:set_character_rank(db.actor:character_rank() + rang) local news_text = "%c[255,160,160,160]".."Уникальный предмет".."\\n".."%c[default]".."Ранг+ "..rang.." ".."Репутация+ "..reputation local hud = get_hud() hud:AddCustomStatic("main_task", true) hud:GetCustomStatic("main_task"):wnd():SetTextST(news_text) hud:GetCustomStatic("main_task").m_endTime = time_global()/1000 + 5 log1(list_items[i].section.."-"..rang.."-"..reputation) break end end end Изменено 9 Ноября 2024 пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
Капрал Хикс 541 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 34 минуты назад, Stalkersof сказал: чтоб повторно скрипт не срабатывал на уже поднятый предмет. Делай проще. Выдавай инфопоршень при наличии у ГГ предмета. На поршень повесь выдачу бонуса. 1 1 1 Ссылка на комментарий
Stalkersof 185 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 7 минут назад, Капрал Хикс сказал: Делай проще. Выдавай инфопоршень при наличии у ГГ предмета. На поршень повесь выдачу бонуса. Чем это проще на 50 предметов 50 пошней и скриптов Freeplay Graphic Mod(FGM) Ссылка на комментарий
Капрал Хикс 541 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 @Stalkersof , меньше возни со скриптами. Можно поршни тоже в таблицу забить. 1 Ссылка на комментарий
Stalkersof 185 Опубликовано 9 Ноября 2024 Поделиться Опубликовано 9 Ноября 2024 (изменено) Да там три строчки кода. Обозначить таблицу, записать данные, считать данные. Если предмета нет в таблице то выполнить скрипт. Просто я пока не докумекал как))) Пс Докумекал, вопрос снят Изменено 9 Ноября 2024 пользователем Stalkersof 3 Freeplay Graphic Mod(FGM) Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 10 Ноября 2024 Поделиться Опубликовано 10 Ноября 2024 [ТЧ 1.0006] Пытаюсь расставить метки на группе NPC приведенным ниже скриптом, но создается только одна метка посреди лагеря. Если указывать определенные id, метка будет создана именно на NPC, но только на первом из списка. В чем может быть причина? Spoiler local gobj = xr_gulag.get_gulag_by_name("esc_bridge") for id, v in pairs(gobj.npc_info) do level.map_add_object_spot(id, "green_location") end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
phalcor 60 Опубликовано 10 Ноября 2024 Поделиться Опубликовано 10 Ноября 2024 2 часа назад, Norman Eisenherz сказал: В чем может быть причина? level.map_add_object_spot(v, "green_location") --v вместо id? Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 10 Ноября 2024 Поделиться Опубликовано 10 Ноября 2024 Нет, v – таблица с данными NPC 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Ghilli 0 Опубликовано 10 Ноября 2024 Поделиться Опубликовано 10 Ноября 2024 При попытке заменить чтение нет-пакета с состоянием актора(бег, шаг, прыжок и т.д.) "вручную": se_upk:w_begin(0) alife():actor():UPDATE_Write(se_upk) se_upk:r_seek(41) local state = se_upk:r_u16() на чтение с помощью функционала m_netpk: local act = alife():actor() local se_upk = get_netpk(act, 2) local data = se_upk:get() local state = data.actor_state or 0 Стал получать следующий вылет: Скрытый текст [print_output()] SCRIPT RUNTIME ERROR: attempt to call a nil value stack traceback: [C]: at 0x7ff9775bf180 [C]: in function 'get_netpk' Не понимаю, в чем конкретно прокол Ссылка на комментарий
phalcor 60 Опубликовано 10 Ноября 2024 Поделиться Опубликовано 10 Ноября 2024 @Norman Eisenherz @Norman Eisenherz , а если так: for id,_ in pairs(gobj.Object) do --вместо npc_info используем таблицу объектов в гулаге level.map_add_object_spot(id, "green_location") end 57 минут назад, Ghilli сказал: Не понимаю, в чем конкретно прокол У меня пару лет назад также начались вылеты при юзании m_netpk, решил заменой строки if stpk:r_elapsed()~=0 or uppk:r_elapsed()~=0 then на if (stpk and stpk:r_elapsed()~=0) or (uppk and uppk:r_elapsed()~=0) then Вдруг поможет? 1 Ссылка на комментарий
Это популярное сообщение. Kirgudu 1 250 Опубликовано 10 Ноября 2024 Это популярное сообщение. Поделиться Опубликовано 10 Ноября 2024 (изменено) 1 час назад, Ghilli сказал: в чем конкретно прокол Скорее всего в использованном модуле m_netpk. Предположу, что взята версия от 2017 года, что выкладывалась тут неоднократно, в том числе мной, а эксперименты проводятся на платформе ЧН или ЗП (но не ТЧ). Есть в ней один авторский недосмотр: для класса net_se_actor использован конструктор function net_cse_alife_creature_actor:__init(obj,mode), вероятно взятый копипастом из предыдущего одноимённого класса. Попытка создать экземпляр класса net_se_actor (при чтении нет-пакета актора) очевидным образом должна завершиться ошибкой. Решение простое: классу net_se_actor должен соответствовать конструктор funstion net_se_actor:__init(obj,mode). Нужный код уже давно можно найти в разных модах (не помню, у кого первого заметил соотв. правку), а вот сделать аналогичную замену в теме "Сборочный цех" я почему-то забыл. Исправляюсь. Свежую версию m_netpk можно скачать здесь: Изменено 10 Ноября 2024 пользователем Kirgudu 1 4 1 Инструмент Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 11 Ноября 2024 Поделиться Опубликовано 11 Ноября 2024 @phalcor Те же шарики. Нашел: в ЧН сталкивался с остановкой скрипта без вылета при пустом тексте подсказки – видимо, это проблема всей трилогии, потому что при добавлении хотя бы текста "" выводятся все метки. 2 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Stalkersof 185 Опубликовано 11 Ноября 2024 Поделиться Опубликовано 11 Ноября 2024 Поторопился я и обнадежился. Вопрос повторяю можно на ОГСР движке сохранять данные таблицы в хранилище и считывать их. В игре все работает при загрузке сейвов скрипт выполняется. Надо сохранять данные таблицы подобранных предметов в хранилище, но как? Скрытый текст local items_podobral = {} function item_take(obj) local sect = obj:section() local reputation local rang for i=1,#list_items do if sect == list_items[i].section then if not items_podobral[ sect ] then reputation = list_items[i].reputation rang = list_items[i].rang db.actor:change_character_reputation(reputation) db.actor:set_character_rank(db.actor:character_rank() + rang) local text = "%c[255,160,160,160]".."Уникальный предмет".."\\n".."%c[default]".."Ранг+ "..rang.." ".."Репутация+ "..reputation local hud = get_hud() hud:AddCustomStatic("main_task", true) hud:GetCustomStatic("main_task"):wnd():SetTextST(text) hud:GetCustomStatic("main_task").m_endTime = time_global()/300 + 5 items_podobral[sect] = list_items[i].section log1(list_items[i].section.."-"..rang.."-"..reputation) break end end end end Freeplay Graphic Mod(FGM) Ссылка на комментарий
Kirgudu 1 250 Опубликовано 11 Ноября 2024 Поделиться Опубликовано 11 Ноября 2024 (изменено) @Stalkersof можно использовать SCRIPT_VARS_STORAGE Изменено 11 Ноября 2024 пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
Stalkersof 185 Опубликовано 11 Ноября 2024 Поделиться Опубликовано 11 Ноября 2024 (изменено) 39 минут назад, Kirgudu сказал: @Stalkersof можно использовать SCRIPT_VARS_STORAGE Да мне бы пример нормальный. Как записать в таблицу и как считать и хранилища. В вики написано, как с обычными таблицами. Объявил таблицу так: local xvars = get_stored_vars() xvars.items_podobral = {} Вылет. Дайте пример. Изменено 11 Ноября 2024 пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти