ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Бег по координатам (https://forum.antichat.xyz/showthread.php?t=1381968)

EclipsedFlow 17.03.2021 16:38

Есть функция бега по координатам ?

frit 17.03.2021 16:55

Цитата:

Сообщение от Scar_

Есть функция бега по координатам ?

перепиши с луа, в чем сложность?

EclipsedFlow 17.03.2021 17:03

Цитата:

Сообщение от FritRose

перепиши с луа, в чем сложность?

Я переписывал, но не особо получилось как видишь

frit 17.03.2021 18:01

Цитата:

Сообщение от Scar_

Я переписывал, но не особо получилось как видишь

что конкретно не получилось?

EclipsedFlow 17.03.2021 18:11

Цитата:

Сообщение от 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


frit 17.03.2021 21:21

[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

EclipsedFlow 17.03.2021 21:33

Цитата:

Сообщение от FritRose

while без задержки - фриз, используй mainloop

Так я и использовал его в mainloop.

Rei 17.03.2021 21:51

Цитата:

Сообщение от Scar_

Так я и использовал его в mainloop.

в мэйнзалуп вообще не делай такие циклы

поставь проверку на active и дистанцию. если прибежал, то вырубаешь active, иначе ставишь камеру и жмешь кнопку

EclipsedFlow 17.03.2021 22:15

Цитата:

Сообщение от Rei

в мэйнзалуп вообще не делай такие циклы

поставь проверку на active и дистанцию. если прибежал, то вырубаешь active, иначе ставишь камеру и жмешь кнопку

Я так и думал впринципе


Время: 18:08