Информация - Коды отправки синхронизаций(https://blast.hk/threads/6326/)фулл хук vehicle_sync есть у кого? важный пакет - сложно прочитать)
Структура IncarData есть в сф апи
Информация - Коды отправки синхронизаций(https://blast.hk/threads/6326/)фулл хук vehicle_sync есть у кого? важный пакет - сложно прочитать)
Как использовать
(printf) в SF API?CLEO:0AD1: show_formatted_text_highpriority "This is %.4X opcode" time 2000 0x0AD1
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
void AddMessageJumpQ(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief)
{
((void(__cdecl *)(char *, unsigned int, unsigned short, bool))FUNC_CMessages__AddMessageJumpQ)(text, time, flag, bPreviousBrief);
}
вызывать так: AddMessageJumpQ("~G~Find ground Z...", 1500, 12, true);
case ScriptRPCEnumeration::RPC_ScrTextDrawSetString:
{
WORD wTexdrawID;
WORD wStrLen;
char szStr[128] = "";// пробовал и 128, и 500, и 5000
params->bitStream->ResetReadPointer();
params->bitStream->Read(wTexdrawID);
params->bitStream->Read(wStrLen);
params->bitStream->Read(szStr, wStrLen);
szStr[wStrLen] = '\0';
// SF->getSAMP()->getChat()->AddChatMessage(-1, "%i || %s || %i", wTexdrawID, szStr, wStrLen);
break;
}
Спасибо большое, помог)C++:#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0 void AddMessageJumpQ(char *text, unsigned int time, unsigned short flag, bool bPreviousBrief) { ((void(__cdecl *)(char *, unsigned int, unsigned short, bool))FUNC_CMessages__AddMessageJumpQ)(text, time, flag, bPreviousBrief); } вызывать так: AddMessageJumpQ("~G~Find ground Z...", 1500, 12, true);
То есть это зависание при вызове функции исправить ну никак нельзя?Это норм.
Как раз что то подобное я и искал, спасибо большое!)@_Vine_
самый простой и самый ущербный вариант
C++:void send(void *) { // code } _beginthread(send, NULL, NULL);
Ващет не сильно ущербный, в играх нетворк часть крутится в отдельном потокеКак раз что то подобное я и искал, спасибо большое!)
Не пойму только почему «ущербный»?
Я то не особо разбираюсь, но как по мне, функцию оно свою выполняет, а это главное)
прооралкак получить введенные парметры команды? Типо гет ласт парамс
Как раз что то подобное я и искал, спасибо большое!)
Не пойму только почему «ущербный»?
Я то не особо разбираюсь, но как по мне, функцию оно свою выполняет, а это главное)
unsigned long __stdcall foo(void*) {
return 0;
}
CreateThread(0, 0, &foo, 0, 0, 0);
чет меня крашит с этими параметрами, bs это params->bitstream ?Код:if (packetID == ScriptRPCEnumeration::RPC_ScrShowDialog) { WORD DialogID; BYTE style, caplen, button1_len, button2_len; char caption[255], button1[25], button2[25], info[0x1000]; bs->Read(DialogID); bs->Read(style); bs->Read(caplen); bs->Read(caption, caplen); caption[caplen] = '\0'; bs->Read(button1_len); bs->Read(button1, button1_len); button1[button1_len] = '\0'; bs->Read(button2_len); bs->Read(button2, button2_len); button2[button2_len] = '\0'; SF->getRakNet()->DecodeString(info, 0x1000, bs); std::string cap = caption, text = info; SF->Log("DialogID: %d - caption %s\n%s", DialogID, caption, info); }
крашДа. Все работает.
bool CALLBACK recv_rpc(stRakNetHookParams *params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
WORD DialogID;
BYTE style, caplen, button1_len, button2_len;
char caption[255], button1[25], button2[25], info[0x1000];
params->bitStream->ResetReadPointer();
params->bitStream->Read(DialogID);
params->bitStream->Read(style);
params->bitStream->Read(caplen);
caption[caplen] = '\0';
params->bitStream->Read(button1_len);
params->bitStream->Read(button1, button1_len);
button1[button1_len] = '\0';
params->bitStream->Read(button2_len);
params->bitStream->Read(button2, button2_len);
button2[button2_len] = '\0';
SF->getRakNet()->DecodeString(info, 0x1000, params->bitStream);
std::string cap = caption, text = info;
SF->Log("DialogID: %d - caption %s\n%s", DialogID, caption, info);
}
return true;
}