Jump to content

help drawtag graffiti mod


Recommended Posts

I recently opened an MTASA server, I had this drawing mod on my old server and I would like to know how I can fix these errors that appear in the console.

I had already asked aki earlier, but I ran out of pc and had no way to answer the topic.

 

Here are the errors:
[2022-05-19 18:31:10] Starting drawtag
[2022-05-19 18:31:10] WARNING: drawtag_bc\drawtag_bc_s.lua:4: Bad argument @ 'addEventHandler' [Expected function at argument 3, got nil]
[2022-05-19 18:31:10] WARNING: drawtag_bc\drawtag_bc_s.lua:5: Bad argument @ 'addEventHandler' [Expected function at argument 3, got nil]
[2022-05-19 18:31:10] WARNING: drawtag_bc\drawtag_bc_s.lua:6: Bad argument @ 'addEventHandler' [Expected function at argument 3, got nil]
[2022-05-19 18:31:10] WARNING: drawtag_bc\drawtag_bc_s.lua:7: Bad argument @ 'addEventHandler' [Expected function at argument 3, got nil]
[2022-05-19 18:31:10] WARNING: drawtag_bc\drawtag_bc_s.lua:47: Bad argument @ 'getResourceState' [Expected resource-data at argument 1, got boolean]

 

[2022-05-19 18:31:10] WARNING:  drawtag_bc\save_tags.lua:33: call: failed to call 'drawtag:getAllTags' [string "?"]
[2022-05-19 22:54:10] WARNING:  drawtag_bc\save_tags.lua:34: bad argument #1 to 'ipairs' (table expected, got boolean)

 

here is the mod script: drawtag_bc_s.lua

function initDrawtagBC()
    if initialized then return end
    initialized = true
    addEventHandler("drawtag:onTagStartSpray",root,startDrawMsg)
    addEventHandler("drawtag:onTagFinishSpray",root,finishDrawMsg)
    addEventHandler("drawtag:onTagStartErase",root,startEraseMsg)
    addEventHandler("drawtag:onTagFinishErase",root,finishEraseMsg)
    addCommandHandler("drawtag",modeDraw)
    addCommandHandler("erasetag",modeErase)
    addCommandHandler("tagsize",changeSize)
    addEvent("drawtag_bc:copyTag",true)
    addEventHandler("drawtag_bc:copyTag",root,copyTag)
    loadTagsFromFile()
    local all_players = getElementsByType("player")
    for plnum,player in ipairs(all_players) do
        exports.drawtag:setPlayerTagSize(player,1.5)
    end
    addEventHandler("onPlayerJoin",root,setDefaultTagSize)
end

function uninitDrawtagBC()
    if not initialized then return end
    initialized = nil
    removeEventHandler("drawtag:onTagStartSpray",root,startDrawMsg)
    removeEventHandler("drawtag:onTagFinishSpray",root,finishDrawMsg)
    removeEventHandler("drawtag:onTagStartErase",root,startEraseMsg)
    removeEventHandler("drawtag:onTagFinishErase",root,finishEraseMsg)
    removeCommandHandler("drawtag",modeDraw)
    removeCommandHandler("erasetag",modeErase)
    removeCommandHandler("tagsize",changeSize)
    removeEventHandler("drawtag_bc:copyTag",root,copyTag)
    saveTagsToFile()
    removeEventHandler("onPlayerJoin",root,setDefaultTagSize)
end

function initOnStart(resource)
    if getResourceName(resource) == "drawtag" then
        initDrawtagBC()
    elseif source == resourceRoot and getResourceState(getResourceFromName("drawtag")) == "running" then
        initDrawtagBC()
    end
end

function uninitOnStop(resource)
    if getResourceName(resource) == "drawtag" then
        uninitDrawtagBC()
    elseif source == resourceRoot and getResourceState(getResourceFromName("drawtag")) == "running" then
        uninitDrawtagBC()
    end
end

