 |

11.08.2022, 04:13
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Почему этот код не работает? Пакеты не эмулируются, не коннектится к серверу.
C++:
Код:
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
data
)
{
SF
->
getRakNet
(
)
->
emulateRecvPacket
(
data
->
packetId
,
data
->
bitStream
)
;
return
false
;
}
Аналогичная функция в Мунлоадере работает как часы и пользуется спросом, но если вбить эту же функу из СФ в поиск по форуму, то не найдётся ни одного её упоминания. Отсюда можно сделать вывод, что одна из самых важных функций во всей либе неработоспособна, либо работает неочевидным образом и никто так и не понял как её использовать. Вопрос к разработчику @FYP
😐
|
|
|

22.11.2023, 20:19
|
|
Постоянный
Регистрация: 10.04.2013
Сообщений: 783
С нами:
6888753
Репутация:
133
|
|
Сообщение от Ya Zaregalsya
Почему этот код не работает? Пакеты не эмулируются, не коннектится к серверу.
C++:
Код:
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
data
)
{
SF
->
getRakNet
(
)
->
emulateRecvPacket
(
data
->
packetId
,
data
->
bitStream
)
;
return
false
;
}
Аналогичная функция в Мунлоадере работает как часы и пользуется спросом, но если вбить эту же функу из СФ в поиск по форуму, то не найдётся ни одного её упоминания. Отсюда можно сделать вывод, что одна из самых важных функций во всей либе неработоспособна, либо работает неочевидным образом и никто так и не понял как её использовать. Вопрос к разработчику @FYP
😐
эммм
собственно соизволю ответить
1) так а с каким пакетом, то работаешь ? у тебя входящий пакет приходит попадает в блок кода в котором возвращает ничего(ложное) - отмену, типа ничо и не должно работать
2) у тебя всё пустые значения, что битстрим, что параметры к нему
3) if( params->packetId == PacketEnumeration::TytPacketNyjniy )
4) типа_пример вот как должно было идти примерно, я так понимаю тебе нужно для примера, чтоб когда соединение с сервером устанавливалось, то сразу разрывалось ?
C++:
Код:
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
data
)
{
// PACKET_CONNECTION_COOKIE = 26
if
(
params
->
packetId
==
PacketEnumeration
::
26
)
{
{
SF
->
getRakNet
(
)
->
emulateRecvPacket
(
data
->
packetId
,
data
->
bitStream
)
;
return
false
;
}
}
мало писал на сф, по идеи идом можно вставить пакет,
п.с. не бейте тапками, что апнул старую тему, не сдержался, триггернулся на этом, https://www.blast.hk/threads/151147/page-2#post-1155924 , еще давно видел эту тему, странно, что осталась без внимания, такая критика СФ и такой мастер как @Dark_Knight не пояснил еще здесь...
|
|
|

22.11.2023, 23:27
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от 01EG.
эммм
собственно соизволю ответить
1) так а с каким пакетом, то работаешь ? у тебя входящий пакет приходит попадает в блок кода в котором возвращает ничего(ложное) - отмену, типа ничо и не должно работать
2) у тебя всё пустые значения, что битстрим, что параметры к нему
3) if( params->packetId == PacketEnumeration::TytPacketNyjniy )
4) типа_пример вот как должно было идти примерно, я так понимаю тебе нужно для примера, чтоб когда соединение с сервером устанавливалось, то сразу разрывалось ?
C++:
Код:
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
data
)
{
// PACKET_CONNECTION_COOKIE = 26
if
(
params
->
packetId
==
PacketEnumeration
::
26
)
{
{
SF
->
getRakNet
(
)
->
emulateRecvPacket
(
data
->
packetId
,
data
->
bitStream
)
;
return
false
;
}
}
мало писал на сф, по идеи идом можно вставить пакет,
п.с. не бейте тапками, что апнул старую тему, не сдержался, триггернулся на этом, https://www.blast.hk/threads/151147/page-2#post-1155924 , еще давно видел эту тему, странно, что осталась без внимания, такая критика СФ и такой мастер как @Dark_Knight не пояснил еще здесь...
Спасибо чел что пытаешься помочь, но ты совсем нихера не понял что такое эмуляция. Если бы она работала в СФ, то код выше вообще никак не влиял бы на игровой процесс. Код выше чисто демонстрационный, пока ни у кого на этом форуме не получилось эмулировать пакет при помощи СФ. Если таковые есть, то пусть покажут свой пример. Я пытался сделать самыми разными способами и нифига не получилось.
|
|
|

23.11.2023, 03:33
|
|
Постоянный
Регистрация: 10.04.2013
Сообщений: 783
С нами:
6888753
Репутация:
133
|
|
Сообщение от Ya Zaregalsya
Спасибо чел что пытаешься помочь, но ты совсем нихера не понял что такое эмуляция. Если бы она работала в СФ, то код выше вообще никак не влиял бы на игровой процесс. Код выше чисто демонстрационный, пока ни у кого на этом форуме не получилось эмулировать пакет при помощи СФ. Если таковые есть, то пусть покажут свой пример. Я пытался сделать самыми разными способами и нифига не получилось.
эмулировать пакет не равно заполнить структуру и отправить ? это единственный способ в сф
|
|
|

23.11.2023, 13:21
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от 01EG.
эмулировать пакет не равно заполнить структуру и отправить ? это единственный способ в сф
Это называется отправить пакет. А эмулировать это когда ты принудительно заставляешь самп обработать твой собственный пакет, как будто он пришёл от сервера.
|
|
|

31.01.2024, 12:17
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Вроде что-то получилось.
C++:
Код:
struct
stOnFootData
{
uint16_t
sLeftRightKeys
;
uint16_t
sUpDownKeys
;
union
{
uint16_t
sKeys
;
struct
stSAMPKeys
stSampKeys
;
}
;
float
fPosition
[
3
]
;
float
fQuaternion
[
4
]
;
uint8_t
byteHealth
;
uint8_t
byteArmor
;
uint8_t
byteCurrentWeapon
;
uint8_t
byteSpecialAction
;
float
fMoveSpeed
[
3
]
;
float
fSurfingOffsets
[
3
]
;
uint16_t
sSurfingVehicleID
;
union
{
struct
{
uint16_t
id
;
uint8_t
frameDelta
;
union
{
struct
{
bool
loop
:
1
;
bool
lockX
:
1
;
bool
lockY
:
1
;
bool
freeze
:
1
;
uint8_t
time
:
2
;
uint8_t
_unused
:
1
;
bool
regular
:
1
;
}
;
uint8_t
value
;
}
flags
;
}
animation
;
struct
{
uint16_t
sCurrentAnimationID
;
uint16_t
sAnimFlags
;
}
;
}
;
}
;
void
emulOnFootData
(
int
sampPlayerId
,
stOnFootData onFootData
)
{
bool
bHasLeftRightKeys
=
onFootData
.
sLeftRightKeys
!=
0
?
true
:
false
;
bool
bHasUpDownKeys
=
onFootData
.
sUpDownKeys
!=
0
?
true
:
false
;
bool
bHasSurfInfo
=
onFootData
.
sSurfingVehicleID
!=
0
?
true
:
false
;
bool
bAnimation
=
onFootData
.
sCurrentAnimationID
!=
0
?
true
:
false
;
BitStream bs
;
bs
.
Write
(
(
unsigned
short
)
sampPlayerId
)
;
bs
.
Write
(
bHasLeftRightKeys
)
;
if
(
bHasLeftRightKeys
)
{
bs
.
Write
(
(
WORD
)
onFootData
.
sLeftRightKeys
)
;
}
bs
.
Write
(
bHasUpDownKeys
)
;
if
(
bHasUpDownKeys
)
{
bs
.
Write
(
(
WORD
)
onFootData
.
sUpDownKeys
)
;
}
bs
.
Write
(
onFootData
.
sKeys
)
;
// bs.WriteVector(onFootData.fPosition[0], onFootData.fPosition[1], onFootData.fPosition[2]);
bs
.
Write
(
onFootData
.
fPosition
[
0
]
)
;
bs
.
Write
(
onFootData
.
fPosition
[
1
]
)
;
bs
.
Write
(
onFootData
.
fPosition
[
2
]
)
;
bs
.
WriteNormQuat
(
onFootData
.
fQuaternion
[
0
]
,
onFootData
.
fQuaternion
[
1
]
,
onFootData
.
fQuaternion
[
2
]
,
onFootData
.
fQuaternion
[
3
]
)
;
BYTE byteHealthArmor
=
(
onFootData
.
byteHealth
getRakNet
(
)
->
emulateRecvPacket
(
207
,
&
bs
)
;
}
void
test
(
int
playerId
)
{
stOnFootData onFootData
;
onFootData
.
sLeftRightKeys
=
0
;
onFootData
.
sUpDownKeys
=
0
;
onFootData
.
sKeys
=
0
;
onFootData
.
fPosition
[
0
]
=
PEDSELF
->
GetPosition
(
)
->
fX
+
1.0
;
onFootData
.
fPosition
[
1
]
=
PEDSELF
->
GetPosition
(
)
->
fY
;
onFootData
.
fPosition
[
2
]
=
PEDSELF
->
GetPosition
(
)
->
fZ
;
onFootData
.
fQuaternion
[
0
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fQuaternion
[
0
]
;
onFootData
.
fQuaternion
[
1
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fQuaternion
[
1
]
;
onFootData
.
fQuaternion
[
2
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fQuaternion
[
2
]
;
onFootData
.
fQuaternion
[
3
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fQuaternion
[
3
]
;
onFootData
.
byteHealth
=
50
;
onFootData
.
byteArmor
=
100
;
onFootData
.
byteCurrentWeapon
=
24
;
onFootData
.
byteSpecialAction
=
68
;
onFootData
.
fMoveSpeed
[
0
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fMoveSpeed
[
0
]
;
onFootData
.
fMoveSpeed
[
1
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fMoveSpeed
[
1
]
;
onFootData
.
fMoveSpeed
[
2
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
fMoveSpeed
[
2
]
;
bool
bHasSurfInfo
=
false
;
onFootData
.
fSurfingOffsets
[
0
]
=
0.0
;
onFootData
.
fSurfingOffsets
[
1
]
=
0.0
;
onFootData
.
fSurfingOffsets
[
2
]
=
0.0
;
onFootData
.
sSurfingVehicleID
=
0
;
bool
bAnimation
=
true
;
/*
onFootData.animation.id = 1224;
onFootData.animation.frameDelta = 1.0;
onFootData.animation.flags.lockX = false;
onFootData.animation.flags.lockY = false;
onFootData.animation.flags.freeze = false;
onFootData.animation.flags.time = false;
onFootData.animation.flags._unused = false;
onFootData.animation.flags.regular = false;*/
onFootData
.
sCurrentAnimationID
=
984
;
onFootData
.
sAnimFlags
=
4356
;
emulOnFootData
(
playerId
,
onFootData
)
;
}
Недостающие функции битстрима можно скопипастить отсюда.
UPD: исправил фатальные опечатки.
|
|
|

03.06.2024, 17:41
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от Ya Zaregalsya
Почему этот код не работает? Пакеты не эмулируются, не коннектится к серверу.
C++:
Код:
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
data
)
{
SF
->
getRakNet
(
)
->
emulateRecvPacket
(
data
->
packetId
,
data
->
bitStream
)
;
return
false
;
}
Аналогичная функция в Мунлоадере работает как часы и пользуется спросом, но если вбить эту же функу из СФ в поиск по форуму, то не найдётся ни одного её упоминания. Отсюда можно сделать вывод, что одна из самых важных функций во всей либе неработоспособна, либо работает неочевидным образом и никто так и не понял как её использовать. Вопрос к разработчику @FYP
😐
А этот код не работал из-за того, что в СФ ид пакета идёт в куче данных с самим пакетом, но при эмуляции ожидает получить сам пакет без этого ид. С РПС таких проблем нет.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|