Чтобы именно так - они должны лежать в одной директории. В твоем случае можно заинклудить так:Есть файл test.h, есть папка game, в ней файл test.cpp, вопрос, как сделать так чтобы я могу инклуднуть файл test.h в test.cpp именно вот так#include <test.h>?
#include <..\test.h>Свойства проекта > Каталоги VC++ > Каталоги включения. Добавляешь путь до папки где лежит test.hЕсть файл test.h, есть папка game, в ней файл test.cpp, вопрос, как сделать так чтобы я могу инклуднуть файл test.h в test.cpp именно вот так#include <test.h>?
bool OnReceivePacket(Packet *p)
{
if (p->data == nullptr || p->length == 0)
return true;
if (p->data[0] == ID_PLAYER_SYNC) {
BitStream bs(p->data, p->length, false);
uint16_t playerID = uint16_t(-1);
stOnFootData data{ 0 };
bs.ResetReadPointer();
bs.IgnoreBits(8);
bs.Read(playerID);
bs.Read((PCHAR)&data, sizeof(stOnFootData));
// Дальше происходит форматирование и вывод.
}
}
Чтение получаемого пакета PlayerSync и VehicleSync происходит по другому. Вроде в ракботе есть полный пример, вот не полный - https://gitlab.com/RcKoid/mod-s0beit-overlight/blob/master/src/Hooked RakNet/HookedRakClient.cpp#L98Из-за чего raknet хук может выдавать значение 0 при чтении структуры stOnFootData(также при чтении вообще любых структур)
Пытаюсь вывести айди(playerID) и позицию игрока(data.fPosition)RakNetHook:bool OnReceivePacket(Packet *p) { if (p->data == nullptr || p->length == 0) return true; if (p->data[0] == ID_PLAYER_SYNC) { BitStream bs(p->data, p->length, false); uint16_t playerID = uint16_t(-1); stOnFootData data{ 0 }; bs.ResetReadPointer(); bs.IgnoreBits(8); bs.Read(playerID); bs.Read((PCHAR)&data, sizeof(stOnFootData)); // Дальше происходит форматирование и вывод. } }
ID - высвечивается нормально, как положено.
Позиция игрока - выводится как 0
Конфликтов между собейтом или другими плагинами/скриптами нет.
x = (dMaxX / 640.) * SF->getSAMP()->getInfo()->pPools->pTextdraw->playerTextdraw[i]->fX;
y = (dMaxY / 448.) * SF->getSAMP()->getInfo()->pPools->pTextdraw->playerTextdraw[i]->fY;
SF->getRender()->DrawBox(x, y, 5, 5, SF->getSAMP()->getInfo()->pPools->pTextdraw->playerTextdraw[i]->dwBoxColor);
Расширение екрана я знаю, просто с сервера приходит размещение текстдрава в float для расширения 640x448C++:POINT get_screen_resolution() { POINT pos; pos.x = *(int*)0xC9C040; pos.y = *(int*)0xC9C044; return pos; }
Проще самому прибавить допустим 5 пикселей, похожий баг был с получением координат радараРасширение екрана я знаю, просто с сервера приходит размещение текстдрава в float для расширения 640x448
я конвертирую для своего расширения, но выходит не точное значение
Как можно узнать высоту текстдрава textdraw->fBoxSizeY не подходит по причине того что данные не корректныеПроще самому прибавить допустим 5 пикселей, похожий баг был с получением координат радара
pGameInterface->GetPools()->GetPed((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped); происходит краш.pGameInterface->GetPools()->GetPedFromRef(pGameInterface->GetPools()->GetPedRef((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped)) также краш.Как заполнил покажи
void PlayerGiveTakeDamage(RPCParameters *rpcParams)
{
Log("RPC: PlayerGiveTakeDamage");
unsigned char * Data = reinterpret_cast<unsigned char *>(rpcParams->input);
int iBitLength = rpcParams->numberOfBitsOfData;
RakNet::BitStream bsData((unsigned char*)Data,(iBitLength/8)+1,false);
bool flag;
uint16_t playerId;
float Damage;
uint32_t weaponid;
uint32_t bodypart;
bsData.Read(flag);
bsData.Read(playerId);
bsData.Read(Damage);
bsData.Read(weaponid);
bsData.Read(bodypart);
if (flag) {
Log("> PlayerGiveTakeDamage (%d, %f, %d, %d)", playerId, Damage, weaponid, bodypart);
}
else {
Log("> PlayerGiveTakeDamage (%d, %f, %d, %d)", playerId, Damage, weaponid, bodypart);
}
pNetGame->GetRakClient()->RPC(&RPC_PlayerGiveTakeDamage, &bsData, HIGH_PRIORITY, RELIABLE_SEQUENCED, 0, false, UNASSIGNED_NETWORK_ID, NULL);
}
Если в sf api, то PEDSELF, если нет, то по адресу 0xB6F5F0.Как получить свой CPed?
При вызове такpGameInterface->GetPools()->GetPed((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped);происходит краш.
При вызове такpGameInterface->GetPools()->GetPedFromRef(pGameInterface->GetPools()->GetPedRef((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped))также краш.
pGTA_Ped валидный