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/
I am Dead 918 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @AndreySol Вчера пробовал таким образом удалить, не вышло.. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370943
Okichi 981 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @AndreySol Если берется имя из аллспавна - его в кавычки нужно local s_obj = sim:object( "light_uglovaya_1_glass_0006" ) И вот что-то не уверена, что можно так удалять источники света. Для physic_object и physic_destroyable_object - сработает, для источника света - вопрос... След от кругов на воде - это тоже след (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370956
Zander_driver 10 358 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 В ТЧ для любых, каких угодно объектов сработает. И, Только что, Okichi сказал(а): Если берется имя из аллспавна - его в кавычки нужно Естественно, да 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370957
Okichi 981 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @Zander_driver у меня совершенно точно какие-то источники света удаляться отказывались ) т.е. лампочки нет - свет есть. След от кругов на воде - это тоже след (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370959
gam 118 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @Okichi for id=1, 65535 do local obj = level.object_by_id(id) if obj then 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370960
Это популярное сообщение. dsh 3 824 Опубликовано 19 Февраля 2021 Это популярное сообщение. Поделиться Опубликовано 19 Февраля 2021 @Okichi лампочка и свет - это два отдельных объекта. Притом лампочка может вообще не быть объектом, а нарисована на стене. 5 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370961
Okichi 981 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 6 минут назад, dsh сказал(а): ампочка может вообще не быть объектом, а нарисована на стене. Так поэтому и написала, что не обязательно удаление видимой глазами финтифлюшки удалит и свет) Т.е. имелось в виду, что удаление свисающей лампочки не равно удалению источника света из нее. @gam зачем перебор по id, если известно точное имя объекта из аллспавна. Имхо, не нужен совсем. След от кругов на воде - это тоже след (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370965
_g.script 3 670 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 (изменено) Не поленился и проверил. Конкретно эта лампочка (light_uglovaya_1_glass_0006) замечательно удаляется, как источник света. Оставшийся светильник это декор на локации. @I am Dead , способ вполне рабочий, что предложил@AndreySol , только , как уже указали, там кавычки нужны. Скрытый текст local sim = alife() local s_obj = sim:object("light_uglovaya_1_glass_0006") if s_obj then sim:release(s_obj, true) end Сам всё проверил, поставил вызов ф-ии при загрузке левела. Изменено 19 Февраля 2021 пользователем mole venomous 2 1 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370973
hArdplAyer22_22 0 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 Доброго времени суток. Есть нескромный вопрос. Человек я в скриптовании и програмировании не слишком умный, часто беру чужие наработки и меняю под себя (конечно же с указанием авторства и огромной благодарностью). Нужна помощь. Взял из ОГСЕ на ТЧ скрипт на ограничение количества артефактов на поясе, немного переделал в силу своих скромных знаний, чтобы общее количество артефактов на поясе не превышало 5 (6 артефакт автоматически снимался). Так вот, скрипт снимает каждый 6 артефакт определенного вида (например, снимает шестую Душу, но общее количество артов может висеть и больше). Собственно, сама функция: function remove_arts() for key, value in pairs(belt) do if string.find(key, "af_") then local obj_sect = key if belt[key] and belt[key] > 5 then amk.remove_item(db.actor:object(key)) amk.spawn_item_in_inv(key) belt[key] = belt[key] - 1 if (not warning_last or warning_last ~= key) then warning_last = key end end end end end Подскажите глупому, пожалуйста, как переделать, чтобы можно было вешать любых 5 артов, и любой 6 арт снимало. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370974
I am Dead 918 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 @mole venomous @AndreySol Странно, вчера точно так же пытался удалить только была еще проверка на поршень чтобы функция несколько раз не воспроизводилась. Скрытый текст function del_lampa() local sim = alife() local s_obj = sim:object("light_uglovaya_1_glass_0006") if s_obj and (not db.actor:has_info("delete_lampa") )then sim:release(s_obj, true) end db.actor:give_info_portion("delete_lampa") end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370983
_g.script 3 670 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 (изменено) Думаю, проверки на наличие s_obj достаточно, но если нужна проверка поршня, лучше сделать из bind_stalker, биндер net_spawn что-то вроде: Скрытый текст if not has_alife_info(инфо) then self.object:give_info_portion(инфо) экшн end Изменено 19 Февраля 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1370985
Zander_driver 10 358 Опубликовано 19 Февраля 2021 Поделиться Опубликовано 19 Февраля 2021 3 часа назад, hArdplAyer22_22 сказал(а): for key, value in pairs(belt) do Что такое здесь belt, и откуда оно берется? Может, там (откуда оно берется), и надо было, вот это все делать? 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371011
Colder 12 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 Скрытый текст local ammunity = { ["wpn_abakan"] = true, ["wpn_ak12"] = true, ["wpn_ak74"] = true, ["wpn_ak74_m2"] = true, ["wpn_ak74m"] = true, ["wpn_ak74u"] = true } function diassembly_sewing(obj) if obj:section() == "test_use_new" then axr_base.actor_disable_inventory() local hud = diassembly_ui(get_hud()) level.start_stop_menu(hud, true) axr_base.actor_on_spawn_item("test_use_new") end end class "diassembly_list" (CUIListItemEx) function diassembly_list:__init() super() self.item_name = CUIStatic() self.item_name:SetFont(GetFontLetterica16Russian()) self.item_name:SetTextColor(130,255,255,255) self:AttachChild(self.item_name) end class "diassembly_ui" (CUIScriptWnd) function diassembly_ui:__init(owner) super() self.owner = owner self:Init_Controls() self:InitCallBacks() self:FillList() end function diassembly_ui:__finalize() end function diassembly_ui:Init_Controls() self:Init(0,0,1024,768) local xml = CScriptXmlInit() xml:ParseFile("ui_diassembly_test.xml") xml:InitStatic("main_window", self) xml:InitFrame("List_frame", self) self.list = xml:InitList("List", self) self.list:ShowSelectedItem(true) self:Register(self.list, "items_list") self:Register(xml:Init3tButton("btn_quit", self), "btn_quit") self.btn_r = xml:Init3tButton("btn_r", self) self:Register(self.btn_r, "btn_r") self.btn_r:Enable(false) end function diassembly_ui:FillList() self.list_items = self:GetListWnd("items_list") self.items = {} local duplicate_sections = {} db.actor:iterate_inventory(function (dummy, item) local section = item:section() if ammunity[section] and not duplicate_sections[section] then duplicate_sections[section] = true table.insert(self.items, section) local item_static = diassembly_list() item_static.item_name:SetTextST(axr_base.get_inv_name(section)) self.list_items:AddItem(item_static) end end) end function diassembly_ui:InitCallBacks() self:AddCallback("btn_r", ui_events.BUTTON_CLICKED, self.rep_btn_full, self) self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self) self:AddCallback("items_list", ui_events.LIST_ITEM_CLICKED, self.OnListChooseItem, self) end function diassembly_ui:OnListChooseItem() self.btn_r:Enable(true) --// ТУТ НАДО УДАЛИТЬ end --// Кнопка "Выход" function diassembly_ui:on_quit() self:GetHolder():start_stop_menu(self, true) axr_sounds.play_sound([[interface\inv_close]]) end --// Выход по нажатию "Esc" function diassembly_ui:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:on_quit() end end return true end Всем привет! Помогите удалить выбранное ОРУЖИЕ из списка! НЕПОЛУЧАЕТЬСЯ ИЛИ Я НУБ! При том что данный ствол НЕ в слоте Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371028
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 @Zander_driver 12 часов назад, Zander_driver сказал(а): Что такое здесь belt, и откуда оно берется? Может, там (откуда оно берется), и надо было, вот это все делать? belt, насколько я понял, это переменная, которая для пояса используется. В скрипте она вот так записана: belt = {} Если вместо belt использзовать например таблицу с артефактами, работать будет? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371044
AndreySol 215 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 (изменено) 1 час назад, hArdplAyer22_22 сказал(а): Если вместо belt использзовать например таблицу с артефактами Ты лучше поиском найди все строки кода, где выполняются какие-либо операции с этим belt, и выложи сюда. Надо понимать, как заполняется эта таблица, тогда можно тебе что-то подсказать. Движок какой используете? Изменено 20 Февраля 2021 пользователем AndreySol Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371052
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 @AndreySol Вот, нашел вроде добавление предмета в таблицу belt function scan_inv(item) local section = item:section() if section == separator then flag = 1 return end if flag == 1 then if slot_item(item) ~= nil then flag = 2 else insert_to_table(belt, section) belt_id[item:id()] = true end end end -- ƒобавление в таблицу function insert_to_table(tbl, section) if tbl[section] == nil then tbl[section] = 1 else tbl[section] = tbl[section] + 1 end end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371054
AndreySol 215 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 @hArdplAyer22_22 Ну если я правильно понял как работает эта шняга с определением артов на поясе, то твой код будет удалять арты не только с пояса, но и из рюкзака. Твой код, который должен ограничивать кол-во артов на поясе откуда вызывается? И движок какой - оригинал или что-то из правленых? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371056
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 @AndreySol движок OGSR, скрипт не трогает арты из рюкзака, тут ты не прав. Только из пояса. Только он считает не общее количество артов, а количество артов одного вида. В этом и загвоздка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371094
AndreySol 215 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 1 час назад, hArdplAyer22_22 сказал(а): скрипт не трогает арты из рюкзака Я код вижу, и понимаю что он будет делать. Движок OGSR - огромное кол-во правок, уверен среди них есть и ф-ции для работы с поясом, которые и следует в твоем случае использовать, а не этот древний костыль с сепаратором. Насчет удаления по общему кол-ву артов - переделывать все, т.к. у тебя сейчас таблица belt имеет ключи с именами секций артов и значениями их количества на поясе. А тебе надо просто получить кол-во артов и убирать лишние. 16 минут назад, Colder сказал(а): if db.actor:item_in_slot(2) ~= nil then Ну так ты же получаешь предмет, который в слоте, естественно он и будет удаляться. Надо получить предмет, который выбран в окне списка, его и удалять. Вобще переделывать надо много. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371112
Colder 12 Опубликовано 20 Февраля 2021 Поделиться Опубликовано 20 Февраля 2021 @AndreySol А у вас нету случайно подобной функции для примера? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/548/#findComment-1371113
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти