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

  #1611  
Старый 28.05.2017, 15:50
Jack_Savage
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами: 5008255

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

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

convertScreenCoordsTo3D поделитесь функцией пожалуйста , а то найти не могу.
сразу ещё вопросик , как я знаю , там есть при переводе , переменная для указания глубины , как эта глубина вообще работает?
Если надо то вот вам...

C++:





Код:
#define ADDR_MENU                                0xBA67A4
void
CalcScreenCoors
(
CVector
*
vecWorld
,
CVector
*
vecScreen
)
{
D3DXMATRIX
m
(
(
float
*
)
(
0xB6FA2C
)
)
;
DWORD
*
dwLenX
=
(
DWORD
*
)
(
0xC17044
)
;
DWORD
*
dwLenY
=
(
DWORD
*
)
(
0xC17048
)
;
vecScreen
->
fX
=
vecWorld
->
fZ
*
m
.
_31
+
vecWorld
->
fY
*
m
.
_21
+
vecWorld
->
fX
*
m
.
_11
+
m
.
_41
;
vecScreen
->
fY
=
vecWorld
->
fZ
*
m
.
_32
+
vecWorld
->
fY
*
m
.
_22
+
vecWorld
->
fX
*
m
.
_12
+
m
.
_42
;
vecScreen
->
fZ
=
vecWorld
->
fZ
*
m
.
_33
+
vecWorld
->
fY
*
m
.
_23
+
vecWorld
->
fX
*
m
.
_13
+
m
.
_43
;
float
fRecip
=
1.0f
/
vecScreen
->
fZ
;
vecScreen
->
fX
*=
fRecip
*
(
*
dwLenX
)
;
vecScreen
->
fY
*=
fRecip
*
(
*
dwLenY
)
;
}
void
DrawTextB
(
int
uiLeft
,
int
uiTop
,
int
uiRight
,
int
uiBottom
,
unsigned
long
ulColor
,
const
char
*
szText
,
float
fScaleX
,
float
fScaleY
,
unsigned
long
ulFormat
,
LPD3DXFONT pDXFont
)
{
if
(
pDXFont
)
{
uiLeft
=
unsigned
int
(
(
float
)
uiLeft
*
(
1.0f
/
fScaleX
)
)
;
uiTop
=
unsigned
int
(
(
float
)
uiTop
*
(
1.0f
/
fScaleY
)
)
;
uiRight
=
unsigned
int
(
(
float
)
uiRight
*
(
1.0f
/
fScaleX
)
)
;
uiBottom
=
unsigned
int
(
(
float
)
uiBottom
*
(
1.0f
/
fScaleY
)
)
;
RECT rect
;
SetRect
(
&
rect
,
uiLeft
,
uiTop
,
uiRight
,
uiBottom
)
;
m_font
->
DrawTextA
(
NULL
,
szText
,
-
1
,
&
rect
,
ulFormat
,
ulColor
)
;
}
}
//Sprite *sp = new Sprite(200, 200, D3DCOLOR_ARGB(255, 255, 255, 255));
HRESULT D3DHook
::
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
D3DCOLOR fontColor
=
D3DCOLOR_ARGB
(
255
,
255
,
0
,
0
)
;
CVector vecScreenPosition
;
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
NULL
;
if
(
position
!=
NULL
)
{
CalcScreenCoors
(
new
CVector
(
position
[
0
]
,
position
[
1
]
,
position
[
2
]
+
1.3f
)
,
&
vecScreenPosition
)
;
}
int
iScreenPosX
=
static_cast

(
vecScreenPosition
.
fX
)
;
int
iScreenPosY
=
static_cast

(
vecScreenPosition
.
fY
)
;
if
(
*
(
PBYTE
)
ADDR_MENU
==
0
)
//В меню рендерить не будет, можно убрать если у вас по другому.
{
DrawTextB
(
iScreenPosX
,
iScreenPosY
,
iScreenPosX
,
iScreenPosY
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
,
"LocalPed"
,
1.0f
,
1.0f
,
DT_NOCLIP
|
DT_CENTER
,
m_font
)
;
}
return
origIDirect3DDevice9
->
Present
(
pSourceRect
,
pDestRect
,
hDestWindowOverride
,
pDirtyRegion
)
;
}


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


C++:





Код:
#ifndef __CVector_H
#define __CVector_H
#ifdef WIN32
#include 
#endif
#include 
#define FLOAT_EPSILON 0.0001f
/**
* CVector Structure used to store a 3D vertex.
*/
class
CVector
{
public
:
float
fX
,
fY
,
fZ
;
CVector
(
)
{
this
->
fX
=
0
;
this
->
fY
=
0
;
this
->
fZ
=
0
;
}
;
CVector
(
float
fX
,
float
fY
,
float
fZ
)
{
this
->
fX
=
fX
;
this
->
fY
=
fY
;
this
->
fZ
=
fZ
;
}
float
Normalize
(
void
)
{
float
t
=
sqrt
(
fX
*
fX
+
fY
*
fY
+
fZ
*
fZ
)
;
if
(
t
>
FLOAT_EPSILON
)
{
float
fRcpt
=
1
/
t
;
fX
*=
fRcpt
;
fY
*=
fRcpt
;
fZ
*=
fRcpt
;
}
else
t
=
0
;
return
t
;
}
float
Length
(
void
)
const
{
return
sqrt
(
(
fX
*
fX
)
+
(
fY
*
fY
)
+
(
fZ
*
fZ
)
)
;
}
float
LengthSquared
(
void
)
const
{
return
(
fX
*
fX
)
+
(
fY
*
fY
)
+
(
fZ
*
fZ
)
;
}
float
DotProduct
(
const
CVector
*
param
)
const
{
return
fX
*
param
->
fX
+
fY
*
param
->
fY
+
fZ
*
param
->
fZ
;
}
void
CrossProduct
(
const
CVector
*
param
)
{
float
_fX
=
fX
,
_fY
=
fY
,
_fZ
=
fZ
;
fX
=
_fY
*
param
->
fZ
-
param
->
fY
*
_fZ
;
fY
=
_fZ
*
param
->
fX
-
param
->
fZ
*
_fX
;
fZ
=
_fX
*
param
->
fY
-
param
->
fX
*
_fY
;
}
// Return a perpendicular direction
CVector
GetOtherAxis
(
void
)
const
{
CVector vecResult
;
if
(
std
::
abs
(
fX
)
>
std
::
abs
(
fY
)
)
vecResult
=
CVector
(
fZ
,
0
,
-
fX
)
;
else
vecResult
=
CVector
(
0
,
-
fZ
,
fY
)
;
vecResult
.
Normalize
(
)
;
return
vecResult
;
}
CVector
operator
+
(
const
CVector
&
vecRight
)
const
{
return
CVector
(
fX
+
vecRight
.
fX
,
fY
+
vecRight
.
fY
,
fZ
+
vecRight
.
fZ
)
;
}
CVector
operator
-
(
const
CVector
&
vecRight
)
const
{
return
CVector
(
fX
-
vecRight
.
fX
,
fY
-
vecRight
.
fY
,
fZ
-
vecRight
.
fZ
)
;
}
CVector
operator
*
(
const
CVector
&
vecRight
)
const
{
return
CVector
(
fX
*
vecRight
.
fX
,
fY
*
vecRight
.
fY
,
fZ
*
vecRight
.
fZ
)
;
}
CVector
operator
*
(
float
fRight
)
const
{
return
CVector
(
fX
*
fRight
,
fY
*
fRight
,
fZ
*
fRight
)
;
}
CVector
operator
/
(
const
CVector
&
vecRight
)
const
{
return
CVector
(
fX
/
vecRight
.
fX
,
fY
/
vecRight
.
fY
,
fZ
/
vecRight
.
fZ
)
;
}
CVector
operator
/
(
float
fRight
)
const
{
float
fRcpValue
=
1
/
fRight
;
return
CVector
(
fX
*
fRcpValue
,
fY
*
fRcpValue
,
fZ
*
fRcpValue
)
;
}
CVector
operator
-
(
)
const
{
return
CVector
(
-
fX
,
-
fY
,
-
fZ
)
;
}
void
operator
+=
(
float
fRight
)
{
fX
+=
fRight
;
fY
+=
fRight
;
fZ
+=
fRight
;
}
void
operator
+=
(
const
CVector
&
vecRight
)
{
fX
+=
vecRight
.
fX
;
fY
+=
vecRight
.
fY
;
fZ
+=
vecRight
.
fZ
;
}
void
operator
-=
(
float
fRight
)
{
fX
-=
fRight
;
fY
-=
fRight
;
fZ
-=
fRight
;
}
void
operator
-=
(
const
CVector
&
vecRight
)
{
fX
-=
vecRight
.
fX
;
fY
-=
vecRight
.
fY
;
fZ
-=
vecRight
.
fZ
;
}
void
operator
*=
(
float
fRight
)
{
fX
*=
fRight
;
fY
*=
fRight
;
fZ
*=
fRight
;
}
void
operator
*=
(
const
CVector
&
vecRight
)
{
fX
*=
vecRight
.
fX
;
fY
*=
vecRight
.
fY
;
fZ
*=
vecRight
.
fZ
;
}
void
operator
/=
(
float
fRight
)
{
float
fRcpValue
=
1
/
fRight
;
fX
*=
fRcpValue
;
fY
*=
fRcpValue
;
fZ
*=
fRcpValue
;
}
void
operator
/=
(
const
CVector
&
vecRight
)
{
fX
/=
vecRight
.
fX
;
fY
/=
vecRight
.
fY
;
fZ
/=
vecRight
.
fZ
;
}
bool
operator
==
(
const
CVector
&
param
)
const
{
return
(
(
fabs
(
fX
-
param
.
fX
)
=
FLOAT_EPSILON
)
||
(
fabs
(
fY
-
param
.
fY
)
>=
FLOAT_EPSILON
)
||
(
fabs
(
fZ
-
param
.
fZ
)
>=
FLOAT_EPSILON
)
)
;
}
}
;
#endif


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

  #1612  
