
29.03.2021, 19:33
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
Сообщение от AdCKuY_DpO4uLa
хз, мб как-то и связан, CPed же можно по иду получить
C++:
Код:
CPed
*
ped
=
CPools
::
GetPed
(
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
playerID
]
->
pPlayerData
->
pSAMP_Actor
->
ulGTAEntityHandle
)
;
можешь перебрать всех педов и проверять соотвествие =D
|
|
|

29.03.2021, 20:19
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
Мб кому-то пригодится. Спасибо всем за ответы
C++:
Код:
unsigned
__int16 stPlayerPool
::
GetPlayerIDFromCPed
(
CPed
*
pPed
)
{
if
(
pPed
==
FindPlayerPed
(
)
)
return
pSAMP
->
getPlayers
(
)
->
sLocalPlayerID
;
for
(
unsigned
__int16 i
=
0
;
i
!=
SAMP_MAX_PLAYERS
;
i
++
)
{
if
(
!
pSAMP
->
getPlayers
(
)
->
IsPlayerStreamed
(
i
)
)
continue
;
if
(
pPed
==
(
CPed
*
)
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
)
return
i
;
}
return
0xFFFF
;
}
|
|
|

30.03.2021, 15:32
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
1617107531863.pngReceiver · 30 Мар 2021 в 14:32' data-fancybox="lb-post-702178" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/91332/" style="cursor: pointer;" title="1617107531863.png">
Проходит несколько педов и выдаёт access violation на target_position.
|
|
|

30.03.2021, 16:01
|
|
Новичок
Регистрация: 03.06.2020
Сообщений: 27
С нами:
3129532
Репутация:
3
|
|
Вопрос: Можно ли задать координаты ImGui::Image, если да то как.
Возможный ответ: Использовать setcursorpos?
|
|
|

30.03.2021, 18:46
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от waffelo
Вопрос: Можно ли задать координаты ImGui::Image, если да то как.
Возможный ответ: Использовать setcursorpos?
C++:
Код:
ImGui
::
SetCursorPos
(
{
X
,
Y
}
)
;
// Замени на свою позицию
ImGui
::
Image
(
.
.
.
)
;
|
|
|

31.03.2021, 19:52
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
У меня уже мозг расплавился от этой чихарды.
Имеется старая игра warzone2100, где по указателю хранится строка
Это однобайтовая кодировка, но лишь cheat engine выводит её нормально
Читая её как char*, я получаю козяблики
Выводя её через opengl рендер, вижу тоже самое, что и через MessageBoxA
CharToOem и наоборот -- никак не помогают прочитать эту чёртову строку.
Нагуглил функцию "определения кодировки", и по её показаниям, это не ascii и не ut8
Сообщение от Спойлер
C++:
Код:
enum
DetectedCoding
{
ASCII
,
UTF8
,
OTHER
}
;
DetectedCoding
DetectEncoding
(
const
std
::
string
&
s
)
{
const
char
*
cs
=
s
.
c_str
(
)
;
DetectedCoding d
=
ASCII
;
while
(
*
cs
)
{
unsigned
char
b
=
(
unsigned
char
)
*
(
cs
++
)
;
if
(
b
&
0x80
)
{
// not a plain ASCII character
// if the string is already UTF8 encoded, then it must conform to a multibyte sequence standard. Let's verify it
if
(
b
Это совершенно точно НЕ мой косяк при чтении, потому что все указатели проверяются, и чтение происходит, лишь когда курсор наведён на иконку элемента, обладающего строкой по нужному оффсету:
C++:
[CODE]
int
*
ptr
=
(
int
*
)
(
(
char
*
)
GetModuleHandleA
(
0
)
+
0x9C4EE0
)
;
int
lastnumber
=
0
;
int
*
elid2
=
0
;
char
*
buff2
=
0
;
bool
checkptr
(
)
{
if
(
*
ptr
==
0
)
return
0
;
elid2
=
(
int
*
)
(
*
ptr
+
8
)
;
if
(
*
elid2
)
{
buff2
=
(
char
*
)
(
*
ptr
+
0xD4
)
;
if
(
*
(
int
*
)
elid2
>=
IDSTAT_START
)
if
(
*
(
int
*
)
elid2
Отчаянно прошу помощи! Нихрена нагуглить не смог, все мне известные способы конвертации -- тоже не работают! Ужасно!
|
|
|

31.03.2021, 20:30
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
[QUOTE="ishi"]
У меня уже мозг расплавился от этой чихарды.
Имеется старая игра warzone2100, где по указателю хранится строка
Это однобайтовая кодировка, но лишь cheat engine выводит её нормально
Читая её как char*, я получаю козяблики
Выводя её через opengl рендер, вижу тоже самое, что и через MessageBoxA
CharToOem и наоборот -- никак не помогают прочитать эту чёртову строку.
Нагуглил функцию "определения кодировки", и по её показаниям, это не ascii и не ut8
Сообщение от Спойлер
C++:
Код:
enum
DetectedCoding
{
ASCII
,
UTF8
,
OTHER
}
;
DetectedCoding
DetectEncoding
(
const
std
::
string
&
s
)
{
const
char
*
cs
=
s
.
c_str
(
)
;
DetectedCoding d
=
ASCII
;
while
(
*
cs
)
{
unsigned
char
b
=
(
unsigned
char
)
*
(
cs
++
)
;
if
(
b
&
0x80
)
{
// not a plain ASCII character
// if the string is already UTF8 encoded, then it must conform to a multibyte sequence standard. Let's verify it
if
(
b
Это совершенно точно НЕ мой косяк при чтении, потому что все указатели проверяются, и чтение происходит, лишь когда курсор наведён на иконку элемента, обладающего строкой по нужному оффсету:
C++:
[CODE]
int
*
ptr
=
(
int
*
)
(
(
char
*
)
GetModuleHandleA
(
0
)
+
0x9C4EE0
)
;
int
lastnumber
=
0
;
int
*
elid2
=
0
;
char
*
buff2
=
0
;
bool
checkptr
(
)
{
if
(
*
ptr
==
0
)
return
0
;
elid2
=
(
int
*
)
(
*
ptr
+
8
)
;
if
(
*
elid2
)
{
buff2
=
(
char
*
)
(
*
ptr
+
0xD4
)
;
if
(
*
(
int
*
)
elid2
>=
IDSTAT_START
)
if
(
*
(
int
*
)
elid2
|
|
|

31.03.2021, 23:40
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от KiN4StAt
Покажи строку в hex виде в hex view у cheatengine
Вот, например:
Код:
Код:
46 75 65 6C 20 49 6E 6A 65 63 74 69 6F 6E 20 45 6E 67 69 6E 65 20 4D 6B 33 0A 43 6F 73 74 3A 20 31 35 30 00 6F 00 75 00 6E 00
Код:
Код:
Fuel Injection Engine Mk3
Cost: 150
|
|
|

31.03.2021, 23:43
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от ishi
Вот, например:
Код:
Код:
46 75 65 6C 20 49 6E 6A 65 63 74 69 6F 6E 20 45 6E 67 69 6E 65 20 4D 6B 33 0A 43 6F 73 74 3A 20 31 35 30 00 6F 00 75 00 6E 00
Код:
Код:
Fuel Injection Engine Mk3
Cost: 150
ты явно в коде делаешь что-то не так:
1617219774434.pngkin4stat · 31 Мар 2021 в 22:43' data-fancybox="lb-post-703607" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/91536/" style="cursor: pointer;" title="1617219774434.png">

|
|
|

01.04.2021, 09:57
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от KiN4StAt
ты явно в коде делаешь что-то не так:
[S]А вот, едрись оно конём, хрен его знает, что я делаю не так, если ты прав!
Сообщение от Спойлер
C++:
Код:
BOOL __stdcall PHook
::
hkSwapBuffers
(
_In_ HDC hdc
)
{
if
(
!
init
)
{
//MessageBox(NULL, "1", "2", MB_OK);
init
=
true
;
}
HWND hwnd
=
GetForegroundWindow
(
)
;
if
(
hwnd
&&
checkptr
(
)
)
{
POINT cur
;
GetCursorPos
(
&
cur
)
;
ScreenToClient
(
hwnd
,
&
cur
)
;
PHook
::
SetupOrtho
(
)
;
glShadeModel
(
GL_SMOOTH
)
;
/*glBegin(GL_QUADS);
glColor4f(1.0F, 0.0F, 0.5F, 0.5F);
glVertex2f(cur.x + 50, cur.y + 30);
glVertex2f(cur.x + 250.0, cur.y + 30);
glVertex2f(cur.x + 250.0, cur.y + 250.0);
glVertex2f(cur.x + 50, cur.y + 250.0);
glEnd();*/
glColor4f
(
0.5F
,
7.0F
,
0.1F
,
1.0F
)
;
wglUseFontBitmaps
(
hdc
,
0
,
256
,
1000
)
;
glRasterPos2f
(
cur
.
x
+
30.0
,
cur
.
y
+
65.0
)
;
glListBase
(
1000
)
;
/*int screen[2];
glGetIntegerv(GL_VIEWPORT, screen);*/
char
totxt
[
256
]
;
char
totxt2
[
256
]
;
memset
(
totxt
,
0
,
256
)
;
OemToCharA
(
buff2
,
totxt
)
;
CharToOemA
(
buff2
,
totxt2
)
;
glCallLists
(
10
,
GL_UNSIGNED_BYTE
,
totxt
)
;
glRasterPos2f
(
cur
.
x
+
30.0
,
cur
.
y
+
80.0
)
;
glCallLists
(
20
,
GL_UNSIGNED_BYTE
,
buff2
)
;
glRasterPos2f
(
cur
.
x
+
30.0
,
cur
.
y
+
95.0
)
;
glCallLists
(
20
,
GL_UNSIGNED_BYTE
,
totxt2
)
;
glFlush
(
)
;
glDeleteLists
(
1000
,
256
)
;
PHook
::
Restore
(
)
;
}
return
oSwapBuffers
(
hdc
)
;
}
Как видно, я вывожу сразу три варианта: и оригинал, и два вида перекодирования. И все три идентичны, и выводится какая-то кракозябра. Чёрт-те знает, что происходит. У меня уже даже идей нет, я вообще всё перепробовал, что в голову приходило.[/S]
ЧУВАК, ТЫ ТАКАЯ КИСА, СПАСИБО!
ТЫ МЕНЯ НАТОЛКНУЛ НА НЕСКОЛЬКО НОВЫХ ИДЕЙ ДЛЯ ПРОВЕРКИ, И Я ЗАМЕТИЛ, ЧТО ЗАБЫЛ ВСЕГО ОДИН УРОВЕНЬ УКАЗАТЕЛЯ РАЗЫМЕНОВАТЬ
buff2 это не char*, а char**, едрёна мать, и я всё это время думал, что проблема где-то в другом месте. Капец пиздец.
В ЛЮБОМ СЛУЧАЕ СПАСИБО, БОЖЕ, КАК ЭТО КРУТО
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|