HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 15.05.2019, 15:54
#kweeZ
Постоянный
Регистрация: 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;
};
 
Ответить с цитированием

  #2  
Старый 15.05.2019, 16:13
Cake_
Участник форума
Регистрация: 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  

Читаешь длину текста, читаешь сам текст, декодишь, убираешь мусор.
  • ShowDialog - ID: 61
Parameters: UINT16 wDialogID, UINT8 bDialogStyle, UINT8 bTitleLength, char[] szTitle, UINT8 bButton1Len, char[] szButton1, UINT8 bButton2Len, char[] szButton2, CSTRING szInfo
 
Ответить с цитированием

  #3  
Старый 16.05.2019, 00:40
astap_
Постоянный
Регистрация: 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;
};
 
Ответить с цитированием

  #4  
Старый 16.05.2019, 21:13
#kweeZ
Постоянный
Регистрация: 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
 
Ответить с цитированием

  #5  
Старый 17.05.2019, 22:18
SAMP.ASI
Участник форума
Регистрация: 27.05.2016
Сообщений: 223
С нами: 5242744

Репутация: 83
По умолчанию

Можно к .dll\.asi прикрутить консоль парралельно игре? Либо как легко рендерить текст поверх игры, как например это делают читы с bandicam bypass? Желательно первое.
 
Ответить с цитированием

  #6  
Старый 18.05.2019, 10:05
CleanLegend
Постоянный
Регистрация: 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/
 
Ответить с цитированием

  #7  
Старый 20.05.2019, 10:44
DarkP1xel
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами: 6791977

Репутация: 183


По умолчанию

Цитата:
Сообщение от SAMP.ASI  

Можно к .dll\.asi прикрутить консоль парралельно игре? Либо как легко рендерить текст поверх игры, как например это делают читы с bandicam bypass? Желательно первое.
https://blast.hk/threads/22179/
 
Ответить с цитированием

  #8  
Старый 22.05.2019, 02:05
_=Gigant=_
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами: 4901705

Репутация: 98
По умолчанию

Does anyone have addresses for gta sa radar x, y position ? Thanks.
 
Ответить с цитированием

  #9  
Старый 22.05.2019, 03:28
ALF
Постоянный
Регистрация: 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;
 
Ответить с цитированием

  #10  
Старый 22.05.2019, 02:24
AnWu
Флудер
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...