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

rraggerr

проверенный какой-то
1,626
851
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 21613

если передаю аргумент в строку, то вместо русских символов выводит знаки вопроса.
есть методы решения этой проблемы?
Используй шрифт поддерживающий русский язык, дефолтный шрифт имгуи его не поддерживает.
А если всеравно вопросы то, на мунлоадере с таким сталкивался, как решалось точно не помню, вроде что то с кодировкой
 

CyberSuslik

Участник
88
12
Например хук на RPC.
C++:
bool __stdcall incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(message, len);
        params->bitStream->ResetReadPointer();
        message[len] = '\0';
       
    }
    return true;
}
Да, да этот хук я подлядел в чужом коде. Интересует следующий момент. Допустим что бы просто скрыть эту строку надо написать
if (strstr(msg, "Объвление"))
return false;

А что написать если нужно вернуть эту строку но уже со своими данными "Объявление (Реклама)"
 

#Rin

Известный
Всефорумный модератор
1,214
1,044
Да, да этот хук я подлядел в чужом коде. Интересует следующий момент. Допустим что бы просто скрыть эту строку надо написать
if (strstr(msg, "Объвление"))
return false;

А что написать если нужно вернуть эту строку но уже со своими данными "Объявление (Реклама)"
Либо так:
C++:
SF->getSAMP()->getChat()->AddChatMessage(color, "[Реклама] %s", message);
return false;
И можешь это попробовать:
C++:
char newStr[256];
sprintf_s(newStr, "[Реклама] %s", message);
size_t newLen = strlen(newStr);
params->bitStream->ResetWritePointer();
params->bitStream->IgnoreBytes(sizeof(DWORD));
params->bitStream->Write(newLen);
params->bitStream->Write(newStr, newLen);
 

Adder

Известный
22
0
Либо так:
C++:
SF->getSAMP()->getChat()->AddChatMessage(color, "[Реклама] %s", message);
return false;
И можешь это попробовать:
C++:
char newStr[256];
sprintf_s(newStr, "[Реклама] %s", message);
size_t newLen = strlen(newStr);
params->bitStream->ResetWritePointer();
params->bitStream->IgnoreBytes(sizeof(DWORD));
params->bitStream->Write(newLen);
params->bitStream->Write(newStr, newLen);
А с помощью params->bitStream->Write. Реально перезаписать сообщение, которое находится в чате уже давно? Например:
[....] Третье сообщение <- вот это сообщение
[....] Второе сообщение
[....] Первое сообщение
 

#Rin

Известный
Всефорумный модератор
1,214
1,044
А с помощью params->bitStream->Write. Реально перезаписать сообщение, которое находится в чате уже давно? Например:
[....] Третье сообщение <- вот это сообщение
[....] Второе сообщение
[....] Первое сообщение
Нет, для этого нужно в структуре чата, изменить строку, а после прорендерить чат заново.
 

Musaigen

ihatemyself
Проверенный
1,676
1,514
Есть что-нибудь подобное в SF setCameraPositionUnfixed?
И как получить координаты своей камеры?
 

checkdasound

Известный
Проверенный
963
413
1. Как получить хэндл по иду?
2. Как получить ид модели скина игрока?
 

Musaigen

ihatemyself
Проверенный
1,676
1,514
1. Как получить хэндл по иду?
2. Как получить ид модели скина игрока?
1
C++:
SF->getSAMP()->getPlayers()->GetActorHandleFromSAMPPlayerID(228);
2
C++:
SF->getSAMP()->getPlayers()->pRemotePlayer[/*id here*/]->pPlayerData->pSAMP_Actor->pGTA_Ped->base.model_alt_id;
 
  • Нравится
Реакции: checkdasound

AnWu

Известный
Всефорумный модератор
4,794
5,459
@CleanLegend SF->getSAMP()->sendClickPlayer() Что отправлять вторым параметром? int source