60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local minZ, maxZ = nil, nil
 | 
						|
 | 
						|
local function handleInput(center)
 | 
						|
  local rot = GetGameplayCamRot(2)
 | 
						|
  center = handleArrowInput(center, rot.z)
 | 
						|
  return center
 | 
						|
end
 | 
						|
 | 
						|
function polyStart(name)
 | 
						|
  local coords = GetEntityCoords(PlayerPedId())
 | 
						|
  createdZone = PolyZone:Create({vector2(coords.x, coords.y)}, {name = tostring(name), useGrid=false})
 | 
						|
  Citizen.CreateThread(function()
 | 
						|
    while createdZone do
 | 
						|
      -- Have to convert the point to a vector3 prior to calling handleInput,
 | 
						|
      -- then convert it back to vector2 afterwards
 | 
						|
      lastPoint = createdZone.points[#createdZone.points]
 | 
						|
      lastPoint = vector3(lastPoint.x, lastPoint.y, 0.0)
 | 
						|
      lastPoint = handleInput(lastPoint)
 | 
						|
      createdZone.points[#createdZone.points] = lastPoint.xy
 | 
						|
      Wait(0)
 | 
						|
    end
 | 
						|
  end)
 | 
						|
  minZ, maxZ = coords.z, coords.z
 | 
						|
end
 | 
						|
 | 
						|
function polyFinish()
 | 
						|
  TriggerServerEvent("polyzone:printPoly",
 | 
						|
    {name=createdZone.name, points=createdZone.points, minZ=minZ, maxZ=maxZ})
 | 
						|
end
 | 
						|
 | 
						|
RegisterNetEvent("polyzone:pzadd")
 | 
						|
AddEventHandler("polyzone:pzadd", function()
 | 
						|
  if createdZone == nil or createdZoneType ~= 'poly' then
 | 
						|
    return
 | 
						|
  end
 | 
						|
 | 
						|
  local coords = GetEntityCoords(PlayerPedId())
 | 
						|
 | 
						|
  if (coords.z > maxZ) then
 | 
						|
    maxZ = coords.z
 | 
						|
  end
 | 
						|
 | 
						|
  if (coords.z < minZ) then
 | 
						|
    minZ = coords.z
 | 
						|
  end
 | 
						|
 | 
						|
  createdZone.points[#createdZone.points + 1] = vector2(coords.x, coords.y)
 | 
						|
end)
 | 
						|
 | 
						|
RegisterNetEvent("polyzone:pzundo")
 | 
						|
AddEventHandler("polyzone:pzundo", function()
 | 
						|
  if createdZone == nil or createdZoneType ~= 'poly' then
 | 
						|
    return
 | 
						|
  end
 | 
						|
 | 
						|
  createdZone.points[#createdZone.points] = nil
 | 
						|
  if #createdZone.points == 0 then
 | 
						|
    TriggerEvent("polyzone:pzcancel")
 | 
						|
  end
 | 
						|
end) |