Jump to content

desLoadingMap destroyer objects


Fabioxps

Recommended Posts

  • Discord Moderators

Boy you sure done messed up that formatting

Code snippets of such size might, for more convenience, be posted to pastebin.com instead.

From what I understand, your function desLoadingMap does not destroy the map elements?

It appears when you create the objects, you forget to reference them in the objects table.

This is the same for the rest of your elements.

For example, in your function LoadingMap.

Line 16, you must reference your object.

You must do this for the rest of the elements as well.

function LoadingMap(meta2,obj,mark,pickup) 
    bindKey("enter","down",killDMFunc) 
    addEventHandler("onClientRender", root, renderFileDownload, true, "low-1") 
    if fileExists("map.xml") then 
        fileDelete("map.xml") 
    end 
    local newFile = fileCreate("map.xml") 
    if newFile then 
        fileWrite(newFile, meta2) 
        fileClose(newFile) 
    end 
        for i, v in ipairs(obj) do 
        local object = createObject(v.modelId, v.posX, v.posY, v.posZ, v.rotX, v.rotY, v.rotZ) 
        
        if object then 
            table.insert (objects, object) 
            setElementInterior(object,v.interiorID) 
            setElementDimension(object,v.dimension) 
            if v.doublesided == "false" then 
                setElementDoubleSided(object,false) 
            end 
        end 
    end 

Link to comment

the map only loads once and is invisible

for i, v in pairs(events) do

_removeEventHandler(v.event, v.parent, v.func)

end

events = {}

function desLoadingDM() 
    for i, v in pairs(objects) do 
        if isElement(v) then 
            destroyElement(v) 
        end 
    end 
    objects = {} 
     
    for i, v in pairs(markers) do 
        if isElement(v) then 
            destroyElement(v) 
        end 
    end 
    markers = {} 
     
    for i, v in pairs(timers) do 
        if isTimer(v) then 
            killTimer(v) 
        end 
    end 
    timers = {} 
     
    for i, v in pairs(events) do 
        _removeEventHandler(v.event, v.parent, v.func) 
    end 
    events = {} 
     
    for i, v in pairs(colspheres) do 
        if isElement(v) then 
            destroyElement(v) 
        end 
    end 
    colspheres = {} 
     
    for i, v in pairs(sounds) do 
        if isElement(v) then 
            _stopSound(v) 
        end 
    end 
    sounds = {} 
     
    for i, v in pairs(commands) do 
        _removeCommandHandler(v) 
    end 
    commands = {} 
     
    for i, v in pairs(models) do 
        engineRestoreModel(v) 
    end 
    models = {} 
     
    for i, v in pairs(binds) do 
        _unbindKey(v.key) 
    end 
    binds = {} 
    dlFiles = 0 
    dlScripts = 0 
    loaded = false 
    setTimer(function() 
        triggerServerEvent("loadNewMapDM",root, loadNewMapDM) 
    end,3000,1) 
end 
addEvent("desLoadingDM",true) 
_addEventHandler("desLoadingDM",root,desLoadingDM) 

  
--DM FABINHO SCRIPT TEST BUGS 
  
  
  
function loadNewMapDM() 
    local newMap = coreServer:getRandomMap("DM") 
    if newMap then 
         
        if not getResourceFromName("deathmatch") then 
            createResource("deathmatch") 
        end 
         
         
         
        if fileExists(":deathmatch/meta.xml") then 
            fileDelete(":deathmatch/meta.xml") 
        end 
         
        local metaXML = xmlCreateFile(":deathmatch/meta.xml","meta") 
        local metaXMLNode = xmlCreateChild(metaXML, "info") 
        xmlNodeSetAttribute(metaXMLNode,"author","Fabinho") 
        xmlNodeSetAttribute(metaXMLNode,"description","DM-Lobby Maploader") 
        xmlNodeSetAttribute(metaXMLNode,"type","script") 
        metaXMLNode = xmlCreateChild(metaXML, "min_mta_version") 
        xmlNodeSetAttribute(metaXMLNode,"server","1.3.1") 
         
        local scriptNode = xmlCreateChild(metaXML, "script") 
        xmlNodeSetAttribute(scriptNode,"src","loader.lua") 
        xmlNodeSetAttribute(scriptNode,"type","client") 
        fileCopy("loader/dmloader.lua", ":deathmatch/loader.lua", true) 
        local scriptNode = xmlCreateChild(metaXML, "script") 
        xmlNodeSetAttribute(scriptNode,"src","loader_s.lua") 
        xmlNodeSetAttribute(scriptNode,"type","server") 
        if fileCopy("loader/dmloader_s.lua", ":deathmatch/loader_s.lua",true) then end 
         
        xmlSaveFile(metaXML) 
        xmlUnloadFile(metaXML) 
         
        if fileExists(":deathmatch/map.xml") then 
            fileDelete(":deathmatch/map.xml") 
        end 
         
        local mapXML = xmlCreateFile(":deathmatch/map.xml","meta") 
        local metaXML = xmlLoadFile(":"..newMap.mapname.."/meta.xml") 
        if metaXML then 
            for i, m in ipairs(xmlNodeGetChildren(metaXML)) do 
                local metaXMLName = xmlNodeGetName(m) 
                ---Checks if the XMl-File is a .map file--- 
                if metaXMLName == "map" then 
                    local mapPath = xmlNodeGetAttribute(m,"src") 
                    if mapPath and fileExists(":"..newMap.mapname.."/"..mapPath) then                        
                        local mapFile = xmlLoadFile(":"..newMap.mapname.."/"..mapPath) 
                        if mapFile then 
                            for r, p in ipairs(xmlNodeGetChildren(mapFile)) do 
                                local objectType = xmlNodeGetName(p) 
                                if objectType == "spawnpoint" then 
                                    table.insert(dmTable.Spawnpoints,{ 
                                        modelID = tonumber(xmlNodeGetAttribute(p, "vehicle")), 
                                        interiorID = tonumber(xmlNodeGetAttribute(p, "interior")), 
                                        posX = tonumber(xmlNodeGetAttribute(p, "posX")), 
                                        posY = tonumber(xmlNodeGetAttribute(p, "posY")), 
                                        posZ = tonumber(xmlNodeGetAttribute(p, "posZ")), 
                                        rotX = tonumber(xmlNodeGetAttribute(p, "rotX")), 
                                        rotY = tonumber(xmlNodeGetAttribute(p, "rotY")), 
                                        rotZ = tonumber(xmlNodeGetAttribute(p, "rotZ")), 
                                        dimension = 1 
                                    }) 
                                elseif objectType == "object" then 
                                    table.insert(dmTable.objects,{ 
                                        modelId = tonumber(xmlNodeGetAttribute(p,"model")), 
                                        interiorID = tonumber(xmlNodeGetAttribute(p, "interior")) or 0, 
                                        posX = tonumber(xmlNodeGetAttribute(p,"posX")), 
                                        posY = tonumber(xmlNodeGetAttribute(p,"posY")), 
                                        posZ = tonumber(xmlNodeGetAttribute(p,"posZ")), 
                                        rotX = tonumber(xmlNodeGetAttribute(p,"rotX")), 
                                        rotY = tonumber(xmlNodeGetAttribute(p,"rotY")), 
                                        rotZ = tonumber(xmlNodeGetAttribute(p,"rotZ")), 
                                        doublesided = xmlNodeGetAttribute(p,"doublesided"), 
                                        dimension = 1 
                                    }) 
                                elseif objectType == "marker" then 
                                    table.insert(dmTable.marker,{ 
                                        theType = xmlNodeGetAttribute(p, "type"), 
                                        interiorID = tonumber(xmlNodeGetAttribute(p, "interior")), 
                                        posX = tonumber(xmlNodeGetAttribute(p, "posX")), 
                                        posY = tonumber(xmlNodeGetAttribute(p, "posY")), 
                                        posZ = tonumber(xmlNodeGetAttribute(p, "posZ")), 
                                        size = tonumber(xmlNodeGetAttribute(p, "size")), 
                                        color = xmlNodeGetAttribute(p, "color"), 
                                        dimension = 1 
                                    }) 
                                elseif objectType == "racepickup" then 
                                    table.insert(dmTable.pickup,{ 
                                        pickupType = xmlNodeGetAttribute(p, "type"), 
                                        posX = tonumber(xmlNodeGetAttribute(p, "posX")), 
                                        posY = tonumber(xmlNodeGetAttribute(p, "posY")), 
                                        posZ = tonumber(xmlNodeGetAttribute(p, "posZ")),     
                                        interiorID = tonumber(xmlNodeGetAttribute(p, "interior")), 
                                        vehicle = tonumber(xmlNodeGetAttribute(p, "vehicle")) or false, 
                                        dimension = 1 
                                    }) 
                                end 
                            end 
                        end 
                        xmlSaveFile(mapFile) 
                        xmlUnloadFile(mapFile) 
                    end 
                ---Checks if the XML File is a Script File--- 
                elseif metaXMLName == "script" then 
                    local scriptPath = xmlNodeGetAttribute(m,"src") 
                    fileCopy(":"..newMap.mapname.."/"..scriptPath, ":deathmatch/"..scriptPath,true) 
                    local scriptNode = xmlCreateChild(mapXML,"file") 
                    xmlNodeSetAttribute(scriptNode,"src",scriptPath) 
                    xmlNodeSetAttribute(scriptNode,"downloaded","false") 
                ---Checks if the XMl File is a File--- 
                elseif metaXMLName == "file" then 
                    local filePath = xmlNodeGetAttribute(m,"src") 
                    fileCopy(":"..newMap.mapname.."/"..filePath, ":deathmatch/"..filePath,true) 
                    local fileNode = xmlCreateChild(mapXML,"file") 
                    xmlNodeSetAttribute(fileNode,"src",filePath) 
                    xmlNodeSetAttribute(fileNode,"downloaded","false") 
                end 
            end 
        end 
         
        local xmlSettings = xmlFindChild ( metaXML, "settings", 0) 
        local xmlChild = xmlCreateChild(mapXML, "settings") 
         
        i = 0 
        while true do        
            local xmlNode = xmlFindChild ( xmlSettings, "setting", i) 
            if not xmlNode then 
                break 
            else 
                mapNode = xmlCreateChild(xmlChild, "setting") 
                xmlNodeSetAttribute(mapNode, "name", xmlNodeGetAttribute(xmlNode, "name")) 
                xmlNodeSetAttribute(mapNode, "value", xmlNodeGetAttribute(xmlNode, "value"))         
                i = i + 1 
            end 
        end 
         
        xmlSaveFile(mapXML) 
        xmlUnloadFile(mapXML) 
        xmlUnloadFile(metaXML) 
         
        local file = fileOpen(":deathmatch/map.xml") 
        local map = "" 
        if file then 
            --outputChatBox("OK") 
            while not fileIsEOF(file) do 
                map = map..""..fileRead(file,500) 
            end 
        end 
        fileClose(file) 
        mapDM = map 
        dnsp = dmTable.Spawonpoints 
        startResource(getResourceFromName("deathmatch")) 
         
    end 
             
        for i, p in ipairs(getGamemodePlayers("deathmatch")) do 
            setUPDMPlayer(p,dmTable.Spawnpoints,dmTable.objects,dmTable.marker,dmTable.pickup) 
        end 
