Jump to content

Como dar dinheiro para todos os membros de uma equipe?


Recommended Posts

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 by miiguelz
  • Thanks 1
Link to comment
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 by Maaster342
Link to comment
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
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 by Maaster342
Link to comment
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
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
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
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

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

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 by Lord Henry
Link to comment
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
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

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

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