 |
|

24.03.2016, 17:08
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Хук который будет ловить исходящие пакеты. В Switch'е он будет создавать объект нужной структуры stOnFootData, stInCarData. И слудующий код будет ставить им значения скорости например. А то без этого пулучится такая хрень типо для каждой структуры будет такая хрень.
Код:
Код:
switch (params->packetId)
{
case PacketEnumeration::ID_PLAYER_SYNC:
stOnFootData data; // определяем объект в который сохраним отправляемые данные
memset(&data, 0, sizeof(stOnFootData)); // обнуляем
byte packet;
params->bitStream->ResetReadPointer(); // на всякий случай устанавливаем оффсет чтения на начало
params->bitStream->Read(packet); // читаем ID пакета
params->bitStream->Read((PCHAR)&data, sizeof(stOnFootData)); // читаем отправляемые данные
params->bitStream->ResetReadPointer(); // снова обнуляем оффсет чтения
data.byteCurrentWeapon = 0;
params->bitStream->ResetWritePointer(); // обнуляем оффсет записи
params->bitStream->Write(packet); // пишем ид пакета
params->bitStream->Write((PCHAR)&data, sizeof(stOnFootData)); // пишем обновленные данные
break;
case PacketEnumeration::ID_VEHICLE_SYNC:
stInCarData data; // определяем объект в который сохраним отправляемые данные
memset(&data, 0, sizeof(stInCarData)); // обнуляем
byte packet;
params->bitStream->ResetReadPointer(); // на всякий случай устанавливаем оффсет чтения на начало
params->bitStream->Read(packet); // читаем ID пакета
params->bitStream->Read((PCHAR)&data, sizeof(stInCarData)); // читаем отправляемые данные
params->bitStream->ResetReadPointer(); // снова обнуляем оффсет чтения
data.byteCurrentWeapon = 0;
params->bitStream->ResetWritePointer(); // обнуляем оффсет записи
params->bitStream->Write(packet); // пишем ид пакета
params->bitStream->Write((PCHAR)&data, sizeof(stInCarData)); // пишем обновленные данные
break;
case PacketEnumeration::ID_PASSENGER_SYNC:
stPassengerData data; // определяем объект в который сохраним отправляемые данные
memset(&data, 0, sizeof(stPassengerData)); // обнуляем
byte packet;
params->bitStream->ResetReadPointer(); // на всякий случай устанавливаем оффсет чтения на начало
params->bitStream->Read(packet); // читаем ID пакета
params->bitStream->Read((PCHAR)&data, sizeof(stPassengerData)); // читаем отправляемые данные
params->bitStream->ResetReadPointer(); // снова обнуляем оффсет чтения
data.byteCurrentWeapon = 0;
params->bitStream->ResetWritePointer(); // обнуляем оффсет записи
params->bitStream->Write(packet); // пишем ид пакета
params->bitStream->Write((PCHAR)&data, sizeof(stPassengerData)); // пишем обновленные данные
break;
default:
}
return true;
};
|
|
|

24.03.2016, 17:22
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Ну так у тебя верный код. Какие проблемы с ним?
|
|
|

24.03.2016, 17:26
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Это не код а говнокод. Нужно исправить. Он очень большой.
|
|
|

24.03.2016, 17:35
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Делал кто функции с переменным числом параметров? Хочу создать свою функцию логгирования данных, но не знаю как реализовать это. Делал кто такое?
Вот что хочу:
C++:
Код:
void
Log
(
char
*
String
,
.
.
.
)
{
char
out
[
1024
]
;
//sprintf(out, String, ... /*параметры*/);
va_list ap
;
va_start
(
ap
,
pText
)
;
sprintf
(
out
,
String
,
ap
)
}
Идея заключается в том, чтобы передать в sprintf список параметров из функции Log. Как это можно сделать? Отправить туда адрес, указатель или что? Теоретически это возможно, но я не знаю как это реализовать.
|
|
|

24.03.2016, 18:27
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от AWRage
Делал кто функции с переменным числом параметров? Хочу создать свою функцию логгирования данных, но не знаю как реализовать это. Делал кто такое?
Вот что хочу:
C++:
Код:
void
Log
(
char
*
String
,
.
.
.
)
{
char
out
[
1024
]
;
//sprintf(out, String, ... /*параметры*/);
va_list ap
;
va_start
(
ap
,
pText
)
;
sprintf
(
out
,
String
,
ap
)
}
Идея заключается в том, чтобы передать в sprintf список параметров из функции Log. Как это можно сделать? Отправить туда адрес, указатель или что? Теоретически это возможно, но я не знаю как это реализовать.
идёшь в собейт и смотришь как там реализовано
|
|
|

24.03.2016, 19:45
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от MISTER_GONWIK
идёшь в собейт и смотришь как там реализовано
Спасибо, нашёл. Почему то думал, что там немного другая система.
|
|
|

24.03.2016, 19:58
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Как пользоваться GetPrivateProfileInt.
Это не работает int buffer = GetPrivateProfileInt((LPCWSTR)"Section", (LPCWSTR)"Key", 0, (LPCWSTR)"Config");
И нахуя её надо LPCWSTR че её const char не устраивает.
|
|
|

24.03.2016, 20:15
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Читай справку на MSDN
|
|
|

26.03.2016, 23:08
|
|
Новичок
Регистрация: 13.12.2020
Сообщений: 0
С нами:
2851002
Репутация:
0
|
|
Подскажите, пожалуйста.
Нахожу данные о чекпоинте:
Код:
Код:
struct checkpoint *cp = (struct checkpoint *)0x00C7F158;
Нужно найти его тип, но его нет в структуре. Я узнал, что смещение (byte)+0 - это и есть тип чекпоинта, но когда делаю такое:
Код:
Код:
struct checkpoint *cp = (struct checkpoint *)0x00C7F158;
SF->getSAMP()->getChat()->AddChatMessage(0x808080, "%d", cp);
... выдает хуету.
Есть идеи?
|
|
|

27.03.2016, 00:20
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
В цикле перебирал?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|