Другое SAMPFUNCS | API C++

tropical5466

Известный
28
19
Как можно перезаписать RPC_ScrShowTextDraw?
Например текст поменять или передвинуть этот текстдрав
 

tropical5466

Известный
28
19
Хукнуть его и заменить параметры
Хукнул, пытался перезаписать вот так, но мне нужно изменять только определённый ид текстдрава, а не все
В структуре не нашёл ид текстдрава
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
{
        stTextdraw data; // определяем объект, в который сохраним отправляемые данные
        memset(&data, 0, sizeof(stTextdraw)); // обнуляем его

        params->bitStream->ResetReadPointer(); // на всякий случай устанавливаем оффсет чтения на начало
        params->bitStream->Read((PCHAR)&data, sizeof(stTextdraw));
        params->bitStream->ResetReadPointer(); // снова обнуляем оффсет чтения
        data.fX = 1.0;
        data.fY = 1.0;
        params->bitStream->ResetWritePointer(); // обнуляем оффсет записи
        params->bitStream->Write((PCHAR)&data, sizeof(stTextdraw)); // пишем обновлённые данные  
}
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Чтение не неверное
Код:
WORD wTextID, cTextLen;
stTextDrawTransmit data;
char cText[65535];
BitStream *bsData = params->bitStream;
bsData->Read(wTextID);
bsData->Read((PCHAR)&data, sizeof(stTextDrawTransmit));
bsData->Read(cTextLen);
bsData->Read(cText, cTextLen);
cText[cTextLen] = '\0';
 
  • Нравится
Реакции: tropical5466

Blood

Известный
45
1
пытаюсь присобачить vk api к sf plugin
но, выдает, это
18182152.png
 

Blood

Известный
45
1
заддержка не срабатывает
PHP:
bool checkFile()
{
std::ifstream file;
file.open(".\\SAMPFUNCS\\test.txt");
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Проверка загрузки файлов!");
if (GetTickCount() - time < 5000) return true;
if (file != NULL)

{
    SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}файл найден!" );
    SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Плагин загружен!");


  }
else
{
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}файл  не найден!");
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Плагин отключен");


return false;

}
time = GetTickCount();
file.close();
}

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;
    
    
    
        if (checkFile())
        {
         ...
 
Последнее редактирование:

BlackKnigga

Известный
BH Team
922
444
заддержка не срабатывает
PHP:
bool checkFile()
{
std::ifstream file;
file.open(".\\SAMPFUNCS\\test.txt");
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Проверка загрузки файлов!");
if (GetTickCount() - time < 5000) return true;
if (file != NULL)

{
    SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}файл найден!" );
    SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Плагин загружен!");


  }
else
{
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}файл  не найден!");
SF->getSAMP()->getChat()->AddChatMessage(-1, "{4993C5}Плагин отключен");


return false;

}
time = GetTickCount();
file.close();
}

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;
   
   
   
        if (checkFile())
        {
         ...
Потому что у тебя TickCount всегда равен time
 

rqwe.

Новичок
5
0
Как сделать чтобы за минус не уходил sprintbar там что-то value > 0 надо, но я не допёр как воткнуть.
C++:
    actor_info *actor = SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped;
    if (!actor)
        return;
    float value = *(float*)0x00B7CDB4 / 31.4f;
    if (IsDriving(SF->getSAMP()->getInfo()->pPools->pPlayer->sLocalPlayerID)) {
        value = SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->vehicle->hitpoints;
        value = value / 10;
    }
    if (value >= 100.0f) {
        value = 100.0f;
    }
    SF->getRender()->DrawBox(x + 0, y + 1, (int)value * +1.21, 14, D3DCOLOR_ARGB(230, 110, 0, 185));
    SF->getRender()->DrawBorderedBox(x, y, 123, 16, D3DCOLOR_ARGB(80, 0, 0, 0), 2, D3DCOLOR_ARGB(255, 0, 0, 0));
    float valuef = *(float*)0x00B7CDB4 / 31.4f;
    sprintf(msg, "%.0f", valuef);
    pFont->Print(msg, D3DCOLOR_ARGB(255, 254, 255, 20), (float)x + 49.0f, (float)y - 4.5f, false);
}