 |
|

23.03.2016, 19:44
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
DWORD имеет размер 4.
Как это будет выглядить в c++ ?
0A8C: write_memory 0x747FB6 size 1 value 16843009 virtual_protect 0
0A8C: write_memory 0x74805A size 1 value 16843009 virtual_protect 0
0A8C: write_memory 0x74542B size 8 value -1869574000 virtual_protect 0
|
|
|

23.03.2016, 21:07
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Код в клео неверный. В первой и второй строке у тебя точно значение не в байтах.
Третья строка вот тебе.
*(double *)0x74542B = -1869574000
|
|
|

24.03.2016, 15:36
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Как через Switch создавать объекты с одинаковыми названиями но разными типами ?
Код:
Код:
switch (params->packetId)
{
case PacketEnumeration::ID_WEAPONS_UPDATE:
return false;
case PacketEnumeration::ID_PLAYER_SYNC:
stOnFootData *data = new stOnFootData;
break;
case PacketEnumeration::ID_VEHICLE_SYNC:
stInCarData *data = new stInCarData;
break;
case PacketEnumeration::ID_PASSENGER_SYNC:
stPassengerData *data = new stPassengerData;
break;
default:
return true;
}
memset(data, 0, sizeof (data) ); // обнуляем
|
|
|

24.03.2016, 15:59
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Gabriel__
DWORD имеет размер 4.
Как это будет выглядить в c++ ?
0A8C: write_memory 0x747FB6 size 1 value 16843009 virtual_protect 0
0A8C: write_memory 0x74805A size 1 value 16843009 virtual_protect 0
0A8C: write_memory 0x74542B size 8 value -1869574000 virtual_protect 0
В клео вроде нельзя больше 4х байт писать.
|
|
|

24.03.2016, 16:01
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Как опростить этот говнокод ? Т.е Switch создать объект нужной структуры.
Код:
Код:
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, 16:08
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Никак, но можно создать определенные функции в которые можно передавать ид пакета указатель на битстрим.
|
|
|

24.03.2016, 16:32
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
А как создать такую переменную которая будет хранить класс или структуру а потом через эту переменную создать объект.
Вот что то типо такого
myClass = &stOnFootData;
myclass * obj = new myClass;
|
|
|

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

24.03.2016, 16:46
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Не получится так. Компилятор выдаст ошибку что объект уже создан.
|
|
|

24.03.2016, 16:57
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Ну тогда в чем проблема? Опиши, что тебе надо сделать.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|