Lua - CoordMaster
Для тех, кто не любит собейты и т.д В этом курде можно настроить полностью все, можно даже подобрать обход под свою задержку и варпы. Настройка: Расстояние - дальность варпов курдмастера Задержка - задержка перед каждым варпом Высота - высота подгружения под землю, чем глубже в минус - тем...
www.blast.hk
Can someone edit this and make it work with normal checkpoints please? This only works with race checkpoints...
Код:
slot0 = require("samp.events")
require("encoding").default = "CP1251"
slot4 = require("encoding").UTF8
slot5, slot6 = getScreenResolution()
slot7 = require("imgui").ImBool(false)
slot8 = require("imgui").ImBool(false)
slot9 = 1.2
setposs = false
sendpll = false
function apply_custom_style()
slot0 = slot0
uv0.SwitchContext()
slot0 = uv0.GetStyle()
slot0.WindowRounding = 2
slot0.WindowTitleAlign = uv0.ImVec2(0.5, 0.84)
slot0.ChildWindowRounding = 2
slot0.FrameRounding = 2
slot0.ItemSpacing = uv0.ImVec2(5, 4)
slot0.ScrollbarSize = 13
slot0.ScrollbarRounding = 0
slot0.GrabMinSize = 8
slot0.GrabRounding = 1
slot0.Colors[uv0.Col.Text] = slot3(1, 1, 1, 1)
slot0.Colors[uv0.Col.TextDisabled] = slot3(0.5, 0.5, 0.5, 1)
slot0.Colors[uv0.Col.WindowBg] = slot3(0.06, 0.06, 0.06, 0.94)
slot0.Colors[uv0.Col.ChildWindowBg] = slot3(1, 1, 1, 0)
slot0.Colors[uv0.Col.PopupBg] = slot3(0.08, 0.08, 0.08, 0.94)
slot0.Colors[uv0.Col.ComboBg] = slot0.Colors[uv0.Col.PopupBg]
slot0.Colors[uv0.Col.Border] = slot3(0.43, 0.43, 0.5, 0.5)
slot0.Colors[uv0.Col.BorderShadow] = slot3(0, 0, 0, 0)
slot0.Colors[uv0.Col.FrameBg] = slot3(0.16, 0.29, 0.48, 0.54)
slot0.Colors[uv0.Col.FrameBgHovered] = slot3(0.26, 0.59, 0.98, 0.4)
slot0.Colors[uv0.Col.FrameBgActive] = slot3(0.26, 0.59, 0.98, 0.67)
slot0.Colors[uv0.Col.TitleBg] = slot3(0.04, 0.04, 0.04, 1)
slot0.Colors[uv0.Col.TitleBgActive] = slot3(0.16, 0.29, 0.48, 1)
slot0.Colors[uv0.Col.TitleBgCollapsed] = slot3(0, 0, 0, 0.51)
slot0.Colors[uv0.Col.MenuBarBg] = slot3(0.14, 0.14, 0.14, 1)
slot0.Colors[uv0.Col.ScrollbarBg] = slot3(0.02, 0.02, 0.02, 0.53)
slot0.Colors[uv0.Col.ScrollbarGrab] = slot3(0.31, 0.31, 0.31, 1)
slot0.Colors[uv0.Col.ScrollbarGrabHovered] = slot3(0.41, 0.41, 0.41, 1)
slot0.Colors[uv0.Col.ScrollbarGrabActive] = slot3(0.51, 0.51, 0.51, 1)
slot0.Colors[uv0.Col.CheckMark] = slot3(0.26, 0.59, 0.98, 1)
slot0.Colors[uv0.Col.SliderGrab] = slot3(0.24, 0.52, 0.88, 1)
slot0.Colors[uv0.Col.SliderGrabActive] = slot3(0.26, 0.59, 0.98, 1)
slot0.Colors[uv0.Col.Button] = slot3(0.26, 0.59, 0.98, 0.4)
slot0.Colors[uv0.Col.ButtonHovered] = slot3(0.26, 0.59, 0.98, 1)
slot0.Colors[uv0.Col.ButtonActive] = slot3(0.06, 0.53, 0.98, 1)
slot0.Colors[uv0.Col.Header] = slot3(0.26, 0.59, 0.98, 0.31)
slot0.Colors[uv0.Col.HeaderHovered] = slot3(0.26, 0.59, 0.98, 0.8)
slot0.Colors[uv0.Col.HeaderActive] = slot3(0.26, 0.59, 0.98, 1)
slot0.Colors[uv0.Col.Separator] = slot0.Colors[uv0.Col.Border]
slot0.Colors[uv0.Col.SeparatorHovered] = slot3(0.26, 0.59, 0.98, 0.78)
slot0.Colors[uv0.Col.SeparatorActive] = slot3(0.26, 0.59, 0.98, 1)
slot0.Colors[uv0.Col.ResizeGrip] = slot3(0.26, 0.59, 0.98, 0.25)
slot0.Colors[uv0.Col.ResizeGripHovered] = slot3(0.26, 0.59, 0.98, 0.67)
slot0.Colors[uv0.Col.ResizeGripActive] = slot3(0.26, 0.59, 0.98, 0.95)
slot0.Colors[uv0.Col.CloseButton] = slot3(0.41, 0.41, 0.41, 0.5)
slot0.Colors[uv0.Col.CloseButtonHovered] = slot3(0.98, 0.39, 0.36, 1)
slot0.Colors[uv0.Col.CloseButtonActive] = slot3(0.98, 0.39, 0.36, 1)
slot0.Colors[uv0.Col.PlotLines] = slot3(0.61, 0.61, 0.61, 1)
slot0.Colors[uv0.Col.PlotLinesHovered] = slot3(1, 0.43, 0.35, 1)
slot0.Colors[uv0.Col.PlotHistogram] = slot3(0.9, 0.7, 0, 1)
slot0.Colors[uv0.Col.PlotHistogramHovered] = slot3(1, 0.6, 0, 1)
slot0.Colors[uv0.Col.TextSelectedBg] = slot3(0.26, 0.59, 0.98, 0.35)
slot0.Colors[uv0.Col.ModalWindowDarkening] = slot3(0.8, 0.8, 0.8, 0.35)
end
apply_custom_style()
if not doesFileExist("moonloader/config/coord.ini") then
require("inicfg").save({
main = {
delta = 1,
height = -10,
time = 0,
surfX = 0,
surfZ = 0,
surfY = 0,
nopSetPos = false,
nopPlayerSync = false,
mSpeedZ = 0,
mSpeedY = 0,
visible = true,
mSpeedX = 0,
bypass = false
}
}, "coord.ini")
end
slot3.save(slot10, "coord.ini")
slot11 = slot1.ImInt(slot3.load(slot10, "coord.ini").main.time)
slot12 = slot1.ImInt(slot3.load(slot10, "coord.ini").main.delta)
slot13 = slot1.ImInt(slot3.load(slot10, "coord.ini").main.height)
slot14 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.mSpeedX)
slot15 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.mSpeedY)
slot16 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.mSpeedZ)
slot17 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.surfX)
slot18 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.surfY)
slot19 = slot1.ImFloat(slot3.load(slot10, "coord.ini").main.surfZ)
slot20 = slot1.ImBool(slot3.load(slot10, "coord.ini").main.nopPlayerSync)
slot21 = slot1.ImBool(slot3.load(slot10, "coord.ini").main.nopSetPos)
slot22 = slot3.load(slot10, "coord.ini").main.visible
slot23 = slot3.load(slot10, "coord.ini").main.bypass
format = "%.2f"
function main()
repeat
wait(0)
until isSampAvailable()
sampAddChatMessage("{FF5656}[CoordMaster]: {FFFFFF}Автор:{FF5656} Mscr", -1)
sampRegisterChatCommand("cgo", function ()
res, x, y, z = getTargetBlipCoordinatesFixed()
if res then
cordtp(x, y, z)
end
end)
sampRegisterChatCommand("cgoc", function ()
if isCharOnFoot(PLAYER_PED) then
mres, mx, my, mz = SearchMarker()
if mres then
cordtp(mx, my, mz)
end
end
end)
sampRegisterChatCommand("cmenu", function ()
uv0.v = not uv0.v
end)
uv1.ShowCursor = false
uv1.Process = true
wait(-1)
end
button = slot4("Bypass mode")
function slot1.OnDrawFrame()
uv0.ShowCursor = false
if uv1.v then
window_f()
end
if uv2.v then
uv1.v = false
uv0.ShowCursor = true
uv0.SetNextWindowPos(uv0.ImVec2(uv3 / 2, uv4 / 2), uv0.Cond.FirstUseEver, uv0.ImVec2(0.5, 0.5))
uv0.SetNextWindowSize(uv0.ImVec2(240 * uv5, 225 * uv5))
uv0.Begin("obhodi by mscr", uv2, uv0.WindowFlags.NoCollapse + uv0.WindowFlags.NoResize)
if uv0.Button(button, uv0.ImVec2(-1, 0)) then
uv6 = not uv6
if not uv6 then
button = uv7("Enable walk mode")
else
button = uv7("[Disable walk mode]")
end
end
if uv6 then
uv0.SliderFloat("moveSpeed.x", uv8, -10, 10, format)
uv0.SliderFloat("moveSpeed.y", uv9, -10, 10, format)
uv0.SliderFloat("moveSpeed.z", uv10, -10, 10, format)
uv0.SliderFloat("surfing.x", uv11, -10, 10, format)
uv0.SliderFloat("surfing.y", uv12, -10, 10, format)
uv0.SliderFloat("surfing.z", uv13, -10, 10, format)
if uv0.Checkbox("NOP onSendPlayerSync", uv14) then
if uv14.v then
sendpll = true
else
sendpll = false
end
end
if uv0.Checkbox("NOP onSetPlayerPos", uv15) then
if uv15.v then
setposs = true
else
setposs = false
end
end
if uv0.Button(uv7("Save changes"), uv0.ImVec2(-1, 0)) then
uv16.main.bypass = uv6
uv16.main.mSpeedX = uv8.v
uv16.main.mSpeedY = uv9.v
uv16.main.mSpeedZ = uv10.v
uv16.main.surfX = uv11.v
uv16.main.surfY = uv12.v
uv16.main.surfZ = uv13.v
uv16.main.nopPlayerSync = uv14.v
uv16.main.nopSetPos = uv15.v
uv17.save(uv16, "coord.ini")
end
end
uv0.End()
end
end
function window_f()
uv0.ShowCursor = true
uv0.SetNextWindowPos(uv0.ImVec2(uv1 / 2, uv2 / 2), uv0.Cond.FirstUseEver, uv0.ImVec2(0.5, 0.5))
uv0.SetNextWindowSize(uv0.ImVec2(240 * uv3, 205 * uv3))
uv0.Begin("mCord by mscr", uv4, uv0.WindowFlags.NoCollapse + uv0.WindowFlags.NoResize)
if uv5 then
uv0.TextColoredRGB("Mode: {FF0000}Visual Visible")
else
uv0.TextColoredRGB("Mode: {CCFF00}Visual Invisible")
end
uv0.Text(" ")
uv0.SliderInt(uv6("Distance"), uv7, 1, 80)
uv0.SliderInt(uv6("Slow"), uv8, 0, 5000)
uv0.SliderInt(uv6("Height"), uv9, -50, 0)
uv0.Text(" ")
if uv0.Button(uv6("Change visibility mode"), uv0.ImVec2(-1, 40)) then
uv5 = not uv5
end
if uv0.Button(uv6("Save changes"), uv0.ImVec2(-1, 0)) then
uv10.main.time = uv8.v
uv10.main.delta = uv7.v
uv10.main.height = uv9.v
uv10.main.visible = uv5
uv11.save(uv10, "coord.ini")
end
if uv0.Button(uv6("Обходы"), uv0.ImVec2(-1, 0)) then
uv12.v = not uv12.v
end
uv0.End()
end
function cordtp(slot0, slot1, slot2)
lua_thread.create(function ()
if uv0 then
state = true
freezeCharPosition(PLAYER_PED, true)
slot0, slot1, slot2 = getCharCoordinates(PLAYER_PED)
slot3 = getHeadingFromVector2d(uv1 - slot0, uv2 - slot1)
while uv4.v < math.abs(slot2 - uv3.v) do
if slot2 < uv3.v then
setCharCoordinates(PLAYER_PED, slot0, slot1, slot2 - 1 + uv4.v)
else
setCharCoordinates(PLAYER_PED, slot0, slot1, slot2 - 1 - uv4.v)
end
slot0, slot1, slot2 = getCharCoordinates(PLAYER_PED)
wait(uv5.v)
end
setCharCoordinates(PLAYER_PED, slot0, slot1, uv3.v)
while uv4.v < getDistanceBetweenCoords2d(uv1, uv2, slot0, slot1) do
setCharCoordinates(PLAYER_PED, slot0 - uv4.v * math.sin(math.rad(slot3)), slot1 + uv4.v * math.cos(math.rad(slot3)), slot2 - 1)
slot0, slot1, slot2 = getCharCoordinates(PLAYER_PED)
slot3 = getHeadingFromVector2d(uv1 - slot4, uv2 - slot5)
wait(uv5.v)
end
while uv4.v < math.abs(slot2 - uv6) do
if slot2 < uv6 then
setCharCoordinates(PLAYER_PED, slot0, slot1, slot2 - 1 + uv4.v)
else
setCharCoordinates(PLAYER_PED, slot0, slot1, slot2 - 1 - uv4.v)
end
slot0, slot1, slot2 = getCharCoordinates(PLAYER_PED)
wait(uv5.v)
end
setCharCoordinates(PLAYER_PED, uv1, uv2, uv6)
setposs = false
sendpll = false
freezeCharPosition(PLAYER_PED, false)
state = false
else
state = true
freezeCharPosition(PLAYER_PED, true)
slot4, slot5, slot2 = getCharCoordinates(PLAYER_PED)
while true do
wait(0)
if uv4.v < getDistanceBetweenCoords2d(slot0, slot1, uv1, uv2) then
sendOnFootPosition(slot0, slot1 + math.cos(getAngle(slot0, slot1, uv1, uv2)) * uv4.v, slot2 - uv3.v)
wait(uv5.v)
else
setCharCoordinates(PLAYER_PED, uv1, uv2, uv6)
setposs = false
sendpll = false
freezeCharPosition(PLAYER_PED, false)
state = false
break
end
end
end
end)
end
function sendOnFootPosition(slot0, slot1, slot2)
sendOnfootSync(slot0, slot1, slot2)
sampForceOnfootSync()
end
function slot1.TextColoredRGB(slot0)
slot2 = uv0.GetStyle().Colors
slot3 = uv0.ImVec4
function slot4(slot0)
return bit.band(bit.rshift(slot0, 24), 255), bit.band(bit.rshift(slot0, 16), 255), bit.band(bit.rshift(slot0, 8), 255), bit.band(slot0, 255)
end
function slot5(slot0)
if slot0:sub(1, 6):upper() == "SSSSSS" then
return uv1(uv0[1].x, uv0[1].y, uv0[1].z, (tonumber(slot0:sub(7, 8), 16) or uv0[1].w * 255) / 255)
end
if type(type(slot0) == "string" and tonumber(slot0, 16) or slot0) ~= "number" then
return
end
slot7, slot8, slot9, slot10 = uv2(slot1)
return uv3.ImColor(slot2, slot3, slot4, slot5):GetVec4()
end
function (slot0)
for slot4 in slot0:gmatch("[^\r\n]+") do
slot5 = {}
slot6 = {}
slot7 = 1
while slot4:gsub("{(......)}", "{%1FF}"):find("{........}") do
slot8, slot9 = slot4:find("{........}")
if uv0(slot4:sub(slot8 + 1, slot9 - 1)) then
slot5[#slot5 + 1] = slot4:sub(slot9 + 1, #slot4)
slot5[#slot5] = slot4:sub(slot7, slot8 - 1)
slot6[#slot6 + 1] = slot10
slot7 = slot8
end
slot4 = slot4:sub(1, slot8 - 1) .. slot4:sub(slot9 + 1, #slot4)
end
if slot5[0] then
for slot11 = 0, #slot5, 1 do
uv1.TextColored(slot6[slot11] or uv2[1], uv3(slot5[slot11]))
uv1.SameLine(nil, 0)
end
uv1.NewLine()
else
uv1.Text(uv3(slot4))
end
end
end(slot0)
end
function slot0.onSendPlayerSync(slot0)
if state and uv0 then
slot0.surfingOffsets.z = uv3.v
slot0.surfingOffsets.y = uv2.v
slot0.surfingOffsets.x = uv1.v
slot0.moveSpeed.z = uv6.v
slot0.moveSpeed.y = uv5.v
slot0.moveSpeed.x = uv4.v
if sendpll then
return false
end
end
end
function slot0.onSetPlayerPos()
if state and setposs then
return false
end
end
function sendOnfootSync(slot0, slot1, slot2)
slot3 = allocateMemory(68)
slot4, slot7 = sampGetPlayerIdByCharHandle(PLAYER_PED)
sampStorePlayerOnfootData(slot5, slot3)
setStructFloatElement(slot3, 6, slot0, false)
setStructFloatElement(slot3, 10, slot1, false)
setStructFloatElement(slot3, 14, slot2, false)
setStructFloatElement(slot3, 38, 0.9, false)
setStructFloatElement(slot3, 42, 0.9, false)
setStructFloatElement(slot3, 46, -0.9, false)
sampSendOnfootData(slot3)
freeMemory(slot3)
end
function getTargetBlipCoordinatesFixed()
slot0, slot1, slot2, slot3 = getTargetBlipCoordinates ()
if not slot0 then
return false
end
requestCollision(slot1, slot2)
loadScene(slot1, slot2, slot3)
slot8, slot9, slot10, slot11 = getTargetBlipCoordinates ()
return slot4, slot5, slot6, slot7
end
function getAngle(slot0, slot1, slot2, slot3)
return math.atan2(slot2 - slot0, slot3 - slot1)
end
function SearchMarker(slot0, slot1, slot2)
slot3 = 0
slot4 = 0
slot5 = 0
slot6 = false
for slot10 = 0, 31, 1 do
slot11 = 0
if representIntAsFloat(readMemory(13103464 + slot10 * 56 + 0, 4, false)) ~= 0 or representIntAsFloat(readMemory(13103464 + slot10 * 56 + 4, 4, false)) ~= 0 or representIntAsFloat(readMemory(13103464 + slot10 * 56 + 8, 4, false)) ~= 0 then
slot3 = slot12
slot4 = representIntAsFloat(readMemory(13103464 + slot10 * 56 + 4, 4, false))
slot5 = representIntAsFloat(readMemory(13103464 + slot10 * 56 + 8, 4, false))
slot6 = true
end
end
return slot6, slot3, slot4, slot5
end