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

Bond_Jems

Известный
18
0
Как прочитать сколько пунктов в диалоге?
И можно ли пропарсить весь текст в диалоге?
 

2Shae

Известный
149
8
При отрисовке текста он какой-то размытый, в чём проблема? Всё дефолтное, лишь динамически изменяется текст и позиция.
 
Последнее редактирование:

Musaigen

abobusnik
Проверенный
1,582
1,301
Каким образом сф получает айди игрока по его CPed(аля sampGetPlayerIdByCharHandle в луа)?
 

SR_team

like pancake
BH Team
4,719
6,362
Каким образом сф получает айди игрока по его CPed(аля sampGetPlayerIdByCharHandle в луа)?
Использует самповскую функцию, которая обходит самповский пул на 1000 объектов и ищет в каждом элементе ссылку на игрока. Либо реализует данную функциональность самостоятельно.
 

Musaigen

abobusnik
Проверенный
1,582
1,301
Использует самповскую функцию, которая обходит самповский пул на 1000 объектов и ищет в каждом элементе ссылку на игрока. Либо реализует данную функциональность самостоятельно.
Мб эту - link? В луа же локальный игрок это просто число

@FYP памаги
 
Последнее редактирование:

Angr

Известный
291
97
Как правильно перезаписать RPC_ScrClientMessage ?
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Вроде так
C++:
BitStream *bs = params->bitstream;
string text;
DWORD len, color;
bs->Read(color);
bs->Read(len);
text.resize(len + 1);
bs->Read((PCHAR)&text.data(), len);
text[len] = '\0';
bs->resetWritePointer();//Или подобное
text = "Тест перезаписи";
bs->Write(color);
bs->Write(text.length());
bs->Write(text.data(), text.length());
 
  • Нравится
Реакции: Angr

Vesca

Новичок
20
0
How to get the time from the server? (not the local time from PC). I mean, how to get the current day.
 
Последнее редактирование:

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
597
818
Can you please show me a sample? I'm newbie with SF.
C++:
// ...
// Send command to show time
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/time");
// ...
// This is the function that hooks RakNet. (Packets, RPC, etc.)
bool __stdcall incoming_rpc(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrDisplayGameText)
    {
        DWORD style;
        DWORD time;
        DWORD strlen;
        char string[2048];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(style);
        params->bitStream->Read(time);
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);
        
        // Next, work with the string variable and get time from it
    }
    return true;
}
// ...
// This is a hook registration, it is done in the main loop once, i.e. she should stand somewhere in if(!init), after the initialization of the game of course
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incoming_rpc);
 
  • Нравится
Реакции: SobFoX; и Vesca

MassKill

Новичок
4
1
C++:
void cursor_move()
{
    SF->getSAMP()->getMisc()->ToggleCursor(2, true);
    POINT cursor = SF->getGame()->getCursorPos();

    position[0] = cursor.x;
    position[1] = cursor.y;

    if (SF->getGame()->isKeyDown(VK_LBUTTON) || SF->getGame()->isKeyDown(VK_RBUTTON))
    {
        set_float_to_ini("SAMPFUNCS\\text.ini", "text", "text", pos[0]);
        set_float_to_ini("SAMPFUNCS\\text.ini", "text", "text", pos[1]);
        move_cursor = false;
        SF->getSAMP()->getMisc()->ToggleCursor(false);
    }
}
warning LONG в float возможна потеря данных, help.
 
  • Нравится
Реакции: zTechnology