end 
addEvent("loadNewMapDM",true) 
addEventHandler("loadNewMapDM",root, loadNewMapDM) 
  
function setUPDMPlayer(player,spawn,o,m,p) 
    --outputChatBox(#spawn) 
    if spawn then 
        toggleControl(player,"vehicle_secondary_fire",true) 
        toggleControl(player,"vehicle_primary_fire",false) 
         
        local rand = math.random(tonumber(#spawn))  
        spawnPlayer(player,spawn[rand].posX,spawn[rand].posY,spawn[rand].posZ) 
        setElementDimension(player,1) 
        local vehicle = createVehicle(spawn[rand].modelID,spawn[rand].posX,spawn[rand].posY,spawn[rand].posZ,spawn[rand].rotX,spawn[rand].rotY,spawn[rand].rotZ) 
        setElementDimension(vehicle,1) 
        fadeCamera(player,true) 
        setCameraTarget(player,player) 
        setCameraTarget(player,vehicle) 
        setElementFrozen(vehicle,true) 
        warpPedIntoVehicle(player,vehicle) 
        setElementData(vehicle,"DMVehicle",true) 
        setElementData(player,"curVehicle",veh) 
        setElementAlpha(player,255) 
        setElementFrozen(player,false) 
        setElementData(player,"ghostmode",true) 
    end 
    triggerLatentClientEvent(player,"loadMapDM",500000,false,root,mapDM,o,m,p) 
end 
  
addEvent("dmDownloadFinished",true) 
addEventHandler("dmDownloadFinished",getRootElement(),function(player) 
    table.insert(readyDMPlayers,{ 
        player = player 
    }) 
    startCountdownDM(player) 
end) 
  
function setPlayerDMWaitRound(player) 
    if isDmMapRunning() then 
    end 
end 
  
function startCountdownDM(player) 
    triggerClientEvent(player,"startCountdown",root) 
    setTimer(startRoundDM,3800,1,player) 
end 
  
function startRoundDM(player) 
    setElementFrozen(getPedOccupiedVehicle(player),false) 
    setElementData(player,"state","ready") 
        --setElementData(player,"state","alive") 
end 
  
addEvent("killDMPlayer",true) 
addEventHandler("killDMPlayer",root,function() 
    if isPedInVehicle(source) and getElementHealth(source) > 0 then 
        if getElementData(source,"state") ~= "ready" then 
            setTimer(function() 
                destroyElement(getPedOccupiedVehicle(source)) 
                killPed(source) 
            end,10000,1) 
        else 
            destroyElement(getPedOccupiedVehicle(source)) 
            killPed(source) 
        end 
    end 
  
            triggerClientEvent(source,"desLoadingDM",root,desLoadingDM) 
       
end) 

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...