Zander_driver 10 334 Опубликовано 2 Декабря 2011 Поделиться Опубликовано 2 Декабря 2011 (изменено) serega-gamer Ну раз про отслеживание слотов речь идет, посмотри например в Магазинном питании оружия от Кирага. Там это очень просто и удобно сделано, в своем моде юзаю его код уже далеко не только для собственно магазинов. Вообще говоря - слоты в данном случае есть часть инвентаря. Функции итерации инвентаря считают и то что в слотах. AutoGnom Из массы способов самое простое что приходит в голову - записывай в нет-пакет взятых артефактов какое-нибудь безобидное изменение. И соотв-но у новых взятых проверяй, а не несут ли они в себе уже этого изменения. Например можно менять им condition если у тебя артефакты не теряют его при других обстоятельствах (это вроде бы нечасто делается...) Или что-нибудь другое. Изменено 2 Декабря 2011 пользователем ColR_iT Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Artos 99 Опубликовано 2 Декабря 2011 Поделиться Опубликовано 2 Декабря 2011 (изменено) serega-gamer, посоветую тебе начать не с довольно 'глобальной' проверки, а с подпроверок по частям. Так и не надорвешься и свое любопытство удовлетворишь. Поставь себе вначале конкретную задачу, а не 'типа вот такое оружие'. Если имеешь ввиду активное оружие, то и не заморачивайся с частными типами оружия (например АК) и со слотами. Если же интересует именно конкретное - то и писать код потребуется именно под твою конкретику. Составь вначале алгоритм того, что хочешь сделать, а уж потом воплощай в коды/функции. Твое "начало" уже говорит о том, что у тебя пока или каша в голове или маловато опыта в написании кодов (точнее даже в постановке задачи для себя "что-же писать и что должно получиться"). Я так понимаю тебе требуется что-то типа: 1. Определить имеется ли в руках ГГ чего-либо?. Если <Да> то: 2. В руках ГГ держит оружие? Если <Да> то: 3. В оружии имеются патроны? Если <Нет> то: 4.1. Читаем строку конфига оружия в руках и определяем секции используемых им патронов. 4.2. Пробегаемся по рюкзаку ГГ и проверяем, имеются ли используемые оружием секции патронов в рюкзаке. Если <Нет> то: 5. Если еще не проигрывался - Играем звук "Ахтунг-ахтунг! Макароны закончились, пора сбегать на кухню" 6. Взвести метку о том, что звук уже проигрывался, дабы не пиликало всю игру ... Т.к. каждый шаг довольно прост, постарайся самостоятельно его реализовать в кодах и, если получилось, переходи к следующему. Если же тебе потребно что-то иное - ну так и оговаривай то, что имеешь ввиду, а не общую похачушку про все и вся ... Изменено 2 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
abramcumner 1 159 Опубликовано 2 Декабря 2011 Поделиться Опубликовано 2 Декабря 2011 (изменено) serega-gamer, количество патронов в инвентаре для оружия получаешь так же, как и в своем коде выше, только используешь функцию get_ammo_total вместо get_ammo_in_magazine Дельный совет!!! --/ Artos Изменено 2 Декабря 2011 пользователем Artos Ссылка на комментарий
serega-gamer 0 Опубликовано 3 Декабря 2011 Поделиться Опубликовано 3 Декабря 2011 (изменено) Всем спасибо за помощ! Artos ты прав в том что я не совсем правильно изложил свой ход мыслей точнее не правильно обяснил что именно я хочу! А хочу я как раз сделать глобальную проверку патронов к обсолютно всем стволам а не к некоторым.Дело то в том что у меня действительно очень мало опыта для написания кодов в lua я даже не знаю как использовать флаги точнее как построить функцию проверки на то что, выполнилось ли уже какое либо действие или нет а код что я выложил это только так набросок проверки.Вот если бы кто нибудь хоть разок подробно обяснил как использовать все функции и классы в луа и какой класс или функция что значит либо за что отвечает. Конечно я понимаю что не кто не станет станет тратить на меня своё время и обьяснять мне все нюансы языка луа я так же понимаю что большинство людей ни кто ни чему не учил что они сами научились так сказать методом тыка но хоть кто то бы подумал о том что бы создать тему по языку луа так сказать для чайников или что то подобное. Но я всё таки буду пытаться писать коды набирать опыт и тогда я думаю всё получится тут веть главно сильно захотеть и всё будет :ny_ph34r_1: И всё же тебе лень! Лень просто "прогуляться" по форуму и глянуть то, что уже в нём есть. Неужели ты думаешь, что до тебя до этого никто не додумался? Ты правда веришь, что все, кто может использовать скрипты для своих потребностей, программисты? Вряд ли. Например, в шапке темы, есть ссылка на "Справочное руководство по языку Lua 5.1". На той же Wiki есть ссылки на различные ресурсы, как на русском, так и на английском языках по языку Lua, именно по языку, не по скриптовой части STALKERa. Про Lua также есть тема и здесь, на форуме, называется она: "Язык Lua. Общие вопросы программирования". По поводу функций и классов, также есть хорошая, я бы даже сказал - отличная тема: "Справочник по функциям и классам", на нашем форуме, там расписано много основных классов и их методов, которые используют модостроители. Ну и наконец, есть еще один ресурс, который есть у каждого, у кого установлен STALKER - это оригинальные скрипты GSC!!! Почему многие ими пренебрегают - лично мне не понятно. Проблема в том, что многие просто-напросто не хотят читать уже написанное, причин много, но основная всё же - это лень! Всем подавай готовенькое! Это не правильно хотя бы по отношению к другим пользователям - почему одни должны читать и познавать, а другие требуют чтобы им сделали!? Не хочу тебя, да и не кого, обидеть, но попробуй потрать неделю на прочтение темы "Справочник по функциям и классам", а затем ещё неделю на практические опыты при помощи этих статей и ты узнаешь для себя мнооого нового и, поверь, плюсов от этого ты извлечешь гораздо больше, нежели из готового варианта. Нужно не просто хотеть, нужно для этого ещё и что-то делать! Иначе твоё хотение больше будет похоже на мечты, а не на цели ... P.S. И не забывай про уважение к языку на котором ты пишешь - пиши грамотнее! Спасибо за понимание. ColR_iT Изменено 3 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
Scarabay 98 Опубликовано 3 Декабря 2011 Поделиться Опубликовано 3 Декабря 2011 Привет всем! Интересует такой вопрос - Можно ли писать новые аи-схемы для монстров? Или хотя бы как-то модифицировать имеющиеся (не через логику). Спасибо. Мой YouTube-канал Ссылка на комментарий
Artos 99 Опубликовано 3 Декабря 2011 Поделиться Опубликовано 3 Декабря 2011 (изменено) Scarabay, захотелось поболтать на общефилософские темы? Ну так выбирай ответ по вкусу: 1. Да, писать новые можно. Бери и пиши. Иль модифицируй имеющиеся ... 2. О каком AI и логике гутаришь? Любая AI-схема - это в первую очередь логика и без нее никакий ни AI, ни просто схемы не получишь. Какой еще AI у монстров? Того, которого в игре вполне достаточно, а если что не устраивает - конфиги логики правь и меняй как захотелось. 3. Назвал бы хоть что-то заслуживающее внимания для ковыряния с AI-схемой (не фантазии) - тогда может и есть о чем поговорить ... Изменено 3 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
serega-gamer 0 Опубликовано 4 Декабря 2011 Поделиться Опубликовано 4 Декабря 2011 (изменено) Всем ещё раз спасибо за помощ! Вот почему так - обьясните народ, не могу додуматься как построить функцию, пишу на форуме так мол и так, помогите, а через некоторое время сам додумываюсь как её построить! Всё таки, когда что то не получается - нужно пробовать ещё, теперь я это уяснил. local flag_wpn_1 local flag_wpn_2 function ammo_controls() local snd_obj = nil local s1 = db.actor:item_in_slot(1) local s2 = db.actor:item_in_slot(2) if not flag_wpn_1 then if s1 and s1:get_ammo_total() < 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_1 = true end elseif s1 and s1:get_ammo_in_magazine() >= 1 then flag_wpn_1 = nil end if not flag_wpn_2 then if s2 and s2:get_ammo_total() < 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_2 = true end elseif s2 and s2:get_ammo_in_magazine() >= 1 then flag_wpn_2 = nil end end Не смейтесь, если функция построена банально - делаю как умею, что с меня взять)))) Большое спасибо abramcumner и Artos за то, что подсказали мне 2 этих параметра: get_ammo_in_magazine() и get_ammo_total() - без них я бы врятли справился! Добавлено через 113 мин.: Поправка я слегка изменил local flag_wpn_1 local flag_wpn_2 function ammo_controls() local snd_obj = nil local s1 = db.actor:item_in_slot(1) local s2 = db.actor:item_in_slot(2) local act_slot = db.actor:active_slot() if not flag_wpn_1 then if s1 and s1:get_ammo_total() < 1 and act_slot == 1 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_1 = true end elseif s1 and s1:get_ammo_in_magazine() >= 1 then flag_wpn_1 = nil end if not flag_wpn_2 then if s2 and s2:get_ammo_total() < 1 and act_slot == 2 then snd_obj = xr_sound.get_safe_sound_object( [[HEV\ammo_0]] ) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) flag_wpn_2 = true end elseif s2 and s2:get_ammo_in_magazine() >= 1 then flag_wpn_2 = nil end хотелось бы сделать то же самое и с гранатами, но к сожелению я не знаю как их щитать; методы с get_ammo_in_magazine() и get_ammo_total() к ним не подходят. Подскажите пожалуйста что-нибудь! Строгое предупреждение от модератора ColR_iT Это последний раз! Не знаешь где расставлять знаки препинания - используй проверку пунктуации, хотя бы, из того же Wordа. Изменено 4 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
Zander_driver 10 334 Опубликовано 4 Декабря 2011 Поделиться Опубликовано 4 Декабря 2011 serega-gamer Хоть наверно я уже давно не первый, кто это советует, но по части гранат, и в общепознавательных целях... Очень советую прочитать Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
AndreySol 215 Опубликовано 5 Декабря 2011 Поделиться Опубликовано 5 Декабря 2011 (изменено) RvP Вы мне, на вопрос о том как применить координаты иконки предмета для CUIStatic, посоветовали открываем справочник и смотрим как проинитить текстуру Вы это имели в виду: void Init(float x, float y, float w, float h); void Init(string texture, float x, float y, float w, float h); void InitTexture(string texture); или что-то иное ? Что ? Изменено 5 Декабря 2011 пользователем AndreySol Ссылка на комментарий
Desertir 202 Опубликовано 6 Декабря 2011 Поделиться Опубликовано 6 Декабря 2011 (изменено) AndreySol, а не проще, чем писать на форум, проверить самому? void Init(float x, float y, float w, float h) --активирует ранее созданное окно, которое будет иметь координаты x,y и ширину,высоту w,h соответственно. void Init(string texture, float x, float y, float w, float h) --плюс к вышенаписанному присваивает окну текстуру. void InitTexture(string texture) --просто присваивает окну текстуру. Так же интересны еще 3 метода void SetTextureOffset(float x, float y) --устанавливает смещение текстуры относительно координат окна. void SetStretchTexture(bool) --устанавливает "растягивание" текстуры: допустим у нас текстура размером 100х100, а окно 100х50, в этом случае если установить флаг true, то текстура растянется до размеров окна. bool GetStretchTexture() --установлено ли "растягивание" текстуры? Изменено 6 Декабря 2011 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
serega-gamer 0 Опубликовано 9 Декабря 2011 Поделиться Опубликовано 9 Декабря 2011 (изменено) Строгое предупреждение от модератора ColR_iT Потрясающе! Ты пишешь: но всё же пиши как то понятнее почему люди должны напрягать свой мозг читая твои посты когда к тебе самому уже неоднократно была точно такая же просьба. Читать твои посты неудобно - отсутствие пунктуации. Итого: 3 дня Read Only. Изменено 9 Декабря 2011 пользователем ColR_iT Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
RayTwitty 508 Опубликовано 9 Декабря 2011 Поделиться Опубликовано 9 Декабря 2011 (изменено) Есть вопрос. Существует ли возможность скриптом проиграть звук если не загружена игра? Когда актора и других объектов ещё нет. ТЧ 1.0006. Старлей, да. Изменено 9 Декабря 2011 пользователем Shadows Ссылка на комментарий
Старлей 88 Опубликовано 9 Декабря 2011 Поделиться Опубликовано 9 Декабря 2011 Shadows, ты имеешь ввиду, когда actor не заспавнен? Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
Real Wolf 34 Опубликовано 9 Декабря 2011 Поделиться Опубликовано 9 Декабря 2011 Как узнать, что нужный вектор не находится в чём-либо статичном(стена и т. п.)? Ссылка на комментарий
student91122 1 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 (изменено) Строгое предупреждение от модератора ColR_iT Не нужно постить один и тот же вопрос в разных темах! Изменено 10 Декабря 2011 пользователем ColR_iT Ссылка на комментарий
AndreySol 215 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 Desertir я проверял, не получается то, что мне нужно. А мне нужно инвентарную иконку пачки патронов, к примеру 9х18 fmj вывести на статик. В файле weapons.ltx есть данные: inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 11 inv_grid_y = 12 это координаты иконки в условных ячейках сетки (50х50) в файле ui_icon_equipment.dds. А вышеприведенные Вами ф-ции класса CUIStatic не умеют (если я правильно разобрался) "вырезать" требуемый фрагмент из большой текстуры. Так как это сделать ? Ссылка на комментарий
Artos 99 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 (изменено) AndreySol, можно легко догадаться, что: а) Методы класса CUIStatic требуют указания абсолютных значений, т.к. в пикселях (от начала/конца/...) б) Зная размерность сетки и координаты по сетке, легко перевести отнисительные координаты в абсолютные. inv_grid_width = 1 => 1x50 => weight = 50 inv_grid_height = 1 => 1x50 => height = 50 inv_grid_x = 11 => 11x50 => x = 550 inv_grid_y = 12 => 12x50 => y = 600 Т.о. применяя это, можно хоть вырезать из иконки нужный фрагмент иль склеивать рядом находящиеся ... Изменено 10 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndreySol 215 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 (изменено) Т.о. применяя это, можно хоть вырезать из иконки нужный фрагмент иль склеивать рядом находящиеся ... Ой-ли ??? local x = 550 local y = 600 local width = 50 local height = 50 add_item.item_icon:Init("ui\\ui_icon_equipment",x, y, width, height) в результате на статике изображения нет. если-же пробую так: local x = 0 local y = 0 local width = 50 local height = 50 add_item.item_icon:Init("ui\\ui_icon_equipment",x, y, width, height) на статике получаю изображение всей текстуры из файла ui_icon_equipment.ltx, с размерами 50х50 точек. Из чего делаю вывод - этот метод класса рисует заданную текстуру по указанным координатам x и y (относительно самого окна статика) и с размером width и height. И уж ни как он не вырезает ничего из текстуры, переданной первым параметром. Но если первым параметром передать в метод идентификатор прописанный в каком-то из видимых движку xml-файлов, то текстура будет вырезана согласно координат в описании этого идентификатора в этом xml-файле. Отсюда вопрос: если нет более никаких способов подсунуть статику координаты по сетке из ltx-файла, значит выход - писать свой (добавлять в существующий) xml-файл, в котором прописывать "вырезки" для всех иконок боеприпасов ? Изменено 10 Декабря 2011 пользователем AndreySol Ссылка на комментарий
Artos 99 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 Существует вариант получения необходимого фрейма из текстуры: Frect():set(x,y,width,height) Можно его попробовать в твоих кодах использовать ... Не зная их трудно чего либо предполагать. Не уверен, что это будет полезно, т.к. не заморачивался переводом всего ui_icon_equipment во фреймы, довольствуясь именно приведенным тобою выше вариантом, создавая требуемые описатели фреймов. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndreySol 215 Опубликовано 10 Декабря 2011 Поделиться Опубликовано 10 Декабря 2011 Существует вариант получения необходимого фрейма из текстуры: Frect():set(x,y,width,height) создавая требуемые описатели фреймов Можно об этом подробнее ? Смотрел я в lua_help описание класса Frect - 6 переменных, ф-ция set инициализирует только 4. Какие из них ? Зачем две остальных. Как это использовать ? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти