Dziugasc Posted November 7, 2020 Posted November 7, 2020 Hello, I am dealing with this problem for 5+ hours, basically it works without team 100%, but with teams only 1st line in table teams works, if for example if I remove Truckers, only Police works and so on. local teams = { --{"team",x,y,z,rotation,skinid, weapon1, weapon2, weapon3} {"Truckers",-2057.91650, -236.21437, 35.32031,0,206,22,25,5}, {"Police",-1636.95337, 691.31042, 7.16481,0,280,22,25,3}, {"Mafia",-2306.69556, 277.60596, 35.36875,0,126,30,28,24} } local guestSpawns = { --{x,y,z,rotation,skinid} {-1794.5,1212.2,32.7,0}, {-2519.6001, 1216, 37.4, 0}, {-1645, 1202.4, 32.9, 0}, {-1592.9, 1271.6, 7.2, 0}, {-1481.1, 686, 1.3, 0}, {-1747.5, 210.89999, 3.6, 0}, {-2031.1, -52.7, 35.4, 0}, {-2678.2, -280.10001, 7.2, 0}, {-2582.7, 319.5, 5.2, 0}, {-2749.3994, -48.90039, 6.8, 0}, {-2443.1001, 752, 35.2, 0}, {-2154.1001, -421.70001, 35.3, 0}, {-2238.8999, 112.5, 35.3, 0}, {-2197.3999, 288.39999, 35.3, 0} } function getRandomSpawnpoint() randomNum = math.random(#guestSpawns) return randomNum end function spawnOnWasted() cancelEvent() fadeCamera(source, true) local num = getRandomSpawnpoint() local ammo = 1000 local playerTeam = getPlayerTeam(source) -- source is the player who died onPlayerWasted local teamName = getTeamName(playerTeam) -- we get the team name for _, v in pairs(teams) do if teamName == v[1] then local thePlayer = source return setTimer(function() -- we return this spawnPlayer(thePlayer ,v[2],v[3],v[4],v[5],v[6],0,0,playerTeam) giveWeapon(thePlayer , v[7],ammo,false) giveWeapon(thePlayer , v[8],ammo,false) giveWeapon(thePlayer , v[9],ammo,false) end,2000,1) -- if it doesn't match (the player has no team or not specified team inside team table else for i,source in ipairs(getElementsByType("player")) do return setTimer(function() spawnPlayer(source,guestSpawns[num][1],guestSpawns[num][2],guestSpawns[num][3],guestSpawns[num][4],guestSpawns[num][5],0,0,playerTeam) -- giveWeapon(source, weapon,ammo,false) end,2000,1) end end end -- if player is in team but doesnt have spawnpoint use general spawnpoint end addEventHandler("onPlayerWasted", root,spawnOnWasted)
Moderators IIYAMA Posted November 7, 2020 Moderators Posted November 7, 2020 (edited) 6 hours ago, Dziugasc said: if for example if I remove Truckers, only Police works and so on. That is because the `return` keyword stops the whole function. You are currently executing the following code, while I left most of the details out of it. How many times do you think this loop will run? (no matter what outcome of math.random is) for i=1, 1000 do if math.random(2) == 1 then return true else return false end end A : 1000 times B : 0 times C : 1 time Spoiler C 1 time Try to move the NOT state (as in no team has been found), after the loop. --[[ ... ]] local thePlayer = source for _, v in pairs(teams) do if teamName == v[1] then setTimer(function() spawnPlayer(thePlayer ,v[2],v[3],v[4],v[5],v[6],0,0,playerTeam) giveWeapon(thePlayer , v[7],ammo,false) giveWeapon(thePlayer , v[8],ammo,false) giveWeapon(thePlayer , v[9],ammo,false) end,2000,1) return -- this stops the whole function... end end setTimer(function() spawnPlayer(thePlayer,guestSpawns[num][1],guestSpawns[num][2],guestSpawns[num][3],guestSpawns[num][4],guestSpawns[num][5],0,0,playerTeam) end,2000,1) --[[ ... ]] By the way, this is just 1 out of many solutions. Edited November 8, 2020 by IIYAMA 1 Do you want to improve your Lua programming skills and make less mistakes? Start with Lua Language Server! Useful functions 3x Spoiler checkPassiveTimer getScreenStartPositionFromBox getPedGender Tutorials 4x Spoiler Scaling DX Events Attach an addEventHandler on a group of elements Debugging
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now