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/
k01jan 816 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 (изменено) Может, попробовать отключать (disable_info, ну или как-то так) каждый раз? abramcumnerОпередил! Изменено 26 Мая 2014 пользователем k01jan Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851181
Full Noob 1 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Поставить лог на actor_binder:info_callback(), и посмотреть, что реально когда выдается. Это ты мне? Если да то я думаю что тут дело просто в том что тот слот не видно и видимо там ячеек нету поэтому такая фигня, и всё же: можно ли отрисовать на худе иконку и состояние предмета под ней? Это было про PDA и инфо. Про слоты вспоминать надо. Что-то такое было, но, думаю, кто-нибудь раньше ответит. dc Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851240
Капрал Хикс 564 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Хм, поршень ui_pda_map_local выдался. Но при попытке завязать на него появление меток схлопотал уже от скрипта Shadows'а вылет при попытке открыть КПК. Дескать, в строке self.owner:AttachChild(self.stat) onwer = nil Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851338
Dennis_Chikin 3 665 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 "вылет при попытке открыть КПК. Дескать, в строке self.owner:AttachChild(self.stat) onwer = nil" Логично. Куда он возвращаться должен ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851402
Desertir 202 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 Во многих оконных скриптах в конструктор класса аргументом передается владелец или родитель экземпляра класса. Это можно почти везде найти. Проблема в определении косяка, это либо в конструктор передается nil, либо в нем нету инициализации поля self.owner. Ну или еще какая беда, типа родителя уже нету (удалилсо), но тут запись в лог наверное будет другой. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851432
Капрал Хикс 564 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 Если честно, я в этих оконнных скриптах так и не разобрался... сам скрипт, если кому интересно покопаться, вот: Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851576
Full Noob 1 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 С ремкомплектом разобрался: гранаты ведь я тоже передвинул в слот песта чтобы трудней было , а ремкомплект поставил на слот гранат и при его доставании сделал weapon_hide и всё работает. Оружие в слоте 3 видно в инвентаре и его нельзя швырять по слотам то что надо, но вот ещё проблемка маленькая: разумеется не обойтись без сообщений чтобы яснее было, но вот только я получаю сообщение не такое news_manager.send_tip(db.actor, "%c[255,255,255,128]Невозможно отремонтировать оружие. Ремкомплект в плохом состоянии!", nil, nil, 3000) а вот этот кошмар http://pixs.ru/showimage/ssuser0527_2904593_12293821.jpg Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851684
Gkchp 1 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 Может ли кто-нибудь помочь разобраться с логикой для радио (ЗП)? Перепробовал все туториалы — ничего не вышло. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851747
abramcumner 1 230 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 news_manager.send_tip(db.actor, "%c[255,255,255,128]Невозможно отремонтировать оружие. Ремкомплект в плохом состоянии!", nil, nil, 3000) а вот этот кошмарПо правильному строку "%c[255,255,255,128]Невозможно отремонтировать оружие. Ремкомплект в плохом состоянии!" надо вынести в text/rus/*.xml и грузить в скрипте через game.translate_string() Или можешь просто сменить кодировку в файле скрипте с utf-8 на вин1251 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851770
Full Noob 1 Опубликовано 27 Мая 2014 Поделиться Опубликовано 27 Мая 2014 (изменено) А как прально транслейт прописать? Я вот вписал в string_table_tips то что надо и news_manager.send_tip(db.actor, "%c[255,255,255,128]"..game.translate_string("rk_text_weapon_in_slot").." %c[255,255,25,25]"..tostring(db.actor:active_slot()).."%c[255,255,255,128] "..game.translate_string("rk_text_repaired"), nil, nil, 3000) но не прокатило Хех а кодировка работает не вылетает как при некоторых. Изменено 18 Июня 2014 пользователем Black Hawk Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-851780
Gkchp 1 Опубликовано 28 Мая 2014 Поделиться Опубликовано 28 Мая 2014 (изменено) Объясните кто-нибудь неумному человеку, как в представленной ниже логике сделать так, чтобы после использования кнопки играл звук. [logic]active = ph_button@deactivated[ph_button@activated]anim = offon_press = ph_button@deactivated % -zat_a2_radio_on%tooltip = radio_off[ph_button@deactivated]anim = idleon_press = ph_button@activated % +zat_a2_radio_on%, ph_soundtooltip = radio_on[ph_sound]snd = zat_a2_bar_radiolooped = truemin_idle = 50max_idle = 100random = falseКто-нибудь может объяснить, почему в ЗП напрочь отказывается работать схема ph_sound? Весь день ковыряюсь, но не помогает. [logic]active = ph_sound@act[ph_sound@act]snd = zat_a2_radiolooped = falsemin_idle = 300max_idle = 500random = falseno_hit = true Ну что здесь неправильно? Изменено 18 Июня 2014 пользователем Black Hawk Поправила спойлеры. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-852299
Сталкер Лом 356 Опубликовано 29 Мая 2014 Поделиться Опубликовано 29 Мая 2014 (изменено) Gkchp, В оригинале ЗП эта схема отключена. Включаем так: заходим в файл modules.script, ищем строчки load_scheme("ph_door", "ph_door", stype_item) load_scheme("ph_idle", "ph_idle", stype_item) load_scheme("ph_hit", "ph_hit", stype_item) load_scheme("ph_on_hit", "ph_on_hit", stype_item) load_scheme("ph_button", "ph_button", stype_item) load_scheme("ph_code", "ph_code", stype_item) load_scheme("ph_death", "ph_on_death", stype_item) load_scheme("ph_minigun", "ph_minigun", stype_item) --load_scheme("ph_target", "ph_target", stype_item) load_scheme("ph_oscillate", "ph_oscillate", stype_item) И после этих строк вставляем подключение схемы ph_sound: load_scheme("ph_sound", "ph_sound", stype_item) --Загрузка модуля матюгальника Теперь можно использовать схему. Но я когда у себя начал использовать схему, то немного был недоволен тем, что в этой схеме звук воспроизводится как в ТЧ - по путям, с указанием параметров в логике, а не по .ltx, как это сделано в ЗП. Иными словами, в оригинальной схеме, чтобы отыграть звук его нужно прописать, по-моему в sound_theme.script в виде конструкции ph_snd_themes["gar_seryi_shooting"] = {[[characters_voice\human_01\scenario\garbage\distance_shooting]]} , в то время как в ЗП используется поддержка .ltx файла, что, считаю удобным. После правки у меня убились два параметра - random и looped за ненадобностью - эти и другие параметры настраиваются в .ltx файле. Ссылка: http://rghost.ru/55973662 Пример использования на матюгальнике на Кордоне: [logic] active = ph_sound@idle on_hit = hit [ph_sound@idle] sound = esc_roadblock_megafon_idle on_signal = sound_end|ph_idle@wait [ph_idle@wait] on_timer = 85000|ph_sound@idle Логика очень упрощена и сводится к тому, что рупор воспроизводит звук и на 85 секунд уходит "отдыхать", дабы не орать беспрестанно. А если у тебя радио в баре Скадовск, то там можно и без пауз петь. Настройка звуков делается в файле script_sound_<локация>.ltx вот так: ;В секции list_script_sound_<локация> ставишь указание новой секции: esc_roadblock_megafon_idle ;И в конце файла пиши [esc_roadblock_megafon_idle] type = 3d npc_prefix = false path = characters_voice\scenario\escape\esc_roadblock_megafon_idle_ ;Тут указывается путь до файла, чтоб выбирался рандомно делай названия esc_roadblock_megafon_idle_ 1, esc_roadblock_megafon_idle_ 2 и т.д., а в пути указывай как тут shuffle = rnd idle = 3,5,100 Ну и пара полезных статеек на эту тему: Про ph_sound - http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_4#.D0.A1.D1.85.D0.B5.D0.BC.D0.B0_ph_sound Про настройку .ltx фала - http://stalkerin.gameru.net/wiki/index.php?title=CoP._Разбор_звуковых_конфигов_в_script_sound_*** По переключению схем: [logic]active = ph_button@deactivated[ph_button@activated]anim = off on_game_timer = 5 | ph_sound [ph_button@deactivated]anim = idleon_press = ph_button@activated % +zat_a2_radio_on% tooltip = radio_on[ph_sound]snd = zat_a2_bar_radiolooped = truemin_idle = 50max_idle = 100random = false on_use = ph_button@deactivated %-zat_a2_radio_on% tooltip = radio_off Попробуй так. И погляди в статьях выше примеры как переключают схемы. Изменено 18 Июня 2014 пользователем Black Hawk Не работали спойлеры из-за отсутствия названия скрытого текста. 1 Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-852334
mumie 2 Опубликовано 29 Мая 2014 Поделиться Опубликовано 29 Мая 2014 (изменено) Привет, форумчане! Боюсь вопрос смешон до безумия, но я сам слеп и не вижу причин вылета(Идея такова: 1)Перебираем все и вся в инвентаре2)Записываем каждый элемент инвентаря в таблицу3)Удаляем все4)При необходимости спавним все элементы таблицы поочередно в инвентарь обратно local t_temp = {} function RI() local cnt = db.actor:object_count() for i = 1, cnt-1 do local se_obj = alife():object(i) if se_obj then table.insert(t_temp,1,se_obj:section_name()) end end end function SI() for a = 1, #t_temp do alife():create(t_temp[a], db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end Версия игры 1.6.2 хотя я думаю это не важно.Лог No such operator Изменено 29 Мая 2014 пользователем mumie Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-852436
Dennis_Chikin 3 665 Опубликовано 29 Мая 2014 Поделиться Опубликовано 29 Мая 2014 Мож таки: local t_temp = {} function RI() local item for i = 0, db.actor:object_count() - 1 do item = db.actor:object( i ) if item and alife():object( item:id() ) then table.insert( t_temp, item:section() ) end end end function SI() for a = 1, #t_temp do alife():create( t_temp[a], vector(), 0, 0, 0 ) end end Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-852440
AndreySol 215 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 (изменено) Что-то мне подсказывает, что в инвентаре ГГ могут быть всякие патроны в пачках... А для их спавна ф-ция create не годится, а должно быть вроде create_ammo. Это так, на вскидку... Да и использование object_count на мой взгляд не оправдано - правильнее наверное iterate_inventory, меньше движений: в первом случае получаем число объектов, затем дергаем алайф, чтоб получить сам объект и от него уже секцию, а во втором - сразу получаем объект и секцию от него.... Изменено 31 Мая 2014 пользователем AndreySol Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853229
Zander_driver 10 348 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 (изменено) Что-то мне подсказывает, что в инвентаре ГГ могут быть всякие патроны в пачках... А для их спавна ф-ция create не годится, а должно быть вроде create_ammo. Это так, на вскидку... Ну вообще то create тоже годится. Только спавнить будет всегда полные пачки. Чтобы спавнить неполные, уже понадобится create_ammo. Только ей ведь, надо указать сколько патронов должно быть в пачке. А эту информацию надо смотреть, например, ковырнув нет-пакет исходной пачки. Возник у меня такой вопрос. Можно ли скриптом поместить артефакт на пояс? или в конфиге артефакта так нахимичить, чтоб по появлению в инвентаре он сразу на пояс запрыгивал. Стволы с комбезами, в слоты свои, сами запрыгивают. Но тут у нас не слот... Изменено 31 Мая 2014 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853279
Карлан 1 050 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 например, ковырнув нет-пакет исходной пачки. Весьма изощренный метод, достаточно бокс сайз прочесть из секции конфига патронов. @AndreySol, а чем должен объект каунт оправдываться? Мне просто интересно. Другой базар, что итерация работает быстрее, и все нормальные люди всегда ее юзают. @Dennis_Chikin, используя объект каунт нужно перебирать от нуля, а не от единицы. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853351
Dennis_Chikin 3 665 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 "нужно перебирать от нуля". Упс ! Был невнимателен. Поправил. По скорости - а кто-нибудь мерил ? В общем случае вызов функции - операция более дорогая, чем любые другие. По патронам: для alife():create() как раз ни в какие конфиги заглядывать не нужно. Создаст сразу полную, как раз в соответствии с конфигом. Для неполных - да, вытаскивать из пакета, и создавать через create_ammo(). арты на пояс - по-моему через тот же самый конфиг, что и стволы/костюмы/гранаты/бинокли. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853355
Карлан 1 050 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 Для неполных - да, вытаскивать из пакета, и создавать через create_ammo(). Да чтож вы local ini = system_ini() local num_in_box = ini:r_u32(section, "box_size") while num > num_in_box do alife():create_ammo(section, position, lvi, gvi, pid, num_in_box) num = num - num_in_box end alife():create_ammo(section, position, lvi, gvi, pid, num) И никаких пакетов не нужно. С пакетом получится, как говорится, на все случаи жизни, но для обычного спавна и без него обойтись можно вполне. По скорости - а кто-нибудь мерил ? Мерили, и не раз, и не один человек. Насколько быстрее я уже не помню, но, что быстрее, - так точно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853363
Dennis_Chikin 3 665 Опубликовано 31 Мая 2014 Поделиться Опубликовано 31 Мая 2014 num то в этом дивном коде откуда берется ? "Насколько быстрее я уже не помню" - ну так вот цифр и нужны. А то urban legends - этого-то полно. И все ссылаются как раз "кто-то где-то писал, что кто-то где-то что-то мерял". Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/281/#findComment-853368
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти