partoftheworlD Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 (изменено) Код в общем просто будет показывать в игре надпись с тем, что какая-то функция в трейнере активирована или деактивирована, я ж ленивый, чтобы делать меню красивые. typedef void(*IngameMessage)(DWORD*, char*, DWORD); //Gui, msg, CRC auto Msg = memory->read<DWORD>(GUI_Base + 0x56); auto (*RightGUIMsg)(DWORD*, char*, DWORD) = reinterpret_cast<IngameMessage>(Msg); Для удобства чтения использовал typedef Такой вопрос возник, обязательно ли, описывать аргументы в левой части кода? т.е тут: auto (*RightGUIMsg)(DWORD*, char*, DWORD) Или можно просто так писать: auto *RightGUIMsg = reinterpret_cast<IngameMessage>(Msg); Изменено 6 ноября, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 По идее можно Пробовал сам? работает? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 33 минуты назад, elvis66666 сказал: По идее можно Пробовал сам? работает? Не пробовал, было поздно, а если ночью засядешь что-то делать, то это до утра. Просто, никогда не видел присваивание типа указателю который без аргументов. Разницы особой нет видимо, но код выглядит по чище. Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 12 минуты назад, partoftheworlD сказал: Не пробовал, было поздно, а если ночью засядешь что-то делать, то это до утра. Просто, никогда не видел присваивание типа указателю который без аргументов. Разницы особой нет видимо, но код выглядит по чище. Просто этой строчкой auto (*RightGUIMsg)(DWORD*, char*, int) ты показываешь что указатель ссылается на функцию, а без нее компилятор не будет знать что это функция =\ И боюсь он просто не даст скомпилироваться, когда ты будешь вызывать его с параметрами. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 (изменено) 4 минуты назад, elvis66666 сказал: не даст скомпилироваться, когда ты будешь вызывать его с параметрами. Скомпилировалось отлично, игру установлю попробую как будет отрабатывать. при наведении на RightGUIMsg студия пишет void(*RightGUIMsg)(DWORD*, char*, DWORD); видимо все нормально. Изменено 6 ноября, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 (изменено) Спасибо за ответы, тогда можно закрывать. //UPD Все работает. Изменено 6 ноября, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 (изменено) //А так помойму покрасивее, чем с TYPDEF ^_^ void (*RightGUIMsg)(char*, int,int,int); void *MSG = reinterpret_cast<RightGUIMsg>(0x41FB50); MSG("Hiho",0,0,0); Изменено 6 ноября, 2016 пользователем elvis66666 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 15 минуту назад, elvis66666 сказал: А так помойму покрасивее, чем с TYPDEF А так уже RightGUIMsg не является именем типа Ссылка на комментарий Поделиться на другие сайты Поделиться
saiberpro Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 (изменено) TypeDef - грубо говоря это оператор переопределения структур а void обозначение метода(даже не так это не метод а тип возвращаемых данных) который не возвращает ничего назад. Изменено 6 ноября, 2016 пользователем saiberpro Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения