 |
|

20.07.2019, 00:22
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от Musaigen
Из-за чего raknet хук может выдавать значение 0 при чтении структуры stOnFootData(также при чтении вообще любых структур)
RakNetHook:
Код:
bool
OnReceivePacket
(
Packet
*
p
)
{
if
(
p
->
data
==
nullptr
||
p
->
length
==
0
)
return
true
;
if
(
p
->
data
[
0
]
==
ID_PLAYER_SYNC
)
{
BitStream
bs
(
p
->
data
,
p
->
length
,
false
)
;
uint16_t
playerID
=
uint16_t
(
-
1
)
;
stOnFootData data
{
0
}
;
bs
.
ResetReadPointer
(
)
;
bs
.
IgnoreBits
(
8
)
;
bs
.
Read
(
playerID
)
;
bs
.
Read
(
(
PCHAR
)
&
data
,
sizeof
(
stOnFootData
)
)
;
// Дальше происходит форматирование и вывод.
}
}
Пытаюсь вывести айди(playerID) и позицию игрока(data.fPosition)
ID - высвечивается нормально, как положено.
Позиция игрока - выводится как 0
Конфликтов между собейтом или другими плагинами/скриптами нет.
Чтение получаемого пакета PlayerSync и VehicleSync происходит по другому. Вроде в ракботе есть полный пример, вот не полный - https://gitlab.com/RcKoid/mod-s0beit-overlight/blob/master/src/Hooked RakNet/HookedRakClient.cpp#L98
|
|
|

20.07.2019, 14:27
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Как можно точно конвертировать координаты текстдрава которые приходят с сервер на расширение моего монитора
Я делаю вот так но на мониторе отображается не точно(+- 5 пикс) с текстдравом который принял самп
C++:
Код:
x
=
(
dMaxX
/
640.
)
*
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pTextdraw
->
playerTextdraw
[
i
]
->
fX
;
y
=
(
dMaxY
/
448.
)
*
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pTextdraw
->
playerTextdraw
[
i
]
->
fY
;
SF
->
getRender
(
)
->
DrawBox
(
x
,
y
,
5
,
5
,
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pTextdraw
->
playerTextdraw
[
i
]
->
dwBoxColor
)
;
|
|
|

20.07.2019, 16:21
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от Cake_
C++:
Код:
POINT
get_screen_resolution
(
)
{
POINT pos
;
pos
.
x
=
*
(
int
*
)
0xC9C040
;
pos
.
y
=
*
(
int
*
)
0xC9C044
;
return
pos
;
}
Расширение екрана я знаю, просто с сервера приходит размещение текстдрава в float для расширения 640x448
я конвертирую для своего расширения, но выходит не точное значение
|
|
|

20.07.2019, 16:49
|
|
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами:
4793630
Репутация:
133
|
|
Сообщение от Stiopko
Расширение екрана я знаю, просто с сервера приходит размещение текстдрава в float для расширения 640x448
я конвертирую для своего расширения, но выходит не точное значение
Проще самому прибавить допустим 5 пикселей, похожий баг был с получением координат радара
|
|
|

21.07.2019, 03:21
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от Cake_
Проще самому прибавить допустим 5 пикселей, похожий баг был с получением координат радара
Как можно узнать высоту текстдрава textdraw->fBoxSizeY не подходит по причине того что данные не корректные
textdraw->fBoxSizeX вертает большее значение за textdraw->fX // корректно
textdraw->fBoxSizeY вертает меньшее значение за textdraw->fY // из под коня
// почему так?
эта зеленая черточка на скрине должна быть равна высоте текстдрава сытости, но это не так
--------------------------------------------
Решено
|
|
|

21.07.2019, 19:38
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Как получить свой CPed?
При вызове так
Код:
pGameInterface->GetPools()->GetPed((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped);
происходит краш.
При вызове так
Код:
pGameInterface->GetPools()->GetPedFromRef(pGameInterface->GetPools()->GetPedRef((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped))
также краш.
pGTA_Ped валидный
|
|
|

22.07.2019, 20:44
|
|
Новичок
Регистрация: 02.07.2019
Сообщений: 3
С нами:
3615273
Репутация:
1
|
|
Всем привет, это снова я по поводу SAMP Mobile. Научил клиент отсылать и принимать RPC пакеты. Теперь оружие видно локально в руках, у другого игрока и с пк. Теперь столкнулся с проблемой. Суть RPC_PlayerGiveTakeDamage заполнен, но урон по игроку не проходит. Как возможно решить данную ситуацию?
|
|
|

22.07.2019, 22:46
|
|
Новичок
Регистрация: 02.07.2019
Сообщений: 3
С нами:
3615273
Репутация:
1
|
|
Сообщение от Cake_
Как заполнил покажи
C++:
Код:
void
PlayerGiveTakeDamage
(
RPCParameters
*
rpcParams
)
{
Log
(
"RPC: PlayerGiveTakeDamage"
)
;
unsigned
char
*
Data
=
reinterpret_cast
(
rpcParams
->
input
)
;
int
iBitLength
=
rpcParams
->
numberOfBitsOfData
;
RakNet
::
BitStream
bsData
(
(
unsigned
char
*
)
Data
,
(
iBitLength
/
8
)
+
1
,
false
)
;
bool
flag
;
uint16_t
playerId
;
float
Damage
;
uint32_t
weaponid
;
uint32_t
bodypart
;
bsData
.
Read
(
flag
)
;
bsData
.
Read
(
playerId
)
;
bsData
.
Read
(
Damage
)
;
bsData
.
Read
(
weaponid
)
;
bsData
.
Read
(
bodypart
)
;
if
(
flag
)
{
Log
(
"> PlayerGiveTakeDamage (%d, %f, %d, %d)"
,
playerId
,
Damage
,
weaponid
,
bodypart
)
;
}
else
{
Log
(
"> PlayerGiveTakeDamage (%d, %f, %d, %d)"
,
playerId
,
Damage
,
weaponid
,
bodypart
)
;
}
pNetGame
->
GetRakClient
(
)
->
RPC
(
&
RPC_PlayerGiveTakeDamage
,
&
bsData
,
HIGH_PRIORITY
,
RELIABLE_SEQUENCED
,
0
,
false
,
UNASSIGNED_NETWORK_ID
,
NULL
)
;
}
|
|
|

23.07.2019, 01:32
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
как можно конвертирать textdrawLetterHeight в пиксели
Вот, sizex это пиксели от левого края, а LetterY что-то непонятное, не пиксели, как мне можно конвертировать LetterY(высоту) в пиксели?
|
|
|

24.07.2019, 01:13
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Сообщение от Musaigen
Как получить свой CPed?
При вызове так
Код:
pGameInterface->GetPools()->GetPed((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped);
происходит краш.
При вызове так
Код:
pGameInterface->GetPools()->GetPedFromRef(pGameInterface->GetPools()->GetPedRef((DWORD*)pPlayers->pLocalPlayer->pSAMP_Actor->pGTA_Ped))
также краш.
pGTA_Ped валидный
Если в sf api, то PEDSELF, если нет, то по адресу 0xB6F5F0.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|