
27.05.2017, 17:01
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Woofing Giraffe
Как сделать запрос в Google и сохранить результат в файл?
Самый простой через UrlDownloadToFile, но можно заморочиться и сделать через WiniNet, с помощью которого можно даже с api работать
|
|
|

27.05.2017, 17:07
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от SR_team
Самый простой через UrlDownloadToFile, но можно заморочиться и сделать через WiniNet, с помощью которого можно даже с api работать
Уже пробывал так, URLDownloadToFile(NULL, _T(" https://www.google.ru/#q=example"), _T("D:\\example.html"), 0, NULL);
Но в файл сохраняет только главную страницу гугла, без запроса.
----------------------------------
Решил проблему. Кодировку в конце ссылки надо ставить)
|
|
|

28.05.2017, 11:36
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Как установить переменную в качестве значения для выделения памяти?
Пробовал добавить constexpr, пробовал объявить через указатель, пробовал объявить через new, во всех случаях пишет что значение должно быть известно на момент компиляции, но значение - это всего-лишь ширина экрана, и она не может выдать ошибку, функция слишком примитивна ._.
Тем не менее, компилятор всеми силами мне препятствует.
|
|
|

28.05.2017, 12:24
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
используй new без constexpr.
Для развития: constexpr - указывает компилятору, что выполнить данную функцию или посчитать что-то надо на этапе компиляции, что бы после запуска программа восспользовалась готовым значением, а не тратила время на расчеты
|
|
|

28.05.2017, 13:11
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
convertScreenCoordsTo3D поделитесь функцией пожалуйста , а то найти не могу.
сразу ещё вопросик , как я знаю , там есть при переводе , переменная для указания глубины , как эта глубина вообще работает?
|
|
|

28.05.2017, 14:35
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от iAmerican
convertScreenCoordsTo3D поделитесь функцией пожалуйста , а то найти не могу.
сразу ещё вопросик , как я знаю , там есть при переводе , переменная для указания глубины , как эта глубина вообще работает?
представь, что камера за игроком - физический объект и то что видит игрок это одна из ее граний. Когда мы конвертируем координаты из 2д в 3д, мы берем точку в 3д мире рядом с камерой и эта точка для игрока на экране видна там же, где и 2д точка. Но эта точка может быть как в сантиметре от камеры, так и в километре (размер точки тут мы не учитываем). О том на каком расстояние от камеры будет точка определяется этой самой переменной depth, которую ты обозвал глубиной. Саму функцию можешь вытащить из соба, она в ClickWarp должна быть.
|
|
|

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

28.05.2017, 16:18
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Jack_Savage
DrawTextB
почему B?
|
|
|

28.05.2017, 16:41
|
|
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами:
5008255
Репутация:
18
|
|
Сообщение от SR_team
почему B?
Потому что
#define DrawText DrawTextA есть
Следовательно и функция DrawTextA
Ну я подумал а почему бы не присобачить B)
|
|
|

28.05.2017, 16:51
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
Сообщение от Jack_Savage
Потому что
#define DrawText DrawTextA есть
Следовательно и функция DrawTextA
Ну я подумал а почему бы не присобачить B)
A = ANSI. это для разграничения типов строк, есть ещё W = Wide char, юникод.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|