
15.05.2019, 15:54
|
|
Постоянный
Регистрация: 17.06.2015
Сообщений: 578
С нами:
5739536
Репутация:
98
|
|
Как узнать текст диалога? При таком коде выводится только текст "Авторизация/Принять", то есть титла/кнопки, а дальше какие-то иероглифы, а мне надо прочитать текст, который находится в самом диалоге
Код:
Код:
bool CALLBACK incomingRPC(stRakNetHookParams* params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
short int DialogID;
char pText[64];
params->bitStream->ResetReadPointer();
params->bitStream->Read(DialogID);
params->bitStream->Read(pText);
params->bitStream->ResetReadPointer();
SF->getSAMP()->getChat()->AddChatMessage(-1, "DIALOG ID [%d]]", DialogID);
SF->getSAMP()->getChat()->AddChatMessage(-1, "Text: [%s]", pText);
};
return true;
};
|
|
|

15.05.2019, 16:13
|
|
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами:
4793630
Репутация:
133
|
|
Сообщение от HanPrincess
Как узнать текст диалога? При таком коде выводится только текст "Авторизация/Принять", то есть титла/кнопки, а дальше какие-то иероглифы, а мне надо прочитать текст, который находится в самом диалоге
Код:
Код:
bool CALLBACK incomingRPC(stRakNetHookParams* params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
short int DialogID;
char pText[64];
params->bitStream->ResetReadPointer();
params->bitStream->Read(DialogID);
params->bitStream->Read(pText);
params->bitStream->ResetReadPointer();
SF->getSAMP()->getChat()->AddChatMessage(-1, "DIALOG ID [%d]]", DialogID);
SF->getSAMP()->getChat()->AddChatMessage(-1, "Text: [%s]", pText);
};
return true;
};
Читаешь длину текста, читаешь сам текст, декодишь, убираешь мусор.
Сообщение от cakebou
Читаешь длину текста, читаешь сам текст, декодишь, убираешь мусор.
Parameters: UINT16 wDialogID, UINT8 bDialogStyle, UINT8 bTitleLength, char[] szTitle, UINT8 bButton1Len, char[] szButton1, UINT8 bButton2Len, char[] szButton2, CSTRING szInfo
|
|
|

16.05.2019, 00:40
|
|
Постоянный
Регистрация: 05.03.2014
Сообщений: 626
С нами:
6415078
Репутация:
163
|
|
Сообщение от HanPrincess
Как узнать текст диалога? При таком коде выводится только текст "Авторизация/Принять", то есть титла/кнопки, а дальше какие-то иероглифы, а мне надо прочитать текст, который находится в самом диалоге
Код:
Код:
bool CALLBACK incomingRPC(stRakNetHookParams* params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
short int DialogID;
char pText[64];
params->bitStream->ResetReadPointer();
params->bitStream->Read(DialogID);
params->bitStream->Read(pText);
params->bitStream->ResetReadPointer();
SF->getSAMP()->getChat()->AddChatMessage(-1, "DIALOG ID [%d]]", DialogID);
SF->getSAMP()->getChat()->AddChatMessage(-1, "Text: [%s]", pText);
};
return true;
};
странно что у тебя вообще что-то выводится с таким кодом.
компоненты RPC/пакета нужно получать строго по порядку.
Код:
Код:
struct stSAMPDialog
{
int iIsActive;
BYTE bDialogStyle;
WORD wDialogID;
BYTE bTitleLength;
char szTitle[257];
BYTE bButton1Len;
char szButton1[257];
BYTE bButton2Len;
char szButton2[257];
char szInfo[1000];
};
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
if (hook->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
stSAMPDialog sampDialog;
params->bitStream->ResetReadPointer();
params->bitStream->Read(sampDialog.wDialogID);
params->bitStream->Read(sampDialog.bDialogStyle);
params->bitStream->Read(sampDialog.bTitleLength);
params->bitStream->Read(sampDialog.szTitle, sampDialog.bTitleLength);
sampDialog.szTitle[sampDialog.bTitleLength] = 0;
params->bitStream->Read(sampDialog.bButton1Len);
params->bitStream->Read(sampDialog.szButton1, sampDialog.bButton1Len);
sampDialog.szButton1[sampDialog.bButton1Len] = 0;
params->bitStream->Read(sampDialog.bButton2Len);
params->bitStream->Read(sampDialog.szButton2, sampDialog.bButton2Len);
sampDialog.szButton2[sampDialog.bButton2Len] = 0;
SF->getRakNet()->DecodeString(sampDialog.szInfo, 900, params->bitStream);
SF->getSAMP()->getChat()->AddChatMessage(-1, sampDialog.szInfo);
};
return true;
};
|
|
|

