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/
Nazgool 251 Опубликовано 20 Июня 2016 Поделиться Опубликовано 20 Июня 2016 @PTB, В файле xr_effects.script смотри две первые функции. function disable_ui_elements function enable_ui_elementsТам всё предельно ясно. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019526
Romann 628 Опубликовано 20 Июня 2016 Поделиться Опубликовано 20 Июня 2016 А вообще для полетов камеры по локациям есть level.add_cam_effector2. Только тут нужно делать кат-сцену в X-ray SDK. Я делал кат-сцену, таким образом, вешал на рестриктор, это не помогло, остаётся худ и пушка в руках. Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019543
TIGER_VLAD 361 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 (изменено) @Romann, Ты наверное использовал функцию level.add_cam_effector() вместо level.add_cam_effector2(). Изменено 21 Июня 2016 пользователем TIGER_VLAD Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019549
Romann 628 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 Ты наверное использовал функцию level.add_cam_effector вместо level.add_cam_effector2. Вот функция: function blya_desant() level.add_cam_effector2("camera_effects\\blya_desant.anm", 30, false, "") local snd_obj = xr_sound.get_safe_sound_object([[helicopter\see_enemy_3]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end Вот так это выглядит: (кат-сцена с 2м.50с.) Чтобы снять видео, я скрыл худ, и убрал пушку вручную. 1 Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019550
Romann 628 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 Кто может помочь написать биндер к оружию? Я начал делать, но т.к. я не скриптер много чего не могу понять. Чтоб тут лишнего не расписывать, у кого есть желание помочь пишите в личку. Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019576
Kober(BRUC) 99 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 Добрый вечер. Был заспавнен предмет через скрипт, самым обычным способом: alife():create(section,position,lv,gm) Предмет в игре один. То есть не как хлеб или колбаса, которых много, а один. Как мне удалить этот предмет из игры? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019742
Overfirst 647 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 @Romann, если ты вызывал из логики рестриктора фунцкию, то это не является правильным. Нужно юзать схему sr_cutscene, подробнее о ней можно узнать тут. 1 Ранее был известен под ником BoBaH_671. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019746
PTB 8 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 @Kober(BRUC), Вот есть фу-ии в уроках: function del_pusto() local sim = alife() local se_obj = sim:story_object(888) --номер обьекта в game_stori_ids if se_obj then sim:release(se_obj, true) end end Незнаю подойдёт или нет, не проверял. В жизни много плохих моментов. Пытайся избавляться от них ! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019752
dsh 3 824 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 Не подойдет. Что бы подошло, нужно после создания, ручками, назначить объекту story_id. А так, перебирать все объекты в цикле и встретив подходящую секцию, удалять и прерывать цикл. Самый простой вариант. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019768
ins33 16 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 (изменено) С помощью string.find получаю таблицу в которой есть строки с индексом _delet.Затем table.remove(tbl, _delet) пытаюсь очистить таблицу от всех строк _deletи ловлю вылет bad argument #1 to 'foreach' (table expected, got table) -- вместо таблицы получена таблица table.remove(obj, "_flame") --> bad argument #1 to 'remove' (table expected, got userdata) for a=10,65635,1 do local obj =level.object _by_id ( a ) if obj and string.fi nd ( obj:nam e(),"search_") then table.remove ( obj, _delete) По сути надо из таблицы:a_*, а_*2, а_*_3, а_delet, а_*_delet, а_*_конец_таблицыудалить все вхождения в delet.Или произвести действие только с:a_*, а_*2, а_*_3, а_*_конец_таблицыисключая а_delet, а_*_delet Или может надо вообще по другому получать таблицу? @dsh, local sObj = alife():object("esc_wolf") Изменено 21 Июня 2016 пользователем ins33 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019784
dsh 3 824 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 local sObj = alife():object("esc_wolf") И чего? esc_wolf сидит в all.spawn, поэтому его можно достать по имени. А вот если ты его скриптово заспаунишь по секции, то имя у него будет не "esc_wolf", а какое-нибудь "esc_wolf12345". dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019791
Eugen81 1 009 Опубликовано 21 Июня 2016 Поделиться Опубликовано 21 Июня 2016 (изменено) Предмет в игре один. Как мне удалить этот предмет из игры? Секция уникальная? Вот как @dsh говорит: function del_item() local obj for i=1,65534 do obj = alife():object(i) if obj and obj:section_name() == "секция_предмета" then -- ищем предмет alife():release(obj) -- удаляем break -- прерываем цикл end end end Изменено 21 Июня 2016 пользователем Eugen81 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019792
naxac 2 605 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 @ins33, а какая у тебя таблица? Непрерывная последовательность или ассоциативный массив? И вообще как-то странно все у тебя и непонятно. В первом случае можно сделать так: for i, v in ipairs(tbl) do if v:find("_delete") then table.remove(tbl, i) end endВо втором - так (если ключи - это строки) for k in pairs(tbl) do if k:find("_delete") then tbl[k] = nil end end table.remove(obj, "_flame") --> bad argument #1 to 'remove' (table expected, got userdata)Для table.remove первым аргументом передается таблица (последовательность), вторым - индекс, по которому надо удалить поле со смещением последующих индексов. Ты же передаёшь серверный объект и строку, для чего это вообще делается - не ясно.Почитай документацию по Луа. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019824
dsh 3 824 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 Я бы посоветовал, всем, никогда не удалять из таблицы изнутри цикла по ipairs. Во избежание граблей. Очень, очень плохая практика. Да, я знаю, что я Капитан Очевидность. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019910
Dennis_Chikin 3 665 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 (изменено) Не, на Капитана это не тянет. По тому что сейчас прибегут с новейшей сборкой lua 6.666, и будут доказывать, что в ней все работает как надо. Тем более что граблей здесь более чем одни, так что и с pairs() экспериментировать тоже не стоит. upd: мда, вот буквально сейчас переписываю очередное гениальное: for k, v in pairs( t ) do v:update() end blabla:update() if ... then t[self.object:id()] = nil end end Изменено 22 Июня 2016 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019945
abramcumner 1 234 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 upd: мда, вот буквально сейчас переписываю очередное гениальное:А что не так? Луа запрещает только добавлять новые элементы во время итерирования по pairs, изменять и удалять можно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019949
Dennis_Chikin 3 665 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 Который именно ? Сферический в вакууме ? Так в том и со взятием размера все хорошо после вообще любых операций. И где в нем написано про то, в какой именно момент и что он меняет в таблице ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019966
Nazgool 251 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 (изменено) t=nil не удаляет поле, а изменяет его значение (хоть и nil, но тоже ведь значение)А вот table.remove выполняет pop, т.е. именно удаляет поле. Или я вообще не понял о чем тут идет речь? Изменено 22 Июня 2016 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019972
Malandrinus 624 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 @Nazgool, с точки зрения стандарта Lua запись nil в поле эквивалентно его удалению. Детали реализации могут отличаться, но это уже поведение стандартом никак не регламентируемое. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019976
Dennis_Chikin 3 665 Опубликовано 22 Июня 2016 Поделиться Опубликовано 22 Июня 2016 А в какой момент срабатывает уборщик, который, собственно, и удаляет ? Или ВО ВСЕХ без исключения реализациях lua все эти nil в таблицах лежат пожизненно ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/377/#findComment-1019977
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти