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

  #2351  
Старый 13.05.2018, 18:29
_Vine_
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами: 5447649

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

В чем тут проблема?

При нажатии клавиши "1", "2" или "3" должна эмулироватся игровая клавиша под номером "1", которая заставляет игрока бежать вперед/назад.

Писал код на CLEO - все работает безупречно, персонаж бежит.

Писал код на SF API, используя SF->getGame()->emulGTAKey() - персонаж не бежит

Писал код на SF API, используя SF->getCLEO()->callOpcode() - персонаж не бежит

Проверял, что функции SF API вызываются, выводя в чат сообщение перед и после их вызова - сообщения в чат выводились, но игрок так же не бежал.

Код CLEO:

CLEO:





Код:
while
true
wait
0
key_down
49
jf
continue
0B56:
set_game_key
1
state -
128
end


Код SF API:

C++:





Код:
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
init
)
{
if
(
SF
->
getGame
(
)
->
isKeyDown
(
50
)
)
SF
->
getGame
(
)
->
emulateGTAKey
(
1
,
-
128
)
;
if
(
SF
->
getGame
(
)
->
isKeyDown
(
51
)
)
SF
->
getCLEO
(
)
->
callOpcode
(
"0B56: set_game_key 1 state -128"
)
;
return
;
}
if
(
!
init
)
{
if
(
GAME
==
nullptr
||
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
||
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
init
=
true
;
}
}
 
Ответить с цитированием

  #2352  
Старый 15.05.2018, 17:55
Шурик
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами: 8654409

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

Вопрос, почему зависает при использовании рендера у Windows XP? На 7, 8, 10 всё нормально работает, а на XP - зависание.
 
Ответить с цитированием

  #2353  
Старый 15.05.2018, 19:59
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Потому, что ХП - уже мертвая система. Забей на её поддержку.
 
Ответить с цитированием

  #2354  
Старый 15.05.2018, 23:34
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

  #2355  
Старый 16.05.2018, 16:55
_Vine_
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами: 5447649

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

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

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

  #2356  
Старый 16.05.2018, 22:48
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

Эмулируй RPC_DestroyPickup
Хорошо , скинь мне эмуляцию не на SF.
 
Ответить с цитированием

  #2357  
Старый 16.05.2018, 22:54
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

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

Есть у кого функция удаления пикапов?
int __thiscall stPickupPool::RemovePickup(stPickupPool *this, signed int id)

samp.dll+0xFE70
 
Ответить с цитированием

  #2358  
Старый 18.05.2018, 19:47
Шурик
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами: 8654409

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



Что за дичь? Происходит при запуске потока.
 
Ответить с цитированием

  #2359  
Старый 19.05.2018, 01:54
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

Цитата:
Сообщение от ๖ۣۣۜШурик  

Что за дичь? Происходит при запуске потока.
код кривой
 
Ответить с цитированием

  #2360  
Старый 19.05.2018, 12:49
Шурик
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами: 8654409

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

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

код кривой
C++:





Код:
bool
IsPlayerOnScreen
(
int
id
)
{
bool
value
;
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
IsPlayerDefined
(
id
,
true
)
)
{
DWORD dwFunc
=
0x536BC0
;
DWORD dwThis
=
(
DWORD
)
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTAEntity
;
_asm
{
mov        ecx
,
dwThis
            call    dwFunc
            mov        value
,
al
}
}
return
value
;
}
int
GetVehicleSpeed
(
int
id
)
{
int
speed
;
CVector vector
;
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
state
==
50
)
{
vector
.
fX
-=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
vehicle
->
speed
[
0
]
;
vector
.
fY
-=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
vehicle
->
speed
[
1
]
;
vector
.
fZ
-=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
vehicle
->
speed
[
2
]
;
speed
=
(
int
)
sqrt
(
pow
(
vector
.
fX
,
2
)
+
pow
(
vector
.
fY
,
2
)
+
pow
(
vector
.
fZ
,
2
)
)
*
125
;
}
return
speed
;
}
void
thread_radar
(
int
max
)
{
while
(
access
)
{
if
(
SF
->
getGame
(
)
->
isGTAMenuActive
(
)
)
continue
;
bool
status
=
false
;
for
(
int
id
=
0
;
id

getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
==
id
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
iIsListed
[
id
]
!=
1
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
==
NULL
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
==
NULL
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
==
NULL
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
state
!=
50
)
continue
;
else
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
vehicle
->
passengers
[
0
]
!=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
)
continue
;
else
if
(
IsPlayerOnScreen
(
id
)
)
{
int
speed
=
GetVehicleSpeed
(
id
)
;
if
(
speed
>
max
)
{
status
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"• {FFA500}[Радиолокатор] {FFFFFF}%s превысил допустимую скорость [%i км/ч]"
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetPlayerName
(
id
)
,
speed
)
;
}
}
}
Sleep
(
status
?
15000
:
1000
)
;
}
}


access = true;

P.S. Этот поток иногда включается, а иногда делает ту херь

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





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


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




ANTICHAT ™ © 2001- Antichat Kft.