Jump to content

Editor plugin / Cloning element


quindo

Recommended Posts

Hello everyone, I'm coming here with what is probably super easy question, but I can't figure it out for the whole day.

I want to basically clone an element(checkpoint) that is already used in map editor, exactly the same way i would do it using "c" hotkey. The problem is that i don't want to use the hotkey, I have the element i want to clone, but can't clone it properly(assign next ID).

i tried using

newElement = exports.edf:edfCloneElement(element,true)

but that gives me exactly the same object, with the same id and everything. I need it to have next free id. 

i also tried using 

newElement = exports.editor_main:import(createElement("checkpoint"))

but that didn't work properly either, i couldn't modify element properties after creating the object.

Link to comment

I managed to do it in some improvised way, so if anyone is looking for this, here's some probably bad but working code:

CLIENT:

function addCheckpoint(posX,posY,posZ,size)
  exports.editor_main:suspend()
  triggerServerEvent("onCheckpointRequest",resourceRoot, track)
end

function setTemp(tempServer)
  if tempServer then
    exports.editor_main:doCloneElement(tempServer,2)
    setTimer(function()
		clone = exports.editor_main:getSelectedElement()
		triggerServerEvent("afterClone", resourceRoot, clone, posX, posY, posZ, size, track, tempServer)
		end,500,1)
  else
    outputChatBox("Couldn't detect last checkpoint")
    setTimer(function()exports.editor_main:resume()end,200,1)
  end
end
addEvent("receiveCheckpoint", true)
addEventHandler("receiveCheckpoint", getRootElement(), setTemp)
    
function resetProgress()
	exports.editor_main:resume()
end
addEvent("progressOver", true)
addEventHandler("progressOver", getRootElement(), resetProgress)
    

SERVER:

function getCheckpoint(track)
  checkpoints = getElementsByType("checkpoint")
	for i,checkpoint in ipairs(checkpoints) do
    	if <condition> then
      		triggerClientEvent("receiveCheckpoint", getRootElement(),checkpoint,1)
      		return
     	end
    end
  	triggerClientEvent("progressOver",getRootElement())
end
addEvent("onCheckpointRequest", true)
addEventHandler("onCheckpointRequest", resourceRoot, getCheckpoint)

function manageClone(elem, posX, posY, posZ, size, track, orginal)
  exports.edf:edfSetElementProperty(elem,"something", 'something')
  exports.edf:edfSetElementProperty(elem,"somethingelse", 'somethingelse')
  exports.edf:edfSetElementPosition(elem,posX,posY,posZ)
  exports.edf:edfSetElementProperty(elem, "size", size*1.25)
  --SOME OTHER VARIABLES THAT YOU WANT, ETC, ETC
  triggerClientEvent("progressOver",getRootElement())
end
addEvent("afterClone", true)
addEventHandler("afterClone", resourceRoot, manageClone)
	

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...