 |

17.03.2021, 16:38
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Есть функция бега по координатам ?
|
|
|

17.03.2021, 16:55
|
|
Постоянный
Регистрация: 02.03.2020
Сообщений: 388
С нами:
3263158
Репутация:
48
|
|
Сообщение от Scar_
Есть функция бега по координатам ?
перепиши с луа, в чем сложность?
|
|
|

17.03.2021, 17:03
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Сообщение от FritRose
перепиши с луа, в чем сложность?
Я переписывал, но не особо получилось как видишь
|
|
|

17.03.2021, 18:01
|
|
Постоянный
Регистрация: 02.03.2020
Сообщений: 388
С нами:
3263158
Репутация:
48
|
|
Сообщение от Scar_
Я переписывал, но не особо получилось как видишь
что конкретно не получилось?
|
|
|

17.03.2021, 18:11
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Сообщение от FritRose
что конкретно не получилось?
Гта виснет и все, по разному я пробовал.
Оригинал на Lua:
Lua:
Код:
function
BeginToPoint
(
x
,
y
,
z
,
radius
,
move_code
,
isSprint
,
isJumping
)
repeat
local
posX
,
posY
,
posZ
=
getCharCoordinates
(
PLAYER_PED
)
setCameraToCoord
(
x
,
y
)
;
MovePlayer
(
move_code
,
isSprint
,
isJumping
)
;
local
dist
=
getDistanceBetweenCoords3d
(
x
,
y
,
z
,
posX
,
posY
,
z
)
;
wait
(
0
)
until
not
bot
.
active
.
v
or
dist
=
9909999
then
isSprint
=
false
setGameKeyState
(
14
,
255
)
;
wait
(
200
)
isSprint
=
true
end
end
end
)
if
isSprint
then
setGameKeyState
(
16
,
255
)
end
end
Переписал на с++ без прыжка:
C++:
[CODE]
void
cameraset
(
float
X
,
float
Y
)
{
CVector mypos
;
CVector enpos
;
CVector vector
;
enpos
.
fX
=
X
;
enpos
.
fY
=
Y
;
CCamera
*
pCamera
=
GAME
->
GetCamera
(
)
;
mypos
=
*
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetSource
(
)
;
vector
=
mypos
-
enpos
;
float
AngleX
=
atan2f
(
vector
.
fY
,
-
vector
.
fX
)
-
M_PI
/
2
;
*
(
float
*
)
0xB6F258
=
-
(
AngleX
-
M_PI
/
2
)
;
}
void
BeginToPoint
(
float
X
,
float
Y
,
float
radius
,
bool
sprint
,
bool
active
)
{
CVector
*
vect
=
PEDSELF
->
GetPosition
(
)
;
float
dist
=
sqrt
(
(
X
-
vect
->
fX
)
*
(
X
-
vect
->
fX
)
+
(
Y
-
vect
->
fY
)
*
(
Y
-
vect
->
fY
)
)
;
do
{
if
(
active
)
{
cameraset
(
X
,
Y
)
;
if
(
!
sprint
)
SF
->
getGame
(
)
->
emulateGTAKey
(
16
,
255
)
;
// Обычный бег
else
{
SF
->
getGame
(
)
->
emulateGTAKey
(
16
,
255
)
;
// Обычный бег
SF
->
getGame
(
)
->
emulateGTAKey
(
1
,
-
128
)
;
// Спринт
}
}
}
while
(
active
||
dist
|
|
|

17.03.2021, 21:21
|
|
Постоянный
Регистрация: 02.03.2020
Сообщений: 388
С нами:
3263158
Репутация:
48
|
|
[QUOTE="Scar_"]
Гта виснет и все, по разному я пробовал.
Оригинал на Lua:
Lua:
Код:
function
BeginToPoint
(
x
,
y
,
z
,
radius
,
move_code
,
isSprint
,
isJumping
)
repeat
local
posX
,
posY
,
posZ
=
getCharCoordinates
(
PLAYER_PED
)
setCameraToCoord
(
x
,
y
)
;
MovePlayer
(
move_code
,
isSprint
,
isJumping
)
;
local
dist
=
getDistanceBetweenCoords3d
(
x
,
y
,
z
,
posX
,
posY
,
z
)
;
wait
(
0
)
until
not
bot
.
active
.
v
or
dist
=
9909999
then
isSprint
=
false
setGameKeyState
(
14
,
255
)
;
wait
(
200
)
isSprint
=
true
end
end
end
)
if
isSprint
then
setGameKeyState
(
16
,
255
)
end
end
Переписал на с++ без прыжка:
C++:
[CODE]
void
cameraset
(
float
X
,
float
Y
)
{
CVector mypos
;
CVector enpos
;
CVector vector
;
enpos
.
fX
=
X
;
enpos
.
fY
=
Y
;
CCamera
*
pCamera
=
GAME
->
GetCamera
(
)
;
mypos
=
*
pCamera
->
GetCam
(
pCamera
->
GetActiveCam
(
)
)
->
GetSource
(
)
;
vector
=
mypos
-
enpos
;
float
AngleX
=
atan2f
(
vector
.
fY
,
-
vector
.
fX
)
-
M_PI
/
2
;
*
(
float
*
)
0xB6F258
=
-
(
AngleX
-
M_PI
/
2
)
;
}
void
BeginToPoint
(
float
X
,
float
Y
,
float
radius
,
bool
sprint
,
bool
active
)
{
CVector
*
vect
=
PEDSELF
->
GetPosition
(
)
;
float
dist
=
sqrt
(
(
X
-
vect
->
fX
)
*
(
X
-
vect
->
fX
)
+
(
Y
-
vect
->
fY
)
*
(
Y
-
vect
->
fY
)
)
;
do
{
if
(
active
)
{
cameraset
(
X
,
Y
)
;
if
(
!
sprint
)
SF
->
getGame
(
)
->
emulateGTAKey
(
16
,
255
)
;
// Обычный бег
else
{
SF
->
getGame
(
)
->
emulateGTAKey
(
16
,
255
)
;
// Обычный бег
SF
->
getGame
(
)
->
emulateGTAKey
(
1
,
-
128
)
;
// Спринт
}
}
}
while
(
active
||
dist
|
|
|

17.03.2021, 21:33
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Сообщение от FritRose
while без задержки - фриз, используй mainloop
Так я и использовал его в mainloop.
|
|
|

17.03.2021, 21:51
|
|
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами:
4686777
Репутация:
183
|
|
Сообщение от Scar_
Так я и использовал его в mainloop.
в мэйнзалуп вообще не делай такие циклы
поставь проверку на active и дистанцию. если прибежал, то вырубаешь active, иначе ставишь камеру и жмешь кнопку
|
|
|

17.03.2021, 22:15
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Сообщение от Rei
в мэйнзалуп вообще не делай такие циклы
поставь проверку на active и дистанцию. если прибежал, то вырубаешь active, иначе ставишь камеру и жмешь кнопку
Я так и думал впринципе
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|