Jump to content

[HELP!] Making Multiple Gates IN one lua Locked to Team


Daz

Recommended Posts

Posted (edited)

Is it possible to make multiple gates in a single lua

I have tried it and they are interfering with each other and messing up.

Like one gate will teleport to the other etc

:|

If you know how to make multiple gates work in the same lua please help thanks :D

here is the lua I am using

  
-- 1ST GATE VEHICLE SECTION MILITARY BASE. 
col  = createColTube (110.199, 1757.300, 17, 20, 3) -- enter your cooderates here for your colshape please note 10 and 3 is to do with the size of the shape.  
  
door = createObject ( 980, 110.299, 1756.400, 19.399, 0, 0, 90) -- enter the ID of the object followed by the coordinates 
  
-- note the rotx y and z may not be required so you just remove these. x y and z is where you would put your cordinates. 
  
  
  
function Open ( pla ) 
  
    if ( getElementType ( pla ) == "player" ) then 
  
        local team = getPlayerTeam ( pla ) 
  
        local teamName = ( team and getTeamName ( team ) or "" ) 
  
        if ( teamName == "Desert Eagles" ) then 
  
            moveObject ( door, 2200, 110.299, 1756.400, 25.5 ) -- here is where you enter the coordinatess of the new location of the object, 2200 = the speed of the movent. 
  
        end 
  
    end 
  
end 
  
addEventHandler ( "onColShapeHit", col, Open) 
  
  
  
function Close ( pla ) 
  
    if ( getElementType ( pla ) == "player" ) then 
  
        local team = getPlayerTeam ( pla ) 
  
        local teamName = ( team and getTeamName ( team ) or "" ) 
  
        if ( teamName == "Desert Eagles" ) then 
  
            moveObject ( door, 2951, 110.299, 1756.400, 19.399 ) -- here is where you copy the coordinates of the orginal location of the object, 2951 = the timer of movent. 
  
        end 
  
    end 
  
end 
  
addEventHandler ( "onColShapeLeave", col, Close ) 
  
  
------------------------------------------------------------------------------------------------------------------------------------------------ 
  
--2nd Gate 
  
col1  = createColTube (290.600, 1821.400, 17.600, 20, 3) -- enter your cooderates here for your colshape please note 10 and 3 is to do with the size of the shape.  
  
door1 = createObject ( 980, 290.700, 1821.099, 19.399, 0, 0, 89.999) -- enter the ID of the object followed by the coordinates 
  
-- note the rotx y and z may not be required so you just remove these. x y and z is where you would put your cordinates. 
  
  
  
function Open ( pla ) 
  
    if ( getElementType ( pla ) == "player" ) then 
  
        local team = getPlayerTeam ( pla ) 
  
        local teamName = ( team and getTeamName ( team ) or "" ) 
  
        if ( teamName == "Desert Eagles" ) then 
  
            moveObject ( door1, 2200, 290.700, 1821.099, 25.5 ) -- here is where you enter the coordinatess of the new location of the object, 2200 = the speed of the movent. 
  
        end 
  
    end 
  
end 
  
addEventHandler ( "onColShapeHit", col, Open) 
  
  
  
function Close ( pla ) 
  
    if ( getElementType ( pla ) == "player" ) then 
  
        local team = getPlayerTeam ( pla ) 
  
        local teamName = ( team and getTeamName ( team ) or "" ) 
  
        if ( teamName == "Desert Eagles" ) then 
  
            moveObject ( door1, 2951, 290.700, 1821.099, 19.399 ) -- here is where you copy the coordinates of the orginal location of the object, 2951 = the timer of movent. 
  
        end 
  
    end 
  
end 
  
addEventHandler ( "onColShapeLeave", col1, Close ) 
  
  

Edited by Guest
Posted

I suggest you to make a table with them, then loop the table and create gates and colshapes.

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.

  • MTA Team
Posted

I think an example would be:

  
local cols = { 
{110.199, 1757.300, 17, 20, 3}, 
{110.199, 1757.300, 17, 20, 3} 
} 
for _, v in ipairs(cols) do 
local x,y,z,rad,height = unpack(v) 
createColTube(x,y,z,rad,height) 
end 
  

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted

Ok I am very knew to this so I need to make a table that loops ?? would this still follow the same layout you helped me with

for the gates locked to teams.

Posted
I think an example would be:
  
local cols = { 
{110.199, 1757.300, 17, 20, 3}, 
{110.199, 1757.300, 17, 20, 3} 
} 
for _, v in ipairs(cols) do 
local x,y,z,rad,height = unpack(v) 
createColTube(x,y,z,rad,height) 
end 
  

with this example how would I make it locked to a team like my original lua if you know?

  • MTA Team
Posted

You could store the team that it would be locked for in the table as a string.

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted
You could store the team that it would be locked for in the table as a string.

Like this ?

  
 if ( getElementType ( pla ) == "player" ) then 
14.  
15.        local team = getPlayerTeam ( pla ) 
16.  
17.        local teamName = ( team and getTeamName ( team ) or "" ) 
18.  
19.        if ( teamName == "Desert Eagles" ) then 
  
  
  

  • MTA Team
Posted

I meant storing the name you compare in the table like this:

  
local cols = { 
{"TEAM1",110.199, 1757.300, 17, 20, 3}, 
{"TEAM2",110.199, 1757.300, 17, 20, 3} 
} 

And the unpack would be something like this:

  
for _, v in ipairs(cols) do 
local teamname,x, y, z, rad,height  = unpack ( v ) 
tubes = createColTube(x,y,z,rad,height) 
setElementData(tubes,"team",teamname) 
end 

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted

Hi im sorry I don't understand can somebody show me an example of 2 gates (locked to team)in the same lua.

And which bits I should change thank you if anyone can

  • MTA Team
Posted

Try something like this...

  
  
local cols = { 
{"Military",110.199, 1757.300, 17, 20, 3}, 
{"TEAM2",110.199, 1757.300, 17, 20, 3}  
} 
  
for _, v in ipairs(cols) do 
  
local name,x, y, z, rad,h  = unpack ( v )  
tubes = createColTube(x, y, z, rad,h)  
  
setElementData(tubes,"team",name) 
  
end 
  
addEventHandler("onMarkerHit",tubes, 
  
function (hit,dim) 
  
if getElementType(hit) == 'player' then 
                                          
local team = getPlayerTeam(hit) 
  
local teamname = getTeamName(team) 
  
if 'Military' == getElementData(source,"team") then 
moveObject ( door, 2200, 110.299, 1756.400, 25.5 ) 
end 
end 
end) 

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted
Try something like this...
  
  
local cols = { 
{"Military",110.199, 1757.300, 17, 20, 3}, 
{"TEAM2",110.199, 1757.300, 17, 20, 3}  
} 
  
for _, v in ipairs(cols) do 
  
local name,x, y, z, rad,h  = unpack ( v )  
tubes = createColTube(x, y, z, rad,h)  
  
setElementData(tubes,"team",name) 
  
end 
  
addEventHandler("onMarkerHit",tubes, 
  
function (hit,dim) 
  
if getElementType(hit) == 'player' then 
                                          
local team = getPlayerTeam(hit) 
  
local teamname = getTeamName(team) 
  
if 'Military' == getElementData(source,"team") then 
moveObject ( door, 2200, 110.299, 1756.400, 25.5 ) 
end 
end 
end) 

'tubes' will only return a colshape, since, it's being stored in a variable. Use a table to store each colshape.

Also, 'onMarkerHit' is called only for markers created using createMarker. Use onColShapeHit instead.

Please do not PM me with scripting related question nor support, use the forums instead.

Posted

I filled out that template you give me maybe I am putting wrong coordinates for different places

but no gate showed

  
  
local cols = { 
  
{"Military",256.399, 1843.699, 9.899, 20, 3}, 
  
{"TEAM2",256.399, 1843.699, 9.899, 20, 3}  
  
} 
  
  
  
for _, v in ipairs(cols) do 
  
  
  
local name,256.399, 1843.699, 9.899  = unpack ( v )  -----??????? what is this 
  
tubes = createColTube(256.399, 1846.699, 7.900, 5, 3)  
  
  
  
setElementData(tubes,"team",name) 
  
  
  
end 
  
  
  
addEventHandler("onMarkerHit",tubes, 
  
  
  
function (hit,dim) 
  
  
  
if getElementType(hit) == 'player' then 
  
                                          
  
local team = getPlayerTeam(hit) 
  
  
  
local teamname = getTeamName(team) 
  
  
  
if 'Military' == getElementData(source,"team") then 
  
moveObject ( door, 2200, 256.399, 1843.699, 13 ) 
  
end 
  
end 
  
end) 
  

  • MTA Team
Posted

That's because in my script i asumed you already created the doors. You have to create them using createObject

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted

Still no luck :cry:

  
door = createObject ( 3037, 256.399, 1843.699, 9.899, 0, 0, 0) 
  
local cols = { 
  
{"Military",256.399, 1843.699, 9.899, 20, 3}, 
  
{"TEAM2",256.399, 1843.699, 9.899, 20, 3}  
  
} 
  
  
  
for _, v in ipairs(cols) do 
  
  
  
local name,256.399, 1843.699, 9.899  = unpack ( v )  -----??????? what is this 
  
tubes = createColTube(256.399, 1846.699, 7.900, 5, 3)  
  
  
  