addEventHandler("onResourceStart",root,initOnStart)
addEventHandler("onResourceStop",root,uninitOnStop)

function setDefaultTagSize()
    exports.drawtag:setPlayerTagSize(source,1.5)
end

function identifyPlayer(player)
    return player and getPlayerName(player) or "Unknown player"
end

function modeDraw(player)
    exports.drawtag:setPlayerSprayMode(player,"draw")
end

function modeErase(player)
    exports.drawtag:setPlayerSprayMode(player,"erase")
end

function changeSize(player,cmdname,size)
    size = tonumber(size)
    if not size or math.abs(size) > 1000 then return end
    if not exports.drawtag:setPlayerTagSize(player,size) then return end
end

function copyTag()
    local png = exports.drawtag:getTagTexture(source)
    exports.drawtag:setPlayerTagTexture(client,png)
end

 

here is the mod script: save_tags.lua

function loadTagsFromFile()
    if tags_loaded then return end
    tags_loaded = true
    local tags_file = xmlLoadFile("saved_tags/tags.xml")
    if not tags_file then return end
    local png_file = fileOpen("saved_tags/tags_png.dat",true)
    if not png_file then xmlUnloadFile(tags_file) return end
    local tag_nodes = xmlNodeGetChildren(tags_file)
    for tagnum,tag_node in ipairs(tag_nodes) do
        local tagdata = xmlNodeGetAttributes(tag_node)
        fileSetPos(png_file,tagdata.png_off)
        exports.drawtag:createTagFromExistingData(
            nil,
            tagdata.x,tagdata.y,tagdata.z,
            tagdata.x1,tagdata.y1,tagdata.z1,
            tagdata.x2,tagdata.y2,tagdata.z2,
            tagdata.nx,tagdata.ny,tagdata.nz,
            tagdata.size,
            tagdata.vis,fileRead(png_file,tagdata.png_len)
        )
    end
    fileClose(png_file)
    xmlUnloadFile(tags_file)
end

function saveTagsToFile()
    if not tags_loaded then return end
    tags_loaded = nil
    local tags_file = xmlCreateFile("saved_tags/tags.xml","tags")
    if not tags_file then return end
    local png_file = fileCreate("saved_tags/tags_png.dat")
    if not png_file then xmlUnloadFile(tags_file) return end
    local all_tags = exports.drawtag:getAllTags()
    for tagnum,tag in ipairs(all_tags) do
        local att,x,y,z,x1,y1,z1,x2,y2,z2,nx,ny,nz,size,vis,png = exports.drawtag:getTagData(tag)
        if not att then
            local tag_node = xmlCreateChild(tags_file,"tag")
            xmlNodeSetAttribute(tag_node,"x",x)
            xmlNodeSetAttribute(tag_node,"y",y)
            xmlNodeSetAttribute(tag_node,"z",z)
            xmlNodeSetAttribute(tag_node,"x1",x1)
            xmlNodeSetAttribute(tag_node,"y1",y1)
            xmlNodeSetAttribute(tag_node,"z1",z1)
            xmlNodeSetAttribute(tag_node,"x2",x2)
            xmlNodeSetAttribute(tag_node,"y2",y2)
            xmlNodeSetAttribute(tag_node,"z2",z2)
            xmlNodeSetAttribute(tag_node,"nx",nx)
            xmlNodeSetAttribute(tag_node,"ny",ny)
            xmlNodeSetAttribute(tag_node,"nz",nz)
            xmlNodeSetAttribute(tag_node,"size",size)
            xmlNodeSetAttribute(tag_node,"vis",vis)
            xmlNodeSetAttribute(tag_node,"png_off",fileGetPos(png_file))
            xmlNodeSetAttribute(tag_node,"png_len",fileWrite(png_file,png))
            destroyElement(tag)
        end
    end
    fileClose(png_file)
    xmlSaveFile(tags_file)
    xmlUnloadFile(tags_file)
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...