ANTICHAT

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

Lepestok 12.04.2021 19:54

Как реализовать курд через синхру в SF? Почему это не дает никакого результата?

это:





Код:

void
__stdcall
test
(
std
::
string arg
)
{
bNop
=
!
bNop
;
bTest
=
!
bTest
;
AddChat
(
ColorYellow bNop
?
"Start"
:
"Stop"
)
;
}
bool
__stdcall
onSendPacket
(
stRakNetHookParams
*
pRakHook
)
{
if
(
pRakHook
->
packetId
==
ID_VEHICLE_SYNC
)
if
(
bNop
)
return
false
;
return
true
;
}
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
bTest
)
{
if
(
PEDSELF
->
GetVehicle
(
)
)
{
if
(
GetTickCount
(
)
-
30
>
timer
)
{
stInCarData incar
;
memset
(
&
incar
,
0
,
sizeof
(
stInCarData
)
)
;
incar
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
;
if
(
GetDistance
(
incar
.
fPosition
[
0
]
,
incar
.
fPosition
[
1
]
,
incar
.
fPosition
[
2
]
,
2422.2329101563
,
1705.0350341797
,
10.751810073853
)

GetVehicle
(
)
->
Teleport
(
2422.2329101563
,
1705.0350341797
,
10.751810073853
)
;
bTest
=
false
;
bNop
=
false
;
}
CVector
vec
(
2422.2329101563
-
incar
.
fPosition
[
0
]
,
1705.0350341797
-
incar
.
fPosition
[
1
]
,
10.751810073853
-
incar
.
fPosition
[
2
]
)
;
vec
.
Normalize
(
)
;
incar
.
fMoveSpeed
[
0
]
=
0.1000100107375
;
incar
.
fMoveSpeed
[
1
]
=
0.0130210005875
;
incar
.
fMoveSpeed
[
2
]
=
0.00000000195313
;
incar
.
fPosition
[
0
]
=
incar
.
fPosition
[
0
]
+
(
vec
.
fX
*
4.5
)
;
incar
.
fPosition
[
1
]
=
incar
.
fPosition
[
1
]
+
(
vec
.
fY
*
4.5
)
;
incar
.
fPosition
[
2
]
=
incar
.
fPosition
[
2
]
+
(
vec
.
fZ
*
4.5
)
;
BitStream bs
;
bs
.
Write
(
(
BYTE
)
ID_VEHICLE_SYNC
)
;
bs
.
Write
(
(
PCHAR
)
&
incar
,
sizeof
(
stInCarData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
timer
=
GetTickCount
(
)
;
}
}
else
{
AddChat
(
ColorYellow
,
"Необходимо сесть в машину!"
)
;
bTest
=
false
;
}
}
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"test"
,
test
)
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
onSendPacket
)
;
}
}
}



Тоже самое, но на луа. Работает как часы:

Lua:





[CODE]
function
main
(
)
while
not
isSampAvailable
(
)
do
wait
(
100
)
end
sampRegisterChatCommand
(
"test"
,
function
(
)
_
,
x
,
y
,
z
=
getTargetBlipCoordinates
(
)
if
_
then
car
=
storeCarCharIsInNoSave
(
PLAYER_PED
)
if
car
then
Nop
=
true
Kaka
(
x
,
y
,
z
,
car
)
end
end
end
)
end
function
Kaka
(
x
,
y
,
z
,
car
)
local
data
=
samp_create_sync_data
(
'vehicle'
)
lua_thread
.
create
(
function
(
)
while
true
do
wait
(
30
)
xx
,
yy
,
zz
=
x
-
data
.
position
.
x
,
y
-
data
.
position
.
y
,
z
-
data
.
position
.
z
vectorPlayer
=
vector3D
(
xx
,
yy
,
zz
)
vectorPlayer
:
normalize
(
)
data
.
moveSpeed
.
x
=
0.1000100107375
data
.
moveSpeed
.
y
=
0.0130210005875
data
.
moveSpeed
.
z
=
0.00000000195313
data
.
position
.
x
=
data
.
position
.
x
+
(
vectorPlayer
.
x
*
4.5
)
data
.
position
.
y
=
data
.
position
.
y
+
(
vectorPlayer
.
y
*
4.5
)
data
.
position
.
z
=
data
.
position
.
z
+
(
vectorPlayer
.
z
*
4.5
)
data
.
send
(
)
if
getDistanceBetweenCoords2d
(
data
.
position
.
x
,
data
.
position
.
y
,
x
,
y
)


Lepestok 12.04.2021 20:29

@Seven Memz

Lepestok 13.04.2021 21:09

up

Lepestok 14.04.2021 19:27

up

oukibt 17.04.2021 03:31

Попробуй перехватывать данные и изменять их при отправке пакета синхронизацией

Lepestok 17.04.2021 19:06

Цитата:

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

Попробуй перехватывать данные и изменять их при отправке пакета синхронизацией

Пробовал. Тот же результат

al3x_ 17.04.2021 20:24

пример с меткой

C++:





Код:

#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
CVector orig
,
pos
;
bool
check
;
int
dist
{
5
}
,
delay
{
30
}
;
void
InCarSync
(
float
x
,
float
y
,
float
z
)
{
stInCarData data
{
}
;
data
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
;
data
.
fPosition
[
0
]
=
x
;
data
.
fPosition
[
1
]
=
y
;
data
.
fPosition
[
2
]
=
z
;
BitStream bs
;
bs
.
Write
(
static_cast

(
ID_VEHICLE_SYNC
)
)
;
bs
.
Write
(
reinterpret_cast

(
&
data
)
,
sizeof
(
stInCarData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
}
CVector
mark
(
)
{
CVector marker
;
for
(
int
i
=
0
;
i

(
0xBA873D
+
i
)
==
4611
)
{
marker
=
*
reinterpret_cast

(
0xBA86F8
+
0x28
+
i
)
;
reinterpret_cast

(
0x40ED80
)
(
&
marker
)
;
marker
.
fZ
=
GAME
->
GetWorld
(
)
->
FindGroundZForPosition
(
marker
.
fX
,
marker
.
fY
)
;
}
}
return
marker
;
}
void
CALLBACK
cmd
(
std
::
string
)
{
if
(
!
PEDSELF
->
GetVehicle
(
)
||
*
reinterpret_cast

(
0xBA6774
)
==
0
)
return
;
orig
=
*
PEDSELF
->
GetVehicle
(
)
->
GetPosition
(
)
;
pos
=
mark
(
)
;
check
=
!
check
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
check
?
"on"
:
"off"
)
;
}
bool
CALLBACK
outcomingData
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
PacketEnumeration
::
ID_VEHICLE_SYNC
&&
check
)
return
false
;
return
true
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
{
}
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
||
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
||
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"coord"
,
cmd
)
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
outcomingData
)
;
init
=
true
;
}
if
(
check
)
{
if
(
PEDSELF
->
GetVehicle
(
)
)
{
static
DWORD time
{
}
;
if
(
GetTickCount
(
)
-
delay
>
time
)
{
CVector bet
=
pos
-
orig
;
if
(
bet
.
Length
(
)

GetVehicle
(
)
->
Teleport
(
pos
.
fX
,
pos
.
fY
,
pos
.
fZ
+
1.f
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"success"
)
;
check
=
false
;
}
else
{
bet
.
Normalize
(
)
;
orig
.
fX
+=
bet
.
fX
*
dist
;
orig
.
fY
+=
bet
.
fY
*
dist
;
orig
.
fZ
+=
bet
.
fZ
*
dist
;
InCarSync
(
orig
.
fX
,
orig
.
fY
,
orig
.
fZ
)
;
time
=
GetTickCount
(
)
;
}
}
}
else
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"off"
)
;
check
=
false
;
}
}
}
BOOL WINAPI
DllMain
(
HINSTANCE hinstDLL
,
DWORD fdwReason
,
LPVOID
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hinstDLL
)
;
return
TRUE
;
}



Время: 03:15