Jump to content

[Ajuda] Troca o createColCuboid para createMarker sistema de território


Recommended Posts

Olá, gostaria de mudar esse sistema para que o jogador dominar a área através do marker e não pela colisão da área. Ai o marker ia fazer a função do ColCuboid esperou que tenha entendido ..

------------------------------------------------------
--            Scripting By Sasu
--		Copyright © 2013-2015 - All rights reserved.
------------------------------------------------------


local turfPos = {
{ 2133.1950683594, 633.66455078125, 0, 197.5, 92, 90 },

}

local turfElement = {}
local turfTimer = {}
local checkComplete = false

local messages = {
	[1] = "Sistema de Territorio by:Sasuke * foi iniciado corretamente!",
	[2] = "Esse território já pertence a %s",
	[3] = "Você entrou em %s's do território. Aguarde 2 minutos para dominar!",
	[4] = "Este território não pertence a ninguém. Aguarde 2 minutos para dominar!",
	[5] = "Parabéns. Você consquistou o território!",
	[6] = "Se você não voltar dentro de 20s, você não vai dominar o território",
	[7] = "Você não conseguiu consquisou o território devido à ausência"
 }
 
-- 	Nadie = None | Just a translation

addEventHandler("onResourceStart", resourceRoot,
function()
	executeSQLQuery("CREATE TABLE IF NOT EXISTS Turf_System ( Turfs TEXT, GangOwner TEXT, r INT, g INT, b INT)")
	--
	local check = executeSQLQuery("SELECT * FROM Turf_System" )
	if #check == 0 then
		for i=1,#turfPos do
			executeSQLQuery("INSERT INTO Turf_System(Turfs,GangOwner,r,g,b) VALUES(?,?,?,?,?)", "Turf["..tostring(i).."]", "Nadie", 0, 255, 0)
		end
	elseif #check > 1 then
		for i = #check, #turfPos do
			executeSQLQuery("INSERT INTO Turf_System(Turfs,GangOwner,r,g,b) VALUES(?,?,?,?,?)", "Turf["..tostring(i).."]", "Nadie", 0, 255, 0)
		end
	end
	
	for i,v in ipairs(turfPos) do
		local sqlData = executeSQLQuery("SELECT * FROM Turf_System WHERE Turfs=?", "Turf["..tostring(i).."]")
		local turfCol = createColCuboid(unpack(v))
		setElementData(turfCol, "getTurfGang", sqlData[1].GangOwner)
		local turfArea = createRadarArea(v[1], v[2], v[4], v[5], sqlData[1].r, sqlData[1].g, sqlData[1].b, 175)
		turfElement[turfCol] = {turfCol, turfArea, i}
		turfTimer[turfCol] = {}
	end
	
	outputDebugString( messages[1] )
end )

addEventHandler ( "onColShapeHit", root,
	function ( player )
		if turfElement[source] and source == turfElement[source][1] then
			local turf,area,id = unpack( turfElement[source] )
			local playerGang = getElementData ( player, "gang" )
			local turfGang = executeSQLQuery("SELECT GangOwner FROM Turf_System WHERE Turfs=?", "Turf["..tostring(id).."]" )
			if ( turfGang[1].GangOwner == playerGang ) then
				outputChatBox( messages[2]:format( turfGang[1].GangOwner or "None" ), player, 0, 255, 0, false )
			else
				local playerGang = getElementData ( player, "gang" )
				setElementData( source, "warTurf", playerGang )
				if ( isTimer ( turfTimer[source][1] ) ) then
					if isTimer( turfTimer[source][2] ) then killTimer( turfTimer[source][2] ) end 
					return 
				end
				if ( playerGang ) then
					local r, g, b = unpack ( getGangColor ( playerGang ) )
					-- local r, g, b = 255, 255, 255
					setRadarAreaFlashing ( area, true )
					if turfGang[1].GangOwner ~= "Nadie" then
						outputChatBox( messages[3]:format( turfGang[1].GangOwner ), player, 0, 255, 0, false )
					else
						outputChatBox( messages[4], player, 0, 255, 0, false )
					end
					
					turfTimer[source][1] = setTimer (
						function ( )
							local players = getGangPlayersInTurf ( turf, playerGang )
							setRadarAreaColor ( area, tonumber(r), tonumber(g), tonumber(b), 175 )
							for _, player in ipairs ( players ) do
								outputChatBox( messages[5], player, 0, 255, 0, false )
								triggerClientEvent(player, "onTakeTurf", player)
								givePlayerMoney ( player, 4000 )
								executeSQLQuery("UPDATE Turf_System SET GangOwner=?,r=?,g=?,b=? WHERE Turfs=?", playerGang, tonumber(r), tonumber(g), tonumber(b), "Turf["..tostring(id).."]" )
								-- setElementData ( turf, "getTurfGang", playerGang )
							end
							setRadarAreaFlashing ( area, false )
						end
					,120000, 1)
				end
			end
		end
	end
)

addEventHandler ( "onColShapeLeave", root, 
	function( player )
		if turfElement[source] and source == turfElement[source][1] then
			if isTimer( turfTimer[source][1] ) then
				local aGang = getElementData( source, "warTurf" )
				local ps = getGangPlayersInTurf( source, aGang )
				if #ps == 0 then
					outputChatBox( messages[6], player, 255, 0, 0 )
					turfTimer[source][2] = setTimer(
						function(source, aGang)
							if isTimer(turfTimer[source][1]) then killTimer(turfTimer[source][1]) end
							setRadarAreaFlashing(turfElement[source][2], false)
							for _, v in ipairs( getElementsByType("player") ) do
								if getElementData(v, "gang") == aGang then
									outputChatBox(messages[7], v, 255, 0, 0)
								end
							end
						end
					, 20000, 1, source, aGang)
				end
			end
		end
	end
)

function getGangPlayersInTurf( turf, gang ) -- element, string
	if turf and gang then
		local players = getElementsWithinColShape ( turf, "player" )
		local gPla = {}
		for _, v in ipairs(	players ) do		
			if getElementData(v, "gang") == gang then
				table.insert(gPla, v)
			end
		end
		return gPla
	end
end

function getGangColor(gangName)
	return exports[ "gang_system" ]:getGangData ( gangName, "color" )
end

 

Link to comment

Como você mesmo disse, basta trocar createColCuboid por createMarker, na linha 45 é onde você pode fazer isso. E editar a tabela turfPos pra deixar apenas as coordenadas da marca. Fora isso, você vai precisar editar algumas coisas como "onMarkerHit" no lugar do evento de colisão do colshape.

Edited by DNL291
Link to comment
3 hours ago, Lord Henry said:

Então você está tentando editar recursos de terceiros, é isso?

So estou colocando uma coisa que o dono do scripter devia ter colocada. Pois dominar a área em qualquer lugar é meio chato, por que a área pode se grande e sempre sera dominada. 

27 minutes ago, DNL291 said:

Você pode fazer isso, basta trocar. E editar uma tabela turfPos pra deixar apenas como coordenadas da marca. Para isso, você vai retornar algumas coisas como "onMarkerHit" no lugar do evento de colisão do colshape.

A parte do MarkerHit até conseguindo, mas depois da parte do markerleave ai que veio o problema. Mas vou tenta observa bem e tenta mexer.

 

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