Jump to content

Recommended Posts

[Мод] 60 кадров в секунду (60 FPS)

 

Данный мод увеличивает скорость отрисовки графики игровым клиентом с 30 до 60 кадров в секунду.

 

У мода есть несколько проблем:

1) При быстром беге персонажа игрока может отбрасывать назад;

2) При быстром беге могут не успевать прогружаться карта, NPC, монстры и игроки;

3) Анимации персонажей и объектов проигрываются слишком быстро.

 

 

Требования

 

Установленный Загрузчик модов для сервера и клиента (PKOdev.NET mod loader).

 

 

Информация о моде

 

Название: pkodev.mod.60fps;

Версия: 1.0;

Автор: V3ct0r, BotPRO;

Тип: для клиента (Game.exe);

Поддерживаемые исполняемые .exe файлы: GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4, GAME_13X_5.

 

 

Установка

 

1) В директории "mods" игрового клиента создайте папку "pkodev.mod.60fps";

2) Поместите файл DLL-библиотеки мода "pkodev.mod.60fps.client.13x_<ID>.dll" для Вашей версии Game.exe в папку "mods\pkodev.mod.60fps" игрового клиента;

3) Поместите файл DLL-библиотеки мода "pkodev.mod.60fps.impl_<ID>.dll" для Вашей версии Game.exe в папку "mods\pkodev.mod.60fps\impl" игрового клиента.

 

screenshot_01.png

 

 

Скачать

 

1) Бинарные файлы мода (.dll);

2) Исходный код мода для Visual Studio 2019 Community (C++).

 

 

Если Вы столкнулись с какой-либо проблемой, багом или у Вас возникли вопросы, то пишите в данной теме.

  • Like 1
  • Haha 1

Share this post


Link to post
Share on other sites

Привет @V3ct0r, отличный мод ❤️! А ещё радует, что вы его совместно с  @BotPRO делали.

 

Вот этот код загружает библиотеку из папки impl:

 // Build path to the mod implementation library
char buf[MAX_PATH]{ 0x00 };
sprintf_s(buf, sizeof(buf), "%s\\impl\\pkodev.mod.60fps.impl_%d.dll",
          path, pkodev::address::MOD_EXE_VERSION::impl_id);

// Load the mod implementation library
pkodev::handle = LoadLibraryA(buf);

А что именно вшито в эту библиотеку ? Можно исходный код ?

 

spacer.png

 

Я так понимаю его @BotPRO писал, по этому не выложил - можешь выложить, он не возражает. 🤣

Share this post


Link to post
Share on other sites

@Де-Компанье, держи

 

#include <windows.h>
#include <detours.h>

// CSteadyFrame address
const unsigned int CSteadyFrame__Address = 0x00660540;

// void CHeadSay::Render(D3DXVECTOR3& pos) pointer
typedef void(__thiscall* CHeadSay__Render__Ptr)(void*, void*);
CHeadSay__Render__Ptr CHeadSay__Render = (CHeadSay__Render__Ptr)(void*)(0x004706D0);

// void CSteadyFrame::SetFPS(DWORD v) pointer	
typedef void(__thiscall* CSteadyFrame__SetFPS__Ptr)(void*, unsigned int);
CSteadyFrame__SetFPS__Ptr CSteadyFrame__SetFPS = (CSteadyFrame__SetFPS__Ptr)(void*)(0x0040C940);

// void CHeadSay::Render(D3DXVECTOR3& pos) hook
void __fastcall CHeadSay__Render__Hook(void* This, void* NotUsed, void* Pos);


// Entry point
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    if (ul_reason_for_call != DLL_PROCESS_DETACH)
    {
        if (ul_reason_for_call == DLL_PROCESS_ATTACH)
        {
            DetourRestoreAfterWith();
            DetourTransactionBegin();
            DetourAttach(&(PVOID&)CHeadSay__Render, CHeadSay__Render__Hook);
            DetourTransactionCommit();
        }
    }
    else
    {
        DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());
        DetourDetach(&(PVOID&)CHeadSay__Render, CHeadSay__Render__Hook);
        DetourTransactionCommit();
    }

    return TRUE;
}

// void CHeadSay::Render(D3DXVECTOR3& pos) hook
void __fastcall CHeadSay__Render__Hook(void* This,
    void* NotUsed, void* Pos)
{
    // Set 60 FPS
    CSteadyFrame__SetFPS(reinterpret_cast<void *>(CSteadyFrame__Address), 60);

    // Call the original function
    CHeadSay__Render(This, Pos);
}

 

  • Like 1

Share this post


Link to post
Share on other sites

Привет вектор. Есть вопросики не возможно написать тебе в личку.
Если сможешь ответить почему тупоголовый зура с мордо, не в состоянии тебе денег заплатить чтоб ты починил его помойный сервер. Там есть 1 идиот с ником елмер который нулевой в программировании

Share this post


Link to post
Share on other sites

Приветствую, @asdadad!

 

В личных сообщениях могут общаться участники форума из группы "Продвинутый пользователь" и остальных групп, кроме "Гость" и "Пользователь". Что касается твоего вопроса, то, во-первых, прошу никого не оскорблять, а во-вторых, меня это не интересует, да и их проблемы, если они действительно есть, не имеют ко мне отношения.

  • Like 1

Share this post


Link to post
Share on other sites

@V3ct0rПривет. Хотелось бы узнать будет ли как-то дорабатываться данный мод в связи его проблемами, возможны ли какие-то решения?

Share this post


Link to post
Share on other sites

Привет, @1nosensio!

 

В ближайшее время я не планирую дорабатывать данный мод ввиду отсутствия необходимых знаний для решения проблемы. Вроде как @champ знает решение проблемы, но его решение заточено под исходные коды клиента, что в принципе можно перенести и в мод.


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...