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/
Graff46 625 Опубликовано 20 Марта 2018 Поделиться Опубликовано 20 Марта 2018 В 19.03.2018 в 10:39, Space.Marine сказал: Нашёл такой код: попробуйте этот: Скрытый текст local explosive_weapons = { ["wpn_rg-6"] = true, ["wpn_rpg7"] = true, ["grenade"] = true } function npcondeath(victim, who) if IsStalker(who) then local active_item = who:active_item() local active_slot = who:active_slot() if (active_item ) then local section = active_item:section() if explosive_weapons[section] or active_slot == 3 then particles_object("anomaly2\\body_tear_00"):play_at_pos(victim:bone_position("bip01_head")) end end end end 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161519
_Val_ 2 739 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 Столкнулся тут с такой проблемой. Хм...Решил что лучше здесь спросить, а не в ковырялке. Имеем такую логику персонажа. Сразу оговорюсь - val - это Темная Долина, а не мания величия. [logic] active = {-val_barman_1_sleep}walker@val_bar_sleep,sleeper@val_barmen [walker@val_bar_sleep] path_walk = val_barman_go_sleep_walk path_look = val_barman_go_sleep_look on_signal = val_sleep_bar | sleeper@val_barmen %+val_barman_1_sleep% [sleeper@val_barmen] path_main = val_bar_1_sleep_walk Согласно логике НПС должен подойти к диванчику, по сигналу из точки пути перейти в следующую схему(выдав поршень) и завалиться спать на этот диванчик. В действительности происходит следующее. По логу: on_signal___(c.v1___=___val_sleep_bar)___signalled___[val_barman_1] ----сигнал есть. npc = 'single_player' give_info_portion id = 'val_barman_1_sleep' ----выдан поршень Далее. object___'val_barman_1':___activate_by_section:___looking___for___section___'sleeper@val_barmen' reset_generic_schemes_on_scheme_switch:___npc:name()='val_barman_1' calling___module('xr_sleeper') Ну - судя по всему - в следующую схему он перешел. И тут начинается самое интересное. Scheduler tried to update object val_barman_1 Перец раскорячивается в точке пути и не идет на диванчик. При этом с ним можно разговаривать да и видно, что он находится под логикой sleeper@ а не в nil допустим. Путь для секции sleeper@ абсолютно рабочий. Проверено удалением предыдущей секции. Пробовал переводить перца из волкера в ремарк и далее по таймеру в слипер с выдачей поршня. Тогда еще интересней - виснет в ремарке, не выдавая поршень. Взрыв мозга уже. Подумываю обойтись без Бармена)) Краткий гид по моду Тайные Тропы 2 ПАРТИКЛЫ TERRA Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161526
Space.Marine 466 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 (изменено) 16 часов назад, Graff46 сказал: попробуйте этот: Ничего не поменялось. Партикл проигрывается, как и раньше при убийстве из любого мощного ствола (дробовик, СВД и пр.) Если что - платформа ЗП. Изменено 21 Марта 2018 пользователем Space.Marine Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161585
WinCap 324 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 @Space.Marine Мне кажется слот проверять совершенно не нужно. Попробуй в варианте от @Graff46 оставить в условии только наличие итема в таблице: if explosive_weapons[section] ~= nil then 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/450/#findComment-1161591
Dennis_Chikin 3 665 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 14 часов назад, _Val_ сказал: Scheduler tried to update object как правило - перемещение или анимации. В ремарке без перехода куда-либо еще как себя ведет ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161617
_Val_ 2 739 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 @Dennis_Chikin А без перехода я не пробовал. Вообще - проблема уже решена путём обходного маневра. Конечно хотелось бы понять, что в конце концов случилось с этим неписем...особенно с учетом того, что таких логик уже прилично написано и все они работают.... Краткий гид по моду Тайные Тропы 2 ПАРТИКЛЫ TERRA Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161622
Space.Marine 466 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 (изменено) 4 часа назад, WinCap сказал: Попробуй Завтра проверю, но... Если в условии есть конкретно переменная explosive_weapons и для неё заданны конкретные параметры wpn_такое-то, то какого не работает ? Уточню, я в скриптах - максимум читатель без образования. Возможно ли такое поведения скрипта из-за того, что у меня значения k_ap и k_hit в конфигах некоторых боеприпасов больше единицы ? Изменено 21 Марта 2018 пользователем Space.Marine Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161642
Dennis_Chikin 3 665 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 or "grenade" if explosive_weapons[section] then А что, вообще, хотели этим сказать ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161649
Space.Marine 466 Опубликовано 21 Марта 2018 Поделиться Опубликовано 21 Марта 2018 (изменено) 31 минуту назад, Dennis_Chikin сказал: А что, вообще Как я уже упоминал, я не специалист и, даже, не любитель. Я так понимаю, что условия такие, если некоторые заданные в explosive_weapons стволы а также гранаты, то - бабах ! Код из Simbion, как говорят. И, да, там есть фишка на эффект разрыва трупов для дум-дум боеприпаса (из описания мода). Как я припоминаю, это всё, тянется ещё из АМК мода для ТЧ. Я просто не понимаю, неужели это настолько проблематично (скорее просто на не нужно) решить спецам ? Изменено 21 Марта 2018 пользователем Space.Marine Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161651
abramcumner 1 234 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 8 часов назад, Dennis_Chikin сказал: А что, вообще, хотели этим сказать ? При активных 1 и 2 слотах проверяется секция оружия, 3-ий слот считается гранатным ив нем проверка не делается. Мне кажется номера слотов, что в ТЧ, что в ЗП несколько другие, из-за того и глюки. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161662
technics 0 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 Господа Скриптоведы .Кто знает, какой файл в Lost Alpha управляет патронами на поясе? Хочу отключить. В интернате ни черта не могу найти((( Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161674
Kirgudu 1 370 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 10 часов назад, Dennis_Chikin сказал: А что, вообще, хотели этим сказать ? Если ты имел в виду синтаксическую ошибку, то её там нет. Условие является независимым, а предыдущую строку надо читать целиком, как самостоятельное присвоение: local section = active_slot ~= 3 and active_item:section() or "grenade" Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161683
Dennis_Chikin 3 665 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 if who:active_slot() == 3 then ... else local item = who:active_item() if item and t[item:section()] then ... end end Может, все-таки так ? Или сразу: if who and who.active_slot and ( ( who:active_slot() == 3 ) or ( who:active_item() and t[who:active_item():section()] ) ) then ... end Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161767
_Val_ 2 739 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 А вот кстати еще один животрепещущий вопрос. Что за гадская схема kamp? Какой раз уже сталкиваюсь - если непись идет с пути патрулирования к костру...уже находится под схемой kamp...то если его в момент передвижения(до того - как он уселся) - дернуть в другую схему, то сразу срабатывает Scheduler. Я конечно это дело обошел, методом дописывания неписю еще одного пути прямо к костерку по схеме walker, но что-то меня это начало утомлять. Краткий гид по моду Тайные Тропы 2 ПАРТИКЛЫ TERRA Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161775
Dennis_Chikin 3 665 Опубликовано 22 Марта 2018 Поделиться Опубликовано 22 Марта 2018 Изрядно гадская, да. Пришлось шаманствовать с removeNpc(): local kamp_end = xr_evaluators_id.stohe_kamp_base + 1 local on_pos = xr_evaluators_id.stohe_kamp_base + 2 local mgr = npc:motivation_action_manager() -- todo: слишком сложно. ПРОСТО оторвать лишние эвалюаторы СОВСЕМ. Оставить все в одном. local a = mgr and mgr:action( xr_actions_id.alife ) if a then a:remove_precondition( kamp_end ) else log( "warning", "(%s):removeNpc, no action (alife) (%s)", self.center_point, npc:name() ) end a = mgr:action( xr_actions_id.stohe_kamp_base + 3 ) if a then xr_logic.unsubscribe_action_from_events( npc, st, a ) mgr:remove_action( xr_actions_id.stohe_kamp_base + 3 ) -- log( "info", "(%s):removeNpc, %s, 2", self.center_point, npc:name() ) else log( "warning", "(%s):removeNpc, no action (action_kamp_wait) (%s)", self.center_point, npc:name() ) end mgr:remove_action( xr_actions_id.stohe_kamp_base + 1 ) -- log( "info", "(%s):removeNpc, %s, 3", self.center_point, npc:name() ) mgr:remove_evaluator( kamp_end ) -- mgr:add_evaluator( kamp_end, property_evaluator_const( true ) ) mgr:remove_evaluator( on_pos ) -- mgr:add_evaluator( on_pos, property_evaluator_const( true ) ) -- if npc:name() == "bar_dolg_ivancov" then -- log( "info", "(%s):removeNpc, %s, remove_evaluators, ok", self.center_point, npc:name() ) -- end st.on_position = false -- поскольку строжейж грохнуть не дают, сделаем вид, что он новый. st.count = 0 st.pos_lvid = nil st.dest_lvid = nil 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1161777
Graff46 625 Опубликовано 24 Марта 2018 Поделиться Опубликовано 24 Марта 2018 (изменено) Я тут поэкспериментировал и вроде как получается, что в спавне (скриптом) можно не указывать точно гейм-вертекс, главное что бы он был с данной локации (на которой спавним)... Изменено 24 Марта 2018 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1162265
Fenrir02 199 Опубликовано 25 Марта 2018 Поделиться Опубликовано 25 Марта 2018 Доброго времени! Каким способом можно реализовать удаление предмета из инвентаря с течением времени с момента взятия этого предмета. Пример: экзоскелет работает только с аккумулятором (это я сделал), но через некоторое время аккумулятор разряжается и удаляется из рюкзака. Подайте идею. Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1162402
Graff46 625 Опубликовано 25 Марта 2018 Поделиться Опубликовано 25 Марта 2018 (изменено) Только что, Fenrir02 сказал: Подайте идею. Запоминай в пстор время (game.time()) когда батарея начала работать и проверяй сколько она работает, где проверять смотри сам, можно конечно биндером постоянно, можно еще на какое событие повесить, например дроп ГГ, ведь в игре достаточно часто патроны перезаряжаем, что то выкидываем, продаём\покупаем и тд... Не забываем про level.add_call Изменено 25 Марта 2018 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1162405
Fenrir02 199 Опубликовано 25 Марта 2018 Поделиться Опубликовано 25 Марта 2018 3 часа назад, Graff46 сказал: пстор Не совсем понял что это Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1162453
Graff46 625 Опубликовано 25 Марта 2018 Поделиться Опубликовано 25 Марта 2018 (изменено) 2 часа назад, Fenrir02 сказал: Не совсем понял что это Хранилище данных, данные в псторе сохраняются в сейвах. В популярных скриптовых фрэймворках (amk.script и тд.) есть свои функции записи\чтения пстора, в ТЧ есть такие ф-ции в скрипте xr_logic.scripts Скрытый текст function pstor_store(obj, varname, val) local npc_id = obj:id() if db.storage[npc_id].pstor == nil then db.storage[npc_id].pstor = {} end local tv = type(val) if not pstor_is_registered_type(tv) then abort("xr_logic: pstor_store: not registered type '%s' encountered", tv) return end db.storage[npc_id].pstor[varname] = val return val end function pstor_retrieve(obj, varname, defval) local npc_id = obj:id() if db.storage[npc_id].pstor ~= nil then local val = db.storage[npc_id].pstor[varname] if val ~= nil then return val end end if defval ~= nil then return defval end return nil --' abort("xr_logic: pstor_retrieve: variable '%s' does not exist", varname) end Рекомендую в качестве объекта использовать ГГ. Изменено 25 Марта 2018 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/450/#findComment-1162482
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти