Overf1rst 1 495 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 2 ноября, 2021 (изменено) Может кому-то пригодится. Спойлер function GetTimeFull() --получить полностью игровую дату в момент вызова функции local gtime = game.get_game_time() return gtime:dateToString(game.CTime.DateToDay).." в "..gtime:timeToString(game.CTime.TimeToMinutes) --Итого (у меня получилось): Сентябрь 9, 2011 в 21:33 end Изменено 2 ноября, 2021 пользователем liner Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 3 ноября, 2021 Как проверить, что НПС принадлежит скваду? Спойлер function npc_death_by_monster(victim,who) --вызывается из xr_motivator.script (условие if IsMonster(who) then) if not string.find(victim:section(),"sim_default") or get_object_story_id(victim:id())~=nil then --квестовик return end local squad_sender = get_object_squad(victim) local monster_squad = get_object_squad(who) if not squad_sender or not monster_squad then --ТУТ ПРОБЛЕМА log("STOP1") return end if not news_text.can_send_help_message(squad_sender:get_squad_community()) or not news_text.can_send_help_message(victim:character_community()) then log("STOP2") return end if not xr_conditions.squad_exist(nil,nil,{squad_sender:section()}) then --если отряд мёртв или не существует log("STOP3") return end ........ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 3 ноября, 2021 5 часов назад, liner сказал: Как проверить, что НПС принадлежит скваду? local se_npc = alife():object(npc:id()) if se_npc.group_id ~= 65535 then Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 В 31.10.2021 в 23:38, vader_33 сказал: Paradox27kms Показать контент а как без скрипта перед глазами конкретно писать? Диванная ванга в отпуске В ui_mm_mod:AddItemToListOther(item_name) (или что там добавляет в self.list_other) добавить аргументом секцию, которая в него передается ui_mm_mod:AddItemToListOther(item_name, sect) и ниже в эту функцию добавить self.sect_item = sect function ui_mm_mod:OnButton_list_other_clicked() if self.list_other:GetSize()==0 then return end local item = self.list_other:GetSelectedItem() if item == nil then return end self.list_other:RemoveItem(item) local section = item.sect_item local obj = db.actor:object(section) if obj then local sobj = alife():object(obj:id()) alife():release(sobj, true) end end Я столкнулся с такой проблемой что в компонентах у меня вместо русских букв отображаются кракозябры. Я заметил что данный артефакт только в моём скрипте, я пробовал писать таким методом в ПЫСовских менюшках (скриптах) self.combo_weapons:SetText("Выбрать") и там всё как положенно а в моём скрипте отображаются кракозябры Дополнено 36 минуты спустя В 31.10.2021 в 23:38, vader_33 сказал: Paradox27kms Скрыть контент а как без скрипта перед глазами конкретно писать? Диванная ванга в отпуске В ui_mm_mod:AddItemToListOther(item_name) (или что там добавляет в self.list_other) добавить аргументом секцию, которая в него передается ui_mm_mod:AddItemToListOther(item_name, sect) и ниже в эту функцию добавить self.sect_item = sect function ui_mm_mod:OnButton_list_other_clicked() if self.list_other:GetSize()==0 then return end local item = self.list_other:GetSelectedItem() if item == nil then return end self.list_other:RemoveItem(item) local section = item.sect_item local obj = db.actor:object(section) if obj then local sobj = alife():object(obj:id()) alife():release(sobj, true) end end В первом случае если я правильно понял нужно прописать так? Спойлер function ui_mm_mod:AddItemToListOther(item_name, sect) local _itm = mod_main_menu(22) _itm.text:SetText(item_name) self.list_other:AddExistingItem(_itm) self.sect_item = sect end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 5 ноября, 2021 2 часа назад, Paradox27kms сказал: Я столкнулся с такой проблемой что в компонентах у меня вместо русских букв отображаются кракозябры. Я заметил что данный артефакт только в моём скрипте, я пробовал писать таким методом в ПЫСовских менюшках (скриптах) self.combo_weapons:SetText("Выбрать") и там всё как положенно а в моём скрипте отображаются кракозябры Дополнено 36 минуты спустя Весь текст пиши в text/rus, а потом делай на ссылку на него из скриптов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 4 минуты назад, Neptun сказал: Весь текст пиши в text/rus, а потом делай на ссылку на него из скриптов. Знать бы как, привести бы пример... желательно со взаимодействием с компонентом combo_box ну или list_box, просто секции в самом выпадающем списке да беру из text/rus а вот с шапкой так не работает Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 5 ноября, 2021 19 минут назад, Paradox27kms сказал: Знать бы как, привести бы пример... желательно со взаимодействием с компонентом combo_box ну или list_box, просто секции в самом выпадающем списке да беру из text/rus а вот с шапкой так не работает Почему не работает? Там, где написан текст словами, заменяешь на ссылку. Метод, по-моему, един для всего. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 Только что, Neptun сказал: Почему не работает? Там, где написан текст словами, заменяешь на ссылку. Метод, по-моему, един для всего. К сожалению нет, я тоже так думал. Ссылка будет отображаться в шапке только на англ( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 5 ноября, 2021 5 минут назад, Paradox27kms сказал: К сожалению нет, я тоже так думал. Ссылка будет отображаться в шапке только на англ( Покажи часть этого кода, где делается ссылка на текст. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 6 минут назад, Neptun сказал: Покажи часть этого кода, где делается ссылка на текст. self.combo_weapons:SetText("game type") -- шапка и пример текста из text/rus self.combo_weapons:AddItem("ui_inv_pistols", 1) self.combo_weapons:AddItem("ui_inv_shotguns", 2) self.combo_weapons:AddItem("ui_inv_rifles", 3) self.combo_weapons:AddItem("ui_inv_sniper_rifles", 4) self.combo_weapons:AddItem("ui_inv_heavy_weapons", 5) self.combo_weapons:AddItem("ui_ammo_types", 6) self.combo_weapons:AddItem("ui_inv_outfit_fire_wound_protection", 7) self.combo_weapons:AddItem("ui_inv_bleeding", ? self.combo_weapons:AddItem("ui_inv_upgrades", 9) end <string id="game type"> <text>ТИП ИГРЫ</text> </string> Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 5 ноября, 2021 (изменено) 25 минут назад, Paradox27kms сказал: self.combo_weapons:SetText("game type") -- шапка и пример текста из text/rus self.combo_weapons:AddItem("ui_inv_pistols", 1) self.combo_weapons:AddItem("ui_inv_shotguns", 2) self.combo_weapons:AddItem("ui_inv_rifles", 3) self.combo_weapons:AddItem("ui_inv_sniper_rifles", 4) self.combo_weapons:AddItem("ui_inv_heavy_weapons", 5) self.combo_weapons:AddItem("ui_ammo_types", 6) self.combo_weapons:AddItem("ui_inv_outfit_fire_wound_protection", 7) self.combo_weapons:AddItem("ui_inv_bleeding", ? self.combo_weapons:AddItem("ui_inv_upgrades", 9) end <string id="game type"> <text>ТИП ИГРЫ</text> </string> Пробуй так: self.combo_weapons:TextControl():SetText(game.translate_string("game_type") Без пробела!! А только нижнее подчёркивание, в text исправь Изменено 5 ноября, 2021 пользователем Neptun 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 16 минут назад, Neptun сказал: Пробуй так: self.combo_weapons:TextControl():SetText(game.translate_string("game_type") Без пробела!! А только нижнее подчёркивание, в text исправь Я понял но к сожалению не работает ловлю вылет( пример self.combo_weapons:TextControl():SetText(game.translate_string("ui_inv_pistols") или есть простой вариант сделать уже выбранный раздел? хотябы просто как текст Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 1 час назад, Paradox27kms сказал: self.combo_weapons:TextControl():SetText(game.translate_string("ui_inv_pistols") это только пример с незакрытой скобкой или и в скрипте она не закрыта? В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 5 минут назад, vader_33 сказал: это только пример с незакрытой скобкой или и в скрипте она не закрыта? Приветствую, для меня в приоритете немножечко другое...вернемся к списку и секциям я всё сделал как Вы сказали но не понял в одном. Про добавление в список Вы это имели введу? Спойлер function ui_mm_mod:AddItemToListOther(item_name, sect) local _itm = mod_main_menu(22) _itm.text:SetText(item_name) self.list_other:AddExistingItem(_itm) self.sect_item = sect end Дополнено 44 минуты спустя 2 часа назад, Neptun сказал: Пробуй так: self.combo_weapons:TextControl():SetText(game.translate_string("game_type") Без пробела!! А только нижнее подчёркивание, в text исправь Нужно было попробовать так: Спойлер self.combo_weapons:SetText(game.translate_string("ui_inv_pistols")) Но всё ровно большое спасибо Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Contentic 11 Опубликовано 5 ноября, 2021 Подскажите функцию для установления заданного значения времени в игре, только через скрипт, а не логику. Желательно с небольшим примером как использовать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 Paradox27kms Спойлер блин, был же скрипт целиком, найти не могу. В классе самого листбокса в __init секция обозначена как переменная? Я уже не помню, что там было. Например, в ui_load_dialog.script class "load_item" (CUIListBoxItem) function load_item:__init(height) super(height) self.file_name = "filename" добавить переменную для секции сюда self.sect_item = sect, и сюда же ее передавать когда делаете local _itm = mod_main_menu(22, секция) (естественно, в сам init не забыть добавить в скобках аргументом секцию). Например, function load_item:__init(height,sec) super(height,sec) self.sect_item = sect Если затрагиваются разные функции - выкладывайте все время весь скрипт (или функции, которые затрагивают выложенный кусок скрипта), никак не узнать правильно ли там что-то вписано и вписано ли что-то вообще, а от этого зависит точность ответов на вопрос 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 48 минут назад, vader_33 сказал: Paradox27kms Скрыть контент блин, был же скрипт целиком, найти не могу. В классе самого листбокса в __init секция обозначена как переменная? Я уже не помню, что там было. Например, в ui_load_dialog.script class "load_item" (CUIListBoxItem) function load_item:__init(height) super(height) self.file_name = "filename" добавить переменную для секции сюда self.sect_item = sect, и сюда же ее передавать когда делаете local _itm = mod_main_menu(22, секция) (естественно, в сам init не забыть добавить в скобках аргументом секцию). Например, function load_item:__init(height,sec) super(height,sec) self.sect_item = sect Если затрагиваются разные функции - выкладывайте все время весь скрипт (или функции, которые затрагивают выложенный кусок скрипта), никак не узнать правильно ли там что-то вписано и вписано ли что-то вообще, а от этого зависит точность ответов на вопрос Спасибо, теперь всё хорошо, правда немножечко забагованно всё ровно но всё же это хоть что-то (некоторые предметы не исчезают если массово кликать). А можно ли как-нибудь реализовать чтобы в списке с предметом через запятую отображалась его цена? ну например список: Спойлер ПМм, 500 АК-74, 1000 Гадюка-5, 700 Реализация должна быть по идее что-то типо того на мой взгляд Спойлер local name = game.translate_string(system_ini():r_string(sect, "inv_name")) параметр "inv_name" это имя предмета или оружия, тогда можно по логике и дописать параметр "cost" тобишь цена ну и ещё нужно как-то скриптово зарегать запятую, но это только пол дела остальное я не знаю( пока в голову лезет такое local name = game.translate_string(system_ini():r_string(sect, cost, "inv_name", "cost")) self:AddItemToListOther(name, sect, cost) регистрация запятой self.list_other:TextControl():SetText(section .. "," .. cost) но так у меня GUI окошко само не отображается так что это просто нужно грамотно реализовать Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 6 часов назад, Paradox27kms сказал: local name = game.translate_string(system_ini():r_string(sect, cost, "inv_name", "cost")) по одному параметру читается, для цены отдельно переменную с r_string надо делать 6 часов назад, Paradox27kms сказал: self.list_other:TextControl():SetText(section .. "," .. cost) это откуда выполняется? В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 1 минуту назад, vader_33 сказал: по одному параметру читается, для цены отдельно переменную с r_string надо делать это откуда выполняется? Можно плиз рабочий пример? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 Paradox27kms 6 часов назад, Paradox27kms сказал: local name = game.translate_string(system_ini():r_string(sect, "inv_name")) да как тут было, просто продублировать с новым названием переменной Дополнено 0 минут спустя Paradox27kms и без game.translate_string В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 10 минут назад, vader_33 сказал: Paradox27kms да как тут было, просто продублировать с новым названием переменной Дополнено 0 минут спустя Paradox27kms и без game.translate_string Последний вопрос) (я уже понимаю что скорее всего Вас достал) но тем не менее осталось сделать главное это реализовать чтобы при удалении предмета из списка срабатывал скрипт, ну в моем случае нужно чтобы сработал скрипт к примеру выдачи денег ГГ стоимости предмета вот такой скрипт не подойдет так как это для конкретных строк а у меня секции рандомные т.е предметы из рюкзака... Спойлер if item == 1 then return end if item == 2 then return end Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 Paradox27kms выдавать деньги там же, где и удаляете. Там как раз секция предмета уже получается в функции, и через r_string читаете цену В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 51 минуту назад, vader_33 сказал: Paradox27kms да как тут было, просто продублировать с новым названием переменной Дополнено 0 минут спустя Paradox27kms и без game.translate_string Я пока только понял так: Спойлер function ui_mm_mod:FillListOther() local name local cost db.actor:iterate_inventory(function (tmp, item) local sect = item:section() if tbl[sect] then local name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = r_string(sect, "cost")) self:AddItemToListOther(name, cost, sect) end end,obj) end и к тому же нужно зарегать запятую в списке а я хз как. Хочу чтобы список был реализован такими секциями например АК-742у, 900 RU ПМм, 500 RU Гадюка-5, 700 RU Изменено 5 ноября, 2021 пользователем Paradox27kms Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 ноября, 2021 (изменено) Paradox27kms local inv_name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = system_ini():r_string(sect, "cost") local name = inv_name..", "..cost self:AddItemToListOther(name, cost, sect) Дополнено 7 минуты спустя Paradox27kms Спойлер 36 минут назад, Paradox27kms сказал: local name local cost 36 минут назад, Paradox27kms сказал: local name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = r_string(sect, "cost")) если один раз есть local что-то, второй раз не надо писать local, просто name =.... Отдельно local name обозначать в начале лучше только в случаях, когда несколько вариантов назначения name, в зависимости от условия. Если только одно условие назначения, и сразу же в этом условии происходит какое-то действие с этой переменной, то в начале функции local name писать не нужно. Либо так function ui_mm_mod:FillListOther() local name local cost db.actor:iterate_inventory(function (tmp, item) local sect = item:section() if tbl[sect] then name = game.translate_string(system_ini():r_string(sect, "inv_name")) cost = r_string(sect, "cost")) self:AddItemToListOther(name, cost, sect) end end,obj) end Либо так function ui_mm_mod:FillListOther() db.actor:iterate_inventory(function (tmp, item) local sect = item:section() if tbl[sect] then local name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = r_string(sect, "cost")) self:AddItemToListOther(name, cost, sect) end end,obj) end Изменено 5 ноября, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paradox27kms 15 Опубликовано 5 ноября, 2021 (изменено) 8 часов назад, vader_33 сказал: Paradox27kms local inv_name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = system_ini():r_string(sect, "cost") local name = inv_name..", "..cost self:AddItemToListOther(name, cost, sect) Дополнено 7 минуты спустя Paradox27kms Скрыть контент если один раз есть local что-то, второй раз не надо писать local, просто name =.... Отдельно local name обозначать в начале лучше только в случаях, когда несколько вариантов назначения name, в зависимости от условия. Если только одно условие назначения, и сразу же в этом условии происходит какое-то действие с этой переменной, то в начале функции local name писать не нужно. Либо так function ui_mm_mod:FillListOther() local name local cost db.actor:iterate_inventory(function (tmp, item) local sect = item:section() if tbl[sect] then name = game.translate_string(system_ini():r_string(sect, "inv_name")) cost = r_string(sect, "cost")) self:AddItemToListOther(name, cost, sect) end end,obj) end Либо так function ui_mm_mod:FillListOther() db.actor:iterate_inventory(function (tmp, item) local sect = item:section() if tbl[sect] then local name = game.translate_string(system_ini():r_string(sect, "inv_name")) local cost = r_string(sect, "cost")) self:AddItemToListOther(name, cost, sect) end end,obj) end Благодарю. Только в строке self:AddItemToListOther(name, cost, sect) - cost лишнее. И ещё не понятен момент с выдачей денег. Спойлер function ui_mm_mod:OnButton_list_other_clicked() if self.list_other:GetSize()==0 then return end local item = self.list_other:GetSelectedItem() if item == nil then return end self.list_other:RemoveItem(item) local section = item.sect_item local obj = db.actor:object(section) if obj then local sobj = alife():object(obj:id()) alife():release(sobj, true) end end Вот как это вижу я. Не понимаю как реализовать чтобы было взаимодействие с ценой и секцией чтобы при удалении выдавалась энная сумма, в данном случае цены предмета Спойлер function ui_mm_mod:OnButton_list_other_clicked() if self.list_other:GetSize()==0 then return end local item = self.list_other:GetSelectedItem() if item == nil then return end self.list_other:RemoveItem(item) local section = item.sect_item local obj = db.actor:object("mp_wpn_pm") if obj then relocate_item_to_actor и.т.д end end Дополнено 34 минуты спустя 21 час назад, Contentic сказал: Подскажите функцию для установления заданного значения времени в игре, только через скрипт, а не логику. Желательно с небольшим примером как использовать В Повелителе Зоны есть вроде то что тебе нужно Изменено 6 ноября, 2021 пользователем Paradox27kms 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты