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

  #1  
Старый 09.07.2022, 01:26
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от Dark_Knight  

Если найду сообщение, то покажу пример как с std::string можно удобно записывать строки в рпц
лайфхак: добавляем эти строки в BitStream.h куда-нибудь вниз, и кайфуем

C++:





Код:
template

inline
void
BitStream
::
Write
(
std
::
string var
)
{
Write
(
var
.
size
(
)
)
;
Write
(
var
.
c_str
(
)
,
var
.
size
(
)
)
;
}
#if __cpp_lib_string_view >= 201606
template

inline
void
BitStream
::
Write
(
std
::
string_view var
)
{
Write
(
var
.
size
(
)
)
;
Write
(
var
.
data
(
)
,
var
.
size
(
)
)
;
}
#endif


Ну и пример:

C++:





Код:
std
::
string aye_string
=
"АУЕ"
;
bs
.
Write
(
aye_string
)
;
 
Ответить с цитированием

  #2  
Старый 09.07.2022, 01:39
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Цитата:
Сообщение от kin4stat  

лайфхак: добавляем эти строки в BitStream.h куда-нибудь вниз, и кайфуем

C++:





Код:
template

inline
void
BitStream
::
Write
(
std
::
string var
)
{
Write
(
var
.
size
(
)
)
;
Write
(
var
.
c_str
(
)
,
var
.
size
(
)
)
;
}
#if __cpp_lib_string_view >= 201606
template

inline
void
BitStream
::
Write
(
std
::
string_view var
)
{
Write
(
var
.
size
(
)
)
;
Write
(
var
.
data
(
)
,
var
.
size
(
)
)
;
}
#endif


Ну и пример:

C++:





Код:
std
::
string aye_string
=
"АУЕ"
;
bs
.
Write
(
aye_string
)
;

Хороший вариант, но size вроде 4 байта занимает, а для некоторых РПЦ такое не подойдет. У RPC_ScrShowDialog параметры строк идут в одном байте. Хотя можно еще добавить в каком типе длины записывать строку.
 
Ответить с цитированием

  #3  
Старый 12.07.2022, 14:32
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

нашёл кароче функцию, думал она будет удалять масло на дорогах, типо в деревне там, но она нихуя не делает походу

C++:





Код:
void
CShadows
::
RemoveOilInArea
(
float
x1
,
float
y1
,
float
x2
,
float
y2
)
{
(
(
void
(
__cdecl
*
)
(
float
,
float
,
float
,
float
)
)
0x7074F0
)
(
x1
,
y1
,
x2
,
y2
)
;
}


а масло удалить я хочу
 
Ответить с цитированием

  #4  
Старый 14.07.2022, 05:17
horacy
Участник форума
Регистрация: 16.08.2017
Сообщений: 110
С нами: 4600979

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

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

Samp 0.3dl, Взял компрессор по этой ссылке https://github.com/imring/RakHook/tree/master/RakNet

C++:





