local function p2pOfLand(x1, z1, x2, z2, other_func)
if other_func == nil then
other_func = function() return true end
end
if math[simple_decrypt("\\215\\64\\223\\237\\64\\132\\119\\93\\174\\84\\66\\127\\0\\213\\50\\41\\84\\41\\145\\186\\227\\7\\160\\173\\213\\4")](math[simple_decrypt("\\199\\209\\248\\201\\210\\87\\117\\161\\47\\29\\184\\42\\75\\213\\74\\119\\208\\20\\149\\236\\25\\215\\158\\141\\1\\132")](x1 - x2), 2) + math[simple_decrypt("\\108\\65\\240\\228\\213\\47\\116\\211\\49\\131\\0\\9\\232\\0\\74\\119\\212\\42\\11\\0\\163\\170\\149\\210\\159\\114")](math[simple_decrypt("\\14\\196\\86\\150\\163\\87\\62\\66\\171\\41\\161\\5\\75\\186\\153\\32\\0\\141\\22\\229\\163\\213\\7\\173\\213\\4")](z1 - z2), 2) <= 1 then
return IsLandTile(TheWorld[simple_decrypt("\\125\\18\\132\\222\\163\\87\\116\\2\\44\\30\\184\\171\\49\\72\\235\\118\\3\\0\\148\\236\\162\\7\\131\\141\\5\\174")]:GetTileAtPoint(x2, 0, z2)) and other_func({x = x2, z = z2})
else
if not IsLandTile(TheWorld[simple_decrypt("\\55\\222\\81\\224\\72\\135\\10\\3\\175\\35\\2\\220\\30\\0\\157\\12\\94\\10\\66\\204\\0\\213\\215\\211\\1\\164")]:GetTileAtPoint(x2, 0, z2)) or not other_func({x = x2, z = z2}) then
return false
end
-- 获取直线公式
local a = z2 - z1
local b = x1 - x2
local c = z1 * x2 - z2 * x1
if a == 0 then
local z = z1
local xs = - (b / math[simple_decrypt("\\73\\251\\36\\236\\0\\239\\164\\84\\123\\132\\84\\32\\75\\0\\154\\9\\0\\138\\21\\197\\252\\7\\215\\210\\119\\132")](b)) / 2
for x = x1, x2, xs do
if math[simple_decrypt("\\245\\151\\194\\71\\2\\35\\167\\84\\58\\3\\74\\173\\52\\213\\30\\62\\187\\139\\66\\241\\252\\7\\215\\210\\110\\0")](math[simple_decrypt("\\123\\219\\83\\148\\64\\0\\61\\214\\49\\9\\215\\10\\0\\64\\156\\12\\119\\138\\66\\242\\118\\215\\163\\0\\130\\145")](x - x1), 2) + math[simple_decrypt("\\222\\224\\193\\40\\0\\42\\53\\2\\49\\245\\119\\9\\159\\127\\235\\12\\65\\42\\63\\187\\118\\213\\131\\154\\119\\209")](math[simple_decrypt("\\11\\242\\36\\227\\75\\239\\0\\125\\37\\130\\0\\197\\73\\75\\8\\162\\123\\41\\149\\192\\162\\4\\158\\7\\214\\167")](z - z1), 2) >= 1 and (not IsLandTile(TheWorld[simple_decrypt("\\254\\169\\86\\195\\95\\132\\10\\161\\120\\87\\2\\55\\159\\75\\23\\163\\84\\93\\54\\111\\246\\170\\138\\0\\214\\209")]:GetTileAtPoint(x, 0, z)) or not other_func({x = x, z = z})) then
return false
end
end
elseif b == 0 then
local x = x1
local zs = a / math[simple_decrypt("\\13\\219\\85\\148\\95\\132\\117\\184\\122\\29\\215\\41\\3\\163\\72\\116\\94\\139\\66\\250\\246\\157\\1\\153\\139\\4")](a) / 2
for z = z1, z2, zs do
if math[simple_decrypt("\\80\\213\\255\\237\\1\\128\\0\\2\\217\\3\\2\\170\\49\\95\\29\\116\\119\\252\\64\\184\\162\\0\\160\\153\\110\\209")](math[simple_decrypt("\\222\\241\\204\\44\\0\\42\\53\\2\\49\\245\\119\\9\\159\\127\\235\\12\\65\\42\\63\\187\\118\\213\\131\\154\\119\\209")](x - x1), 2) + math[simple_decrypt("\\240\\65\\220\\147\\210\\3\\42\\211\\5\\245\\0\\126\\75\\72\\156\\61\\94\\138\\21\\184\\213\\0\\128\\173\\139\\3")](math[simple_decrypt("\\71\\210\\216\\150\\86\\29\\214\\2\\120\\9\\214\\125\\11\\85\\0\\162\\74\\0\\149\\207\\232\\149\\1\\168\\162\\4")](z - z1), 2) >= 1 and (not IsLandTile(TheWorld[simple_decrypt("\\146\\232\\209\\221\\212\\30\\42\\215\\15\\29\\66\\171\\49\\118\\157\\116\\73\\138\\66\\204\\113\\131\\149\\135\\156\\3")]:GetTileAtPoint(x, 0, z)) or not other_func({x = x, z = z})) then
return false
end
end
else
-- 以x增检测
local xs = - (b / math[simple_decrypt("\\133\\209\\135\\67\\122\\10\\32\\0\\12\\245\\2\\125\\74\\213\\61\\61\\187\\95\\63\\250\\163\\158\\118\\167\\162\\5")](b)) / 2
for x = x1, x2, xs do
local z = (a * x + c) / b * -1
if math[simple_decrypt("\\176\\149\\220\\218\\186\\129\\15\\74\\217\\86\\0\\32\\159\\86\\73\\164\\87\\0\\145\\197\\0\\215\\212\\210\\156\\5")](math[simple_decrypt("\\60\\39\\210\\150\\213\\87\\3\\215\\47\\41\\66\\174\\52\\186\\61\\0\\208\\95\\0\\104\\161\\213\\111\\3\\130\\208")](x - x1), 2) + math[simple_decrypt("\\219\\68\\220\\147\\210\\47\\3\\215\\0\\87\\214\\125\\241\\117\\62\\162\\74\\138\\66\\204\\0\\4\\175\\210\\148\\5")](math[simple_decrypt("\\160\\134\\36\\236\\0\\21\\167\\0\\122\\236\\211\\41\\74\\210\\50\\0\\212\\37\\65\\110\\161\\111\\160\\164\\0\\154")](z - z1), 2) >= 1 and (not IsLandTile(TheWorld[simple_decrypt("\\69\\170\\242\\65\\75\\21\\161\\120\\12\\131\\120\\126\\154\\75\\157\\116\\119\\252\\64\\184\\162\\0\\160\\153\\110\\209")]:GetTileAtPoint(x, 0, z)) or not other_func({x = x, z = z})) then
return false
end
end
-- 以z增检测
local zs = a / math[simple_decrypt("\\180\\254\\135\\214\\210\\87\\117\\184\\171\\0\\3\\173\\49\\118\\157\\12\\0\\139\\66\\0\\214\\163\\1\\153\\1\\211")](a) / 2
for z = z1, z2, zs do
local x = (b * z + c) / a * -1
if math[simple_decrypt("\\163\\149\\88\\237\\1\\128\\32\\125\\37\\132\\0\\127\\232\\85\\3\\204\\84\\95\\149\\184\\162\\4\\158\\7\\130\\107")](math[simple_decrypt("\\70\\254\\134\\71\\0\\239\\164\\84\\123\\132\\84\\32\\75\\0\\154\\9\\0\\138\\21\\197\\252\\7\\215\\210\\119\\132")](x - x1), 2) + math[simple_decrypt("\\87\\68\\138\\40\\209\\3\\116\\208\\44\\9\\2\\127\\153\\127\\73\\163\\84\\32\\31\\104\\161\\213\\118\\135\\159\\107")](math[simple_decrypt("\\93\\210\\207\\53\\0\\87\\42\\214\\120\\22\\87\\55\\159\\75\\23\\163\\116\\20\\0\\110\\217\\163\\0\\208\\156\\4")](z - z1), 2) >= 1 and (not IsLandTile(TheWorld[simple_decrypt("\\34\\169\\80\\222\\64\\132\\10\\161\\0\\86\\184\\174\\29\\1\\154\\32\\94\\95\\64\\104\\220\\212\\0\\135\\171\\142")]:GetTileAtPoint(x, 0, z)) or not other_func({x = x, z = z})) then
return false
end
end
end
return true
end
end