{
std::ofstream cfg("n1ght.txt");
static std::string writestr;
if (g_class.events->gameKeyState(SRKeys::GameKeysOnFoot::Forward_or_Backward) || g_class.events->gameKeyState(SRKeys::GameKeysOnFoot::Left_or_Right)) {
static ULONGLONG iTick = GetTickCount64();
if (GetTickCount64() - iTick > (ULONGLONG)2000) {
writestr += (std::to_string(LOCAL_PLAYER->getPosition().fX) + ":" + std::to_string(LOCAL_PLAYER->getPosition().fY) + "\n");
iTick = GetTickCount64();
}
}
cfg.write(writestr.c_str(), writestr.length());
}
std::ofstream rd("read.txt");
static std::string writestr;
{
std::cmatch result;
std::regex reg("(.*):(.*)");
//Файл откуда берутся координаты
std::ifstream fileread("n1ght.txt");
//Делаем перебор всех строк в файле
for (std::string line; std::getline(fileread, line);) {
//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std::regex_match(line.c_str(), result, reg);
//Переводим наши координаты из string в float для дальнейшей работы
float posX = std::stof(result[1].str()); float posY = std::stof(result[2].str());
float dist = dist2D(LOCAL_PLAYER->getPosition().fX, LOCAL_PLAYER->getPosition().fY, posX, posY);
/* По идеии мы должны сделать проверку на расстояние между педом и самими координатами
* Если пед ближе к нашей точке то переключаем на следующие координаты из файла
* только я хз как)
*/
if (dist >= 1.5f)
continue;
}
//Направляем нашу камеру на координаты из файла
CameraSet(posX, posY);
//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std::regex_match(line.c_str(), result, reg);
//Переводим наши координаты из string в float для дальнейшей работы
posX = std::stof(result[1].str()); posY = std::stof(result[2].str());
float dist = dist2D(LOCAL_PLAYER->getPosition().fX, LOCAL_PLAYER->getPosition().fY, posX, posY);
if (dist <= 1.5f) {
line[i]++;
}
}
ПопробуйПривет. Это код который записывает игровые координаты педа в файл. После чего читает коорды и бегает по ним, но читается только первая строка.
Как можно перейти к следующей строке после выполнения проверки на дистанцию.
А вот так только последняя.C++:{ std::ofstream cfg("n1ght.txt"); static std::string writestr; if (g_class.events->gameKeyState(SRKeys::GameKeysOnFoot::Forward_or_Backward) || g_class.events->gameKeyState(SRKeys::GameKeysOnFoot::Left_or_Right)) { static ULONGLONG iTick = GetTickCount64(); if (GetTickCount64() - iTick > (ULONGLONG)2000) { writestr += (std::to_string(LOCAL_PLAYER->getPosition().fX) + ":" + std::to_string(LOCAL_PLAYER->getPosition().fY) + "\n"); iTick = GetTickCount64(); } } cfg.write(writestr.c_str(), writestr.length()); } std::ofstream rd("read.txt"); static std::string writestr; { std::cmatch result; std::regex reg("(.*):(.*)"); //Файл откуда берутся координаты std::ifstream fileread("n1ght.txt"); //Делаем перебор всех строк в файле for (std::string line; std::getline(fileread, line);) { //Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2] std::regex_match(line.c_str(), result, reg); //Переводим наши координаты из string в float для дальнейшей работы float posX = std::stof(result[1].str()); float posY = std::stof(result[2].str()); float dist = dist2D(LOCAL_PLAYER->getPosition().fX, LOCAL_PLAYER->getPosition().fY, posX, posY); /* По идеии мы должны сделать проверку на расстояние между педом и самими координатами * Если пед ближе к нашей точке то переключаем на следующие координаты из файла * только я хз как) */ if (dist >= 1.5f) continue; } //Направляем нашу камеру на координаты из файла CameraSet(posX, posY);
C++://Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2] std::regex_match(line.c_str(), result, reg); //Переводим наши координаты из string в float для дальнейшей работы posX = std::stof(result[1].str()); posY = std::stof(result[2].str()); float dist = dist2D(LOCAL_PLAYER->getPosition().fX, LOCAL_PLAYER->getPosition().fY, posX, posY); if (dist <= 1.5f) { line[i]++; } }
std::ifstream stream("n1ght.txt");
std::string line;
while(std::getline(stream, line))
// code
Как узнать, открыт ли чат в данный момент?
SF->getSamp()->getInput()->bEnabledКак узнать, открыт ли чат в данный момент?
По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чатКак вывести в чат сообщение на чистых плюсах?
понял, но можно кодом?По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чат
0.3.7-R3понял, но можно кодом?
uintptr_t CChatPtr = *reinterpret_cast<uintptr_t*>(0x26E8C8);
reinterpret_cast<void(__thiscall*)(uintptr_t ptr, uint32_t /*D3DCOLOR*/ color, const char* text)>(0x679F0)(CChatPtr, color, text);
понял, но можно кодом?
constexpr auto SAMP_037_R1_CHAT_OFFSET = 0x21A0E4;
constexpr auto SAMP_037_R3_CHAT_OFFSET = 0x26E8C8;
constexpr auto SAMP_037_R1_ADDCHATMSG_FUNC = 0x64010;
constexpr auto SAMP_037_R3_ADDCHATMSG_FUNC = 0x67460;
inline void AddChatMessage_R1(int nType, const char* szText, const char* szPrefix, unsigned int textColor, unsigned int prefixColor) {
using AddChatMsgProt = void (__thiscall*)(void*, int, const char*, const char*, unsigned int, unsigned int);
auto pChat = *reinterpret_cast<void**>(dwSAMP + SAMP_037_R1_CHAT_OFFSET);
return reinterpret_cast<AddChatMsgProt>(SAMP_037_R1_ADDCHATMSG_FUNC)(pChat, nType, szText, szPrefix, textColor, prefixColor);
}
inline void AddChatMessage_R3(int nType, const char* szText, const char* szPrefix, unsigned int textColor, unsigned int prefixColor) {
using AddChatMsgProt = void (__thiscall*)(void*, int, const char*, const char*, unsigned int, unsigned int);
auto pChat = *reinterpret_cast<void**>(dwSAMP + SAMP_037_R3_CHAT_OFFSET);
return reinterpret_cast<AddChatMsgProt>(SAMP_037_R3_ADDCHATMSG_FUNC)(pChat, nType, szText, szPrefix, textColor, prefixColor);
}
Требуется объявление dwSAMP, загуглил, ничего не нашёл. только начинаю свой путь в с++ )C++:constexpr auto SAMP_037_R1_CHAT_OFFSET = 0x21A0E4; constexpr auto SAMP_037_R3_CHAT_OFFSET = 0x26E8C8; constexpr auto SAMP_037_R1_ADDCHATMSG_FUNC = 0x64010; constexpr auto SAMP_037_R3_ADDCHATMSG_FUNC = 0x67460; inline void AddChatMessage_R1(int nType, const char* szText, const char* szPrefix, unsigned int textColor, unsigned int prefixColor) { using AddChatMsgProt = void (__thiscall*)(void*, int, const char*, const char*, unsigned int, unsigned int); auto pChat = *reinterpret_cast<void**>(dwSAMP + SAMP_037_R1_CHAT_OFFSET); return reinterpret_cast<AddChatMsgProt>(SAMP_037_R1_ADDCHATMSG_FUNC)(pChat, nType, szText, szPrefix, textColor, prefixColor); } inline void AddChatMessage_R3(int nType, const char* szText, const char* szPrefix, unsigned int textColor, unsigned int prefixColor) { using AddChatMsgProt = void (__thiscall*)(void*, int, const char*, const char*, unsigned int, unsigned int); auto pChat = *reinterpret_cast<void**>(dwSAMP + SAMP_037_R3_CHAT_OFFSET); return reinterpret_cast<AddChatMsgProt>(SAMP_037_R3_ADDCHATMSG_FUNC)(pChat, nType, szText, szPrefix, textColor, prefixColor); }
DWORD dwSAMP = (DWORD)GetModuleHandle("samp.dll");Требуется объявление dwSAMP, загуглил, ничего не нашёл. только начинаю свой путь в с++ )