- 614
- 260
многобайтовую кодировку поставь.
многобайтовую кодировку поставь.
Хз почему, но в студии нельзя сделать jmp адрес.Посмотреть вложение 23675Посмотреть вложение 23676Посмотреть вложение 23677
один хуй недопустимый тип операнда, чё делать?
можно)Хз почему, но в студии нельзя сделать jmp адрес.
Записывай адрес в какой-либо регистр. Ну или закрой asm вставку и запиши static uint32_t addr =адрес, и в jmp юзать его.
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
Посмотреть вложение 23653
кароче там немного в другом был прикол, я переписывал fixdist от сртима, и долго думал чё там хук на хук стоит, кароче это были джампы внутри области этой хексовой, я тупо метки ебанул и заработало нормХз почему, но в студии нельзя сделать jmp адрес.
Записывай адрес в какой-либо регистр. Ну или закрой asm вставку и запиши static uint32_t addr =адрес, и в jmp юзать его.
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
Посмотреть вложение 23653
Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.hКак получить координату кости?
#pragma region DrawBones
if (enableDrawBones) {
actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
float posX[15], posY[15];
int counter = 0;
CVector vPos[15];
for (int i = 1; i <= 53; i++)
{
switch (i)
{
case 1:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 3:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 4:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 5:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 6:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 22:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 23:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 25:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 32:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 33:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 35:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 42:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 43:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 52:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 53:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
}
}
for (int i = 0; i <= 14; i++) SF->getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]);
SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF);
}
#pragma endregion DrawBones
кто тебя учил плюсам?Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.h
Код:#pragma region DrawBones if (enableDrawBones) { actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped; CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo); float posX[15], posY[15]; int counter = 0; CVector vPos[15]; for (int i = 1; i <= 53; i++) { switch (i) { case 1: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 3: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 4: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 5: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 6: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 22: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 23: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 25: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 32: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 33: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 35: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 42: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 43: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 52: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 53: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; } } for (int i = 0; i <= 14; i++) SF->getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]); SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF); SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF); } #pragma endregion DrawBones
Че за ...?case 1: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 3: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 4: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 5: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 6: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 22: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 23: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 25: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 32: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 33: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 35: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 42: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 43: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 52: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 53: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break;
case 1: case 3: case 4: case 5: case 6: case 22: // ...
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
SF->getSAMP()->getChat()->AddChatMessage(-1, "{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded.");
init = true;
}
// Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло.
static int current_weapon = SF->getSAMP()->getPlayers()->pLocalPlayer->byteCurrentWeapon;
if (current_weapon == 31)
{
SF->getSAMP()->getChat()->AddChatMessage(-1, "{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand.");
current_weapon = 0;
}
}
статик это крутоВынес за блок init, но уведомляет об оружии в руке только при загрузке скрипта. Почему лишь при загрузке?
C++:void CALLBACK mainloop() { static bool init = false; if (!init) { if (GAME == nullptr) return; if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME) return; if (!SF->getSAMP()->IsInitialized()) return; SF->getSAMP()->getChat()->AddChatMessage(-1, "{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded."); init = true; } // Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло. static int current_weapon = SF->getSAMP()->getPlayers()->pLocalPlayer->byteCurrentWeapon; if (current_weapon == 31) { SF->getSAMP()->getChat()->AddChatMessage(-1, "{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand."); current_weapon = 0; } }
нахуя здесь свитч обьясните, если можно сразу вызвать функу какую он хочет перед этим поставив проверку на числоЧе за ...?
Перечисляй так:
C++:case 1: case 3: case 4: case 5: case 6: case 22: // ... Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break;