 |
|

25.02.2017, 14:23
|
|
Новичок
Регистрация: 13.02.2017
Сообщений: 16
С нами:
4865612
Репутация:
0
|
|
while (Process32Next(processesSnapshot, &processInfo))
Как будет работать этот цикл?
Тут нет условия, что должно заставить цикл остановиться?
Или я что-то не понимаю?
|
|
|

25.02.2017, 14:53
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Я тебе дал рабочую вещь. Юзай и не парся.
Цикл будет работать пока Process32Next будет возвращать истину.
|
|
|

25.02.2017, 17:22
|
|
Новичок
Регистрация: 03.09.2015
Сообщений: 12
С нами:
5628600
Репутация:
0
|
|
Ребят, есть проблема при включении аирбрейка собейт не держит Z координату, т.е. если спуститься под землю он будет медленно падать вниз.
C++:
Код:
void
func_air_brake
(
)
{
static
float
orig_pos
[
3
]
;
static
float
fall_speed_mult
;
static
int
vkl
=
0
;
actor_info
*
info
=
g_SAMP
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
isKeyPressed
(
VK_RSHIFT
)
)
menu
.
air_brake
^=
1
;
if
(
menu
.
air_brake
)
{
vect3_copy
(
&
info
->
base
.
matrix
[
4
*
3
]
,
orig_pos
)
;
fall_speed_mult
=
1.0f
;
vkl
=
1
;
}
if
(
!
menu
.
air_brake
&&
vkl
)
{
toggleSAMPCursor
(
0
)
;
TOGGLECURSOR
(
1
)
;
TOGGLECURSOR
(
0
)
;
vkl
=
0
;
}
if
(
menu
.
air_brake
)
{
float
*
matrix
=
info
->
base
.
matrix
;
// if there's no parachute
if
(
g_SAMP
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
!=
46
)
{
vect3_copy
(
orig_pos
,
&
info
->
base
.
matrix
[
4
*
3
]
)
;
vect3_zero
(
info
->
speed
)
;
SetIsStanding
(
1
)
;
float
d
[
4
]
=
{
0.0f
,
0.0f
,
0.0f
,
0.0002f
}
;
if
(
isKeyDown
(
'W'
)
)
d
[
0
]
+=
1.0f
;
if
(
isKeyDown
(
'S'
)
)
d
[
0
]
-=
1.0f
;
if
(
isKeyDown
(
'A'
)
)
d
[
1
]
+=
1.0f
;
if
(
isKeyDown
(
'D'
)
)
d
[
1
]
-=
1.0f
;
if
(
isKeyDown
(
VK_UP
)
)
d
[
2
]
+=
1.0f
;
if
(
isKeyDown
(
VK_DOWN
)
)
d
[
2
]
-=
1.0f
;
if
(
!
vect3_near_zero
(
d
)
)
{
float
vect
[
4
]
=
{
-
d
[
1
]
,
d
[
0
]
,
d
[
2
]
,
0.0f
}
;
float
out
[
4
]
;
/* out = matrix * norm(d) */
vect3_normalize
(
vect
,
vect
)
;
matrix_vect4_mult
(
matrix
,
vect
,
out
)
;
matrix
[
4
*
3
+
0
]
+=
out
[
0
]
*
d
[
3
]
;
matrix
[
4
*
3
+
1
]
+=
out
[
1
]
*
d
[
3
]
;
matrix
[
4
*
3
+
2
]
+=
out
[
2
]
*
d
[
3
]
;
}
}
vect3_copy
(
&
matrix
[
4
*
3
]
,
orig_pos
)
;
}
}
|
|
|

27.02.2017, 17:21
|
|
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами:
5008255
Репутация:
18
|
|
C++:
Код:
typedef
struct
RpClump
RpClump
;
typedef
RpClump
*
(
*
RpClumpCallback
)
(
RpClump
*
clump
,
void
*
data
)
;
struct
RwObject
{
unsigned
char
type
;
unsigned
char
subtype
;
unsigned
char
flags
;
unsigned
char
privateFlags
;
void
*
parent
;
// should be RwFrame with RpClump
}
;
struct
RwListEntry
{
RwListEntry
*
next
,
*
prev
;
}
;
struct
RwList
{
RwListEntry root
;
}
;
struct
RpClump
{
// RenderWare (plugin) Clump (used by GTA)
RwObject object
;
RwList atomics
;
RwList lights
;
RwList cameras
;
RwListEntry globalClumps
;
RpClumpCallback callback
;
}
;
list
m_Associations
;
CAnimBlendAssociation
*
GetAnimBlendAssociation
(
CAnimBlendAssociationSAInterface
*
pInterface
)
{
if
(
pInterface
)
{
list
::
iterator iter
=
m_Associations
.
begin
(
)
;
for
(
;
iter
!=
m_Associations
.
end
(
)
;
iter
++
)
{
if
(
(
*
iter
)
->
GetInterface
(
)
==
pInterface
)
{
return
*
iter
;
}
}
CAnimBlendAssociation
*
pAssociation
=
new
CAnimBlendAssociationSA
(
pInterface
)
;
m_Associations
.
push_back
(
pAssociation
)
;
return
pAssociation
;
}
return
NULL
;
}
CAnimBlendAssociation
*
RpAnimBlendClumpGetFirstAssociation
(
RpClump
*
pClump
)
{
if
(
!
pClump
)
return
NULL
;
CAnimBlendAssociationSAInterface
*
pInterface
;
DWORD dwFunc
=
FUNC_RpAnimBlendClumpGetFirstAssociation
;
_asm
{
push pClump
call dwFunc
mov pInterface
,
eax
add esp
,
0x4
}
return
GetAnimBlendAssociation
(
pInterface
)
;
}
Ну вот нашел код для получения анимации.
Только затык, как получить RpClump ?
Там где взял есть функция которая возвращает значение переменной.
А вот кто этой переменной присваивает значение не нашел
|
|
|

28.02.2017, 00:07
|
|
Участник форума
Регистрация: 23.10.2010
Сообщений: 125
С нами:
8186006
Репутация:
1
|
|
Сообщение от _KeNy_
Ребят, есть проблема при включении аирбрейка собейт не держит Z координату, т.е. если спуститься под землю он будет медленно падать вниз.
C++:
Код:
void
func_air_brake
(
)
{
static
float
orig_pos
[
3
]
;
static
float
fall_speed_mult
;
static
int
vkl
=
0
;
actor_info
*
info
=
g_SAMP
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
isKeyPressed
(
VK_RSHIFT
)
)
menu
.
air_brake
^=
1
;
if
(
menu
.
air_brake
)
{
vect3_copy
(
&
info
->
base
.
matrix
[
4
*
3
]
,
orig_pos
)
;
fall_speed_mult
=
1.0f
;
vkl
=
1
;
}
if
(
!
menu
.
air_brake
&&
vkl
)
{
toggleSAMPCursor
(
0
)
;
TOGGLECURSOR
(
1
)
;
TOGGLECURSOR
(
0
)
;
vkl
=
0
;
}
if
(
menu
.
air_brake
)
{
float
*
matrix
=
info
->
base
.
matrix
;
// if there's no parachute
if
(
g_SAMP
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
!=
46
)
{
vect3_copy
(
orig_pos
,
&
info
->
base
.
matrix
[
4
*
3
]
)
;
vect3_zero
(
info
->
speed
)
;
SetIsStanding
(
1
)
;
float
d
[
4
]
=
{
0.0f
,
0.0f
,
0.0f
,
0.0002f
}
;
if
(
isKeyDown
(
'W'
)
)
d
[
0
]
+=
1.0f
;
if
(
isKeyDown
(
'S'
)
)
d
[
0
]
-=
1.0f
;
if
(
isKeyDown
(
'A'
)
)
d
[
1
]
+=
1.0f
;
if
(
isKeyDown
(
'D'
)
)
d
[
1
]
-=
1.0f
;
if
(
isKeyDown
(
VK_UP
)
)
d
[
2
]
+=
1.0f
;
if
(
isKeyDown
(
VK_DOWN
)
)
d
[
2
]
-=
1.0f
;
if
(
!
vect3_near_zero
(
d
)
)
{
float
vect
[
4
]
=
{
-
d
[
1
]
,
d
[
0
]
,
d
[
2
]
,
0.0f
}
;
float
out
[
4
]
;
/* out = matrix * norm(d) */
vect3_normalize
(
vect
,
vect
)
;
matrix_vect4_mult
(
matrix
,
vect
,
out
)
;
matrix
[
4
*
3
+
0
]
+=
out
[
0
]
*
d
[
3
]
;
matrix
[
4
*
3
+
1
]
+=
out
[
1
]
*
d
[
3
]
;
matrix
[
4
*
3
+
2
]
+=
out
[
2
]
*
d
[
3
]
;
}
}
vect3_copy
(
&
matrix
[
4
*
3
]
,
orig_pos
)
;
}
}
GTAfunc_LockActor(true);
|
|
|

08.03.2017, 14:11
|
|
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами:
6395080
Репутация:
128
|
|
Почему не работает таймер?
Вместо (TIMERPROC)TimerProc делал &TimerProc - результат такой же.
Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
|
|
|

08.03.2017, 14:32
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от p1cador
Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
WndProc
|
|
|

08.03.2017, 15:03
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от p1cador
Почему не работает таймер?
Сообщение от Спойлер
l_z1Ii8gLDQ.jpgitsLegend · 8 Мар 2017 в 14:03' data-fancybox="lb-post-139568" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fpp.userapi.com%2Fc63 7124%2Fv637124232%2F3916a%2Fl_z1Ii8gLDQ.jpg&hash=8 ecff658cef9f24b76951d6aacf82f49" style="cursor: pointer;" title="l_z1Ii8gLDQ.jpg">

Вместо (TIMERPROC)TimerProc делал &TimerProc - результат такой же.
Для того, чтобы работали таймеры, нужно будет обрабатывать очередь сообщений.
C++:
Код:
MSG msg
;
while
(
GetMessage
(
&
msg
,
NULL
,
0
,
0
)
)
{
TranslateMessage
(
&
msg
)
;
DispatchMessage
(
&
msg
)
;
}
Сообщение от p1cador
Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
Чтобы фпс не проседало, используй Sleep с задержкой ~100
|
|
|

08.03.2017, 15:55
|
|
Познающий
Регистрация: 06.12.2014
Сообщений: 86
С нами:
6018257
Репутация:
8
|
|
Добрый день. Хотел спросить, какую версию VS нужно скачать, для программирования под самп? Чтобы стабильно без ошибок. (с ссылкой желательно)
|
|
|

13.03.2017, 13:50
|
|
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами:
4849680
Репутация:
0
|
|
Возможно не в той теме спрашиваю.
Как написать бота, который будет работать без запуска GTA? Есть какие-то готовые средства?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|