• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

    Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
    По желанию, аргументировать свой выбор можете в теме обсуждения голосования.

Не стесняюсь спросить....

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Saturas, тут для тебя новая работенка есть, надо скрипты ХМ подружить с сурсером 3.17 или 3.18, они сцуки там работу парсера меняли.. мфц ты ж любишь ?! *hm*
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Кто любит мфц? Уж точно не я, да и сурсером пользоватся не вижу никакого смысела.
Да и не мфц в сурсере, а склейка из мфц и екстрейм тулзов всяких, не полезу.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Кто любит мфц? Уж точно не я, да и сурсером пользоватся не вижу никакого смысела.
ты, кто же еще, я помню твои "вопли видоплясова" о нем, так-что.. *to my*

Да и не мфц в сурсере, а склейка из мфц и екстрейм тулзов всяких, не полезу.
залезь тока краешком уха.. *gaming kat*

Зы, что до сурсера, а как-же переводы и прочее прочее ?? хотя, был вроде плагин Юньки но я им никогда не пользовался и он вряд ли заведется, вообщем для толкового перевода и сборки скриптов надо что-то замутить, а главное штобы потом стим и гог хавали эти скрипты как родные.*time*
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
ты, кто же еще, я помню твои "вопли видоплясова" о нем, так-что.. *to my*


залезь тока краешком уха.. *gaming kat*

Зы, что до сурсера, а как-же переводы и прочее прочее ?? хотя, был вроде плагин Юньки но я им никогда не пользовался и он вряд ли заведется, вообщем для толкового перевода и сборки скриптов надо что-то замутить, а главное штобы потом стим и гог хавали эти скрипты как родные.*time*
Есть notepad++ этого достаточно, сорсер дружить с тем же парсерэкстендером бред, есть игра - компильте ей.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Есть notepad++ этого достаточно, сорсер дружить с тем же парсерэкстендером бред, есть игра - компильте ей.
ты тупишь чтоль?
нотепад я и так юзаю, а исходников сриптов нет, кого ты там компилить игрой собрался ?!

Зы, просто совсем не хочется заниматься очередным байто***ством как с бигласовыми утилитами в начале нулевых, ковыряя датники модов..
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Попросите сорсы для перевода, очевидно же.

А мфц я не то что бы люблю, просто мне впадлу писать интерфейс на одном языке( на нете том же) а ядро на другом, зачем, когда есть все на плюсах, и даже запускаемо из длл без потери функционала?
 
Последнее редактирование:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
дык не дают никому, всех посылают в crowdin... *gigi*
у них там есть файлы JSON, которые преобразованы в скрипты, которые в свою очередь обновленным парсером и компилятся как-то иначе, но только у них..*rugat*
короче говоря::
— круговорот говна в природе.. ©
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Даже для перевода? Што? Или опять скрывают сверхсекретные технологии?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
ну да, хотят всех посадить на это дерьмо..
наверное не в курсе о поговорке — "что нельзя обучить старую собаку, новым трюкам".. ©

Зы, какие нахер сверх технологии, сраные костыля лагодромов и троллейбусов ?!
 

DocNight

Участник форума
Регистрация
6 Июн 2020
Сообщения
32
Благодарности
1
Баллы
100
Ребят. Не могу скомпилировать хуки, пишет необъявленный индификатор в VS. Когде же меняю объявление хука в конце, то компилит ок, но в игру не пускает из-за несоответствия кода.

C++:
HOOK oCGame_UpdatePlayerStatus        AS(&oCGame::UpdatePlayerStatus, &UpdatePlayerStatus_Mod);

    void UpdatePlayerStatus_Mod()
    {
        THISCALL(oCGame_UpdatePlayerStatus)();

    }
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
Ребят. Не могу скомпилировать хуки, пишет необъявленный индификатор в VS. Когде же меняю объявление хука в конце, то компилит ок, но в игру не пускает из-за несоответствия кода.
Определить хук на метод класса можно двумя способами, учитывая спецификацию соглашений о вызовах в C++.
Первый вариант (рекомендуемый мною за нативную реализацию кода) - это добавление в UserAPI функции, сигнатура которой будет идентична перехватываемой.
О UserAPI см видео тут или краткое описание в тч про сами хуки тут.
C++:
  // UerAPI/oCGame.inl
  void Hooked_UpdatePlayerStatus();

  // Plugin.cpp
  HOOK Hook_oCGame_UpdatePlayerStatus AS( &oCGame::UpdatePlayerStatus, &oCGame::Hooked_UpdatePlayerStatus );

  void oCGame::Hooked_UpdatePlayerStatus() {
    THISCALL( Hook_oCGame_UpdatePlayerStatus )();
  }

Второй вариант (рекомендуемый Slavemaster за скорость реализации) - подмена соглашения __thiscall на __fastcall (смысл соглашений одинаковый). Прототип функции указывается до хука, чтобы указатель на функцию был в пределах видимости этого объекта.
C++:
  void __fastcall Hooked_UpdatePlayerStatus( oCGame* _this, void* vf );

  HOOK Hook_oCGame_UpdatePlayerStatus AS( &oCGame::UpdatePlayerStatus, &Hooked_UpdatePlayerStatus );

  void __fastcall Hooked_UpdatePlayerStatus( oCGame* _this, void* vf ) {
    Hook_oCGame_UpdatePlayerStatus( _this, vf );
  }
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Вопрос к знатокам - качество компиляции света в мире влияет на фпс в игре? И насколько сильно? Вобще имеет смысл компилировать свет в High или достаточно в Low?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
качество компиляции света в мире влияет на фпс в игре?
Можно же провести эксперимент. ;) Думаю, на ФПС в игре это не влияет. Просто время, необходимое на компиляцию света, немного увеличится на при высоком качестве.
 

DocNight

Участник форума
Регистрация
6 Июн 2020
Сообщения
32
Благодарности
1
Баллы
100
Шарящим за движок. Как получить текстуру текста? Или же как через код регулировать размер текста?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
не совсем понял что такое " Как получить текстуру текста?", через код его регулировать не получится в том виде как он есть в игре, а если и получится, то для этого придется городить лютые костыли хз из какого говна и палок, которые не факт что будут вообще корректно работать..
но есть небольшой пример скалирования текста в патче двига СП, но оно работает только вместе со скалированием всего интерфейса окна..
еще один обходной маневр, это увеличение текстурной сетки файла шрифта, те создать нужный файл шрифт с нуля, и так для каждого размера шрифта который требуется.. потом все это прописать как нужно в скриптах и вызывать из скриптов в игре по меренеобходимости..
где-то как-то так.. :)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.641
Баллы
625
DocNight, по разному можно. Зависит от задачи. Например как-то так можно увеличить текст всего выводимого текста функцией zCView::Print.. через два хука.
C++:
float FontSizeMultiplier = 1.0f;

HOOK Hook_zCFont_GetFontData PATCH( &zCFont::GetFontData, &zCFont::GetFontData_Hooked );

int zCFont::GetFontData_Hooked( const unsigned char letter, int& letterWidth, zVEC2& uvStart, zVEC2& uvEnd ) {
  int ok = THISCALL( Hook_zCFont_GetFontData )( letter, letterWidth, uvStart, uvEnd );
  letterWidth *= FontSizeMultiplier;
  return ok;
}

HOOK Hook_zCView_PrintChars PATCH( &zCView::PrintChars, &zCView::PrintChars_Hooked );

void zCView::PrintChars_Hooked( int x, int y, const zSTRING& text ) {
  if( !font )
    return THISCALL( Hook_zCView_PrintChars )( x, y, text );

  // Condition
  FontSizeMultiplier = 2.0f;
  float oldHeight = font->height;
  font->height *= FontSizeMultiplier;
  THISCALL( Hook_zCView_PrintChars )( x, y, text );
  font->height = oldHeight;
  FontSizeMultiplier = 1.0f;
}

Информация о размере шрифта лежит в классе zCFont. Поле height отвечает за высоту шрифта, массив width[256] содержит информацию о ширине всех однобайтовых символов.
 
Последнее редактирование:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
при таком скалировании он зернистым не будет ?! *lupa*
 
Сверху Снизу