Jump to content

resolved.


OrbTanT

Recommended Posts

Posted

Do you have permission to use that script?

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted
Do you have permission to use that script?

The turf system of Nerd Gaming have been released and can be used or edit.

A unique GangWar gamemode waiting for you!
Click here for more information.

560x95_FFFFFF_FF9900_000000_000000.png

Posted
local _setElementData = setElementData 
function setElementData ( element, group, value )
        return _setElementData ( element, group, value, true )
end
 
local turfLocs = { }
function createTurf ( x, y, z, width, height, owner, forcedId )
        local owner = tostring( owner ) or nil
        local r, g, b = getTeamColor ( owner )
        if not r then r = 255 end
        if not g then g = 255 end
        if not b then b = 255 end
 
        if ( owner == "server" ) then
                r, g, b = 0, 255, 255
        end
 
        local rad = createRadarArea ( x, y, width, height, r, g, b, 170 )
        local col = createColCuboid ( x, y, z-5, width, height, 35)
        if ( not forcedId or turfLocs [ id ] ) then
                id = 0
                while ( turfLocs [ id ] ) do
                        id = id + 1
                end
        else
                id = forcedId
        end
 
        turfLocs[id] = { }
        turfLocs[id].col = col
        turfLocs[id].radar = rad
        turfLocs[id].owner = owner or nil
        turfLocs[id].attackers = nil
        turfLocs[id].attackProg = 0
        turfLocs[id].prepProg = 0
        setElementData ( turfLocs[id].col, "NGTurf:TurfId", id )
        setElementData ( turfLocs[id].col, "NGTurf:TurffingTable", turfLocs [ id ] )
        addEventHandler ( "onColShapeHit", turfLocs[id].col, onColShapeHit )
        addEventHandler ( "onColShapeLeave", turfLocs[id].col, onColShapeLeave )
        return turfLocs[id];
end
 
function updateTurfGroupColor ( group )
        local r, g, b = getTeamColor ( group )
        for i, v in pairs ( turfLocs ) do
                if ( v.owner == group ) then
                        setRadarAreaColor ( v.radar, r, g, b, 120 )
                end
        end
end
 
function onColShapeHit ( player )
        if ( player and isElement ( player ) and getElementType ( player ) == "player" and not isPedInVehicle ( player ) ) then
                local gang = getPlayerTeam ( player )
               
                triggerClientEvent ( player, "NGTurfs:onClientEnterTurfArea", player, turfLocs [ id ] )
                if ( not gang ) then
                        return outputChatBox ( "You're not in a gang, you cannot turf.", player, 255, 255, 0 )
                end
 
                local id = tonumber ( getElementData ( source, "NGTurf:TurfId" ) )
                if ( turfLocs[id].owner == gang ) then
                        return
                end
 
                if ( turfLocs[id].attackers and turfLocs[id].attackers ~= gang ) then
                        return outputChatBox ( "A gang "..tostring(turfLocs[id].attackers).." já está conquistando esse territorio. Tente mais tarde!.", player, 255, 0, 0 )
                end
 
                if ( not turfLocs[id].attackers ) then
                        outputChatBox ( "You have started to prepare a turf war. Find cover, call backup, and wait for it to begin.", player, 255, 255, 0 )
                        local x, y, z = getElementPosition ( source )
                        outputChatBox ( getPlayerName ( player ).." is preparing a turf war with "..tostring(turfLocs[id].owner).." in "..getZoneName(x,y,z)..", "..getZoneName(x,y,z,true).."! Get there to help him, the war will start in 2 minutes!", gang, 255, 255, 0 )
                        setRadarAreaFlashing ( turfLocs[id].radar, true )
                        turfLocs[id].attackers = gang
                        turfLocs[id].attackProg = 0
                        turfLocs[id].prepProg = 0
                        setElementData ( turfLocs[id].col, "NGTurf:TurffingTable", turfLocs [ id ] )
                end
        end
end
 
function onColShapeLeave ( player )
        if ( player and getElementType ( player ) == "player" ) then
                triggerClientEvent ( player, "NGTurfs:onClientExitTurfArea", player, turfLocs [ getElementData ( source, "NGTurf:TurfId" ) ] )
        end
