Maaster Posted February 17, 2021 Share Posted February 17, 2021 Por exemplo, quero fazer algo tipo, /gangmoney ai todos os jogadores que estiverem na mesma equipe de que quem digitou o comando "/gangmoney" ganhem 10k e não apenas o jogador que digitou e sim todos que fazem parte da equipe dele Link to comment
miiguelz Posted February 17, 2021 Share Posted February 17, 2021 (edited) Vou tentar lhe explicar a lógica. function givePlayersOfTeam(thePlayer, cmd, teamName) -- Verifica se existe no servidor a equipe especificada. local theTeam = getTeamFromName(teamName) -- Caso existir a equipe: if (theTeam) then -- Pega todos jogadores que fazem parte da equipe. local players = getPlayersInTeam(theTeam) -- Fazemos um loop pra pegar todos os jogadores da equipe. for i, p in ipairs(players) do -- Aqui ele irá dar o dinheiro para todos jogadores do time. -- A quantia que será depositada será o dinheiro dele atual + 1000. setPlayerMoney(p, givePlayerMoney(p) + 1000) end else outputChatBox("Não existe essa equipe.") end end addCommandHandler ("moneygang", givePlayersOfTeam) Vê se isso resolve o seu caso, não testei e não sei se irá funcionar. Edited February 17, 2021 by miiguelz 1 Link to comment
Maaster Posted February 17, 2021 Author Share Posted February 17, 2021 (edited) 41 minutes ago, miiguelz said: Vou tentar lhe explicar a lógica. Hide contents function givePlayersOfTeam(thePlayer, cmd, teamName) -- Verifica se existe no servidor a equipe especificada. local theTeam = getTeamFromName (teamName) -- Caso existir a equipe: if (theTeam) then -- Pega todos jogadores que fazem parte da equipe. local players = getPlayersInTeam (theTeam) -- Fazemos um loop pra pegar todos os jogadores da equipe. for i, p in ipairs(players) do -- Aqui ele irá dar o dinheiro para todos jogadores do time. -- A quantia que será depositada será o dinheiro dele atual + 1000. setPlayerMoney(p, givePlayerMoney(p) + 1000) end else outputChatBox("Não existe essa equipe.") end end addCommandHandler ("moneygang", givePlayersOfTeam) Vê se isso resolve o seu caso, não testei e não sei se irá funcionar. Vendo seu codigo tentei aqui, mas nao deu certo, bom, oque eu realmente quero fazer eh quando uma equipe dominar a favela, todos os jogadores desta equipe vao ficar ganhando 10000 a cada 10 minutos, ai esta o codigo do script: local sql = { Query = executeSQLQuery }; cooldawnTimer = false addEventHandler( 'onResourceStart', resourceRoot, function() sql.Query( "CREATE TABLE IF NOT EXISTS areas1 (`atualEquipe1` TEXT NOT NULL)") local insert = true local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do insert = false end if(insert == true) then sql.Query( "INSERT INTO areas1 (atualEquipe1) VALUES ('ninguem')") end sql.Query( "UPDATE areas1 SET atualEquipe1 = 'ninguem'") end ); ----------------------------------------Marker---------------------------------------- local marker = createMarker (2499.1157226563,-877.779296875,114.53281402588, "cylinder",2,255 ,0 ,0, 100) local entrar = createMarker (2499.1157226563,-877.779296875,114.53281402588 +1, "arrow", 0, 000,0, 0) ----------------------------------------Blip---------------------------------------- local blip = createBlipAttachedTo ( entrar, 23 ) setBlipVisibleDistance(blip, 250) ----------------------------------------Ao entrar no marker---------------------------------------- function texto () local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do triggerClientEvent(root,"onDominate1", root, busca[i].atualEquipe1 ) end end setTimer ( texto, 1000, 0) local hillRadar = createRadarArea(2331.3779296875,-1066.1728515625,350,220,255,0,0,0) function mensagem (source) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Digite #FF0000/dominar",source,255,255,255,true) end addEventHandler("onMarkerHit",marker,mensagem) ----------------------------------------/dominar---------------------------------------- function mastering (element) if not isElementWithinMarker(element, marker) then return end if getElementType(element) == "player" then local inTeam = getPlayerTeam (element) if inTeam then if cooldawnTimer == true then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela acabou de ser dominada, espere alguns minutos!", element, 255, 255, 255, true) else if getElementData(element,"ModoPassivo") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Voce esta com o modo passivo ativado!", element, 255, 0, 0, true) else if getElementData(element,"Dominando") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Espere 1 minuto para usar este comando novamente!", element, 255, 0, 0, true) else --Corp: if getTeamName(inTeam) == "Bope" or getTeamName(inTeam) == "PM" then if nomePlayer == "Bope" or nomePlayer == "PM" then -- Se a favela ja estiver pacificada outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja foi pacificada, nao deixe outras gangs domina-la novamente!", element,255,255,255,true) else if nomePlayer == nil then -- Se a favela nao pertencer a nenhuma gang outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela nao foi dominada por nenhuma gang!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).." #FFFFFFesta #00FF00pacificando #FFFFFFa Favela 1 que pertence a gang #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true)--ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false)--remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) givePlayerMoney(element,42000) -- Dinheiro ganho ao pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Voce recebeu #00FF0042.000R$#FFFFFF por pacificar a favela!", element,255,255,255,true) -- Msg pro policiial que pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).."#FFFFFF conseguiu #00FF00 pacificar#FFFFFF a Favela 1", root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) cooldawn() end,60000,1) end end --Gang: else if getTeamName(inTeam) == nomePlayer then --Se a favela ja for da gang do jogador outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja pertence a sua gang, apenas defenda ela!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF esta#FFFFFF dominando a Favela 1 que pertence a #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true) --ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false) --remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF dominou a Favela 1 que pertencia a #FF0000"..(nomePlayer or ""), root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) if getPlayerWantedLevel(element) < 6 then -- se o jogador tiver menos de 6 levels de procurado setPlayerWantedLevel(element,getPlayerWantedLevel(element)+1) -- adiciona mais um level de procurado ao jogador que dominar end cooldawn() end,60000,1) ------------------------------Dar money a gang que esta em posse da favela------------------------------ favela1Money = setTimer (function () local players = getPlayersInTeam(inTeam) if players == nomePlayer then for i, p in ipairs(players) do setPlayerMoney(p, givePlayerMoney(p) + 1000) end end end,3000,0) ------------------------------.------------------------------ end end end end end else outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Você precisa ser membro de alguma corp ou gang para dominar ou pacificar a Favela1", element,255,255,255,true) end end end addCommandHandler("dominar", mastering) ----------------------------------------Ao sair do marker enquanto domina---------------------------------------- function onLeave (element) triggerClientEvent(element,"TimerStamp1",element) setRadarAreaFlashing ( hillRadar, false ) if (isTimer(Favela1time)) then if not killTimer(Favela1time) then return end outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Volte para o marker para continuar dominando!", element,255,255,255,true) end end addEventHandler("onMarkerLeave",marker,onLeave) ----------------------------------------Cooldawn para dominar---------------------------------------- function cooldawn () if cooldawnTimer == false then cooldawnTimer = true else end setTimer(function() cooldawnTimer = false outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A Favela 1 ja pode ser dominada novamente!", root, 255, 255, 255, true) end, 60000*60*0.2, 1) end eu teria que usar local "inTeam = getPlayerTeam (element)" novamente? nao coloquei pois ja tem isso um pouco mais acima no script e na funcao de dominar. tambem nao esta dando nenhun error ou warning no debugscript Edited February 17, 2021 by Maaster342 Link to comment
Maaster Posted February 17, 2021 Author Share Posted February 17, 2021 4 hours ago, Maaster342 said: Vendo seu codigo tentei aqui, mas nao deu certo, bom, oque eu realmente quero fazer eh quando uma equipe dominar a favela, todos os jogadores desta equipe vao ficar ganhando 10000 a cada 10 minutos, ai esta o codigo do script: local sql = { Query = executeSQLQuery }; cooldawnTimer = false addEventHandler( 'onResourceStart', resourceRoot, function() sql.Query( "CREATE TABLE IF NOT EXISTS areas1 (`atualEquipe1` TEXT NOT NULL)") local insert = true local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do insert = false end if(insert == true) then sql.Query( "INSERT INTO areas1 (atualEquipe1) VALUES ('ninguem')") end sql.Query( "UPDATE areas1 SET atualEquipe1 = 'ninguem'") end ); ----------------------------------------Marker---------------------------------------- local marker = createMarker (2499.1157226563,-877.779296875,114.53281402588, "cylinder",2,255 ,0 ,0, 100) local entrar = createMarker (2499.1157226563,-877.779296875,114.53281402588 +1, "arrow", 0, 000,0, 0) ----------------------------------------Blip---------------------------------------- local blip = createBlipAttachedTo ( entrar, 23 ) setBlipVisibleDistance(blip, 250) ----------------------------------------Ao entrar no marker---------------------------------------- function texto () local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do triggerClientEvent(root,"onDominate1", root, busca[i].atualEquipe1 ) end end setTimer ( texto, 1000, 0) local hillRadar = createRadarArea(2331.3779296875,-1066.1728515625,350,220,255,0,0,0) function mensagem (source) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Digite #FF0000/dominar",source,255,255,255,true) end addEventHandler("onMarkerHit",marker,mensagem) ----------------------------------------/dominar---------------------------------------- function mastering (element) if not isElementWithinMarker(element, marker) then return end if getElementType(element) == "player" then local inTeam = getPlayerTeam (element) if inTeam then if cooldawnTimer == true then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela acabou de ser dominada, espere alguns minutos!", element, 255, 255, 255, true) else if getElementData(element,"ModoPassivo") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Voce esta com o modo passivo ativado!", element, 255, 0, 0, true) else if getElementData(element,"Dominando") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Espere 1 minuto para usar este comando novamente!", element, 255, 0, 0, true) else --Corp: if getTeamName(inTeam) == "Bope" or getTeamName(inTeam) == "PM" then if nomePlayer == "Bope" or nomePlayer == "PM" then -- Se a favela ja estiver pacificada outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja foi pacificada, nao deixe outras gangs domina-la novamente!", element,255,255,255,true) else if nomePlayer == nil then -- Se a favela nao pertencer a nenhuma gang outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela nao foi dominada por nenhuma gang!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).." #FFFFFFesta #00FF00pacificando #FFFFFFa Favela 1 que pertence a gang #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true)--ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false)--remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) givePlayerMoney(element,42000) -- Dinheiro ganho ao pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Voce recebeu #00FF0042.000R$#FFFFFF por pacificar a favela!", element,255,255,255,true) -- Msg pro policiial que pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).."#FFFFFF conseguiu #00FF00 pacificar#FFFFFF a Favela 1", root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) cooldawn() end,60000,1) end end --Gang: else if getTeamName(inTeam) == nomePlayer then --Se a favela ja for da gang do jogador outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja pertence a sua gang, apenas defenda ela!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF esta#FFFFFF dominando a Favela 1 que pertence a #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true) --ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false) --remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF dominou a Favela 1 que pertencia a #FF0000"..(nomePlayer or ""), root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) if getPlayerWantedLevel(element) < 6 then -- se o jogador tiver menos de 6 levels de procurado setPlayerWantedLevel(element,getPlayerWantedLevel(element)+1) -- adiciona mais um level de procurado ao jogador que dominar end cooldawn() end,60000,1) ------------------------------Dar money a gang que esta em posse da favela------------------------------ favela1Money = setTimer (function () local players = getPlayersInTeam(inTeam) if players == nomePlayer then for i, p in ipairs(players) do setPlayerMoney(p, givePlayerMoney(p) + 1000) end end end,3000,0) ------------------------------.------------------------------ end end end end end else outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Você precisa ser membro de alguma corp ou gang para dominar ou pacificar a Favela1", element,255,255,255,true) end end end addCommandHandler("dominar", mastering) ----------------------------------------Ao sair do marker enquanto domina---------------------------------------- function onLeave (element) triggerClientEvent(element,"TimerStamp1",element) setRadarAreaFlashing ( hillRadar, false ) if (isTimer(Favela1time)) then if not killTimer(Favela1time) then return end outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Volte para o marker para continuar dominando!", element,255,255,255,true) end end addEventHandler("onMarkerLeave",marker,onLeave) ----------------------------------------Cooldawn para dominar---------------------------------------- function cooldawn () if cooldawnTimer == false then cooldawnTimer = true else end setTimer(function() cooldawnTimer = false outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A Favela 1 ja pode ser dominada novamente!", root, 255, 255, 255, true) end, 60000*60*0.2, 1) end eu teria que usar local "inTeam = getPlayerTeam (element)" novamente? nao coloquei pois ja tem isso um pouco mais acima no script e na funcao de dominar. tambem nao esta dando nenhun error ou warning no debugscript Consegui fazer isso que eu queria, o codigo ficou assim: moneyTimer = setTimer ( function () local Team = getPlayerTeam(element) if ( Team ) then if getTeamName(Team) == nomePlayer then local players = getPlayersInTeam(Team) for playerKey, playerValue in ipairs ( players ) do givePlayerMoney(playerValue, 100) end end end end,5000,0) esta funcionando, mas quando o jogador que dominou a area sai do servidor, todos param de receber dinheiro e começa a aparecer no debug o warning "Bad argument @ 'getPlayerTeam' [Expected player at argument 1]", como posso resolver isso? Link to comment
Other Languages Moderators Lord Henry Posted February 18, 2021 Other Languages Moderators Share Posted February 18, 2021 Coloque a equipe numa variável pra não ficar usando getPlayerTeam toda hora. Dai quando outra equipe dominar a zona, muda a equipe que fica nessa variável para a nova equipe. 1 Link to comment
Maaster Posted February 18, 2021 Author Share Posted February 18, 2021 10 hours ago, Lord Henry said: Coloque a equipe numa variável pra não ficar usando getPlayerTeam toda hora. Dai quando outra equipe dominar a zona, muda a equipe que fica nessa variável para a nova equipe. Como faço isso? colocar a equipe em uma variável Link to comment
Other Languages Moderators Lord Henry Posted February 18, 2021 Other Languages Moderators Share Posted February 18, 2021 Utilize isso somente na hora que o jogador domina a zona. Depois no timer, vc usa a variável em vez de ficar atribuindo valor a ela. local Team = getPlayerTeam(element) Link to comment
Maaster Posted February 18, 2021 Author Share Posted February 18, 2021 (edited) 7 minutes ago, Lord Henry said: Utilize isso somente na hora que o jogador domina a zona. Depois no timer, vc usa a variável em vez de ficar atribuindo valor a ela. local Team = getPlayerTeam(element) Eu também tenho que fazer o mesmo com local players = getPlayersInTeam(inTeam) ? Edited February 18, 2021 by Maaster342 Link to comment
Maaster Posted February 18, 2021 Author Share Posted February 18, 2021 3 hours ago, Maaster342 said: Eu também tenho que fazer o mesmo com local players = getPlayersInTeam(inTeam) ? Deu certo aqui, esta funcionando, mas tem um problema agora. Quando todos jogadores da equipe sai do servidor a equipe some, ai começa o WARNING: Bad argument @ 'getTeamName ' [Expected team at argument 1] que eh no codigo: if getTeamName(Team) == nomePlayer then Tambem apos a equipe ficar vazia, sumir e começar esse warning, mesmo entrando mais um jogador da equipe e equipe voltando ao TAB, o warning continua e o jogador não recebe mais dinheiro. Ai esta o codigo completo: local sql = { Query = executeSQLQuery }; cooldawnTimer = false addEventHandler( 'onResourceStart', resourceRoot, function() sql.Query( "CREATE TABLE IF NOT EXISTS areas1 (`atualEquipe1` TEXT NOT NULL)") local insert = true local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do insert = false end if(insert == true) then sql.Query( "INSERT INTO areas1 (atualEquipe1) VALUES ('ninguem')") end sql.Query( "UPDATE areas1 SET atualEquipe1 = 'ninguem'") end ); ----------------------------------------Marker---------------------------------------- local marker = createMarker (2499.1157226563,-877.779296875,114.53281402588, "cylinder",2,255 ,0 ,0, 100) local entrar = createMarker (2499.1157226563,-877.779296875,114.53281402588 +1, "arrow", 0, 000,0, 0) ----------------------------------------Blip---------------------------------------- local blip = createBlipAttachedTo ( entrar, 23 ) setBlipVisibleDistance(blip, 250) ----------------------------------------Ao entrar no marker---------------------------------------- function texto () local busca = sql.Query( "SELECT * FROM areas1" ) for i = 1, #busca do triggerClientEvent(root,"onDominate1", root, busca[i].atualEquipe1 ) end end setTimer ( texto, 1000, 0) local hillRadar = createRadarArea(2331.3779296875,-1066.1728515625,350,220,255,0,0,0) function mensagem (source) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Digite #FF0000/dominar",source,255,255,255,true) end addEventHandler("onMarkerHit",marker,mensagem) ----------------------------------------/dominar---------------------------------------- function mastering (element) if not isElementWithinMarker(element, marker) then return end if getElementType(element) == "player" then local inTeam = getPlayerTeam (element) if inTeam then if cooldawnTimer == true then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela acabou de ser dominada, espere alguns minutos!", element, 255, 255, 255, true) else if getElementData(element,"ModoPassivo") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Voce esta com o modo passivo ativado!", element, 255, 0, 0, true) else if getElementData(element,"Dominando") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Espere 1 minuto para usar este comando novamente!", element, 255, 0, 0, true) else --Corp: if getTeamName(inTeam) == "Bope" or getTeamName(inTeam) == "PM" then if nomePlayer == "Bope" or nomePlayer == "PM" then -- Se a favela ja estiver pacificada outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja foi pacificada, nao deixe outras gangs domina-la novamente!", element,255,255,255,true) else if nomePlayer == nil then -- Se a favela nao pertencer a nenhuma gang outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela nao foi dominada por nenhuma gang!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).." #FFFFFFesta #00FF00pacificando #FFFFFFa Favela 1 que pertence a gang #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true)--ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false)--remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) givePlayerMoney(element,42000) -- Dinheiro ganho ao pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Voce recebeu #00FF0042.000R$#FFFFFF por pacificar a favela!", element,255,255,255,true) -- Msg pro policiial que pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).."#FFFFFF conseguiu #00FF00 pacificar#FFFFFF a Favela 1", root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) cooldawn() end,60000,1) end end --Gang: else if getTeamName(inTeam) == nomePlayer then --Se a favela ja for da gang do jogador outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja pertence a sua gang, apenas defenda ela!", element,255,255,255,true) else triggerClientEvent(element,"Temp1",element) r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF esta#FFFFFF dominando a Favela 1 que pertence a #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) setElementData(element,"Dominando",true) --ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false) --remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF dominou a Favela 1 que pertencia a #FF0000"..(nomePlayer or ""), root,255,255,255,true) nomePlayer = getTeamName(inTeam) sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) Team = getPlayerTeam (element) -- para o money timer if getPlayerWantedLevel(element) < 6 then -- se o jogador tiver menos de 6 levels de procurado setPlayerWantedLevel(element,getPlayerWantedLevel(element)+1) -- adiciona mais um level de procurado ao jogador que dominar end cooldawn() end,60000,1) ------------------------------MoneyTimer------------------------------ moneyTimer = setTimer ( function () if ( Team ) then if getTeamName(Team) == nomePlayer then local players = getPlayersInTeam(Team) for playerKey, playerValue in ipairs ( players ) do givePlayerMoney(playerValue, 100) end end end end,5000,0) ------------------------------.------------------------------ end end end end end else outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Você precisa ser membro de alguma corp ou gang para dominar ou pacificar a Favela1", element,255,255,255,true) end end end addCommandHandler("dominar", mastering) ----------------------------------------Ao sair do marker enquanto domina---------------------------------------- function onLeave (element) triggerClientEvent(element,"TimerStamp1",element) setRadarAreaFlashing ( hillRadar, false ) if (isTimer(Favela1time)) then if not killTimer(Favela1time) then return end outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Volte para o marker para continuar dominando!", element,255,255,255,true) end end addEventHandler("onMarkerLeave",marker,onLeave) ----------------------------------------Cooldawn para dominar---------------------------------------- function cooldawn () if cooldawnTimer == false then cooldawnTimer = true else end setTimer(function() cooldawnTimer = false outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A Favela 1 ja pode ser dominada novamente!", root, 255, 255, 255, true) end, 60000*60*0.2, 1) end Link to comment
Other Languages Moderators Lord Henry Posted February 23, 2021 Other Languages Moderators Share Posted February 23, 2021 A equipe não deveria sumir e sim apenas ficar vazia. Talvez exista algum outro script limpando as equipes do servidor quando elas ficam vazias. Link to comment
Maaster Posted February 24, 2021 Author Share Posted February 24, 2021 8 hours ago, Lord Henry said: A equipe não deveria sumir e sim apenas ficar vazia. Talvez exista algum outro script limpando as equipes do servidor quando elas ficam vazias. Sim, é feito isso porque se não ficaria com muitas equipes no TAB, pois qualquer jogador pode criar uma des que tenha dinheiro Link to comment
Other Languages Moderators Lord Henry Posted February 25, 2021 Other Languages Moderators Share Posted February 25, 2021 Se não tem equipe, as zonas dela deveriam ser liberadas para evitar o Warning. Link to comment
Maaster Posted February 26, 2021 Author Share Posted February 26, 2021 13 hours ago, Lord Henry said: Se não tem equipe, as zonas dela deveriam ser liberadas para evitar o Warning. Tem alguma forma de bloquear e não remover a equipe, caso ela estiver em posse da zona dominada? Link to comment
Other Languages Moderators Lord Henry Posted February 26, 2021 Other Languages Moderators Share Posted February 26, 2021 Só editando o script que está deletando ela. Link to comment
Maaster Posted February 28, 2021 Author Share Posted February 28, 2021 On 26/02/2021 at 16:05, Lord Henry said: Só editando o script que está deletando ela. Oque eu fiz foi apenas parar de remover as equipes vazias. Mas agora esta dando mais um problema aqui, o script esta funcionando, todos da gang estão ganhando dinheiro, mas quando alguem digita /dominar no marker e sai dele, ativa mais um timer, ai a equipe que esta em posse fica ganhando 2 vezes, caso acontecer novamente a equipe que esta em posse da favela, ja ganha 3 vezes e assim vai aumentando. Pensei em tentar usar killTimer quando alguem digitar /dominar, mas ai iria cancelar o timer correto que esta dando dinheiro, pensei em colocar uma verificação pra ver se ja tem um timer, mais ai quando a gang for receber dinheiro novamente o timer pararia, então fiquei sem ideias de que fazer agora. Link to comment
Other Languages Moderators Lord Henry Posted March 1, 2021 Other Languages Moderators Share Posted March 1, 2021 Dê killTimer somente se a gangue rival conseguir dominar com sucesso. Criando assim o novo timer pra nova gangue. Link to comment
Maaster Posted March 1, 2021 Author Share Posted March 1, 2021 9 minutes ago, Lord Henry said: Dê killTimer somente se a gangue rival conseguir dominar com sucesso. Criando assim o novo timer pra nova gangue. ao usar killTimer quando dominar, não pararia os 2 timers? o antigo que estava dando money para a equipe anterior e o novo? e tambem o problema continuaria do mesmo jeito, pois cada vez que alguem da /dominar e sai do marker, cria um novo timer Link to comment
Other Languages Moderators Lord Henry Posted March 1, 2021 Other Languages Moderators Share Posted March 1, 2021 Vc precisa especificar o timer que será cancelado no killTimer. E sim, vc deve parar o que estava dando money para a equipe anterior. Pois não faz sentido a equipe anterior continuar recebendo dinheiro se ela não domina mais aquela zona. Link to comment
Maaster Posted March 1, 2021 Author Share Posted March 1, 2021 58 minutes ago, Lord Henry said: Vc precisa especificar o timer que será cancelado no killTimer. E sim, vc deve parar o que estava dando money para a equipe anterior. Pois não faz sentido a equipe anterior continuar recebendo dinheiro se ela não domina mais aquela zona. Acho que vc n entendeu muito bem, o timer se ativa quando um jogador da /dominar, não quando é dominado, assim se o jogador der /dominar e sair do marker, vai ativar 2 vezes o mesmo timer, se eu colocar um killTimer ao sair do marker, vai parar o timer da equipe que ainda esta em posse da favela. e mesmo se o jogador dominar, o timer anterior não vai desativar e vai ficar com mais de um timer dando dinheiro do mesmo jeito. (demora 60 segundos para dominar) Link to comment
Other Languages Moderators Lord Henry Posted March 2, 2021 Other Languages Moderators Share Posted March 2, 2021 (edited) Devem existir 2 timers diferentes. 1 timer é o que determina o tempo de dominação. Ele começa quando o jogador dá o /dominar, dura 60 segundos e quando termina, a dominação é concluída (ou falha). Depois que a dominação é concluída e a zona passa a pertencer a essa gangue, o timer da gangue anterior deve ser cancelado (parando de dar grana pra gangue anterior) e deve-se iniciar um novo timer (para ficar dando dinheiro para a nova gangue). Edited March 2, 2021 by Lord Henry Link to comment
Maaster Posted March 2, 2021 Author Share Posted March 2, 2021 1 hour ago, Lord Henry said: Devem existir 2 timers diferentes. 1 timer é o que determina o tempo de dominação. Ele começa quando o jogador dá o /dominar, dura 60 segundos e quando termina, a dominação é concluída (ou falha). Depois que a dominação é concluída e a zona passa a pertencer a essa gangue, o timer da gangue anterior deve ser cancelado (parando de dar grana pra gangue anterior) e deve-se iniciar um novo timer (para ficar dando dinheiro para a nova gangue). Ah sim, mas o problema é que os dois timers iniciam ao dar /dominar, teria como fazer pro timer de dinheiro só iniciar após o timer de dominação ser completado? Link to comment
Other Languages Moderators Lord Henry Posted March 3, 2021 Other Languages Moderators Share Posted March 3, 2021 Sim, é o que deveria ser feito. O timer que dá dinheiro deve começar só depois que a gangue completa a dominação e passa a ser dona daquela zona. Link to comment
Maaster Posted March 3, 2021 Author Share Posted March 3, 2021 10 hours ago, Lord Henry said: Sim, é o que deveria ser feito. O timer que dá dinheiro deve começar só depois que a gangue completa a dominação e passa a ser dona daquela zona. Como posso fazer isso? até agora so aprendi a fazer os timers iniciando junto com a função Link to comment
Other Languages Moderators Lord Henry Posted March 3, 2021 Other Languages Moderators Share Posted March 3, 2021 O problema do seu resource é que ele está usando timer único pra fazer tudo em vez de timers específicos para cada zona. Isso é bom e ruim ao mesmo tempo. Bom pois é mais leve do que usar vários timers. Ruim pois pode justamente causar conflitos entre as zonas, já que todas usam o mesmo. Link to comment
Maaster Posted March 4, 2021 Author Share Posted March 4, 2021 15 hours ago, Lord Henry said: O problema do seu resource é que ele está usando timer único pra fazer tudo em vez de timers específicos para cada zona. Isso é bom e ruim ao mesmo tempo. Bom pois é mais leve do que usar vários timers. Ruim pois pode justamente causar conflitos entre as zonas, já que todas usam o mesmo. Tentei usar triggerServerEvent para ativar o timer só após dominar, mas não deu muito certo, esta dando o ERROR 'attempt tto call global 'triggerServerEvent' (a nil value)' ai o codigo da função /dominar: Spoiler function mastering (element) if not isElementWithinMarker(element, marker) then return end -- Se o jogador não estiver no marker if getElementType(element) == "player" then -- Se o elemento for um jogador local inTeam = getPlayerTeam (element) -- InTeam é a equipe do jogador --Bloquear /dominar se: if not inTeam then outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Você precisa ser membro de alguma corp ou gang para dominar ou pacificar a Favela1", element,255,255,255,true) return end -- Se o jogador não estiver em nenhuma equipe if getElementData(element,"ModoPassivo") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Voce esta com o modo passivo ativado!", element, 255, 0, 0, true) return end -- Se o modo passivo estiver ativo if getElementData(element,"Dominando") then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Espere 1 minuto para usar este comando novamente!", element, 255, 0, 0, true) return end -- Se o jogador ja deu /dominar if cooldawnTimer == true then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela acabou de ser dominada, espere alguns minutos!", element, 255, 255, 255, true) return end -- Se a favela foi dominada a poco tempo --Dominar: --Corp: if getTeamName(inTeam) == "PM" then -- Se o time do jogador for PM if nomePlayer == nil then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela nao foi dominada por nenhuma gang!", element,255,255,255,true) return end -- Se a favela nao pertencer a nenhuma gang if nomePlayer == "PM" then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja foi pacificada, nao deixe outras gangs domina-la novamente!", element,255,255,255,true) return end -- se a favela ja estiver pacificada pela PM triggerClientEvent(element,"Temp1",element) -- Ativa o evento Temp1 r, g, b = getTeamColor ( inTeam ) -- outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).." #FFFFFFesta #00FF00pacificando #FFFFFFa Favela 1 que pertence a gang #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) -- Area no mapa piscando setElementData(element,"Dominando",true)-- Ganha o elementdata Domindando ao digitar /dominar setTimer (setElementData, 60000, 1, element, "Dominando", false) -- Remove o elementdata Dominando depois de 1 minuto Favela1time = setTimer (function() -- Timer para dominar setRadarAreaFlashing ( hillRadar, false ) -- Ao pacificar a area no mapa para de piscar givePlayerMoney(element,42000) -- Dinheiro ganho ao pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Voce recebeu #00FF0042.000R$#FFFFFF por pacificar a favela!", element,255,255,255,true) -- Msg pro policiial que pacificar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A #0000FF"..getTeamName(inTeam).."#FFFFFF conseguiu #00FF00 pacificar#FFFFFF a Favela 1", root,255,255,255,true) nomePlayer = getTeamName(inTeam) -- nomePlayer passa a ser a equipe que dominou/pacificou a favela sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) -- Muda a cor da area no mapa pra cor da equipe triggerClientEvent(element,"TimerStamp1",element) -- Ativa o evento TimerStamp1 setMarkerColor(marker, 125 ,38 ,205, 80) -- Muda a cor do marker cooldawn() end,60000,1) --Gang: else if getTeamName(inTeam) == nomePlayer then outputChatBox("#000000[ #FF0000Erro #000000]#FFFFFF Esta favela ja pertence a sua gang, apenas defenda ela!", element,255,255,255,true) return end --Se a favela ja for da gang do jogador --if getPlayerMoney(element) < 20000 then outputChatBox("#000000[#FF0000 Erro #000000]#FFFFFF Voce precisa ter #FF0000R$20.000#FFFFFF para poder dominar esta favela!", element, 255, 0, 0, true) return end -- Se o jogador n tiver 25k triggerClientEvent(element,"Temp1",element) -- Ativa o evento Temp1 r, g, b = getTeamColor ( inTeam ) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF esta#FFFFFF dominando a Favela 1 que pertence a #FF0000"..(nomePlayer or ""), root,255,255,255,true) setRadarAreaFlashing ( hillRadar, true ) -- Faz a area do mapa ficar piscando setElementData(element,"Dominando",true) setTimer (setElementData, 5000, 1, element, "Dominando", false) Favela1time = setTimer (function() setRadarAreaFlashing ( hillRadar, false ) -- Faz a area parar de piscar outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF A gang #FF0000"..getTeamName(inTeam).."#FFFFFF dominou a Favela 1 que pertencia a #FF0000"..(nomePlayer or ""), root,255,255,255,true) nomePlayer = getTeamName(inTeam) -- nomePlayer passa a ser o time do jogador que dominou sql.Query( "UPDATE areas1 SET atualEquipe1 = '".. nomePlayer .."'") r, g, b = getTeamColor ( inTeam ) setRadarAreaColor(hillRadar, r ,g ,b, 130) -- A area do mapa fica da cor da equipe triggerClientEvent(element,"TimerStamp1",element) setMarkerColor(marker, 125 ,38 ,205, 80) -- Muda a cor do marker cooldawn() --takePlayerMoney(element,20000) -- Dinheiro perdido ao dominar Team = getPlayerTeam (element) -- para o money timer triggerServerEvent("MoneyTimer",element) if getPlayerWantedLevel(element) < 6 then setPlayerWantedLevel(element,getPlayerWantedLevel(element)+1) end end,5000,1) end end end addCommandHandler("dominar", mastering) ai o codigo do triggerServerEvent: addEvent("MoneyTimer",true) addEventHandler("MoneyTimer",root, setTimer ( function () if (Team) then if getTeamName(Team) == nomePlayer then local players = getPlayersInTeam(Team) for playerKey, playerValue in ipairs ( players ) do givePlayerMoney(playerValue, 100) outputChatBox("#000000[ #FF0000Favela 1 #000000]#FFFFFF Voce e toda sua gang receberam #00FF00R$30.000#FFFFFF por estar em posse da favela1!", playerValue,255,255,255,true) end end end end,5000,0)) Link to comment
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