
09.07.2022, 01:26
|
|
Флудер
Регистрация: 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
)
;
|
|
|

09.07.2022, 01:39
|
|
Флудер
Регистрация: 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 параметры строк идут в одном байте. Хотя можно еще добавить в каком типе длины записывать строку.
|
|
|

12.07.2022, 14:32
|
|
Постоянный
Регистрация: 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
)
;
}
а масло удалить я хочу
|
|
|

14.07.2022, 05:17
|
|
Участник форума
Регистрация: 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
)
;

|
|
|

14.07.2022, 10:24
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Все ты правильно сделал по чтению. Одно сообщение в чате может быть до 144 символов и если при добавлении строки в чат в ней будут переносы, то автоматического разделение не будет
|
|
|

14.07.2022, 10:50
|
|
Постоянный
Регистрация: 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, но думаю что нет.
|
|
|

14.07.2022, 20:09
|
|
Участник форума
Регистрация: 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.
|
|
|

15.07.2022, 12:14
|
|
Флудер
Регистрация: 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, но думаю что нет.
Точно. Там чтение в одну строку всего лишь) Оказался не прав) Но на счет вывода сообщений он весь текст с диалога в чат не выведет.
|
|
|

17.07.2022, 21:27
|
|
Постоянный
Регистрация: 20.03.2021
Сообщений: 666
С нами:
2711257
Репутация:
83
|
|
Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
|
|
|

17.07.2022, 21:36
|
|
Участник форума
Регистрация: 08.04.2018
Сообщений: 151
С нами:
4262512
Репутация:
83
|
|
Сообщение от Savchik Blazer
Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
drawlist, в гугле и гитхабе имгуи должны быть примеры
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|