end
 
 
setTimer ( function ( )
        for id, data in pairs ( turfLocs ) do
                if ( data.attackers ) then
                        local players = { attackers = { }, owners = { } }
                        local isGangInTurf = false
                        local isOwnerInTurf = false
                        for i, v in pairs ( getElementsWithinColShape ( data.col, "player" ) ) do
                                local g = getPlayerTeam ( v )
                                if ( g == data.attackers ) then
                                        isGangInTurf = true
                                        table.insert ( players.attackers, v )
                                elseif ( g == data.owner ) then
                                        isOwnerInTurf = true
                                        table.insert ( players.owners, v )
                                end
                        end
 
                        local x, y, z = getElementPosition ( data.col )
                        if ( isOwnerInTurf and isGangInTurf ) then
                                outputChatBox ( "The turf war in "..getZoneName ( x,y,z )..", "..getZoneName ( x,y,z, true ).." is paused due to both gangs in the turf", turfLocs[id].attackers, 255, 255, 255 )
                                outputChatBox ( "The turf war in "..getZoneName ( x,y,z )..", "..getZoneName ( x,y,z, true ).." is paused due to both gangs in the turf", turfLocs[id].owner, 255, 255, 255 )
                        else
                                -- Add Points To Attackers
                                if ( isGangInTurf ) then
                                        -- Prep the war
                                        if ( turfLocs[id].attackProg == 0 ) then
                                                turfLocs[id].prepProg = data.prepProg + 2
                                                if ( turfLocs[id].prepProg >= 100 ) then
                                                        turfLocs[id].prepProg = 0
                                                        turfLocs[id].attackProg = 1
                                                        beginTurfWarOnTurf ( id )
                                                end
                                        -- Attack War
                                        else
                                                turfLocs[id].attackProg = turfLocs[id].attackProg + 1
                                                if ( turfLocs[id].attackProg == 100 ) then
                                                        outputChatBox ( "Your gang has captured a turf in "..getZoneName ( x,y,z )..", "..getZoneName ( x,y,z, true ).." from the "..turfLocs[id].owner.." gang! Great job!", turfLocs[id].attackers, 0, 255, 0)
                                                        outputChatBox ( "Your gang lost a turf in "..getZoneName ( x,y,z )..", "..getZoneName ( x,y,z, true ).." to the "..tostring(turfLocs[id].attackers).." gang.", turfLocs[id].owner, 255, 0, 0)
                                                        setTurfOwner ( id, turfLocs[id].attackers )
                                                end
                                        end
                                       
                                -- Take points from attackers
                                else
                                        -- Prepare war
                                        if ( turfLocs[id].attackProg == 0 ) then
                                                turfLocs[id].prepProg = data.prepProg - 2
                                                if ( turfLocs[id].prepProg <= 0 ) then
                                                        outputChatBox ( "Your gang lost the turf preparation war in "..getZoneName(x,y,z)..", "..getZoneName ( x,y,z, true ).." to the "..turfLocs[id].owner.." gang!", turfLocs[id].attackers, 255, 0, 0 )
                                                        outputChatBox ( "Your gang has defended the turf in "..getZoneName(x,y,z)..", "..getZoneName(x,y,z,true).."!", turfLocs[id].owner..", from the "..turfLocs[id].attackers.." gang, when it was being preped for a war", 0, 255, 0 )
                                                        setTurfOwner ( id, turfLocs[id].owner )
                                                end
                                        -- Attacking war
                                        else
                                                turfLocs[id].attackProg = data.attackProg - 1
                                                if ( turfLocs[id].attackProg <= 0 ) then
                                                        outputChatBox ( "Your gang lost the turf war in "..getZoneName(x,y,z)..", "..getZoneName ( x,y,z, true ).." to the "..turfLocs[id].owner.." gang!", turfLocs[id].attackers, 255, 0, 0 )
                                                        outputChatBox ( "Your gang has defended the turf in "..getZoneName(x,y,z)..", "..getZoneName(x,y,z,true).." from the "..turfLocs[id].attackers.." gang", turfLocs[id].owner, 0, 255, 0 )
                                                        setTurfOwner ( id, turfLocs[id].owner )
                                                end
                                        end
                                end
                        end
                        for i, v in pairs ( players ) do
                                for k, p in pairs ( v ) do
                                        triggerClientEvent ( p, "NGTurfs:upadateClientInfo", p, turfLocs [ id ] )
                                end
                        end
                end
        end
end, 800, 0 )
addEvent ( "NGTurfs:onTurfProgressChange", true )
 
