Другое С/С++ Вопрос - Ответ

Sasiko1

Новичок
24
0
Опишите что он делает
C++:
stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];
    if(!pPlayer) return;
 

#Rin

Известный
Всефорумный модератор
1,214
1,044
  • Нравится
Реакции: Sasiko1

_Vine_

Активный
154
57
Пропустил тему ООП и теперь страдаю при разборе других сурсов читов по типу индиго или крмп трейнера слонобойки, так как там весь код разбит на отдельные маленькие cpp/h файлы, а я пишу все в одном файле на 5к строк.

Короче говоря, появляется ошибка "class CTest * test уже определен в main.obj" если *test определен в файле test.h.
Если *test определить в main'e - то все будет норм.
А нужно определить *test в test.h.
Как решить?
upload_2018-6-18_23-24-59.png
 

#Rin

Известный
Всефорумный модератор
1,214
1,044
а я пишу все в одном файле на 5к строк.
Так делать не надо, изменил один символ и его полностью нужно перекомпилить.

В .h файле создаешь то что на скрине. В .cpp сами функции и подключенный .h файл.
В файле где нужно подключить класс, просто подключаешь .h файл.
 

_Vine_

Активный
154
57
Так делать не надо, изменил один символ и его полностью нужно перекомпилить.

В .h файле создаешь то что на скрине. В .cpp сами функции и подключенный .h файл.
В файле где нужно подключить класс, просто подключаешь .h файл.
Уже я это понял, вот и учусь делать нормально, но теперь появляются новые проблемы, по типу этой.
 

#Rin

Известный
Всефорумный модератор
1,214
1,044
Уже я это понял, вот и учусь делать нормально, но теперь появляются новые проблемы, по типу этой.
Ты подключаешь оба .h файла в разные .cpp файлы.
Но в .h файле объявлена переменная, вот и выходить в итоге два одинаковых объявления, а это уже ошибка.
Убери это:
upload_2018-6-18_23-41-3.png

В каком-то файле (.cpp) объявляешь CTest *test;
Если в другом файле нужна эта переменная то в том файле (или в .h).
extern CTest *test;
 

_Vine_

Активный
154
57
Ты подключаешь оба .h файла в разные .cpp файлы.
Но в .h файле объявлена переменная, вот и выходить в итоге два одинаковых объявления, а это уже ошибка.
Убери это:
Посмотреть вложение 15086
В каком-то файле (.cpp) объявляешь CTest *test;
Если в другом файле нужна эта переменная то в том файле (или в .h).
extern CTest *test;
Понял, знач как я хотел не выйдет, спасибо за помощь)
Думал и без extern'a получится.
 

CleanLegend

Известный
Всефорумный модератор
481
939
Как получить модель машины и её id?
Модель храниться в структуре vehicle_info:
C++:
pGTA_Vehicle->base.model_alt_id
ид машины можно получить через пул сампа, примеры есть в собейте
C++:
for (int j = 0; j < SAMP_MAX_VEHICLES; j++)
{
        
            if (g_Vehicles->iIsListed[j] != 1)
                continue;
            if (g_Vehicles->pSAMP_Vehicle[j] == NULL)
                continue;
            if (g_Vehicles->pSAMP_Vehicle[j]->pGTA_Vehicle == NULL)
                continue;
        
}
 
  • Нравится
Реакции: Sasiko1

iAmerican

Известный
Друг
612
260
Скиньте пожалуйста перевод Игровых координат в экранные. То что в сф это - SF->getGame()->convertGameCoordsToWindow
 

nt_qwark

Участник
30
1
Ребзи, возник вопрос:
Есть игра (BF4)
Я нашёл адрес функции, которую нужно занопать, но я не могу это сделать, пишет "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Шо с этим делать?

Ребзи, возник вопрос:
Есть игра (BF4)
Я нашёл адрес функции, которую нужно занопать, но я не могу это сделать, пишет "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Шо с этим делать?
Понял следующее: проблема не в области, где находятся байты (область кода), а в том, что я пытаюсь записать байты по 64 разрядному адресу, но вот вопрос КАК ЭТО СДЕЛАТЬ ТО СУКА??????? НИГДЕ НАХУЙ НЕ ПИШУТ ПРО ЭТО, Я ЕБАЛ
 
Последнее редактирование модератором:

#Rin

Известный
Всефорумный модератор
1,214
1,044
Ребзи, возник вопрос:
Есть игра (BF4)
Я нашёл адрес функции, которую нужно занопать, но я не могу это сделать, пишет "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Шо с этим делать?
VirtualProtect
Ставишь доступ на запись в память, после нопания, возвращаешь старые права доступа.
64 разрядному адресу
Че?
 

nt_qwark

Участник
30
1
VirtualProtect
Ставишь доступ на запись в память, после нопания, возвращаешь старые права доступа.

Че?
Это тут не причём, проверил

0x1409B8734 Попробуй по такому адресу что то записать, хуй чё выйдет

У 64 разрядных процессов адреса памяти достигают 8 байт, вместо 4ёх

И еще вопрос: в чём хранить собственно сами оффсеты (адреса)?
c#

А блять ясно, я не полностью выставил цель платформы: x64, из за этого intptr был размером в 4, вместо 8) Можете не отвечать на мою хуйню
 
Последнее редактирование модератором:

Azller Lollison

ещкере
Друг
1,380
2,425
как получить позицию игрока по его иду? как проверить что локальный игрок в машине за рулем?