- Версия SA-MP
-
- Любая
Мучаюсь уже 4 дня не могу найти координаты
этого маркера или что это
пробовал почти все способы включая этот;
этого маркера или что это
пробовал почти все способы включая этот;
там же нету end xD
что именно там лишние
блять если не лень можешь скинуть рабочий пример на основе этого 'кода'
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 } }
local millisecond;
local active = false
function main()
repeat wait(0) until isSampAvailable()
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_bot', -1)
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)...
local bon = imgui.ImBool(false)
function main()
--что то там
while true do
wait(0)
if bon then
local mco, x, y, z = SearchMarker(posX, posY, posZ, 999, false)
--и бег к чеку
end
end
end
--где то в OnDrawFrame
imgui.Button('-ferma_all-', bon)
--за пределами OnDrawFrame
function SearchMarker(posX, posY, posZ, radius, isRace)
local ret_posX = 0.0
local ret_posY = 0.0
local ret_posZ = 0.0
local isFind = false
for id = 0, 31 do
local MarkerStruct = 0
if isRace then MarkerStruct = 0xC7F168 + id * 56
else MarkerStruct = 0xC7DD88 + id * 160 end
local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
ret_posX = MarkerPosX
ret_posY = MarkerPosY
ret_posZ = MarkerPosZ
isFind = true
radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
end
end
end
return isFind, ret_posX, ret_posY, ret_posZ
end
сбкрч вот как то так, работать будет или нет хз(не тестил) мб говнокод потому что подзабыл луа немного
вот:local bon = imgui.ImBool(false) function main() --что то там while true do wait(0) if bon then local mco, x, y, z = SearchMarker(posX, posY, posZ, 999, false) --и бег к чеку end end end --где то в OnDrawFrame imgui.Button('-ferma_all-', bon) --за пределами OnDrawFrame function SearchMarker(posX, posY, posZ, radius, isRace) local ret_posX = 0.0 local ret_posY = 0.0 local ret_posZ = 0.0 local isFind = false for id = 0, 31 do local MarkerStruct = 0 if isRace then MarkerStruct = 0xC7F168 + id * 56 else MarkerStruct = 0xC7DD88 + id * 160 end local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false)) local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false)) local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false)) if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then ret_posX = MarkerPosX ret_posY = MarkerPosY ret_posZ = MarkerPosZ isFind = true radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) end end end return isFind, ret_posX, ret_posY, ret_posZ end
все ровно не ишет.крч вот как то так, работать будет или нет хз(не тестил) мб говнокод потому что подзабыл луа немного
вот:local bon = imgui.ImBool(false) function main() --что то там while true do wait(0) if bon then local mco, x, y, z = SearchMarker(posX, posY, posZ, 999, false) --и бег к чеку end end end --где то в OnDrawFrame imgui.Button('-ferma_all-', bon) --за пределами OnDrawFrame function SearchMarker(posX, posY, posZ, radius, isRace) local ret_posX = 0.0 local ret_posY = 0.0 local ret_posZ = 0.0 local isFind = false for id = 0, 31 do local MarkerStruct = 0 if isRace then MarkerStruct = 0xC7F168 + id * 56 else MarkerStruct = 0xC7DD88 + id * 160 end local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false)) local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false)) local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false)) if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then ret_posX = MarkerPosX ret_posY = MarkerPosY ret_posZ = MarkerPosZ isFind = true radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) end end end return isFind, ret_posX, ret_posY, ret_posZ end
Попробуй искать 3D текст, как я вижу на картинке он расположен там же где и маркер. Погугли и найдёшь на бх кучу примеров как работать с 3Д текстом. И посмотри ролики на ютуб канале the champ guessсб
все ровно не ишет.
а с такими пикапами что делать)Попробуй искать 3D текст, как я вижу на картинке он расположен там же где и маркер. Погугли и найдёшь на бх кучу примеров как работать с 3Д текстом. И посмотри ролики на ютуб канале the champ guess
Это один и тот-же маркер что был выше в теме, функция найдёт и этот маркера с такими пикапами что делать)
они в разных местах спавнятсяПосмотреть вложение 163021
может я тупой или нет.Это один и тот-же маркер что был выше в теме, функция найдёт и этот маркер
я уже понел что способ правильный и я просто ебланЭто один и тот-же маркер что был выше в теме, функция найдёт и этот маркер
или же простой пример вывода координат маркера в чат по команде.Дальше уже я самЭто один и тот-же маркер что был выше в теме, функция найдёт и этот маркер
....
может я тупой или нет.
Я пытался регистрировать команду чтобы она выводила координаты этого маркера но выдавало ошибку что они не чему не равны.
Какая переменная хранит в себе эти координаты?
я уже понел что способ правильный и я просто еблан
Просто скажите какая переменая хранит данные в себе.
function main()
repeat wait(0) until isSampAvailable()
sampRegisterChatCommand('mark', function()
local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
if res then
sampAddChatMessage(string.format('X: %f Y: %f Z: %f', x, y, z), -1)
end
end)
while true do wait(0)
end
end
function SearchMarker(posX, posY, posZ, radius, isRace)
local ret_posX = 0.0
local ret_posY = 0.0
local ret_posZ = 0.0
local isFind = false
for id = 0, 31 do
local MarkerStruct = 0
if isRace then MarkerStruct = 0xC7F168 + id * 56
else MarkerStruct = 0xC7DD88 + id * 160 end
local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
ret_posX = MarkerPosX
ret_posY = MarkerPosY
ret_posZ = MarkerPosZ
isFind = true
radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
end
end
end
return isFind, ret_posX, ret_posY, ret_posZ
end
отдуши ебатьLua:function main() repeat wait(0) until isSampAvailable() sampRegisterChatCommand('mark', function() local myX, myY, myZ = getCharCoordinates(PLAYER_PED) local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false) if res then sampAddChatMessage(string.format('X: %f Y: %f Z: %f', x, y, z), -1) end end) while true do wait(0) end end function SearchMarker(posX, posY, posZ, radius, isRace) local ret_posX = 0.0 local ret_posY = 0.0 local ret_posZ = 0.0 local isFind = false for id = 0, 31 do local MarkerStruct = 0 if isRace then MarkerStruct = 0xC7F168 + id * 56 else MarkerStruct = 0xC7DD88 + id * 160 end local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false)) local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false)) local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false)) if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then ret_posX = MarkerPosX ret_posY = MarkerPosY ret_posZ = MarkerPosZ isFind = true radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) end end end return isFind, ret_posX, ret_posY, ret_posZ end
Значит ты не обновляешь координаты маркера, без кода нечем помочь больше не могуа что делать если персонаж телепортируется к маркеру и после появления нового он продолжает к старому телепортироваться.Помогает только ctrl + r
таже проблемаЗначит ты не обновляешь координаты маркера, без кода нечем помочь больше не могу
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 } }
local millisecond;
function main()
repeat wait(0) until isSampAvailable()
local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
local res, Ox, Oy, Oz = SearchMarker(myX, myY, myZ, 9999, false)
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_markt', -1)
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)
sampAddChatMessage('{696969}[Optimala-{00FFFF}tp]{FFFFFF}', -1)
sampRegisterChatCommand('tp_markt', function()
local result, x, y, z =res, Ox, Oy, Oz
if res then
xyz.private.x, xyz.private.y, xyz.private.z = x, y, z;
xyz.public.x, xyz.public.y, xyz.public.z = x, y, z;
teleport = not teleport
else
sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}Bye,Say)-.', -1)
end
if not teleport then
freezeCharPosition(playerPed, false)
end
end)
while true do wait(0)
if teleport and isCharOnFoot(playerPed) then
freezeCharPosition(playerPed, true)
local myPosition = {getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.5)}
xyz.static.x, xyz.static.y, xyz.static.z = xyz.private.x - myPosition[1], xyz.private.y - myPosition[2], xyz.private.z - myPosition[3];
xyz.public.x, xyz.public.y, xyz.public.z = xyz.public.x - myPosition[1], xyz.public.y - myPosition[2], xyz.public.z - myPosition[3];
local vectorPlayer = vector3D(xyz.static.x, xyz.static.y, xyz.static.z)
vectorPlayer:normalize()
local data = allocateMemory(68)
sampStorePlayerOnfootData(returnid(), data)
setStructFloatElement(data, 38, 0.0, true)
setStructFloatElement(data, 42, 0.0, true)
setStructFloatElement(data, 38, 0.02, true)
setStructFloatElement(data, 42, 0.02, true)
sampSendOnfootData(data)
freeMemory(data)
setCharCoordinates(playerPed, myPosition[1] + vectorPlayer.x * 1.3, myPosition[2] + vectorPlayer.y * 1.3, myPosition[3] + vectorPlayer.z * 1.3)
wait(20)
if getDistanceBetweenCoords3d(xyz.private.x, xyz.private.y, xyz.private.z, myPosition[1], myPosition[2], myPosition[3]) < 1 then
local lastPosition = {getCharCoordinates(playerPed)}
setCharCoordinates(playerPed, lastPosition[1], lastPosition[2], lastPosition[3] + 0.01)
freezeCharPosition(playerPed, false)
sampAddChatMessage('<<<Process...', -1)
wait(3000)
-- return myPosition сюда надо что то знаю
end
end
end
end
function returnid()
local result, id = sampGetPlayerIdByCharHandle(playerPed)
if result then return id else error(">>>") end
end
function SearchMarker(posX, posY, posZ, radius, isRace)
local ret_posX = 0.0
local ret_posY = 0.0
local ret_posZ = 0.0
local isFind = false
for id = 0, 31 do
local MarkerStruct = 0
if isRace then MarkerStruct = 0xC7F168 + id * 56
else MarkerStruct = 0xC7DD88 + id * 160 end
local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
ret_posX = MarkerPosX
ret_posY = MarkerPosY
ret_posZ = MarkerPosZ
isFind = true
radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
end
end
end
return isFind, ret_posX, ret_posY, ret_posZ
end
в разных местах спавнитсяСамый простой вариант это встать на этот обьект и прописать /savepos, только будут незначительные косяки
При загрузке скрипта ты получаешь координаты маркера один раз. Почему тебе не получать координаты после ввода команды в строчке 19?таже проблема
lua:local vector3D = require 'vector3d' local samp = require 'lib.samp.events' local returnAgain = false local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 } } local millisecond; function main() repeat wait(0) until isSampAvailable() local myX, myY, myZ = getCharCoordinates(PLAYER_PED) local res, Ox, Oy, Oz = SearchMarker(myX, myY, myZ, 9999, false) sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1) sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_markt', -1) sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1) sampAddChatMessage('{696969}[Optimala-{00FFFF}tp]{FFFFFF}', -1) sampRegisterChatCommand('tp_markt', function() local result, x, y, z =res, Ox, Oy, Oz if res then xyz.private.x, xyz.private.y, xyz.private.z = x, y, z; xyz.public.x, xyz.public.y, xyz.public.z = x, y, z; teleport = not teleport else sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}Bye,Say)-.', -1) end if not teleport then freezeCharPosition(playerPed, false) end end) while true do wait(0) if teleport and isCharOnFoot(playerPed) then freezeCharPosition(playerPed, true) local myPosition = {getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.5)} xyz.static.x, xyz.static.y, xyz.static.z = xyz.private.x - myPosition[1], xyz.private.y - myPosition[2], xyz.private.z - myPosition[3]; xyz.public.x, xyz.public.y, xyz.public.z = xyz.public.x - myPosition[1], xyz.public.y - myPosition[2], xyz.public.z - myPosition[3]; local vectorPlayer = vector3D(xyz.static.x, xyz.static.y, xyz.static.z) vectorPlayer:normalize() local data = allocateMemory(68) sampStorePlayerOnfootData(returnid(), data) setStructFloatElement(data, 38, 0.0, true) setStructFloatElement(data, 42, 0.0, true) setStructFloatElement(data, 38, 0.02, true) setStructFloatElement(data, 42, 0.02, true) sampSendOnfootData(data) freeMemory(data) setCharCoordinates(playerPed, myPosition[1] + vectorPlayer.x * 1.3, myPosition[2] + vectorPlayer.y * 1.3, myPosition[3] + vectorPlayer.z * 1.3) wait(20) if getDistanceBetweenCoords3d(xyz.private.x, xyz.private.y, xyz.private.z, myPosition[1], myPosition[2], myPosition[3]) < 1 then local lastPosition = {getCharCoordinates(playerPed)} setCharCoordinates(playerPed, lastPosition[1], lastPosition[2], lastPosition[3] + 0.01) freezeCharPosition(playerPed, false) sampAddChatMessage('<<<Process...', -1) wait(3000) -- return myPosition сюда надо что то знаю end end end end function returnid() local result, id = sampGetPlayerIdByCharHandle(playerPed) if result then return id else error(">>>") end end function SearchMarker(posX, posY, posZ, radius, isRace) local ret_posX = 0.0 local ret_posY = 0.0 local ret_posZ = 0.0 local isFind = false for id = 0, 31 do local MarkerStruct = 0 if isRace then MarkerStruct = 0xC7F168 + id * 56 else MarkerStruct = 0xC7DD88 + id * 160 end local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false)) local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false)) local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false)) if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then ret_posX = MarkerPosX ret_posY = MarkerPosY ret_posZ = MarkerPosZ isFind = true radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) end end end return isFind, ret_posX, ret_posY, ret_posZ end
Найди через байпассер - https://www.blast.hk/threads/43760/ ид чекпоинта. и сделай телепорт или бег к чекпоинту.в разных местах спавнится
Найди через байпассер - https://www.blast.hk/threads/43760/ ид чекпоинта. и сделай телепорт или бег к чекпоинта
не лучший выриант как по мне.Но все ровно запомню.Найди через байпассер - https://www.blast.hk/threads/43760/ ид чекпоинта. и сделай телепорт или бег к чекпоинту.
При загрузке скрипта ты получаешь координаты маркера один раз. Почему тебе не получать координаты после ввода команды в строчке 19а
yПри загрузке скрипта ты получаешь координаты маркера один раз. Почему тебе не получать координаты после ввода команды в строчке 19?
При загрузке скрипта ты получаешь координаты маркера один раз. Почему тебе не получать координаты после ввода команды в строчке 19?
ДА НО НЕТ.Я хотел сделать чтобы он до бесконечности по маркерам тпхался пробовал в беск цикл засунуть не робит.При загрузке скрипта ты получаешь координаты маркера один раз. Почему тебе не получать координаты после ввода команды в строчке 19?