Посмотрел пару уроков по сф и решил сделать жоски скрипт с хуком синхры педа, сделал, ошибок при компиляции никаких нету, но хук как я понял не срабатывает.
P.S. смог решить тем, что хук перенес из отдельного файла в main.cpp. Тогда еще 2 вопроса: как можно это сделать в разных файлах и влияет ли как-то на производительность то, что все в одном файле или разделено на несколько?
main.cpp:
#include "main.h"
SAMPFUNCS *SF = new SAMPFUNCS();
void __stdcall mainloop()
{
static bool initialized = false;
if (!initialized)
{
if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
{
initialized = true;
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_PACKET, onSendPacket);
SF->getSAMP()->registerChatCommand("abc", [](std::string) {
AddChat(-1, "Mamut_Rahal active");
actived = !actived;
});
//SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(id);
SF->getSAMP()->getPlayers()->pRemotePlayer;
AddChat(-1, "Ну типа работа с синхрой бу Ега.");
}
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
SF->initPlugin(mainloop, hModule);
return TRUE;
}
main.h:
#pragma once
#include "SAMPFUNCS_API.h"
#include "game_api.h"
bool __stdcall onSendPacket(stRakNetHookParams* param);
static bool actived = false;
#define AddChat SF->getSAMP()->getChat()->AddChatMessage
extern SAMPFUNCS *SF;
raknet.cpp (сам хук):
#include "main.h"
bool __stdcall onSendPacket(stRakNetHookParams* param)
{
if (param->packetId == ID_PLAYER_SYNC)
{
if (actived)
{
BYTE packet;
stOnFootData data;
memset(&data, 0, sizeof(stOnFootData));
//float pos = SF->getSAMP()->getPlayers()->GetOnFootData(2)->fPosition[3];
param->bitStream->ResetReadPointer();
param->bitStream->Read(packet);
param->bitStream->Read((PCHAR)&data, sizeof(stOnFootData));
data.fMoveSpeed[0] = 2.5f;
data.fMoveSpeed[1] = 2.5f;
data.fMoveSpeed[2] = 2.5f;
param->bitStream->ResetWritePointer();
param->bitStream->Write((PCHAR)packet);
param->bitStream->Write((PCHAR)&data, sizeof(stOnFootData));
AddChat(-1, "%f %f %f", data.fMoveSpeed[0], data.fMoveSpeed[1], data.fMoveSpeed[2]);
}
}
return true;
}
Последнее редактирование: