- 1,606
- 1,361
0xB6F5F0 == FindPlayerPed() ?камера прикреплена к педу
0xB6F5F0 == FindPlayerPed() ?камера прикреплена к педу
как можно реализовать такое только на с++?
Lua:local weapon = getCurrentCharWeapon(playerPed) if weapon == 24 then
Мне бы что-то типо того что камера прикреплена к педу
*reinterpret_cast<unsigned*>(0x8CC388) != 15
void ReplyDialog(bool button) {
BYTE respLen = (BYTE)strlen(szInput);
RakNet::BitStream bsSend;
bsSend.Write((WORD)dialog.wDialogID);
bsSend.Write((BYTE)button);
bsSend.Write((WORD)iSelectedItem);
bsSend.Write(respLen);
bsSend.Write(szInput, respLen);
Bot::pRakInterface->RPC(&RPC_DialogResponse, &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, FALSE, UNASSIGNED_NETWORK_ID, NULL);
}
CPed +0x46C = [dword] Проверка игрока:Как можно проверить сидит ли мой пед в транспорте?
Как можно проверить сидит ли мой пед в транспорте?
if(*reinterpret_cast<std::uintptr_t*>(0xBA18FC)) {
}
if move == true then
cursor()
repeat
wait(0)
cursorx, cursory = getCursorPos()
sampToggleCursor(1)
Ini.cfg.x = cursorx
Ini.cfg.y = cursory
if isKeyDown(27) then move = 0 end
until isKeyDown(32)
sampToggleCursor(0)
sampSetCursorMode(0)
move = false
Ini.cfg.x = cursorx
Ini.cfg.y = cursory
inicfg.save(Ini, MyIni)
end
function cursor()
local x, y = getScreenResolution()
local x = x / 2
local y = x / 2
-- local x = x - 100
local y = y - -70
local result, lib = loadDynamicLibrary("user32.dll")
if result then
local result, proc = getDynamicLibraryProcedure("SetCursorPos", lib)
local a = callFunction(proc, 2, 0, x,y)
freeDynamicLibrary(lib)
end
end
sampRegisterChatCommand('cmd', function(arg)
if arg:match('%d+:%d+:%d+:%d+') then
a,b.c.e = arg:match('(%d+):(%d+):(%d+):(%d+)')
else
sampAddChatMessage('invalid parameters', -1)
end
end)
SF->getSAMP()->registerChatCommand("cmd", [](std::string param) {
SF->getSAMP()->getChat()->AddChatMessage(-1, "param: %s", param.c_str());
});
Если хотя бы один аргумент не может быть преобразован в число, мы выводим сообщение об ошибке
C++ :Lua:sampRegisterChatCommand('cmd', function(arg) local args = arg:split(":") if #args == 4 then local a,b,c,e = tonumber(args[1]), tonumber(args[2]), tonumber(args[3]), tonumber(args[4]) if a and b and c and e then -- все аргументы были успешно преобразованы в числа -- здесь можно использовать a, b, c, e в качестве аргументов для дальнейшей обработки else sampAddChatMessage('invalid parameters', -1) end else sampAddChatMessage('invalid parameters', -1) end end)
ИлиC++:void cmd(std::string arg) { std::vector<std::string> args = split(arg, ":"); if (args.size() == 4) { int a = std::stoi(args[0]); int b = std::stoi(args[1]); int c = std::stoi(args[2]); int e = std::stoi(args[3]); if (a && b && c && e) { // все аргументы были успешно преобразованы в числа // здесь можно использовать a, b, c, e в качестве аргументов для дальнейшей обработки } else { sampAddChatMessage("invalid parameters", -1); } } else { sampAddChatMessage("invalid parameters", -1); } }
C++:void cmd(std::string arg) { std::vector<std::string> args = split(arg, ":"); if (args.size() == 4 && std::all_of(args.begin(), args.end(), [](const std::string& s) { return !s.empty() && std::all_of(s.begin(), s.end(), [](char c) { return std::isdigit(c); }); })) { int a = std::stoi(args[0]); int b = std::stoi(args[1]); int c = std::stoi(args[2]); int e = std::stoi(args[3]); // все аргументы были успешно преобразованы в числа // здесь можно использовать a, b, c, e в качестве аргументов для дальнейшей обработки } else { sampAddChatMessage("invalid parameters", -1); } }
нужна помощь, не понимаю как параметры ввести юзеру.
так бы на луа выглядило:
а на плюсах я делаю что то типо:lua:sampRegisterChatCommand('cmd', function(arg) if arg:match('%d+:%d+:%d+:%d+') then a,b.c.e = arg:match('(%d+):(%d+):(%d+):(%d+)') else sampAddChatMessage('invalid parameters', -1) end end)
Но как юзеру вводить 4 аргумента, а так же проверять, верно ли он ввел?cpp(sf):SF->getSAMP()->registerChatCommand("cmd", [](std::string param) { SF->getSAMP()->getChat()->AddChatMessage(-1, "param: %s", param.c_str()); });
void __stdcall cmd(std::string arg) {
std::regex ip_regex("\\d+\\:\\d+\\:\\d+\\:\\d+");
std::smatch match;
if (std::regex_search(arg, match, ip_regex)) {
std::string ip = match[0];
std::regex time_regex("(\\d+):(\\d+):(\\d+):(\\d+)");
if (std::regex_search(ip, match, time_regex)) {
int a = std::stoi(match[1]);
int b = std::stoi(match[2]);
int c = std::stoi(match[3]);
int e = std::stoi(match[4]);
SF->getSAMP()->getChat()->AddChatMessage(-1, "%d %d %d %d", a, b, c, e);
}
else {
SF->getSAMP()->getDialog()->ShowDialog(1234, DIALOG_STYLE_MSGBOX, "назв", "текст", "далее", "отмена");
}
}
else {
SF->getSAMP()->getDialog()->ShowDialog(1234, DIALOG_STYLE_MSGBOX, "назв", "текст", "далее", "отмена");
}
}
//Вызывать: SF->getSAMP()->registerChatCommand("capturwik", cmd);
upHow to do this in C++?
Lua:local inicfg = require "inicfg" local color = imgui.ImFloat4(mainIni.color.R/255, mainIni.color.G/255, mainIni.color.B/255, 255) if imgui.ColorEdit4('Color', color) then local clr = join_argb(0, color.v[1] * 255, color.v[2] * 255, color.v[3] * 255, color.v[4] * 255) local r,g,b,a = color.v[1] * 255, color.v[2] * 255, color.v[3] * 255, color.v[4] * 255 mainIni.config.hex = ("%06X"):format(clr) mainIni.color.R = r mainIni.color.G = g mainIni.color.B = b inicfg.save(mainIni, directIni) end
Как вывести сообщение в консоль сф? если в луа это просто print()
SF->Log("Hello");