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/
RayTwitty 567 Опубликовано 25 Июля 2023 Поделиться Опубликовано 25 Июля 2023 22 часа назад, 666Ian сказал: Правда, если пример получить невозможно с которого бы я все слизал, можно хоть подсказку какой биндер имеется ввиду Пример тут в двух словах не получится привести. Могу как вариант посоветовать посмотреть Shadows Addon, там есть биндер автомобилей (sa_cars.script) и сохранение/загрузка топлива (se_car.script). Но если у тебя кастомный движок типа OGSR, то нафиг это все надо - сделай себе форк и добавь необходимые параметры прямо в движок. 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463818
Zander_driver 10 348 Опубликовано 26 Июля 2023 Поделиться Опубликовано 26 Июля 2023 2 часа назад, RayTwitty сказал: если у тебя кастомный движок типа OGSR, то нафиг это все надо - сделай себе форк и добавь необходимые параметры прямо в движок. Истинная правда, так оно и есть. Но людям бывает очень страшно к движку даже подойти, и в это наше C++ окунуться. Боятся, понимаешь... Скрытый текст Вспоминая себя, кстати... я пожалуй не боялся. Мне было лень. Когда исходники только появились, в движке столько багов и косяков было, так было лень все это разгребать, править... данунафиг. Да и знаний по С++ на тот момент не было. А в движке OGSR добрые люди уже без моего участия все (ну почти), косяки разгребли, исправили, причесали... Не движок - конфетка. Насколько это вообще можно сказать в отношении X-Ray. Такой движок грех не форкнуть под свои нужды. А если по теме. Люди, не надо бояться движка. Он не кусается. Уж тем более теперь, когда все доведено до ума. 1 1 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463821
666Ian 6 Опубликовано 26 Июля 2023 Поделиться Опубликовано 26 Июля 2023 14 часов назад, RayTwitty сказал: Пример тут в двух словах не получится привести. Могу как вариант посоветовать посмотреть Shadows Addon, там есть биндер автомобилей (sa_cars.script) и сохранение/загрузка топлива (se_car.script). Но если у тебя кастомный движок типа OGSR, то нафиг это все надо - сделай себе форк и добавь необходимые параметры прямо в движок. а есть что на эту тему? Попробуем форк.. Уточню, если понял неправильно. Форк движка, по сути просто правка движка, огср позволит мне сохранять свойства предмета также легко, как я сохраняю сейчас condition предмета? Т.е я сделаю аналог set_condition(number) для любого свойства, например, цены и смогу условно через set_cost(number) менять стоимость любого предмета? И сделать это не так уж и сложно, что даже у меня есть шансы)? Если хватит терпения у кого меня посвятить в это дело, то я готов пробовать. Вроде прикольная штука была бы и простая. Скриптами я наныл, еще не понял как, но понимать вроде начинаю и вижу там какие-то дебри 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463848
Гость Опубликовано 26 Июля 2023 Поделиться Опубликовано 26 Июля 2023 (изменено) S.T.A.L.K.E.R. Anomaly - НПС говорит не все фразы. Столкнулся с проблемами. В "Charasters_desc" прописал НПСу путь к голосу персонажа(в моём случае это голос наёмника). По итогу НПС молчит, говорит фразы только во время ранения, и только если тычить в него стволом. Других фраз(фразы во время перестрелки, обычные рандомные фразы и т.д.) он вообще не говорит. К тому же, если взять его в напарники, то он не высылает в чат никаких СМС в адрес ГГ(СМС про локации, мутантов и т.д.). Из-за этих двух проблем мой непись будто неживой. Что делать? Изменено 26 Июля 2023 пользователем Murarius Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463869
gam 118 Опубликовано 27 Июля 2023 Поделиться Опубликовано 27 Июля 2023 13 часов назад, Maks Velikoda сказал: S.T.A.L.K.E.R. Anomaly Если Вы, что-то модифицируете, указывайте платформу. Как угадать, что это - Choc\ЧН\COP? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463882
Zander_driver 10 348 Опубликовано 27 Июля 2023 Поделиться Опубликовано 27 Июля 2023 (изменено) 47 минут назад, gam сказал: Как угадать, что это Ну например в гугл вбить... Указал он платформу. S.T.A.L.K.E.R. Anomaly вполне себе платформа, не знать о существовании которой - грех. Изменено 27 Июля 2023 пользователем Zander_driver 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463888
gam 118 Опубликовано 27 Июля 2023 Поделиться Опубликовано 27 Июля 2023 53 минуты назад, Zander_driver сказал: не знать о существовании которой - грех. Я неверно выразился - с моей виндой хр не на всякий сайт можно пробиться. А этот мод мне не знаком. Но тут оффтоп уже. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1463894
Dalarcsis 33 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 (изменено) Ребята, подскажите пожалуйста, через какую функцию в скрипте можно удалить предмет у НПС в ТЧ? В интернете и на форуме искал, но не нашёл. Буду признателен, если поможете. Изменено 30 Июля 2023 пользователем Dalarcsis Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464162
666Ian 6 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 @Dalarcsis по всякому можно. ты лучше опиши подробнее в какой момент удалить. если просто с ничего удалить, то можно перебрать всех нпс, выбрать нужных по имени профиля, перебрать их инвентари на наличие нужного предмета и удалить предмет, если он есть. Хотя можно по идее просто перебор всех объектов уже видит этот предмет и удалить его можно без перебора инвентарей нпс. Можно в диалогах удалить, в оригинале гск так делает, а в моддинге так делает большинство модеров(статистика из воздуха). Ну это мои варианты. я такой себе скриптер. просто мне пришло . уведомление - я откликнулся) Вариантов с диалогом у меня нет под рукой. Переборов много разных, попробуй так for a = 1, 65534, 1 do local sobj = alife():object( a ) if sobj and sobj:section()=="секция предмета" and sobj.parent_id == npc.id then -- если секция предмета и предмет находится у нпс какого-нибудь в собственности alife():release( sobj, true ) end end Меня тоже интересует кое-что. Как можно сохранить переменную и привязать её к определенному сейву? Вот чтобы у каждого сейва эта переменная была своя? Я сейчас смог так на костылях реализовать сохранение переменной через файловый менеджер, переименовывая определенный файл в значение переменной, а потом на нетспавне считывать это имя файла как переменную, типо сохранил... Ну понятное дело, что это все более-менее работает в рамках прохождения всей игры на одном и том же сохранении. Так бывает конечно, но такую реализацию я бы отложил на самый крайний случай. Я вижу там разрабы сохраняют уровни сложности, тайники что ли, логику. Пытался посмотреть. Пока ничего не понял особо, ну понял что нет-пакеты) все пока что. У меня ОГСР, поэтому я еще смотрю в сторону такого способа function save_number(number) local setting_ini = ini_file("important_number.ltx", true) setting_ini.readonly = false setting_ini:w_float("имя_сейва", "1", number) -- тут хотелось бы получать еще имя сейва... number то я могу получать end И вроде оно сохраняет, т.е точно сохраняет, но имя сейва получить при сохранении как не знаю. Я нашел случайно, но еще не пытался это в свои скрипты пихать такое в скрипте xr_effects из зп. -- Сюжетное сохранение в важных местах function scenario_autosave(actor, npc, p) local save_name = p[1] if save_name == nil then abort("You are trying to use scenario_autosave without save name") end if IsImportantSave() then local save_param = user_name().." - "..game.translate_string(save_name) get_console():execute("save "..save_param) end end Возможно как-то так я смогу получать имя сейва, записывать его вместе с намбер. Меня интересует, если я пытаюсь идти верной дорогой в своих хотелках, то как это всё дело загрузить потом? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464167
Dalarcsis 33 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 @666Ian Мне бы конкретно удалить после определённой фразы, ГГ или НПС. Т.е да, в диалогах. Но так, спасибо, что откликнулся! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464168
666Ian 6 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 4 минуты назад, Dalarcsis сказал: @666Ian Мне бы конкретно удалить после определённой фразы, ГГ или НПС. Т.е да, в диалогах. Но так, спасибо, что откликнулся! там в переборе ошибка, если что. скопировал код, не глянул, но кстати даже так может выдать ошибку xD Так я и делаю сам моды. Методом тыка. 19 минут назад, 666Ian сказал: for a = 1, 65534, 1 do local sobj = alife():object( a ) if sobj and sobj:section()=="секция предмета" and sobj:parent()~=nil then alife():release( sobj, true ) end end А вот с диалогами. Блин возится буду с час, искать смотреть. да по сути на диалог можно тот же перебор повесить) Если он работает корректно. Ну вот я нашел функцию из зп по-быстрому. Вроде бы должна работать. function delete_item(first_speaker, second_speaker) local section = "секция" if second_speaker:object("секция") ~= nil then alife():release(alife():object(second_speaker:object(section):id()), true) end end Хотя к слову, зачем вообще возиться-то тебе с предметом? Если нпс умирает и все удаляет дез_менджер? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464169
Zander_driver 10 348 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 30 минут назад, 666Ian сказал: Меня тоже интересует кое-что. Как можно сохранить переменную и привязать её к определенному сейву? Вот чтобы у каждого сейва эта переменная была своя? ... У меня ОГСР Опять 25. Ну у тебя же уже есть рабочий пример сохранения в xvars. (Я уж молчу о том что он и в OGSR-Wiki как был так и есть). Зачем опять эти костыли, да еще прости-господи, нет-пакеты? Сохрани свою переменную в xvars и не парься. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464170
666Ian 6 Опубликовано 30 Июля 2023 Поделиться Опубликовано 30 Июля 2023 (изменено) @Zander_driver точно, просто на любой предмет писать эту переменную? А потом её читать? Или как? А на что писать. На ту же броньку и не парится? Я просто отмучался там и забыл уже, а ты напомнил мне как я страдал ну на броник я бы точно не стал, о чем я боже... А как, а на что? На болт? Ладно пойду посплю. может завтра лучше подумается блин точно. на игрока и писать. надеюсь не опозорился хоть раз Изменено 30 Июля 2023 пользователем 666Ian 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464171
Dalarcsis 33 Опубликовано 31 Июля 2023 Поделиться Опубликовано 31 Июля 2023 @666Ian Спасибо огромное, завтра утром проверю. А по поводу смерти НПС и очистки менеджером: он и не умирает, т.к. играет роль квестовика. Поэтому, хочу подзапариться. Можно, конечно, было убрать из профиля предмет, но я хотел сделать вариативность - забрать силой, или потолковать. Вот тут и понадобилось очистить инвентарь от предмета Спасибо ещё раз. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464172
666Ian 6 Опубликовано 10 Августа 2023 Поделиться Опубликовано 10 Августа 2023 @Zander_driverа что такого? Неправильно понял в итоге я? Или ты с моих тупняков в шоке? Вообще поинтересуюсь, может знаешь, присел на xvars значит. Удобно. Классно. Но если я буду записывать сразу 100 переменных, там ничего не треснет? Не сломается? И ещё раз, я же правильно делаю, что на игрока пишу и с него читаю, или можно как-то по уму это делать, грамотно? У меня все работает, кстати, поэтому я доволен как бы в любом случае) хварс тема. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464710
Zander_driver 10 348 Опубликовано 13 Августа 2023 Поделиться Опубликовано 13 Августа 2023 10.08.2023 в 13:25, 666Ian сказал: Но если я буду записывать сразу 100 переменных, там ничего не треснет? Не сломается? Я у себя записываю около пары сотен тысяч переменных. И еще до 100 000 переменных сверху, под конец прохождения мода. Пока ничего не ломалось с этой стороны. 10.08.2023 в 13:25, 666Ian сказал: я же правильно делаю, что на игрока пишу и с него читаю, или можно как-то по уму это делать, грамотно? Скрытый текст Ты не правильно даже говоришь об этом. xvars не имеет никакого отношения ни к игроку, ни к каким-то там объектам... Ты пишешь не "на игрока". А именуешь переменные неким образом, отчего тебе почему-то кажется что "это записано на игрока" ... кажется тебе это. Неправильно. И в тот раз, мы не в объект писали. Просто в xvars, просто в имени переменной содержится id объекта... а оно может и не содержаться. К объектам никакого отношения нет, это просто переменная которую ты можешь обозвать как угодно. Вложив что-либо в название для того чтобы с чем-то другим не перепутать, и только. 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1464978
phalcor 60 Опубликовано 23 Августа 2023 Поделиться Опубликовано 23 Августа 2023 (изменено) Приветствую! Непонятный затык какой-то... Заметил, что давно нет респавна убитым монстрам/сталкерам. По времени уже несколько раз должны были сработать респавны. Кордон почти пуст третьи сутки. И если ранее при ручном спавне тестового сталкера он тут же переходил под управление какого-нибудь гулага, то теперь сколько не спавню - они все ходят-бродят кругами, не будучи подхваченные гулагами. Понятно, что мутновато описал проблему, но вдруг кто-то стилкивался с подобным и знает решение? p.s. А где интересно сам механизм захвата заспавненного сталкера под гулаг - в скриптах или же в движке? UPD: такс, нашёл, гулаг объекту назначается в частности в скрипте se_respawn вызовом obj:brain():update(), и далее проверка - нет гулага, объект удаляется. Вот потому у мну и пустыня... Вопрос, что мешает этому brain():update() назначить сталкерам гулаг?!! По условиям тех же гулагов (capacity и т.д.) всё норм. Изменено 23 Августа 2023 пользователем phalcor update Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1465531
Это популярное сообщение. phalcor 60 Опубликовано 24 Августа 2023 Это популярное сообщение. Поделиться Опубликовано 24 Августа 2023 (изменено) 17 часов назад, phalcor сказал: давно нет респавна убитым монстрам/сталкерам Нашёл-таки причину. Кому интересно: Скрытый текст Дело всё в том, что при поиске подходящего гулага в obj:brain():update() учитываются allspawnоские трупы, так как у них в ini есть секции [smart_terrains] esc_lager = true Из-за этого такие трупы занимают свободные места в smart_terrainах, уменьшая значения self.gulag.capacity_non_exclusive. Т.е. в методах fill_exclusives для сталков/монстров не проверяется их живость... Где-то это хорошо, а мне вот оказалось плохо - кучу времени потратил. Решение: ждать пропажи трупов или добавить таки проверку в fill_exclusives на alive. Изменено 24 Августа 2023 пользователем phalcor 2 3 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1465552
Norman Eisenherz 354 Опубликовано 3 Сентября 2023 Поделиться Опубликовано 3 Сентября 2023 OGSE 0.6.9.3, переназначение клавиш и кнопок для обработки новых действий: Spoiler [ogse_rebind_key.script] local dik_key_to_name = { … --[256] = "MOUSE_1", -- похоже, враньё в lua_help --[512] = "MOUSE_2", -- аналогично --[1024] = "MOUSE_3", -- та же песня [337] = "MOUSE_1", [338] = "MOUSE_2", [339] = "MOUSE_3", В ТЧ 1.0006 событие "нажать / отпустить ЛКМ или ПКМ" успешно ловится (в скриптовом окне) при ссылке на таблицу DIK_keys с "неправильными" кодами кнопок мыши. Как понимать указанный выше комментарий в OGSE? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1466211
I am Dead 918 Опубликовано 12 Сентября 2023 Поделиться Опубликовано 12 Сентября 2023 04.09.2023 в 04:49, Norman Eisenherz сказал: Как понимать указанный выше комментарий в OGSE? Вот так и понимай, выше неправильные коды, правильные - 0xED(=200) + num Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/607/#findComment-1466940
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти