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

  #1  
Старый 29.03.2021, 19:33
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

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

хз, мб как-то и связан, CPed же можно по иду получить

C++:





Код:
CPed
*
ped
=
CPools
::
GetPed
(
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
playerID
]
->
pPlayerData
->
pSAMP_Actor
->
ulGTAEntityHandle
)
;

можешь перебрать всех педов и проверять соотвествие =D
 
Ответить с цитированием

  #2  
Старый 29.03.2021, 20:19
AdCKuY_DpO4uLa
Постоянный
Регистрация: 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
;
}
 
Ответить с цитированием

  #3  
Старый 30.03.2021, 15:32
Receiver
Постоянный
Регистрация: 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.
 
Ответить с цитированием

  #4  
Старый 30.03.2021, 16:01
waffelo
Новичок
Регистрация: 03.06.2020
Сообщений: 27
С нами: 3129532

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

Вопрос: Можно ли задать координаты ImGui::Image, если да то как.

Возможный ответ: Использовать setcursorpos?
 
Ответить с цитированием

  #5  
Старый 30.03.2021, 18:46
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

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

Вопрос: Можно ли задать координаты ImGui::Image, если да то как.
Возможный ответ: Использовать setcursorpos?
C++:





Код:
ImGui
::
SetCursorPos
(
{
X
,
Y
}
)
;
// Замени на свою позицию
ImGui
::
Image
(
.
.
.
)
;
 
Ответить с цитированием

  #6  
Старый 31.03.2021, 19:52
ishi
Постоянный
Регистрация: 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



Отчаянно прошу помощи! Нихрена нагуглить не смог, все мне известные способы конвертации -- тоже не работают! Ужасно!
 
Ответить с цитированием

  #7  
Старый 31.03.2021, 20:30
kin4stat
Флудер
Регистрация: 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
 
Ответить с цитированием

  #8  
Старый 31.03.2021, 23:40
ishi
Постоянный
Регистрация: 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
 
Ответить с цитированием

  #9  
Старый 31.03.2021, 23:43
kin4stat
Флудер
Регистрация: 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">
 
Ответить с цитированием

  #10  
Старый 01.04.2021, 09:57
ishi
Постоянный
Регистрация: 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)
 


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




ANTICHAT ™ © 2001- Antichat Kft.

×

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

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

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

Сумма USDT:

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

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

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

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

×

Мои сделки

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

Сделка


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

ESCROW ADMIN PANEL

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