--[[
addCommandHandler ( "attackprog", function ( p )
        local gangAttacks = { }
        local g = getPlayerTeam ( p )
        if ( not g ) then
                return outputChatBox ( "You're not in a gang", p, 255, 255, 0)
        end
 
        for i, v in pairs ( turfLocs ) do
                if ( v.attackers and v.attackers == g ) then
                        gangAttacks [ i ] = true
                end
        end
 
        if ( table.len ( gangAttacks ) == 0 ) then
                return outputChatBox ( "Your gang isn't involved in any gang wars right now.", p, 255, 255, 0 )
        end
 
        for id, _ in pairs ( gangAttacks ) do
                local x ,y, z = getElementPosition ( turfLocs[id].col )
                outputChatBox ( "----Turf War Status---", p, 255, 255, 255, false )
                outputChatBox ( "Current owner: "..turfLocs[id].owner, p, 255, 255, 255, false )
                outputChatBox ( "Attacker: "..turfLocs[id].attackers, p, 255, 255, 255, false )
                outputChatBox ( "Prep Progress: "..turfLocs[id].prepProg.."%", p, 255, 255, 255, false )
                outputChatBox ( "Attack Progress: "..turfLocs[id].attackProg.."%", p, 255, 255, 255, false )
                outputChatBox ( "Turf Location: "..getZoneName ( x, y, z )..", "..getZoneName ( x, y, z, true ), p, 255, 255, 255, false )
                outputChatBox ( "Turf Server-ID: "..id, p, 255, 255, 255, false )
        end
 
end )]]
 
function table.len ( tb )
        local c = 0
        for i, v in pairs ( tb ) do
                c = c + 1
        end
        return c
end
 
function beginTurfWarOnTurf ( id )
        local d = turfLocs [ id ]
        local x, y, z = getElementPosition ( d.col )
        outputChatBox ( "Your gang has begun a turf war in "..getZoneName ( x, y, z)..", "..getZoneName ( x, y, z, true ).." against the "..d.owner.." gang! Get there an help!", d.attackers, 255, 255, 0 )
        outputChatBox ( "One of your turfs in "..getZoneName ( x, y, z)..", "..getZoneName ( x, y, z, true ).." is being attacked by the "..tostring(d.attackers).." gang!", d.owners, 255, 0, 0 )
        setRadarAreaColor ( d.radar, 255, 255, 255, 170 )
end
 
function setTurfOwner ( id, owner )
        setRadarAreaFlashing ( turfLocs[id].radar, false )
        turfLocs[id].owner = owner
        turfLocs[id].attackers = nil
        turfLocs[id].attackProg = 0
        local r, g, b = getTeamColor ( owner )
        setRadarAreaColor ( turfLocs[id].radar, r, g, b, 120 )
        saveTurfs ( )
end
 
function getTurfs ( )
        return turfLocs
end
 
function saveTurfs ( )
        for id, data in pairs ( turfLocs ) do
                exports.NGSQL:db_exec ( "UPDATE turfs SET owner=? WHERE id=?", data.owner, id )
        end
        return true
end
 
addEventHandler( "onResourceStart", getResourceRootElement( getThisResource ( ) ), function ( )
        exports.NGSQL:db_exec ( "CREATE TABLE IF NOT EXISTS turfs ( id INT, owner VARCHAR(50), x FLOAT, y FLOAT, z FLOAT, width INT, height INT )" )
        local query = exports.NGSQL:db_query ( "SELECT * FROM turfs" )
        outputChatBox( tostring( query) )
        if #query == 0 then
                outputChatBox('soherre')
                local query = { }
                local data = {
                        { -1867.8, -107.43, 15.1, 58, 65 },
                        { -1866.5, -26.36, 15.29, 49, 200 },
                        { -1811.33, 743.43, 20, 85, 85 },
                        { -1991.5, 862.62, 34, 79, 42 },
                        { -2799.25, -200.6, 7.19, 83, 120 },
                        { -2136.84, 120.12, 30, 120, 190 },
                        { -2516.52, 718.16, 27.97, 118, 80 },
                        { -2516.41, 578.19, 16.62, 117, 120 },
                        { -2596.49, 818.05, 49.98, 59, 80 },
                        { -2453.17, 947.58, 45.43, 54, 80  },
                        { -2740.6, 344.59, 4.41, 68, 61 },
                        { -2696.24, 227.35, 4.33, 39.5, 50.5 },
                        { -2397.31, 82.99, 35.3, 133, 160 },
                       

A unique GangWar gamemode waiting for you!
Click here for more information.

560x95_FFFFFF_FF9900_000000_000000.png

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