16.05.2019, 21:13
|
|
Постоянный
Регистрация: 17.06.2015
Сообщений: 578
С нами:
5739536
Репутация:
98
|
|
Сообщение от astap_
странно что у тебя вообще что-то выводится с таким кодом.
компоненты RPC/пакета нужно получать строго по порядку.
Код:
Код:
struct stSAMPDialog
{
int iIsActive;
BYTE bDialogStyle;
WORD wDialogID;
BYTE bTitleLength;
char szTitle[257];
BYTE bButton1Len;
char szButton1[257];
BYTE bButton2Len;
char szButton2[257];
char szInfo[1000];
};
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
if (hook->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog)
{
stSAMPDialog sampDialog;
params->bitStream->ResetReadPointer();
params->bitStream->Read(sampDialog.wDialogID);
params->bitStream->Read(sampDialog.bDialogStyle);
params->bitStream->Read(sampDialog.bTitleLength);
params->bitStream->Read(sampDialog.szTitle, sampDialog.bTitleLength);
sampDialog.szTitle[sampDialog.bTitleLength] = 0;
params->bitStream->Read(sampDialog.bButton1Len);
params->bitStream->Read(sampDialog.szButton1, sampDialog.bButton1Len);
sampDialog.szButton1[sampDialog.bButton1Len] = 0;
params->bitStream->Read(sampDialog.bButton2Len);
params->bitStream->Read(sampDialog.szButton2, sampDialog.bButton2Len);
sampDialog.szButton2[sampDialog.bButton2Len] = 0;
SF->getRakNet()->DecodeString(sampDialog.szInfo, 900, params->bitStream);
SF->getSAMP()->getChat()->AddChatMessage(-1, sampDialog.szInfo);
};
return true;
};
Откуда тут "hook"?
Код:
Код:
hook->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog
|
|
|

17.05.2019, 22:18
|
|
Участник форума
Регистрация: 27.05.2016
Сообщений: 223
С нами:
5242744
Репутация:
83
|
|
Можно к .dll\.asi прикрутить консоль парралельно игре? Либо как легко рендерить текст поверх игры, как например это делают читы с bandicam bypass? Желательно первое.
|
|
|

18.05.2019, 10:05
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от SAMP.ASI
Можно к .dll\.asi прикрутить консоль парралельно игре? Либо как легко рендерить текст поверх игры, как например это делают читы с bandicam bypass? Желательно первое.
Работа с консолью из dll:
C++:
Код:
//Открывает консоль
AllocConsole
(
)
;
//Перенаправляет вызовы:
freopen
(
"CONIN$"
,
"r"
,
stdin
)
;
freopen
(
"CONOUT$"
,
"w"
,
stdout
)
;
freopen
(
"CONOUT$"
,
"w"
,
stderr
)
;
Для рендера текста можно создавать оверлей поверх игры или хукать функции отрисовки d3d9.
https://blast.hk/threads/32712/
|
|
|

20.05.2019, 10:44
|
|
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами:
6791977
Репутация:
183
|
|
Сообщение от SAMP.ASI
Можно к .dll\.asi прикрутить консоль парралельно игре? Либо как легко рендерить текст поверх игры, как например это делают читы с bandicam bypass? Желательно первое.
https://blast.hk/threads/22179/
|
|
|

22.05.2019, 02:05
|
|
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами:
4901705
Репутация:
98
|
|
Does anyone have addresses for gta sa radar x, y position ? Thanks.
|
|
|

22.05.2019, 03:28
|
|
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами:
4472205
Репутация:
163
|
|
Сообщение от _=Gigant=_
Does anyone have addresses for gta sa radar x, y position ? Thanks.
*(float *)0x858A10 = X;
*(float *)0x866B70 = Y;
|
|
|

22.05.2019, 02:24
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
Сообщение от cakebou
Чтобы вывестисвои данныевот код:
C++:
Код:
char
*
name
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pszLocalPlayerName
;
int
id
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
;
int
score
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
iLocalPlayerScore
;
int
ping
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
iLocalPlayerPing
;
char
buffer
[
228
]
;
sprintf
(
buffer
,
"NickName: %s , ID: %d , Ping: %d , Score: %d , "
,
name
,
id
,
ping
,
score
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buffer
)
;
Не советую юзать pszLocalPlayerName. Зачастую там какой-то баганый мусор. Получать своё ник лучше через getPlayerName.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|