Старый 28.05.2017, 16:18
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

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

DrawTextB
почему B?
 
Ответить с цитированием

  #1613  
Старый 28.05.2017, 16:29
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Потому, что если есть А значит должен быть и Б. Он же скриптер, который пишет на С++. Что ты от него хочешь. Он даже во функцию передает указатель на d3dfont, но использует глобальную переменную.
 
Ответить с цитированием

  #1614  
Старый 28.05.2017, 16:41
Jack_Savage
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами: 5008255

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

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

почему B?
Потому что

#define DrawText DrawTextA есть

Следовательно и функция DrawTextA

Ну я подумал а почему бы не присобачить B)
 
Ответить с цитированием

  #1615  
Старый 28.05.2017, 16:51
FYP
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами: 6935121

Репутация: 233


По умолчанию

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

Потому что
#define DrawText DrawTextA есть
Следовательно и функция DrawTextA
Ну я подумал а почему бы не присобачить B)
A = ANSI. это для разграничения типов строк, есть ещё W = Wide char, юникод.
 
Ответить с цитированием

  #1616  
Старый 28.05.2017, 16:57
Jack_Savage
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами: 5008255

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

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

A = ANSI. это для разграничения типов строк, есть ещё W = Wide char, юникод.
Про то что есть W знал. А вот про то что у них кодировка разная не знал. Спасибки :3
 
Ответить с цитированием

  #1617  
Старый 28.05.2017, 18:44
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

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

мяу
Крашит, но не при первой итерации. Однако, если убрать ppts и заменить его на sstring, то крашей не будет. Почему один и тот же механизм работает по-разному с указателем, и без?

так же я пробовал закомментировать добавление цифр к nocis и два условия склеенных, думал в них проблема - но нет. Краши без них не прекратились.
 
Ответить с цитированием

  #1618  
Старый 28.05.2017, 18:58
itsLegend
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами: 6915558

Репутация: 183


По умолчанию

У тебя размер sstring равен 144, но ты пытаешься получить доступ к 146 элементу. И вообще, странное объявление ppts. И потом ещё забыл освобождать память выделенную через new, что приведет к утечке.

http://cpp.sh/3mkpg

(размер указателя (char*) зависит от битности программы).
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

Это что ты опять такое пытаешься сделать? Может есть вариант проще, чем этот.
 
Ответить с цитированием

  #1620  
Старый 28.05.2017, 19:29
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

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

У тебя размер sstring равен 144, но ты пытаешься получить доступ к 146 элементу. И вообще, странное объявление ppts. И потом ещё забыл освобождать память выделенную через new, что приведет к утечке.

http://cpp.sh/3mkpg
(размер указателя (char*) зависит от битности системы).
создавая второй и разного объёма, я проверял, получится ли сделать динамическую память, т.к. объявить через char name[size] массив с неопределённым изначально объёмом не получится. С этим я всё сделал как задумал.

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

забыл освобождать память выделенную через new, что приведет к утечке.
а вот за это спасибо, не знал.

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

(размер указателя (char*) зависит от битности системы).
у меня 64-ая, если вдруг что

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

Это что ты опять такое пытаешься сделать? Может есть вариант проще, чем этот.
хочу сделать строку размером под ширину экрана, но никак не получалось нормально создать динамический массив, он то не читался, то выдавал нули, то я его по ошибке приводил в виде адреса, а не указателя.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

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

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

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

Сумма USDT:

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

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

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

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

×

Мои сделки

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

Сделка


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