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/
Chypakabra 990 Опубликовано 8 Сентября 2024 Поделиться Опубликовано 8 Сентября 2024 @Капрал Хикс Привет, есть отдельный мини мод, посмотри как там реализовано так я думаю проще будет Show Reward Mini Mod v1.03 2 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1489835
Капрал Хикс 567 Опубликовано 8 Сентября 2024 Поделиться Опубликовано 8 Сентября 2024 @ted.80 , заработало! Благо в ридми к этому минимоду есть разъяснение. Оказывается, в одной строке у меня использовался метод, который в патче 1.0005 и выше имеет другой формат. А так как я брал готовое решение из мода АМК 1.4.1, который под патч 1.0004, то оно и не работало. Подозреваю, что награда инфой за квест даёт вылет по схожей причине... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1489837
Капрал Хикс 567 Опубликовано 15 Сентября 2024 Поделиться Опубликовано 15 Сентября 2024 ChatGPT после некоторого обучения выдал мне рабочий скрипт отображения иконками на карте оружия... Теперь пытаюсь добавить в исключения оружие в инвентаре NPC и ГГ. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490099
Chypakabra 990 Опубликовано 15 Сентября 2024 Поделиться Опубликовано 15 Сентября 2024 (изменено) 5 часов назад, Капрал Хикс сказал: рабочий скрипт отображения иконками на карте оружия Ну так поделись творением искусственного интеллекта - мы чай не тупее будем доработаем до удобоваримости Поделюсь своим творением local Dot = { {"ammo","cheat_ammo_spot"}, {"medkit","cheat_medkit_spot"}, {"af_","cheat_af_spot"}, {"wpn_","cheat_wpn_spot"}, {"outfit","cheat_outfit_spot"} } function DelDot(obj) for k, v in pairs(Dot) do if level.map_has_object_spot(obj.id, v[2]) ~= 0 then for i = 1, level.map_has_object_spot(obj.id, v[2]) do level.map_remove_object_spot(obj.id, v[2]) end end end end function Dots(obj) for k, v in pairs(Dot) do if string.find(obj:section_name(), v[1]) then if level.map_has_object_spot(obj.id, v[2]) == 0 then level.map_add_object_spot_ser(obj.id, v[2], game.translate_string(system_ini():r_string(obj:section_name(), "inv_name"))) end end end end function ItemDot() for i = 1, 65534 do local obj = alife():object((i)) if obj and obj.parent_id then if obj.parent_id == 65535 then Dots(obj) else DelDot(obj) end end end end Изменено 15 Сентября 2024 пользователем ted.80 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490115
Капрал Хикс 567 Опубликовано 15 Сентября 2024 Поделиться Опубликовано 15 Сентября 2024 -- Функция для отображения оружия на земле на миникарте function display_ground_weapons_on_minimap() -- Радиус, в котором будет происходить поиск оружия на земле local SEARCH_RADIUS = 20 -- Иконка-заглушка для оружия, если его иконка не определена local default_weapon_icon = "info_npc_mapspot" -- Таблица с иконками и названиями для разных типов оружия local weapon_info = { ["wpn_ak74"] = {icon = "info_npc_mapspot", name = "wpn-ak74"}, -- АК-74 ["wpn_lr300"] = {icon = "info_npc_mapspot", name = "wpn-lr300"}, -- LR300 ["wpn_abakan"] = {icon = "info_npc_mapspot", name = "wpn-abakan"}, -- Абакан ["wpn_svd"] = {icon = "info_npc_mapspot", name = "wpn-svd"}, -- СВД ["wpn_rpg7"] = {icon = "info_npc_mapspot", name = "wpn-rpg7"}, -- РПГ-7 -- Добавить другие виды оружия и иконки при необходимости } -- Иконки выше ставить свои, я их сейчас дорисовываю. -- Получаем главного персонажа (игрока) через db.actor local actor = db.actor -- Перебираем все объекты на текущей карте (в видимой зоне) for id = 1, 65535 do local obj = level.object_by_id(id) if obj then -- Проверяем, что объект является оружием и находится в радиусе 20 метров от игрока if obj:section():find("wpn_") and actor:position():distance_to(obj:position()) <= SEARCH_RADIUS then -- Получаем данные для этого оружия из таблицы local weapon_data = weapon_info[obj:section()] local weapon_icon = weapon_data and weapon_data.icon or default_weapon_icon local weapon_name = weapon_data and weapon_data.name or "unknown_weapon" -- Отображаем иконку и название оружия на миникарте level.map_add_object_spot(id, weapon_icon, weapon_name) end end end end function update() -- на апдейт в многострадальный bind_stalker.script: function actor_binder:update(delta): weap_show.update() -- Каждый игровой кадр обновляем отображение оружия на миникарте display_ground_weapons_on_minimap() end 2 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490116
Norman Eisenherz 355 Опубликовано 16 Сентября 2024 Поделиться Опубликовано 16 Сентября 2024 Избыток ручного ввода. Заголовки секций и перевод названий можно получить из конфигов каждого объекта, а название метки построить по шаблону вроде "section_mapspot" и выбросить всю таблицу weapon_info – вручную останется только создать однотипные описания меток "wpn_name_mapspot" в XML-файле. Вместо перебора можно привязать создание/удаление меток к сбросу/поднятию оружия на стороне ГГ и сбросу из инвентаря NPC в [death_manager.script]. 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490131
_g.script 3 670 Опубликовано 16 Сентября 2024 Поделиться Опубликовано 16 Сентября 2024 Ну перебор всех объектов на постоянном апдейте это что то вообще очень жесткое... 1 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490132
Капрал Хикс 567 Опубликовано 16 Сентября 2024 Поделиться Опубликовано 16 Сентября 2024 @mole venomous , согласен. Но пока на пробу сделал как на ум пришло:). @Norman Eisenherz , в целом ход мыслей понял, упростим... По последнему пункту: как быть с оружием, которое не выбрасывалось НПС или ГГ, а мирно себе лежит в олл.спавне/скриптом заспавнено в начале игры? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490137
Chypakabra 990 Опубликовано 16 Сентября 2024 Поделиться Опубликовано 16 Сентября 2024 (изменено) 43 минуты назад, Капрал Хикс сказал: а мирно себе лежит в олл.спавне/скриптом заспавнено в начале игры? Ну так для него и сделай перебор - только по какому либо условию, а не на апдейте @Norman Eisenherz Вместо перебора можно привязать создание/удаление меток к сбросу/поднятию оружия на стороне ГГ и сбросу из инвентаря NPC в [death_manager.script]. Изменено 16 Сентября 2024 пользователем ted.80 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490140
Капрал Хикс 567 Опубликовано 16 Сентября 2024 Поделиться Опубликовано 16 Сентября 2024 3 часа назад, ted.80 сказал: только по какому либо условию, а не на апдейте Ну вот на ум ничего не приходит. Как ещё проверить кроме перебора оружие в радиусе... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490154
phalcor 60 Опубликовано 30 Сентября 2024 Поделиться Опубликовано 30 Сентября 2024 Привет, сталкеры! Есть такие зомби, которые образуются из гниющих трупов сталкеров. Их section = zombie_trup_fc. Так вот, пока к ним не приблизиться почти вплотную, они находятся в спячке - лежат себе и всё. При приближении они просыпаются и идут в атаку. Подскажите, как в скрипте определить, находится ли такой зомбарь в спячке или же он уже активен и ходит. Или же не касаясь зомби, а вообще, как узнать, в каком состоянии движения (стоИт, идёт, бежит) находится монстр? Платформа ОП 2.2. Спасибо за внимание! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490648
Balavnik 178 Опубликовано 30 Сентября 2024 Поделиться Опубликовано 30 Сентября 2024 С чем связана такая ошибка при ликвидации нпс? \death_manager.script:135: bad argument #1 to 'pairs' (table expected, got nil) Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490668
naxac 2 605 Опубликовано 1 Октября 2024 Поделиться Опубликовано 1 Октября 2024 @Balavnik , попробую погадать на кофейной гуще. У тебя платформа ТЧ, скрипт оригинальный. Тогда вылет связан с тем, что группировка непися не добавлена в death_manager.script, либо не прописана в конфигах death_manager'a. 4 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490673
phalcor 60 Опубликовано 3 Октября 2024 Поделиться Опубликовано 3 Октября 2024 30.09.2024 в 17:21, phalcor сказал: как в скрипте определить, находится ли такой зомбарь в спячке или же он уже активен и ходит. Сам себе отвечаю. Нашёл неожиданное решение узнать, стоит или лежит зомбак: local dist = cobj:bone_position("bip01_head").y - cobj:position().y --высота головы над землёй if dist < 0.2 then --лежит ... Жаль, так и не нашёл прямого метода узнать положение тела монстра - всякие body_state и т.д. ничего не дали... 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490724
Norman Eisenherz 355 Опубликовано 3 Октября 2024 Поделиться Опубликовано 3 Октября 2024 Есть анимация fake_death, но не знаю, можно ли ее достать скриптами. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490749
Balavnik 178 Опубликовано 5 Октября 2024 Поделиться Опубликовано 5 Октября 2024 (изменено) Какие параметры существуют у объекта self в bind_monsters? Хочу вытащить из него секцию, self.section равен nil. Платформа SoC. Изменено 5 Октября 2024 пользователем Balavnik Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490805
Norman Eisenherz 355 Опубликовано 5 Октября 2024 Поделиться Опубликовано 5 Октября 2024 self.object – объект (мутант), для которого сработал вызов какого-то события (спавн, удаление, апдейт) self.object:section() – секция мутанта, который обсчитывается в данный момент 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490822
Капрал Хикс 567 Опубликовано 8 Октября 2024 Поделиться Опубликовано 8 Октября 2024 Смотрю в скрипт sound_theme.script... В чём разница между: ph_snd_themes["gar_bandits_seryi"] = {[[characters_voice\scenario\garbage\grey_bandit_1]], [[characters_voice\scenario\garbage\grey_bandit_2]], [[characters_voice\scenario\garbage\grey_bandit_3]], [[characters_voice\scenario\garbage\grey_bandit_4]], [[characters_voice\scenario\garbage\grey_bandit_5]]} и ph_snd_themes["gar_bandits_seryi"] = {"characters_voice\\scenario\\garbage\\grey_bandit_1", "characters_voice\\scenario\\garbage\\grey_bandit_2", "characters_voice\\scenario\\garbage\\grey_bandit_3", "characters_voice\\scenario\\garbage\\grey_bandit_4", "characters_voice\\scenario\\garbage\\grey_bandit_5"} ? В первом случае это так оно закомментировано как неиспользуемое что ли? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490911
Balavnik 178 Опубликовано 8 Октября 2024 Поделиться Опубликовано 8 Октября 2024 @Капрал Хикс [[ ]]Вроде бы означает игнорирование экранирования и системных символов. 1 2 Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490915
Norman Eisenherz 355 Опубликовано 9 Октября 2024 Поделиться Опубликовано 9 Октября 2024 Это запись "простой текст". Без двойных скобок одинарный слэш будет "съеден" при чтении. 1 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/624/#findComment-1490928
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти