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 Ссылка на комментарий
Romann 623 Опубликовано 12 Июня 2016 Поделиться Опубликовано 12 Июня 2016 (изменено) Максимум, на десяток процентов, а далее ГГ начинает стукаться о воздух. Да, получилось, скриптом, но увеличение совсем не заметно, но ГГ спотыкается на ровном месте, получает xит. В ogse_actor_conditions_mgr.script добавил такой код: if db.actor:item_in_slot(6) and db.actor:item_in_slot(6):section() == "mon_nano_speed" then local cur_sprint_koef = override_sprint_koef or sprint_koef if act.satiety < light_hunger_limit then cur_sprint_koef = 1 + ( ( cur_sprint_koef + 5 ) * ( act.satiety / light_hunger_limit ) ) end if act.power < 1 then cur_sprint_koef = 1 + ( ( cur_sprint_koef + 5 ) * ( act.power / 1 ) ) end set_sprint_factor( cur_sprint_koef ) end Изменено 12 Июня 2016 пользователем Romann 1 Ссылка на комментарий
Zander_driver 10348 Опубликовано 12 Июня 2016 Поделиться Опубликовано 12 Июня 2016 (изменено) Может мне тоже стоит, выкладывая примеры каких-то кодов, показывать логико-арифметическую мишуру, и не показывать само действие?) А еще говорить "сделано скриптом" о том что будет работать только на ХЕ/огсе как минимум несколько странно, это ведь общая тема. Изменено 12 Июня 2016 пользователем Zander_driver Ссылка на комментарий
Джон Сина 0 Опубликовано 13 Июня 2016 Поделиться Опубликовано 13 Июня 2016 Скажите у меня в скриптах есть скрипт dar_polter_grand_holder кто не знает это за полтергейстом бежит много мутантов типо парада. Как активировать этот скрипт чтобы этот парад был в тёмной долине? Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 13 Июня 2016 Поделиться Опубликовано 13 Июня 2016 Скажите у меня в скриптах есть скрипт dar_polter_grand_holder кто не знает это за полтергейстом бежит много мутантов типо парада. Как активировать этот скрипт чтобы этот парад был в тёмной долине? Знаешь, вот не знаем что ты там подразумеваешь под dar_polter_grand_holder. Откуда это, из какого мода? Что это за объект? Давай подробности в студию, ибо из того, что ты написал, понятно чуть меньше чем ничего... Ссылка на комментарий
PTB 8 Опубликовано 13 Июня 2016 Поделиться Опубликовано 13 Июня 2016 Здравствуйте форумчане! Если не сложно, объясните пожалуйста как пользоваться списками ------------------- >>> Класс элемента списка eat_1_ptb <<< ------------------- class "eat_1_ptb_ListItem"(CUIListItemEx) function eat_1_ptb_ListItem:__init() super() self.text_item = CUIStatic() self:AttachChild(self.text_item) self.text_item:SetFont(GetFontLetterica18Russian()) self.text_item:SetTextColor(255,216,186,140) end ------------------- >>> END <<< ------------------- function ui1_ptb:AddItemTo_eat_1_ptb(item_name) --/Добавление элемента в список eat_1_ptb local _itm = eat_1_ptb_ListItem() _itm.text_item:SetText(item_name) self.eat_1_ptb:AddItem(_itm) end Вопрос, как добавить в список что-нибудь? Заранее спасибо! Ссылка на комментарий
Zander_driver 10348 Опубликовано 14 Июня 2016 Поделиться Опубликовано 14 Июня 2016 @PTB, Вопрос такой же, как и на 3 поста выше. Точно так же единственно возможный ответ: Давай подробности в студию, ибо из того, что ты написал, понятно чуть меньше чем ничего... self.eat_1_ptb что это за объект, к какому классу он относится - я понятия не имею. function ui1_ptb: и что это за класс, от кого наследован, если наследован - тоже не понятно. Ссылка на комментарий
PTB 8 Опубликовано 14 Июня 2016 Поделиться Опубликовано 14 Июня 2016 @Zander_driver, Вот скрипт: function ptb_eat(obj) if obj ~= nil then if obj:section() == "eat_ptb" then local hud = ui1_ptb(get_hud()) level.start_stop_menu(hud, true) end endendclass "ui1_ptb" (CUIScriptWnd)function ui1_ptb:__init() super() self:InitControls() self:InitCallBacks()endfunction ui1_ptb:__finalize()endfunction ui1_ptb:InitControls() local xml = CScriptXmlInit() self:Init(0,0,1024,768) xml:ParseFile("ui1_ptb.xml") self.frame2 = xml:InitFrame("frame2", self) self:Register(xml:Init3tButton("frame2:b_exit", self.frame2), "b_exit") self:Register(xml:Init3tButton("frame2:button3", self.frame2), "button3") xml:InitFrame("frame2:eat_1_ptb_frame", self.frame2) self.eat_1_ptb = xml:InitList("frame2:eat_1_ptb", self.frame2) self.eat_1_ptb:ShowSelectedItem(true) self:Register(self.eat_1_ptb, "eat_1_ptb") xml:InitFrame("frame2:eat_2_ptb_frame", self.frame2) self.eat_2_ptb = xml:InitList("frame2:eat_2_ptb", self.frame2) self.eat_2_ptb:ShowSelectedItem(true) self:Register(self.eat_2_ptb, "eat_2_ptb") self.Static3 = xml:InitStatic("frame2:Static3", self.frame2) self.Static4 = xml:InitStatic("frame2:Static4", self.frame2)endfunction ui1_ptb:InitCallBacks() self:AddCallback("b_exit", ui_events.BUTTON_CLICKED, self.b_exit_button_clicked, self) self:AddCallback("button3", ui_events.BUTTON_CLICKED, self.on_quit, self)endfunction ui1_ptb:b_exit_button_clicked() self:GetHolder():start_stop_menu(self, true) alife():create("eat_ptb", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())endfunction ui1_ptb:button3_button_clicked() alife():create("medkit_army", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())end------------------- >>> Класс элемента списка eat_1_ptb <<< -------------------class "eat_1_ptb_ListItem"(CUIListItemEx)function eat_1_ptb_ListItem:__init() super() self.text_item = CUIStatic() self:AttachChild(self.text_item) self.text_item:SetFont(GetFontLetterica18Russian()) self.text_item:SetTextColor(255,216,186,140)end------------------- >>> END <<< -------------------function ui1_ptb:AddItemTo_eat_1_ptb(item_name) --/Добавление элемента в список eat_1_ptb local _itm = eat_1_ptb_ListItem() _itm.text_item:SetText(item_name) self.eat_1_ptb:AddItem(_itm)end------------------- >>> Класс элемента списка eat_2_ptb <<< -------------------class "eat_2_ptb_ListItem"(CUIListItemEx)function eat_2_ptb_ListItem:__init() super() self.text_item = CUIStatic() self:AttachChild(self.text_item) self.text_item:SetFont(GetFontLetterica18Russian()) self.text_item:SetTextColor(255,216,186,140)end------------------- >>> END <<< -------------------function ui1_ptb:AddItemTo_eat_2_ptb(item_name) --/Добавление элемента в список eat_2_ptb local _itm = eat_2_ptb_ListItem() _itm.text_item:SetText(item_name) self.eat_2_ptb:AddItem(_itm)endfunction ui1_ptb:Hide() self:GetHolder():start_stop_menu(self, true)end @Zander_driver, Сделал в Stalker UI Creator Ссылка на комментарий
Zander_driver 10348 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 Винегрет из скриптов и обращений к xml Это к сожалению не по моей части. Не хочу сказать что это плохо - в свое время malandrinus доказывал что именно так и надо делать, и он наверное, может быть прав. Но я лично такие решения просто не понимаю, никогда подобным не занимался, и потому в таких вот конструкторах - "не шарю", привык делать интерфейсы чисто скриптами, без использования xml. Так что, ждем спецов по xml. Ссылка на комментарий
abramcumner 1229 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 А какой здесь винегрет? Все очень чисто и красиво. В список добавляют функции AddItemTo_eat_1_ptb("текст") и AddItemTo_eat_2_ptb("текст") 1 Ссылка на комментарий
PTB 8 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 @abramcumner, Простите за глупый вопрос(про100 я в скриптах плохо шарю) как в этот список вынести например предметы которые есть в инвентаре Например есть функция: function name_func() if db.actor:object("bread") then ... end if db.actor:object("kolbasa") then ... end if db.actor:object("vodka") then ... end if db.actor:object("conserva") then ... end end Что написать вместо точек? Ссылка на комментарий
Max_Raf 35 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 @PTB, тебе нужно получить все конкретные объекты по этим секциям чтобы манипулировать с каждым? Ссылка на комментарий
PTB 8 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 @Max_Raf, Да, например выбрав 1 предмет из списка, нажав на кнопку что-то происходило. Заранее прошу прощения, за свои тупые вопросы! Ссылка на комментарий
Max_Raf 35 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 @PTB, не догоняю, что ты именно хочешь. Что за список? В твоём примере просто функция, которая проверяет, есть ли объект по такой-то секции в инвентаре и так несколько раз. Если тебе надо достать какой то конкретный предмет после проверки на наличие, то пиши, можно сказать точно так же: function name_func() if db.actor:object("bread") then local object = db.actor:object("bread") -- получение вроде как первого попавшегося объекта хлебушка end --... end Спрашивай конкретней и опиши что именно ты хочешь. Ссылка на комментарий
PTB 8 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 http://www.amk-team.ru/forum/topic/6185-skriptovanie/?p=1018174 Ссылка на комментарий
Dennis_Chikin 3664 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 @PTB, http://www.amk-team.ru/forum/topic/13087-forum-voprosy-i-predlozheniia/?p=1018456 Ссылка на комментарий
abramcumner 1229 Опубликовано 15 Июня 2016 Поделиться Опубликовано 15 Июня 2016 (изменено) @PTB, function ui1_ptb:name_func() if db.actor:object("bread") then AddItemTo_eat_1_ptb("bread") end if db.actor:object("kolbasa") then AddItemTo_eat_1_ptb("kolbasa") end if db.actor:object("vodka") then AddItemTo_eat_1_ptb("vodka") end if db.actor:object("conserva") then AddItemTo_eat_1_ptb("conserva") end end Изменено 15 Июня 2016 пользователем abramcumner 1 Ссылка на комментарий
Nazgool 250 Опубликовано 16 Июня 2016 Поделиться Опубликовано 16 Июня 2016 нажав на кнопку что-то происходилоОбъясни что именно должно происходить. И подробно, а то сейчас расскажу тебе что и как сделать, а потом выясняться подробности, которые заставят всё переделывать. Ссылка на комментарий
Zander_driver 10348 Опубликовано 16 Июня 2016 Поделиться Опубликовано 16 Июня 2016 Я предполагаю, на кнопку вешается функция, которая делает что-то с выбранным в списке предметом. И наверное таких кнопок задумано несколько - под различные действия с выбранным предметом. 1 Ссылка на комментарий
Nazgool 250 Опубликовано 16 Июня 2016 Поделиться Опубликовано 16 Июня 2016 @Zander_driver, Я к чему спрашивал? На мой взгляд винегрет получается не с кодом, а именно с действиями.Поясню.Судя из кода, но нажатию кнопки 'b_exit' в инвентарь спавниться какой-то там "eat_ptb", а по нажатию кнопки "medkit_army" аптечка.Т.е., я так полагаю, исходя из этого, при нажатии пункта из списка что-то должно спавниться В инвентарь.А тут вроде как обсуждается составление списка из того, что УЖЕ ЕСТЬ в инвентаре.И ни слова о том что же с этим делать? Как-то не согласовывается с исходным кодом.Вот и спрашиваю. Ссылка на комментарий
PTB 8 Опубликовано 16 Июня 2016 Поделиться Опубликовано 16 Июня 2016 (изменено) @Nazgool, self:GetHolder():start_stop_menu(self, true)alife():create("eat_ptb", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())-- спавним обратно в рюкзак alife():create("medkit_army", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())--а это для теста, просто при прохождении аптечек не хватало) Надо после, выбранного предмета из списка и нажатии на кнопку воспроизводилась функция. Изменено 16 Июня 2016 пользователем Kirgudu Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти