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

  #1  
Старый 17.03.2021, 16:38
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами: 4553429

Репутация: 153


По умолчанию

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

  #2  
Старый 17.03.2021, 16:55
frit
Постоянный
Регистрация: 02.03.2020
Сообщений: 388
С нами: 3263158

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

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

Есть функция бега по координатам ?
перепиши с луа, в чем сложность?
 
Ответить с цитированием

  #3  
Старый 17.03.2021, 17:03
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами: 4553429

Репутация: 153


По умолчанию

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

перепиши с луа, в чем сложность?
Я переписывал, но не особо получилось как видишь
 
Ответить с цитированием

  #4  
Старый 17.03.2021, 18:01
frit
Постоянный
Регистрация: 02.03.2020
Сообщений: 388
С нами: 3263158

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

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

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

  #5  
Старый 17.03.2021, 18:11
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 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

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

  #6  
Старый 17.03.2021, 21:21
frit
Постоянный
Регистрация: 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
 
Ответить с цитированием

  #7  
Старый 17.03.2021, 21:33
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами: 4553429

Репутация: 153


По умолчанию

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

while без задержки - фриз, используй mainloop
Так я и использовал его в mainloop.
 
Ответить с цитированием

  #8  
Старый 17.03.2021, 21:51
Rei
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами: 4686777

Репутация: 183


По умолчанию

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

Так я и использовал его в mainloop.
в мэйнзалуп вообще не делай такие циклы

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

  #9  
Старый 17.03.2021, 22:15
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами: 4553429

Репутация: 153


По умолчанию

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

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

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



Предыдущая тема Следующая тема

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


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




ANTICHAT ™ © 2001- Antichat Kft.