Перейти к контенту

Malandrinus

Жители
  • Число публикаций

    1 930
  • Регистрация

  • Последнее посещение

  • Дней в топе

    13
  • AMKoin

    160 [Подарить AMKoin]

Весь контент пользователя Malandrinus

  1. AK74, ну как они могут подходить? Ведь файлы PDB содержат привязки строк кода к бинарным файлам. Изменились бинарные файлы - всё, соответствие порушено. Даже если скомпилировать тот-же исходник с другими настройками, уже не подойдёт. А здесь мы говорим о новой версии движка. Т.е. НЕ подходят никаким боком. Информацию косвенно можно использовать, поскольку архитектура движка в целом не изменилась. Но только косвенно использовать: смотреть на старый (его легче изучать), затем сопоставлять с новыми версиями, которые уже без отладочной информации.
  2. Слегка обновил информацию в одной из старых статей, а именно про управление задачами (они же квесты). В описание класса SGameTaskObjective добавил информацию по заданию предусловий на провал и успех а также действий по провалу и успеху. Указаны соответствущие теги в XML описании.
  3. strelok200, ты уже несколько раз задаёшь фактически один и тот-же вопрос: как сделать определённый порядок квестов, диалогов... Всё это делается с помощью инфопорций, предусловий и скриптовых действий. К этому собственно и сводится построение сюжета - к последовательной выдаче инфопорций, а по их наличию открывания сюжетных ходов - диалогов и квестов, а по их результатам выдаче следующих инфопорций и т.д. Технические подробности можно почитать в темах "уроки" и "справочник", а также на вики.
  4. SkyLoader, ида даёт такой прототип этой функции: void __thiscall CActor__IR_OnKeyboardPress(CActor *this, int cmd); что означает на самом деле такой: void CActor::IR_OnKeyboardPress(int cmd); тип аргумента - неопределённый int, но можно предположить, что это одна из констант-действий из key_bindings. Функции большие, действительно. Это на самом деле хорошо. Думается мне, что там как раз и происходит обработка действий нажатия на клавиши. Скорее всего там в коде стояло что-то вроде такого: switch (cmd){ case <команда стрелять>: // делаем выстрел break; case <команда прыгать>: // выполняем прыжок break; // и т.д. } Это довольно нудно расшифровывать, поскольку оператор switch компилируется по-разному в зависимости от режима оптимизации и внутри превращается в весьма запутанную и неоднозначную конструкцию. Но что и где делается можно иногда понять и так по именам вызываемых функций. К примеру, стоят вызовы CInventory::Action(int,uint). Это явно какие-то действия с предметами в слотах. А вот это CActor::cam_Set(ACTOR_DEFS::EActorCameras) похоже на действия с камерой актора. Вероятно как раз и есть переключение режимов. Где-то там есть и изменение расстояния от актора до камеры. Если нужно найти параметры камеры, то отсюда надо начинать копать. Лезть в эти функции и пытаться понять, откуда они берут данные или куда пишут, какие ещё функции вызывают и т.д.
  5. Vault Boy, Может ему воевать надоело =)
  6. Real Wolf, obj:set_nonscript_usable(false)
  7. SkyLoader, надо искать в xrGame.dll из билда mp 2947. Там в комплекте имеются файлы с расширением *.pdb для каждого экзешника или библиотеки. При открытии файла идой в первый раз она спросит, загружать ли отладочную информацию. Надо ответить, что загружать. В этом случае ида уже не будет искать функции, типы и прочее, а просто возмёт это из этих файлов. Там безымянных или нераспознанных функций не будет вообще, и каждая функция будет иметь точную информацию о типе возвращаемого значения, типах и даже именах аргументов. Вот теперь уже и можете искать функции по имени. Можно сделать "jump to function" и там с помощью "search" найти функцию по тем иенам, что я давал. А можно просто отсортировать функции по именам в окошке слева и тогда найти её в списке тоже будет несложно.
  8. ЙоЖеГ, ось Y идёт на экранах сверху вниз ещё с мохнатых времён телетайпов и аналоговых экранов. Где ты здесь видел его снизу вверх, скажи на милость?
  9. ЙоЖеГ, похоже на то, что вышли за пределы родительского окна. Вероятно, лучше сдвигать не кнопки, а TabControl на котором они расположены. И он тоже должен остаться в пределах своего родительского окна. Кстати, как сделать их вертикально, понятия не имею. Такой настройки в табконтрол-е не нашёл.
  10. Kolmogor, я понимаю. Скриптовое окно в этом случае надо завести "рядом" и присоединять кнопки на движковй диалог, а колбеки перенаправить в это отдельное окно. Потом не забыть отсоединить кнопки от движкового окна и просединить к скриптовому для корректного удаления. Проблемы начнуться если "забыть" кнопку на движковом окне, поскольку она там останется вплоть до выхода из программы. Real Wolf, таки прочитай тот старый пост, что я привёл. Там именно твоя проблема и решалась.
  11. ЙоЖеГ, <!-- TAB CONTROL --> это сам блок кнопок <tab x="129" y="573" width="550" height="30"> <!-- BUTTONS --> а это первая кнопка, по которой выравнены все остальные <button x="50" y="7" width="50" height="20" hint="pda_btn_quests_hint"> ... </button> когда я смещаю первую кнопку, то смещается весь ряд (и именно кнопки, не текстуры), когда я пытаюсь сместить не первую кнопку, то это просто игнорируется.
  12. DimOriN, у reader есть некий указатель внутри, который смещается при каждом чтении. Всякий раз читает новое значение и смещается. При следующем чтении читается уже другое значение. Всё-таки почитай про net_packet. Там очень похоже. Real Wolf, Хлопотное это дело. Потом, не уверен, что стоит пытаться присоединять к одному диалогу другой. Лучше отдельные контролы. Безвылетную технологию для этого я описывал здесь.
  13. ЙоЖеГ, опять же в столбик. Скорее всего допустимо выравнивание по первой кнопке по горизонтали или вертикали, но не независимое расположение кнопок.
  14. SkyLoader, так это тебе нужно смотреть туда, где эти команды используются. Могу предположить, что это одна из таких функций: CActor::IR_OnKeyboardHold CActor::IR_OnKeyboardPress CActor::IR_OnKeyboardRelease Берёшь билд с отладочными дампами (mp 2947), находишь там эти функции (а может и не эти) и грызёшь их с помощью иды, пока не поймёшь, как это всё работает =) В релизных билдах разумеется код изменён, но не существенно, а найти там нужную функцию сходу почти нереально.
  15. ЙоЖеГ, n6260, Окно хоть и движковое, но инициализируется из XML файла "config\ui\pda.xml". Но переместить отдельную кнопку не выйдет. Дело в том, что они не независимы, а входят в состав специального контрола для управления страницами. Все кнопки выравниваются по первой в ряду.
  16. DimOriN, reader похож на net_packet только без функций записи. net_packet я расписывал здесь. Но на самом-то деле класс ведь примитивный. По именам методов и так ясно, что они делают. А что за задача стоит?
  17. Олег К., читерить не обязательно, там фильтры валяются на каждом шагу. И интересно, а сколько тогда стоит? Вы уже посчитали?
  18. SkyLoader, признаться, не понимаю о каких настройках ты говоришь. Камера следует за актором. Что тут настраивать?
  19. SkyLoader, Это фрагмент функции добавления констант к классу-перечислению key_bindings. Там сериями вызовов добавляются пары ключ/значение. То, что ты конкретно привёл - это фрагмент добавления константы key_bindings.kCAM_2 со значением 17.
  20. qq11q, Что такое партиклы можно почитать здесь. Как их создавать с нуля можно почитать на wiki в разделе про SDK. Но скорее всего существует до кучи готовых модов на эту тему. Для переноса готовых партиклов есть утилиты. Поищи их здесь, на сталкерине или просто погугли. При наличии готового партикла вписать его в конфиг ствола будет несложно.
  21. В ТЧ и ЧН были глобальные функции GetTextureInfo, GetTextureName и GetTextureRect. Это значит по имени текстуры получить ее файл (вроде как это еще полотном называют) и координаты прямоугольника. Напоминаю, что в таком понимании текстура это то, что обычно указывается в XML описаниях разных окошек. Там как правило прописывается имя, которое ссылается на отдельное описание (в другом XML файле), где уже и задается имя файла и координаты прямоугольника. Эти функции как раз и позволяют получить эту информацию. Особой пользы от этих функций не было, поскольку не было ни одной функции, которая возвращала бы имя текстуры. И вот в ЧН такая функция появилась! Для онлайновых объектов сталкеров стало возможно получить иконку персонажа с помощью функции character_icon. Это очень нужная функция, поскольку дает информацию о реальном профиле сталкера. Так и что вы думаете! В ЗП разрабы взяли и убрали функции получения информации о текстурах. И какой теперь толк от той функции получения иконки? XML прочитать нельзя, а иначе логическое имя ни о чем не говорит. Нет слов, одни междометья.
  22. SkyLoader, =) Можно взять хвост от одной собаки и кинуть к другой, да чтоб она потом им махала? "Кинуть" - неподходящее слово. А вообще можно, вот же в шапке лежит проект "пришивания второго хвоста".
  23. SkyLoader, то, что ты нашёл, - это не функция, а строка с завершающим нулём (очевидно, имя консольной команды). IDA даёт им имя, комбинируя его из собственно строки и добавляя в начале "a" от ASCII. Чтобы найти остальные, надо реверсить функцию регистрации консольных команд. Ну или на wiki посмотреть =) align = выравнивание. Всякие данные обычно начинаются как минимум на границе двойного слова (4 байта). Ида распознаёт (чаще всего верно) все такие микропустоты перед началом переменных и пытается изобразить при этом корректный ассемблерный текст.
  24. Серый Волк, вроде как нельзя. Можно нарисовать текст на текстуре, и тогда уж располагай его как душе угодно.
  25. Malandrinus

    Формат файлов *.anm

    and_modern, Вот пример проигрывания партикла по такому пути pp = particles_object("ghoul\\anomal-04-blue-field") pp:load_path("particle_test.anm") pp:start_path(true) pp:play() сходи на Кордон, встань рядом с остановкой с тушканами и гляди на АТП. Запусти этот скрипт и полюбуйся на НЛО, которое летает чуть правее тропинки от остановки. Вопрос относительный. Для меня ставить SDK на мою винду 7 x64 - это мучение, уровни я никогда не декомпилировал, да и SDK не люблю. До сих пор не могу научиться управлять там камерой. stunder, Не уверен насчёт аномалий. Партикл можно по пути пустить, а вот аномалию (чтобы повреждение наносила при этом) - вроде нельзя. Однако, использование хотя бы эффекторов камеры может быть довольно обширным: банальные пролёты, эффекты землятресения и выброса, удары в морду и эффекты от хитов, скриптовые сценки типа "выглянул в окошко" или "упал, посмотрел с земли". Уже немало. Те же анимированные партиклы, пусть и без полноценных аномальных эффектов, нашлось бы куда прикрутить.
×
×
  • Создать...