Код:
case
RPC_ShowDialog
:
{
traceLastFunc
(
"RPC_ShowDialog"
)
;
if
(
cheat_state
->
_generic
.
cheat_panic_enabled
)
break
;
traceLastFunc
(
"RPC_ShowDialog"
)
;
/*
                {'onShowDialog',
                {dialogId = 'uint16'},
                {style = 'uint8'},
                {title = 'string8'},
                {input = 'string8'},
                {button2 = 'string8'},
                {text = 'encodedString4096'}}
                */
BitStream
bsData
(
rpcParams
->
input
,
rpcParams
->
numberOfBitsOfData
/
8
,
false
)
;
WORD dialogId
;
uint8_t
style
,
titleLen
,
button1Len
,
button2Len
,
textLen
;
char
title
[
257
]
,
button1
[
257
]
,
button2
[
257
]
,
text
[
4096
]
;
bsData
.
Read
(
dialogId
)
;
bsData
.
Read
(
style
)
;
bsData
.
Read
(
titleLen
)
;
bsData
.
Read
(
title
,
titleLen
)
;
title
[
titleLen
]
=
'\0'
;
bsData
.
Read
(
button1Len
)
;
bsData
.
Read
(
button1
,
button1Len
)
;
button1
[
button1Len
]
=
'\0'
;
bsData
.
Read
(
button2Len
)
;
bsData
.
Read
(
button2
,
button2Len
)
;
button2
[
button2Len
]
=
'\0'
;
bsData
.
Read
(
textLen
)
;
bsData
.
Read
(
text
,
textLen
)
;
text
[
textLen
]
=
'\0'
;
addMessageToChatWindow
(
"Coded: %s"
,
text
)
;
stringCompressor
->
DecodeString
(
text
,
0x1000
,
&
bsData
,
0
)
;
addMessageToChatWindow
(
"Decoded: %s"
,
text
)
;


 
Ответить с цитированием

  #5  
Старый 14.07.2022, 10:24
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Все ты правильно сделал по чтению. Одно сообщение в чате может быть до 144 символов и если при добавлении строки в чат в ней будут переносы, то автоматического разделение не будет
 
Ответить с цитированием

  #6  
Старый 14.07.2022, 10:50
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

Цитата:
Сообщение от Dark_Knight  

Все ты правильно сделал по чтению. Одно сообщение в чате может быть до 144 символов и если при добавлении строки в чат в ней будут переносы, то автоматического разделение не будет
ниче правильно он читает.

Цитата:
Сообщение от horacy  

bsData.Read(textLen); bsData.Read(text, textLen);
в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.
 
Ответить с цитированием

  #7  
Старый 14.07.2022, 20:09
horacy
Участник форума
Регистрация: 16.08.2017
Сообщений: 110
С нами: 4600979

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

Цитата:
Сообщение от sc6ut  

ниче правильно он читает.

в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.
У меня нет RPC_ScrShowDialog, только RPC_ShowDialog, поэтому я могу читать только через bsData.read, а не через params->bitStream->Read.

Цитата:
Сообщение от Спойлер  


C++:





Код:
void
HandleRPCPacketFunc
(
unsigned
char
id
,
RPCParameters
*
rpcParams
,
void
(
*
callback
)
(
RPCParameters
*
)
)
{
StringCompressor
::
AddReference
(
)
;
StringTable
::
AddReference
(
)
;
if
(
!
isCheatPanicEnabled
(
)
)
{
if
(
set
.
netPatchAssoc
[
id
]
[
INCOMING_RPC
]
!=
nullptr
&&
set
.
netPatchAssoc
[
id
]
[
INCOMING_RPC
]
->
enabled
)
return
;
}
if
(
rpcParams
!=
nullptr
&&
rpcParams
->
numberOfBitsOfData
>=
8
)


Кроме того, у меня нет структуры stSAMPDialog, но есть stDialogInfo, который содержит это:

Цитата:
Сообщение от Спойлер  


C++:





Код:
struct
stDialogInfo
{
IDirect3DDevice9
*
m_pD3DDevice
;
int
iTextPoxX
;
int
iTextPoxY
;
uint32_t
uiDialogSizeX
;
uint32_t
uiDialogSizeY
;
int
iBtnOffsetX
;
int
iBtnOffsetY
;
class
_CDXUTDialog
*
pDialog
;
class
_CDXUTListBox
*
pList
;
class
_CDXUTIMEEditBox
*
pEditBox
;
int
iIsActive
;
int
iType
;
uint32_t
DialogID
;
char
pText
[
1000
]
;
uint32_t
uiTextWidth
;
uint32_t
uiTextHeight
;
char
szCaption
[
65
]
;
int
bServerside
;
}
;


Я пытался сделать это на своей структуре, но это ничего не изменило, и при вставке структуры stSampdialog я мог только читать пустой текст.

Мне нужен текст диалога, так как никнеймы в списке игроков анонимны и были перемещены в диалог вместе с id, поэтому мне нужен текст диалога, чтобы прочитать, какой id имеет какой ник, а затем заменить никнеймы игроки.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

после загрузки samp происходит вылет игры, sampfuncs 0.3dl, отладчик выдал эти адреса. На mod_sa по умолчанию нет сбоя, что может быть причиной такого сбоя?

Код:





Код:
Exception thrown at location 0x03B1B396 (samp.dll) in gta_sa.exe: 0xC0000005: Access violation while reading at location 0x0029E868.
 
Ответить с цитированием

  #8  
Старый 15.07.2022, 12:14
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Цитата:
Сообщение от sc6ut  

ниче правильно он читает.

в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.
Точно. Там чтение в одну строку всего лишь) Оказался не прав) Но на счет вывода сообщений он весь текст с диалога в чат не выведет.
 
Ответить с цитированием

  #9  
Старый 17.07.2022, 21:27
Savchik Blazer
Постоянный
Регистрация: 20.03.2021
Сообщений: 666
С нами: 2711257

Репутация: 83


По умолчанию

Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
 
Ответить с цитированием

  #10  
Старый 17.07.2022, 21:36
Snoopcheg
Участник форума
Регистрация: 08.04.2018
Сообщений: 151
С нами: 4262512

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

Цитата:
Сообщение от Savchik Blazer  

Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
drawlist, в гугле и гитхабе имгуи должны быть примеры
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.