 |
|

03.07.2016, 15:59
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Сообщение от legend2360
У тебя же в конструкторе при инициализации должен быть указан int number. Как у тебя вообще скомпилировалось?
При написании поста ошибся.
Сообщение от Dark_Knight
Вот тут проблемы как раз. Зачем 2 раза тебе юзать его, если ты его объявляешь глобально?
Я не создавал два раза просто так написал
|
|
|

03.07.2016, 16:16
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Ну тогда надо смотреть на весь код проекта и смотреть в нем где ошибка. Я свои классы пишу в каждом проекте и нормально все.
|
|
|

03.07.2016, 16:21
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от Dark_Knight
Что ты хочешь конкретно?
Прочитать входящую синхру пассажира.
C++:
Код:
typedef
unsigned
short
PLAYERID
;
typedef
unsigned
short
VEHICLEID
;
#pragma pack(1)
typedef
struct
_PASSENGER_SYNC_DATA
{
VEHICLEID VehicleID
;
BYTE byteSeatFlags
:
7
;
BYTE byteDriveBy
:
1
;
BYTE byteCurrentWeapon
;
BYTE bytePlayerHealth
;
BYTE bytePlayerArmour
;
WORD lrAnalog
;
WORD udAnalog
;
WORD wKeys
;
float
vecPos
[
3
]
;
}
PASSENGER_SYNC_DATA
;
////////////////////////////////////////////////////////////////////////////////////////////////////
bool
__stdcall
PacketHook
(
stRakNetHookParams
*
hook
)
{
if
(
hook
->
packetId
==
ID_PASSENGER_SYNC
)
{
PASSENGER_SYNC_DATA psSync
;
PLAYERID SenderID
;
memset
(
&
psSync
,
0
,
sizeof
(
PASSENGER_SYNC_DATA
)
)
;
hook
->
bitStream
->
IgnoreBits
(
8
)
;
hook
->
bitStream
->
Read
(
SenderID
)
;
if
(
SenderID
=
SAMP_MAX_PLAYERS
)
return
false
;
if
(
SenderID
==
targetID2
)
{
hook
->
bitStream
->
Read
(
psSync
.
VehicleID
)
;
hook
->
bitStream
->
Read
(
psSync
.
byteSeatFlags
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
245
,
184
,
0
)
,
"ID: %d | VehID: %d"
,
SenderID
,
psSync
.
VehicleID
)
;
}
}
return
true
;
}
Вот до ида транспорта я дочитать смог а дальше ерроры((

|
|
|

03.07.2016, 16:25
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
read(psSync); пробуй так читать.
|
|
|

03.07.2016, 16:28
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от Dark_Knight
read(psSync); пробуй так читать.
Так?

|
|
|

03.07.2016, 16:30
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Только сендер ид имеет тип ворд.
|
|
|

03.07.2016, 17:02
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от Dark_Knight
Только сендер ид имеет тип ворд.
Cпасибо за помощь, разобрался.
|
|
|

03.07.2016, 17:16
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Не работает чет. Вроде должно, заменяем функцию Present (VTable[17]) на свою и в своей вызываем оригинал. До этого в другом плагине делал так же, все работало.
C++:
Код:
DWORD dwOriginal
=
0x0
;
__declspec
(
naked
)
void
hook
(
)
{
__asm pushad
__asm pushfd
Log
(
"work"
)
;
__asm popfd
__asm popad
__asm jmp
[
dwOriginal
]
}
void
init
(
)
{
Log
(
"init"
)
;
while
(
(
*
(
IDirect3DDevice9
*
*
)
0xC97C28
)
==
nullptr
)
Sleep
(
100
)
;
IDirect3DDevice9
*
Device
=
*
(
IDirect3DDevice9
*
*
)
0xC97C28
;
Log
(
"%X"
,
Device
)
;
DWORD
*
VTable
=
(
DWORD
*
)
*
(
DWORD
*
)
Device
;
Log
(
"%X"
,
VTable
)
;
MEMORY_BASIC_INFORMATION mbi
;
VirtualQuery
(
(
LPCVOID
)
VTable
,
&
mbi
,
sizeof
(
mbi
)
)
;
VirtualProtect
(
mbi
.
BaseAddress
,
mbi
.
RegionSize
,
PAGE_READWRITE
,
&
mbi
.
Protect
)
;
Log
(
"Start hook."
)
;
dwOriginal
=
VTable
[
17
]
;
VTable
[
17
]
=
(
DWORD
)
hook
;
Log
(
"Finish hook."
)
;
VirtualProtect
(
mbi
.
BaseAddress
,
mbi
.
RegionSize
,
mbi
.
Protect
,
&
mbi
.
Protect
)
;
}
|
|
|

03.07.2016, 17:33
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от Dark_Knight
Только сендер ид имеет тип ворд.
А битстрим входящий как перезаписывать?
C++:
Код:
BitStream bs
;
bs
.
Write
(
(
BYTE
)
ID_PASSENGER_SYNC
)
;
bs
.
Write
(
SenderID
)
;
bs
.
Write
(
(
PCHAR
)
&
psSync
,
sizeof
(
PASSENGER_SYNC_DATA
)
)
;
memcpy
(
hook
->
bitStream
->
GetData
(
)
,
bs
.
GetData
(
)
,
sizeof
(
BitStream
)
)
;
|
|
|

03.07.2016, 18:29
|
|
Участник форума
Регистрация: 12.07.2013
Сообщений: 161
С нами:
6755146
Репутация:
78
|
|
Сообщение от Destructor
А битстрим входящий как перезаписывать?
C++:
Код:
BitStream bs
;
bs
.
Write
(
(
BYTE
)
ID_PASSENGER_SYNC
)
;
bs
.
Write
(
SenderID
)
;
bs
.
Write
(
(
PCHAR
)
&
psSync
,
sizeof
(
PASSENGER_SYNC_DATA
)
)
;
memcpy
(
hook
->
bitStream
->
GetData
(
)
,
bs
.
GetData
(
)
,
sizeof
(
BitStream
)
)
;
hook->bitStream->Write(.....);
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|