AndreySol 215 Опубликовано 27 Июля 2022 Поделиться Опубликовано 27 Июля 2022 @Colder Можно, CUIListWnd в руки. Если нужно пример реализации - стучи в ЛС. Ссылка на комментарий
Colder 12 Опубликовано 20 Августа 2022 Поделиться Опубликовано 20 Августа 2022 (изменено) Есть функция которая выдает все тайники Скрытый текст function CTreasure:create_random_stash() for k,v in pairs(self.treasure_info) do self:give_treasure(k) end end Помогите сделать что бы она выдавала 1 тайник. Изменено 20 Августа 2022 пользователем Colder Ссылка на комментарий
Manool 145 Опубликовано 20 Августа 2022 Поделиться Опубликовано 20 Августа 2022 @Colder Скрытый текст function CTreasure:create_random_stash() for k, v in pairs(self.treasure_info) do self:give_treasure(k) break end end Объединённый Пак OGSR Engine Ссылка на комментарий
Colder 12 Опубликовано 20 Августа 2022 Поделиться Опубликовано 20 Августа 2022 @Manool Выдаёться один и тот же тайник Ссылка на комментарий
Manool 145 Опубликовано 20 Августа 2022 Поделиться Опубликовано 20 Августа 2022 (изменено) @Colder Выдаст рандомный тайник - Скрытый текст function CTreasure:create_random_stash() local t = {} for k, v in pairs(self.treasure_info) do table.insert(t, k) end self:give_treasure(t[math.random(#t)]) end Изменено 20 Августа 2022 пользователем Manool 1 Объединённый Пак OGSR Engine Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 24 Августа 2022 Поделиться Опубликовано 24 Августа 2022 Здрасьте. [ТЧ/ЧН] Изменение подсказки при взаимодействии с объектом через метод set_tip_text(string): при тесте на трупе мутанта подсказка меняется на один апдейт, после чего возвращается к исходному виду "Обыскать труп". Как заставить игру сохранить изменение? Spoiler [scripts\bind_monster.script] function generic_object_binder:use_callback(obj) if not obj:alive() then self.object:set_nonscript_usable(false) self.object:set_tip_text("test") end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
mole venomous 3 433 Опубликовано 24 Августа 2022 Поделиться Опубликовано 24 Августа 2022 (изменено) Не хватает костного мозга в холодце, как добавить в исключения предмет на поясе по id, что бы размер этого предмета не учитывался в ограниченном объёме рюкзака? По типу такого: Скрытый текст local OutfitSlot = db.actor:item_in_slot(6) if OutfitSlot ~= nil then IdOutfit = OutfitSlot:id() end Всё, распихиваемое по слотам, места не занимает. С предметами на поясе же у меня постоянно вопросы, которые оставляю здесь... Движок ОГСР. Изменено 24 Августа 2022 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
Manool 145 Опубликовано 24 Августа 2022 Поделиться Опубликовано 24 Августа 2022 @mole venomous Скрытый текст local excluded_ids = {} for i = 0, db.actor:belt_count() - 1 do -- цикл всех предметов на поясе local item = db.actor:item_on_belt(i) if item then excluded_ids[item:id()] = true end end -- проверка на исключение: if excluded_ids[id] then -- id здесь предмета, который нужно проверить end 1 1 Объединённый Пак OGSR Engine Ссылка на комментарий
dsh 3 824 Опубликовано 24 Августа 2022 Поделиться Опубликовано 24 Августа 2022 6 hours ago, Norman Eisenherz said: подсказка меняется на один апдейт Вот это вот мне подсказывает, что что-то ещё меняет подсказку. Может скрипт какой, или движок, тебе должно быть виднее. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 24 Августа 2022 Поделиться Опубликовано 24 Августа 2022 Кто-нибудь кто применял метод set_text_tip на чистой версии ТЧ/ЧН может ответить? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 25 Августа 2022 Поделиться Опубликовано 25 Августа 2022 @Norman Eisenherz generic_object_binder:update(delta) там несколько упоминаний set_tip_text, соответственно, на апдейте постоянно корректируется подсказка. Об этом, кстати, dsh намекнул... Копай туда. Ссылка на комментарий
Hind 29 Опубликовано 25 Августа 2022 Поделиться Опубликовано 25 Августа 2022 Привет всем! Решил намутить рабочую гитару, чтобы после 43 секунд игры мелодии, она возвращалась обратно в инвентарь. Забацал 2 файла, один dmb.script, второй dmb2.script. Скрытый текст local tSound ={ dmb_pleer = "interface\\inv_guitar", } function muzika() alife():create("dmb_pleer", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end function use_item(obj) local obj = obj:section() if obj then if obj == "dmb_pleer" then dmb2.start_timer() end end if obj and tSound[obj:section()] then local snd = xr_sound.get_safe_sound_object(tSound[obj:section()]) if snd then snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0) end end end А вот второй скрипт, куда я запихнул таймер Скрытый текст function action_timer() alife():create("dmb_pleer", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end function start_timer() local iTimer = time_global() + 43000 local function check_timer() return time_global() > iTimer end level.add_call(check_timer, action_timer) end И при попытке юзануть ту самую гитару, вылазит ЭТО: [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ....l.k.e.r. Тень Чернобыля\gamedata\scripts\dmb.script:22: attempt to call method 'section' (a nil value) Помогите пожалуйста) Hind Upgrade Mod Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 25 Августа 2022 Поделиться Опубликовано 25 Августа 2022 (изменено) @Hind Путаница в типе и значениях переменных: сначала obj – объект, потом obj – секция, то есть строка, и для этой строки ты еще раз пытаешься прочитать секцию. @AndreySol Получается решение вида "заново менять уже измененную подсказку каждый апдейт". Кроме проверки по таблице id уже обработанных мутантов, как можно добиться варианта "смерть, 1 апдейт и остановка + запоминание при перезагрузке"? Изменено 25 Августа 2022 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 27 Августа 2022 Поделиться Опубликовано 27 Августа 2022 (изменено) 25.08.2022 в 22:19, Norman Eisenherz сказал: Получается решение вида "заново менять уже измененную подсказку каждый апдейт". Ну так оно единственно верное. У тебя для монстров и нпс есть апдейт(generic_object_binder:update(delta)), в нем постоянно корректируется подсказка, в зависимости от состояния объекта. Вот тебе пример из модика(мод "Мясник" (CoP) от Singapur22), который меняет логику обыска трупов монстров, тебя интересует выделенный фрагмент: Скрытый текст if self.object:alive() then if self.object:is_talk_enabled() then self.object:set_tip_text("character_use") else self.object:set_tip_text("") end else if self.used then self.object:set_tip_text("") else local character_use = read_if_exist("s",nil,self.object:section(),"character_use","dead_monster_use") self.object:set_tip_text(character_use) end end Для дохлого монстра подсказка меняется сразу по факту его помирания, а в методе use_callback она возвращается в исходное значение. Изменено 27 Августа 2022 пользователем AndreySol 1 Ссылка на комментарий
gam 117 Опубликовано 27 Августа 2022 Поделиться Опубликовано 27 Августа 2022 @AndreySol Если речь об определенных НПС, то в логики схемы Ремарк - есть работа параметра snd = ** Ссылка на комментарий
НаноБот 742 Опубликовано 5 Сентября 2022 Поделиться Опубликовано 5 Сентября 2022 Как поменять скриптом отношения между мутантами? Надо чтобы даже дружественные мутанты начали враждовать, даже между собой начали грызтись. Со сталкерами разобрался, работает, с мутантами не работает. Имею ввиду метод change_goodwill. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
НаноБот 742 Опубликовано 6 Сентября 2022 Поделиться Опубликовано 6 Сентября 2022 Поковырял движок. В общем, отношение между мутантами так легко не поменяешь, как прописано в monster_relations так оно и будет. Ну ладно, фиг с ним! 4 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
dsh 3 824 Опубликовано 7 Сентября 2022 Поделиться Опубликовано 7 Сентября 2022 Могу посоветовать делать это через combat ignore, забыл, как колбек называется. Т.е. нужные мутанты изначально враги, а в колбеке возвращать, что они игнорируют друг друга до нужного момента. Ещё можешь глянуть вот на этот скрипт https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh/dsh_rats.script Здесь меняется отношение между крысами и актором. Уже не помню точно, наверное я в движок что-то добавлял для этого. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
НаноБот 742 Опубликовано 7 Сентября 2022 Поделиться Опубликовано 7 Сентября 2022 @dsh у тебя там метод set_monster_relation в level есть. Так что проще добавить просто скриптовый метод, который меняет индивидуально отношение между монстрами. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
Pir@t@s 36 Опубликовано 8 Сентября 2022 Поделиться Опубликовано 8 Сентября 2022 День добрый. Подскажите пожалуйста: Как сделать проверку на состояние предметов в слотах (слот 1,слот 2, слот 6)? Версия игры : SoC 1.0006 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти