Нет, ты похоже не понял прикола.
Твой код:
Он складывает два значения, которые находятся в client_dll и struct_onl_play_of. Пусть это будет, например, 0x400000 и 0x1234 соответственно.
В результате получается 0x401234, и отталкиваясь от этого адреса ты пытался читать позиции игроков.
То, что тебе предложили:
Тут складываются опят же два значения, но они приводятся к указателю на DWORD значение. А затем по этому указателю, т.е. по адресу 0x401234, берется значение (видишь звездочку в начале?), которое там записано. Например, 0x500000.
А значит, теперь у тебя addr_client равен не 0x401234, а 0x500000, и уже отталкиваясь от этого адреса ты читаешь позиции игроков.
Так как ты не приложил код из exe, а показал лишь одну строчку из которой нихрена не понятно, то могу предположить что ты читал значение из результата сложения двух адресов, типа так:
ReadProcessMemory(
m_hProcess,
(LPCVOID)( client_dll + struct_onl_play_of ),
(LPVOID) &adres,
sizeof( adres ),
NULL
);
Короче, разбирайся с указателями. Лучше вообще начни изучать нормально плюсы, а не пытаться непойми как писать и ловить кучу ошибок из-за этого. Потому что сейчас ты явно не понимаешь что у тебя происходит в коде и как это работает.