НаноБот 762 Опубликовано 1 Ноября 2015 В классе CUIStatic добавил метод SetColor задать цвет текстуры, использовать так: stat:SetColor(Frect():set(A, R, G, В Ошибка: цвет и прозрачность надо задавать так: stat:SetColor(Frect():set( R, G, В, A)) ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 1 Ноября 2015 (изменено) Интересный глюк, в моей правки добавлены так же не сколько методов из ТЧ. В точности: "set_obj_bone_visible" "get_obj_bone_visible" "set_hud_obj_bone_visible" "get_hud_obj_bone_visible" За работу двух последних не ручаюсь, но две первые работают как надо. obj:set_obj_bone_visible(имя_косточки, булева) булева = obj:get_obj_bone_visible(имя_косточки) булева: true - кость видима, false - кость невидима. Так вот, если задать кости "magazin" значение false объекту с классом CWeaponMagazined (просто оружие), то объект... взрывается(!) Без образования ударной волны и осколков, т.е. сам метод explode не запускается. Но есть партикл и звук. Вот такие чудеса Зоны (движка). С другими объектами этот метод работает без особых глюков, правда с не которыми моделями сталкеров наблюдаются артефакты (искажения моделей). И ещё, если применить к живому сталкеру этот метод, то наблюдается сильное падения FPS (1-0.5). Изменено 1 Ноября 2015 пользователем НаноБот 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 27 Ноября 2015 Мои поделки. https://yadi.sk/d/S6lXK3hcko35b Условный номер ревизии 234 ; Возможность стрелять картечью из подствольного гранатомёта. ; Смена типа ракет при перезарядке ; Удаляем ракеты при разрядке CWeaponRG6, CWeaponRPG7, CWeaponMagazinedWGrenade. ; колбек на удар(выстрел) ножа, вызывается в объекте ножа ; блокировка автоперезарядки (перезарядка только кнопкой R), включается auto_reload = false в секции оружия ; Гранаты с ударным запалом!!! Полностью движковые! ; Кумулятивный эффект, для всех взрывных объектов. Задаётся cumulative_sect = секция_кумулятивной_пули ; стабилизированная ракета (ракета разворачивается по курсу) В общем, правки делал для расширения возможностей оружия, например ПЗРК на классе РПГ-7. Гранаты с ударным запалом (делал для МП). Доработаю ПГ что бы можно было много ракет заряжать, для OICW. 1 3 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 28 Ноября 2015 (изменено) https://yadi.sk/d/ClW1QMrukoxLg Добавил для ЗП:Колбек на обновления кости граната для класса CWeaponRPG7Передаёт: номер типа текущего боеприпаса (от 1)(m_ammoType++), номер_состояние_худа(GetState)Это необходимо для скриптового отключения и/или включения костей гранат для многозарядных и много-типово-зарядных гранатомётов.Для этого используются методы:void set_obj_bone_visible(string, bool) bool get_obj_bone_visible(string) void set_hud_obj_bone_visible(string, bool) bool get_hud_obj_bone_visible(string) Для класса CWeaponMagazinedWGrenade теперь объём магазина гранат не ограничен.Мелкие правки. Обнуления m_bBlockRocket. Закоментировал лог-функции.(с) НаноБот 28.11.2015 г. ЗЫ Номер ревизии вычисляется так: 230+мой_номер ЗЫЫ Подправил: номер типа патрона передаёт, а не количество патронов, так лучше скрипт будет работать. Изменено 28 Ноября 2015 пользователем НаноБот 1 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 1 Декабря 2015 (изменено) https://yadi.sk/d/-9KMCi3HktAnL Добавил для ЗП: Новый режим работы для класса CEliteDetector, скриптовый класс DET_ELIT, детектор "Велес"Этот режим называется скриптовый, включается параметром script_modeИ позволяет в биндере (скриптах) отображать различные объекты. В точности надо для биорадара.Для этого используются методы:detector_clear -- стирает списокdetector_draw_object -- добавляет в список объект для отображения на панели детектора.Пример:detector:detector_clear() -- надо для зачистки экрана детектора, и вызывается в началеdetector:detector_draw_object(cobj, _type, vector(), 0)cobj - объект для отображения,_type - тип палитры, берётся в файле ui_detector_artefact.xml в теге script_detectorСама палитра должна быть типа такой. <palette id="stalker" width="0.0022" height="0.0022" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_inGame2_Detector_icon_artefact</texture> </palette> id="stalker" -- это имя палитры,vector() -- вектор читается, но не используется, должен быть обязательно.float -- читается, но не используется.Эти методы работают только с указанным классом и при включенном режиме (script_mode = true).Если при работе в логе выскакивает:! RegisterItemToDraw. static not found for [палитра]Значит нету указанной палитры, просмотрите точно названия.(с) НаноБот 1.12.2015 г. Демо-версия скриптового биорадара на новом режиме. https://yadi.sk/d/s9XdqOGNktDfP Скриншот. https://yadi.sk/i/RHGuX7UaktDgy Изменено 1 Декабря 2015 пользователем НаноБот 1 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 26 Декабря 2015 (изменено) Ревизия 237. https://yadi.sk/d/Q9Uzdz-fmWAwR Только для ЗП. Проведён масштабный рефакторинг. Более полное использование макросов. Исправлены различные ошибки в работе оружия. Существенная переделка по сравнению с прежними ревизиями.Добавлены методы:set_air_resistance -- задать сопротивление воздуха.get_air_res_linear -- получить линейное сопротивление.get_air_res_angular -- получить сопротивление вращению.Добавлены колбеки на нажатие и отпускание клавиш.Для объекта CWeaponRPG7, CWeaponRG6 добавлена возможность вести автоогонь.Для CWeaponRPG7 можно задавать размер магазина более 1.Исправил блокировку перезарядки, ранее работала только для класса CWeaponMagazinedWGrenade, теперь работает для всех классов CWeaponMagazined и наследников.При отсоединении подствольного гранатомёта, граната разряжается и в основном режиме (в оригинале не разряжалась).Добавлена возможность использования осветительных ракет, при not_explosive = true ракета не взрывается от контакта с геометрией и так же не взрывается от самоликвидатора, просто удаляется.Для класса CWeaponRG6, CWeaponMagazinedWGrenade работает прицеливание в объекты.Фикс вылета если не указали для класса CWeaponMagazined параметр fire_modes.Фикс изменение размера магазина у CWeaponMagazinedWGrenade после апгрейда.Исправлен метод: void set_hud_obj_bone_visible(string, bool) Метод bool get_hud_obj_bone_visible(string) удалён за ненадобностью. (с) НаноБот 22.12.2015 г. Наконец-то от рефакторил как следует, код стал более читабельный и лучше переносится на Си пляс пляс. Сам то, я, с Си вряд-ли буду связываться, мне проще работать ассемблером. Изменено 26 Декабря 2015 пользователем НаноБот 3 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 27 Декабря 2015 Я тут прикинул, и понял что не которые классы оружия можно спокойно вырезать, CWeaponCustomPistol безполезный класс, предназначен для оружия стреляющие одиночными, я модернизировал метод GetCurrentFireMode virtual int GetCurrentFireMode() { return m_bHasDifferentFireModes ? m_aFireModes[m_iCurFireMode] : 1; }; И если в конфиге нет параметра fire_modes то оружия стреляет чисто одиночными и не отображается размер очереди, и на классе CWeaponMagazined. Так же можно вырезать и класс CWeaponRG6, и научить класс CWeaponMagazined стрелять гранатами, это надо что бы различное оружие (БМ16) могло стрелять осветительными ракетами и не только. Скриптовые классы оставить как есть. А освободившиеся классы переделать например в класс CWeaponPZRK. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 28 Декабря 2015 (изменено) Да во обще то слишком много классов перегружает систему, по этому лишние классы лучше удалить (исходниках). А насчёт кучи ошибок конечно преувеличения, но есть ряд глюков, RayTwitty упомянул некоторые. Я ещё заметил, когда закрываешь диалог или инвентарь и нажимаешь кнопку ЛКМ одновременно, то бывает оружие начинает стрелять не прерывно, пока патроны не закончится, там есть флаг, который если установлен, то оружие начинает стрелять вне зависимости от нажатой кнопки "огонь". Лечить пока не пытался, т.к. такое бывает и с реальным оружием, шептало затвор не фиксирует. класс РПГ я даже не смотрел ещё, там наверно тоже весело. Иногда и РПГ глючит если конфиг не совсем правильно настроен. Или без сохранений - возьми РГ-6, заряди, разряди и стреляй дальше. Я это вылечил, при разрядке все ракеты удаляются, только движок выводит в лог предупреждение о ошибке, странно. Может не тем методом удаляю. Изменено 28 Декабря 2015 пользователем НаноБот ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 28 Декабря 2015 Читая тему GUNSLINGER mod [s.T.A.L.K.E.R. CoP] мне пришла гениальная мысля, как научить правильно стрелять двухстволку дуплетом, назначаем родительский класс CWeaponMagazined, в место CWeaponCustomPistol, короче заставляем двухстволку стрелять очередями, и устанавливаем fire_modes = 1, 2. Теперь можно на дуплет переключаться 0 и 9. Это ещё говорит о том, что промежуточный класс CWeaponCustomPistol (непосредственно его не один скриптовый класс не наследует) очень вредный, ограничивает возможности движка. Но всё же удалять все классы наверно не надо, класс добавляется лишь тогда, когда не обходим добавить новый метод, например для РПГ7, это обновления видимости кости гранаты. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 28 Декабря 2015 Outfater, выбирай, дуплет ПКМ(уже реализован) или переключением 0 и 9. Игрок разберётся как ему удобней, два раза нажать спуск или один, главное что бы можно было переключать. ЗЫ И ещё, можно для дуплета отключить отдачу (preffered_fire_mode = 2), т.е. картечь от двух выстрелов летит в кучу, а если два раза быстро стрелять, то от второго выстрела картечь выше цели улетает. Так что даже не спорь. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 28 Декабря 2015 Полная поддержка самого различного оружия, такое как OICW - много зарядный подствольник с много типовыми боеприпасами и прицеливанием через оптический прицел, M202 Flash - многозарядный гранатомёт с возможность спавнить аномалию "пожар" в точке подрыва, РПГ-7 с много типовыми боеприпасами , магазинное питание оружия с возможность отключения в конфигах. Это дополнительно влечёт и другие переделки, такие как НПС облитый напалмом бегает в режиме паника и орёт благим матом или даже катается по земле. Переделка модели взрыва, в точности модели ударной волны, способность ударной волны многократно отражаться от геометрии, и наносить много кратные хиты живым объектам, иначе от термобарического боеприпаса эффект не очень заметен. И это наверно не всё. 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 29 Декабря 2015 (изменено) https://yadi.sk/d/1J_sgaN-maLaR Только для ЗП. класс CWeaponBM16 стреляет очередями:В конфиге двустволки добавить:fire_modes = 2, 1 ; режим 2 стрельба дуплетомbase_dispersioned_bullets_count = 2 ; от выст. нет отдачиФикс глюка, если fire_modes нет в конфиге, то некоторое оружие стреляет очередями.Фикс не правильной работы CWeaponRG6, если одновременно заряжены картечные и ракетные боеприпасы.(с) НаноБот 29.12.2015 г.---------------------------------------------------------------- @Struck, оружие должно работать как оригинальное, у OICW подствольный гранатомёт имеет магазин на 6 гранат, и прицеливаются через оптику, как в основном режим, это значит что, движок это ДОЛЖЕН поддерживать, и не надо глупых вопросов задавать, зачем, зачем, а затем, что бы скриптовых костылей не создавать, которые часто криво работают. Изменено 29 Декабря 2015 пользователем НаноБот 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 29 Декабря 2015 (изменено) @TIGER_VLAD, тип хита не передаётся, наверно метод надо дополнительный делать, типа hit_type_actor() и вызывать в функции хит_колбека скрипта. Изменено 29 Декабря 2015 пользователем НаноБот 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 14 Января 2016 Всем кто пользуется моими правками. Компилить надо целиком, можно лишь 0x101C1887 7 ; CScriptGameObject_explode_fix закомментировать. Слишком большая зависимость одних правок от других. Иначе работоспособность совсем не гарантируется. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 14 Января 2016 (изменено) Идея по поводу передачи типа хита. hit_callback(obj, amount, local_direction, who, hit_bone) Можно в упакованной форме передавать: hit_bone= type_hit *64+bone // это в правке вставляем. максимальное кол. костей 64, это ограничение движка. А распаковывать в скрипте так: bone =math.mod(hit_bone, 64) type_hit = math.ceil(hit_bone/64) В следующей правки я это реализую. @Malandrinus, может и сделаю конфигурационный параметр, если не лень будет. По мне, целиком юзайте, делов то. Изменено 15 Января 2016 пользователем НаноБот 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 11 Февраля 2016 (изменено) Вот сделал наконец-то. https://yadi.sk/d/YjjIPWQ6ohABe rev239 * Расширенный хит-колбек (№186) для наследников объекта CEntity (Сталкеры, Актор, Монстры, машины, вертолёты). Передаётся в упакованной форме тип хита и номер кости. * При переходе в онлайн condition объекта не устанавливается принудительно в 1.0. (с) НаноБот 12.02.2016 Сделано в виде отдельного колбека, объектам наследникам от CEntity, какие это конкретные тип объектов, смотрите исходники, в общем, это сталкеры, актор, все монстры (включая ворон), кары, вертолёты, и ещё какие то. Надо исходники проработать системой Doxygen как билд 1935 для ясности наследования. Изменено 11 Февраля 2016 пользователем НаноБот 2 1 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 25 Марта 2016 Координаты вертексов в ТЧ можно получить, в ЗП я решил что это не к чему и вырезал, там сразу можно получить нормаль и некоторую информация по элементу геометрии. Вот пример вычисления нормали методами XRay-Extensions. function normal_triangle(element) -- нормаль треугольника local n = vector() local a = level.get_tri_vertex1(element) local b = level.get_tri_vertex2(element) local c = level.get_tri_vertex3(element) n.x = ((b.z-a.z)*(c.y-a.y))-((b.y-a.y)*(c.z-a.z)) n.y = ((b.x-a.x)*(c.z-a.z))-((b.z-a.z)*(c.x-a.x)) n.z = ((b.y-a.y)*(c.x-a.x))-((b.x-a.x)*(c.y-a.y)) return n:normalize() end 2 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 26 Марта 2016 @KD87, например для скриптовых пуль(снарядов), эффекты отражения там, например луча ЛЦУ, или ещё чего. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 23 Марта 2017 (изменено) Давненько я ревизий своих не вбрасывал. Ревизия230.10 Для ТЧ При переходе в онлайн кондишен объекта не устанавливается в 1 CGameObject::spawn_suppliesЗагружаем свой список анимации для класса CAI_StalkerВывод стартового адреса xrGame.dll в логе(с) НаноБот 23.03.2017 Так же к этой ревизии прилагается мод. Не_Стандартные_Сталкеры В этом моде есть собака-сталкер, как точно всё настраивать объясню завтра. Изменено 23 Марта 2017 пользователем НаноБот 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 762 Опубликовано 23 Марта 2017 В архиве Не_Стандартные_Сталкеры.rar находятся лишь необходимые файлы, для спавна надо создать НПС и так же создать свой биндер и схемы, это сложно. Хорошо бы кто помог с схемами, например @Bak. Теперь про свою правку. Там можно задать свой список анимаций, не нужные можно выключить, например анимации боёвки можно полностью выключить задав пустую строку "". ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение