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

  #1331  
Старый 25.02.2017, 14:23
581174
Новичок
Регистрация: 13.02.2017
Сообщений: 16
С нами: 4865612

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

Цитата:
Сообщение от Dark_Knight  
while (Process32Next(processesSnapshot, &processInfo))

Как будет работать этот цикл?

Тут нет условия, что должно заставить цикл остановиться?

Или я что-то не понимаю?
 
Ответить с цитированием

  #1332  
Старый 25.02.2017, 14:53
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Я тебе дал рабочую вещь. Юзай и не парся.

Цикл будет работать пока Process32Next будет возвращать истину.
 
Ответить с цитированием

  #1333  
Старый 25.02.2017, 17:22
_KeNy_
Новичок
Регистрация: 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
)
;
}
}
 
Ответить с цитированием

  #1334  
Старый 27.02.2017, 17:21
Jack_Savage
Участник форума
Регистрация: 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 ?

Там где взял есть функция которая возвращает значение переменной.

А вот кто этой переменной присваивает значение не нашел
 
Ответить с цитированием

  #1335  
Старый 28.02.2017, 00:07
return
Участник форума
Регистрация: 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);
 
Ответить с цитированием

  #1336  
Старый 08.03.2017, 14:11
p1cador
Участник форума
Регистрация: 19.03.2014
Сообщений: 222
С нами: 6395080

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

Почему не работает таймер?

Цитата:
Сообщение от Спойлер  




Вместо (TIMERPROC)TimerProc делал &TimerProc - результат такой же.

Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
 
Ответить с цитированием

  #1337  
Старый 08.03.2017, 14:32
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

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

Или как еще можно сделать постоянное выполнение опред. кода в dll, кроме потока с бесконечным циклом, т.к. при использовании такого потока проседает много фпс
WndProc
 
Ответить с цитированием

  #1338  
Старый 08.03.2017, 15:03
itsLegend
Флудер
Регистрация: 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
 
Ответить с цитированием

  #1339  
Старый 08.03.2017, 15:55
kuleer
Познающий
Регистрация: 06.12.2014
Сообщений: 86
С нами: 6018257

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

Добрый день. Хотел спросить, какую версию VS нужно скачать, для программирования под самп? Чтобы стабильно без ошибок. (с ссылкой желательно)
 
Ответить с цитированием

  #1340  
Старый 13.03.2017, 13:50
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

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

Возможно не в той теме спрашиваю.

Как написать бота, который будет работать без запуска GTA? Есть какие-то готовые средства?
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.