setElementData(tubes,"team",name) 
  
  
  
end 
  
  
  
addEventHandler("onMarkerHit",tubes, 
  
  
  
function (hit,dim) 
  
  
  
if getElementType(hit) == 'player' then 
  
                                          
  
local team = getPlayerTeam(hit) 
  
  
  
local teamname = getTeamName(team) 
  
  
  
if 'Military' == getElementData(source,"team") then 
  
moveObject ( door, 2200, 256.399, 1843.699, 13 ) 
  
end 
  
end 
  
end) 

  • MTA Team
Posted

Change the event to onColShapeHit as suggested by DNL and store every colShape into a table.

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted

a Looping table? because I can see a guide on youtube for that otherwise I don't really know what im doing

Posted
-- team, object model, position and rotation, move to position 
local gates = 
    { 
        { "Desert Eagles", 980, { 110.299, 1756.400, 19.399, 0, 0, 90 }, { 110.299, 1756.400, 25.5 } }, 
        { "Desert Eagles", 980, { 290.700, 1821.099, 19.399, 0, 0, 89.999 }, { 290.700, 1821.099, 25.5 } } 
    } 
local gateData = { } -- A table to store the gates data 
  
addEventHandler ( "onResourceStart", resourceRoot, 
    function ( ) 
        for _, data in ipairs ( gates ) do -- Loop our gates table 
            local team, model, posRot, moveTo = unpack ( data ) -- Unpack the gate data 
            local x, y, z, rx, ry, rz = unpack ( posRot ) -- Unpack the gate position and rotation 
            local mx, my, mz = unpack ( moveTo ) -- Unpack the position to where it has to move 
            local object = createObject ( model, x, y, z, rx, ry, rz ) -- Create the gate object 
            local colshape = createColTube ( x, y, z - 0.5, 20, 3 ) -- Create the gate colshape 
            if ( colshape ) then -- If the colshape was created 
                addEventHandler ( "onColShapeHit", colshape, onGateColshape ) -- Add the event handler for when hit the colshape 
                addEventHandler ( "onColShapeLeave", colshape, onGateColshape ) -- Add the event handler for when leave the colshape 
                gateData [ colshape ] = -- Use the colshape as index to store the gate data 
                    { 
                        object = object, 
                        team = team, 
                        x = x, 
                        y = y, 
                        z = z, 
                        mx = mx, 
                        my = my, 
                        mz = mz 
                    } 
            end 
        end 
    end 
) 
  
function onGateColshape ( hitElement, matchD ) 
    if ( matchD ) then -- If the dimension matches 
        local data = gateData [ source ] -- Get the gate data using the colshape as index ( source ) 
        if ( data ) then -- If there was data 
            local team = getPlayerTeam ( hitElement ) -- Get the player team 
            local teamName = ( team and getTeamName ( team ) or "" ) -- Get the team name 
            if ( teamName == data.team ) then -- If the player team matches the gate team 
                if ( eventName == "onColShapeHit" ) then -- If the event name is 'onColShapeHit' 
                    moveObject ( data.object, 2200, data.mx, data.my, data.mz ) -- Open the gate 
                else -- If the event name is 'onColShapeLeave' 
                    moveObject ( data.object, 2200, data.x, data.y, data.z ) -- Close the gate 
                end 
            end 
        end 
    end 
end 

I added comments so you know what each line does.

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

Thank you for writing this code its extremely helpful and I understand it the gates open and close but im struggling to find where I can edit each gates colshape at because they are in weird places

thank you again

  • MTA Team
Posted

In SolidSnake's script, the colshape are being created at each gate position.

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 
Posted
-- team, object model, position and rotation, move to position 
local gates = 
    { 
        { "Desert Eagles", 980, { 110.299, 1756.400, 19.399, 0, 0, 90 }, { 110.299, 1756.400, 25.5 } }, 
        { "Desert Eagles", 980, { 290.700, 1821.099, 19.399, 0, 0, 89.999 }, { 290.700, 1821.099, 25.5 } } 
    } 

There you add/remove/change gates.

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

The only problem im finding is that the colshape is above ground im trying to change the Z coord for it but doesn't make a difference I think the colshape is spawning itself halfway up the Gate./

local colshape = createColTube ( x, y, z - 1, 10, 17 ) -- Create the gate colshape

Posted

The colshape uses same position as the gate, if it's still too high, change that "z - 1" to "z - 2" or more.

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

After a lot of experimenting and frustration I got it thanks to you guys I cant THANK YOU ENOUGH it works finallyyyyy

:lol::D

:mrgreen:

Posted

You're welcome.

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.

  • MTA Team
Posted

You're Welcome man.

DevOps Engineer, Cloud Advocate & Security Engineer(Red Team) | Coffee, Containers & Burp

 

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