Jump to content

Developer.

Members
  • Posts

    92
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Developer.

  1. Bom vamos lá, na sua primeira linha de código há um argumento a mais...

    Você esta passando DUAS vezes a posição Z
     

     

    pickup2 = createPickup (1608.1341552734,-1685.9331054688,6.21875,6.21875, 3, 1275, 1000 ) 

     

    isso esta impedindo do pickup ser gerado no mundo, ocasionando o erro na chamada do evento.

     

    Fora isso, acredito eu que tem maneiras melhores de você fazer esse código, métodos bem mais efetivos...

    tipo: implementação de um array, um loop, funções de retorno, etc...

    e dependendo do objetivo do mod, se caso não houver intenção de incluir um painel alterar esse eventHandler para um commandHandler, ou até juntar esse eventHandler com um sistema de bindkey para o player selecionar a skin, enfim e afins... varias maneiras bem bacanas de alteração :)

  2. Olá a todos, iniciei um projeto recentemente de uma screen loading, a minha ideia é que nesta screen irá conter uma barra de progresso com uma porcentagem dos resources baixados, porém eu não sou muito familiarizado com essa parte de download do MTA.

    para eu estar fazendo esta conta eu preciso de dois valores, o valor total que eu já consegui obter, e o valor atual. É ai que me encontro sem saída, qual seria o melhor método de eu descobrir quantos resources faltam para serem baixados? Acredito eu que tem como, caso contrário não existiria a progress bar do MTA correto? De alguma forma o MTA deve saber quantos faltam para ser iniciado.

     

    Observações:
    1 - Eu já pensei em algumas ideias tipo um exports em cada resource que será ligado. Porém o meu intuito é uma automatização sem q eu precise mexer em cada resource do meu servidor.

    2 - Teria como eu "simular" essa progress bar com isTransferBoxActive, mas não estou atrás disto.

    3 - Sim eu sei que é possível um downloader próprio com a função downloadFile. Porém para o momento atual que eu me encontro, estou realmente sem tempo para estar fazendo um downloader.

    Já revirei a wiki, mas não consegui nada que me trouxeste o resultado q eu procuro, alguém teria como me ajudar nessa?

    Desde já agradeço a todos. :) 

     

  3. Olá, bom acredito eu que não tenha uma função específica de 'dar' objetos, o que eu conheço é você anexar um elemento a outro, isto é feito com a função: attachElements

    Exemplo de código abaixo:

    -- código de exemlo: código server-side.
    function anexarObjetoAoPlayer(jogador)
      	local x,y,z = getElementPosition(jogador) -- pega a posição do jogador.
    	local objeto = createObject(1337,x,y,z) -- cria o objeto de id 1337.
    	attachElements(objeto, jogador, 0, 0, 2 ) -- anexa o objeto ao jogador.
    end
    addCommandHandler("anexar",anexarObjetoAoPlayer)

     

  4. Bom questionamento, porém acredito eu que não. Pois no if eu estou comparando a "data" da marker hitada, com a "data" salva na tabela.

    Quando o gaimo salva a marker na tabela acredito eu que seja algo mais ou menos assim:

    markers = { -- a tabela nomeada
    	userdata = { -- uma segunda tabela(sub-tabela), que seria a userdata ([thePlayer])
    		["StartData"] = markerData -- e por fim ele salva a "data" do marker.
    	},
    };

    Seguindo a lógica acima, o que me importa é a markerData, então quando eu faço assim:

    if marker == markers[source]["StartMarker"] then 

    Eu to querendo dizer:

    SE a data da marker hitada é equivalente a data que esta dentro da sub-tabela(source, que no caso é a userdata) com index de ["StartMarker"] então faça:

    Abaixo o código, testado:

    veh = {};
    markers = {};
    
    for i=1,6 do
    	veh[createVehicle(459, 1700.75781 + 3*i, -1806.09680, 13.54688, 0,0,0)] = true;
    	createBlip(1700.75781, -1806.09680, 13.54688);
    end
    
    addEventHandler ( "onVehicleEnter", getRootElement(), 
    function(thePlayer, seat)
        if not markers[thePlayer] then
            markers[thePlayer] = {};
        end
        if veh[getPedOccupiedVehicle(thePlayer)] then
    		markers[thePlayer]["StartMarker"] = createMarker(1683.57776, -1811.70239, 13.54688 - 0.8, "cylinder", 3, 255, 0, 0, 255, thePlayer);
    		createMarker(1683.57776, -1811.70239 + 5, 13.54688 - 0.8, "cylinder", 3, 0, 255, 0, 255, thePlayer);
    		createBlipAttachedTo(markers[thePlayer]["StartMarker"]);
    		outputChatBox("marker table: "..tostring(markers[thePlayer]), thePlayer, 255, 255, 0); -- debug
    		outputChatBox("marker data: "..tostring(markers[thePlayer]["StartMarker"]), thePlayer, 255, 255, 0); -- debug
        end   
    end)
    
    addEventHandler("onPlayerMarkerHit", getRootElement(), 
    function(marker, dim)
    	if dim then
    	outputChatBox("onHit: "..tostring(marker), source, 0, 255, 0); -- debug
    		if marker ~= markers[source]["StartMarker"] then -- se for diferente
    			outputChatBox("o marker é diferente", source, 255, 0, 0); 
    		else -- se for igual
    			outputChatBox("o marker é igual", source, 0, 255, 0);
    		end
        end
    end)
    
    addCommandHandler("teste",
    	function(player)
    		for index, value in pairs(markers) do -- se fizer com ipairs não irá funcionar, por causa do "StartMarker"
    			outputChatBox(" #ff0000indexado: #ffffff"..tostring(index).." #ff0000tabela: #ffffff"..tostring(value).." #ff0000valorReal: #ffffff"..tostring(value["StartMarker"]),player, 255, 0, 255, true);
    		end
    	end
    )

    Abaixo mais uma "prova" dessa explicação, agora com tudo declarado:

    test = { -- tabela nomeada
    	test2 = { -- "sub-tabela"
    		["value"] = 10, -- index contendo o valor desejado.
    	},
    };
    
    for i, v in pairs(test) do
    	outputChatBox(tostring(v["value"]));
    end

    OBS (muito importante): Eu tenho absoluta certeza do que estou falando?

    R: Nem um pouco, provavelmente posso estar falando groselha, e se estiver quem souber melhor por favor comente xD. Porém os códigos acima foram testados e funcionou!

    @Angelo Pereira

    • Like 1
  5.  

    local player = getLocalPlayer();
    
    local build
    function building(key, state)
    	if (key == "b") then -- check Key pressed
            	if (state == "down") then -- check state
                		destroy(build) -- useful
    			local x, y, z = getElementPosition(player);
    			build = createObject(3374, x, y, z, 0, 0, 0);
    			setElementAlpha(build, 150);
    			attachElements(build, player , 0, 3, -1, 0, 0, 0);
    		elseif (state =="up") then -- check state
    			if isElementAttached(build) then
    				setElementAlpha(build, 255);
    				detachElements(build, player);
                    		setTimer(function() destroy(build) end, 1500, 1); 
    			end
    		end
    	end
    end
    bindKey("b", "both", building)
    
    function destroy(element) -- useful function
        if isElement(element) then -- if exists
            destroyElement(element) -- destroy
        end
    end

     

  6. Funções, eventos e resource's que você vai necessitar para fazer esse script:

    • Server-Side ( lado servidor)
    1. addCommandHandler
    2. getPlayerByID ou getPlayerFromPartialNick (as duas são funções úteis, mandarei logo abaixo.)
    3. givePlayerMoney
    4. addEvent
    5. addEventHandler
    • Client-Side (lado cliente)
    1. guiEditor (resource útil, só clicar para ser redirecionado a community.)
    2. cursorPosition (função útil, mandarei logo abaixo.)
    3. triggerServerEvent
    4. onClientClick

    getPlayerByID:

    function getPlayerByID(id)
    	v = false
    	for i, player in ipairs (getElementsByType("player")) do
    		if getElementData(player, "ID") == id then
    			v = player
    			break
    		end
    	end
    	return v
    end

    getPlayerFromPartialName:

    function getPlayerFromPartialName (name)
    	local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil
    	if name then
    		for _, player in ipairs(getElementsByType("player")) do
    			local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower()
    			if name_:find(name, 1, true) then
    				return player
    			end
    		end
    	end
    end

    cursorPosition:

    function cursorPosition(x, y, w, h)
    	if (not isCursorShowing()) then
    		return false
    	end
    	local mx, my = getCursorPosition()
    	local fullx, fully = guiGetScreenSize()
    	cursorx, cursory = mx*fullx, my*fully
    	if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then
    		return true
    	else
    		return false
    	end
    end	

     

  7. @+snts Bom a não ser que você queira mostrar alguma imagem/texto na tela do player é totalmente desnecessário a conexão entre server e client. Esse script em especifico pode ser somente server-side sem problemas, inclusive é o que eu recomendo. 

    No caso o certo a se fazer seria você declarar o parâmetro e passar ele, só isto acho que já resolveria os erros

    
    function SpawnMoto (jogador) 
    local x,y,z = getElementPosition(jogador) 

    No caso do script do #Roots seria algo assim:

     
    local veh = {} 
    function SpawnMoto (jogador) 
      if veh[jogador] and isElement( veh[jogador] ) then destroyElement( veh[jogador] ) 
     	veh[jogador] = nil 
      end 
        local x,y,z = getElementPosition(jogador) 
        veh[jogador] = createVehicle(522, x,y,z) 
        warpPedIntoVehicle (jogador, veh[jogador]) 
    end 
    addCommandHandler("moto", SpawnMoto)

    Seria legal você já pensar em usar os outros parâmetros tipo:

     
    local veh = {} 
    function SpawnMoto (jogador, comando, id)
      if veh[jogador] and isElement( veh[jogador] ) then destroyElement( veh[jogador] ) 
     	veh[jogador] = nil
      end 
        local x,y,z = getElementPosition(jogador) 
        veh[jogador] = createVehicle(tonumber(id),x,y,z) 
        warpPedIntoVehicle (jogador, veh[jogador]) 
    end 
    addCommandHandler("moto", SpawnMoto)

    3 parâmetros o ultimo(id) seria o id do veiculo! 

    Então vc iria digitar tipo /moto 522 ai apareceria a NRG, ou se vc digitasse /moto 462 aparecia outro veiculo e assim por diante...

    Teste e nos de um retorno se esta funcionando ou não. :)

    • Thanks 1
  8. @Gaimo Bom tem duas formas, para dx em especifico tem  a função util IsCursorOnElement ou você pode criar um botão com gui GuiCreateButton

    Exemplo Dx:

    local posX, posY, posW, posH = 500, 500, 200, 200
    local painel = true
    function teste(button,state)
       if painel == true then
          if state == "down" then
             if isCursorOnElement(posX, posY, posW, posH ) then
                  outPutChatBox("Teste Dx bem-sucedido")
             end
          end
       end
    end
    addEventHandler ("onClientClick", root, teste)
    
    
    -- função util
    function isCursorOnElement(x,y,w,h)
       local mx,my = getCursorPosition ()
       local fullx,fully = guiGetScreenSize()
       cursorx,cursory = mx*fullx,my*fully
       if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then
          return true
       else
          return false
       end
    end

    Exemplo Gui:

    function testeGui()
    	botao = guiCreateButton(500, 500, 50, 32, "testeGui", false)
    	-- guiSetAlpha(botao, 0) -- deixa o botão invisivel
    	addEventHandler("onClientGUIClick", botao, testeGui2)
    end
    addEventHandler("onClientResourceStart", resourceRoot, testeGui)
    
    function testeGui2()
    	outputChatBox("Teste gui bem-sucedido")
    end

    No exemplo do gui, vc criaria os botão embaixo das imagens. Então tipo a imagem é só algo realmente visual, o que importa é o botão onde o player clicou que estará invisível.

  9. Bom é assim, se formos traduzir o erro seria algo neste sentido: Esperado ped/player no argumento 1, recebeu valor nil (nil é um valor inexistente)

    Isto ocorreu porque você não declarou o parâmetro da sua função. Se você observar na wiki o evento (addCommandHandler), vai ver que em um trecho ele fala sobre playerSource e argumentos. Mais precisamente isto aqui que estou me referindo: http://prntscr.com/r7neut

    Para todas as funções no MTA, existe um SOURCE. Source é o nativo daquela função, é o objeto/player/marker em que a função tem como base. Podemos acionar este source simplesmente digitando source, Exemplo Prático:

    local px, py, pz = getElementPosition(source) -- pegamos a posição do parâmetro nativo da função(source)
    warpPedIntoVehicle(source, VehCar) -- forçamos o player no veículo usando um parâmetro nativo da função(source) e uma variavel (VehCar)

    Obs: o SOURCE do addCommandHandler é o player que digitou o comando.

    --

    Olhando para o seu script nós temos na linha 1

    
    function -- function Indicamos que estamos iniciando uma função que ira executar algo
      SpawnMoto -- o nome desta função
      () -- e os parâmetros, ou seja a quem ela seja direcionada. Podemos perceber aqui que não existe nenhum parâmetro!

    Se não existe nenhum parâmetro DECLARADO, se formos olhar para a linha 4 player não existe, pois ele não foi declarado em nenhum momento.

    Obs: Não necessariamente você precisa escrever "player", eu posso colocar "ciranda_cirandinhano lugar de "player" que irá funcionar normalmente.

    --

    Na linha dois tem um outro erro:

        local px, py, pz = -- 3 váriaveis
    	getElementPosition -- a função
    	(getLocalPlayer()) -- o argumento
    	

    Nós temos dois lados, o lado cliente e o lado servidor. Lado servidor é o que será executado na host, e o lado cliente é o executado no pc do player.

    Se você pesquisar por getLocalPlayer() na wiki você vai ver isto: http://prntscr.com/r7npad. Client-Side Only, ou seja somente lado cliente isto você pode identificar no meta.xml

    temos <script src="nomeDoArquivo" type="client"/> ou <script src="nomeDoArquivo" type="server"/> o type diz quais funções você pode usar naquele arquivo...

    Obs: temos também funções do tipo shared que funcionam tanto nos arquivos de lado client, quanto nos arquivos de lado server. Ex: http://prntscr.com/r7nr9j

    --

    Basicamente é isso maninho esses foram os erros em seu script, use o código que o #Roots mandou e pesquise sobre "tabelas", é algo que vai ser muito essencial para você desenvolver seus próximos códigos :).

    • Thanks 2
  10. Bom eu faria desta forma, ao meu ver é mais fácil:

    enterMarker = {
    --   index                     valor
       	[1] = {createMarker(1170.88306, -1489.64990, 22.75516 - 1, "cylinder", 2, 0, 20, 255, 160)}, -- marker 1
       	[2] = {createMarker(1147.24207, -1487.55115, 22.76903 - 1, "cylinder", 2, 0, 20, 255, 160)}, -- marker 2
       	[3] = {createMarker(1159.714, -1511.431, 22.748 - 1, "cylinder", 2, 0, 20, 255, 160)}, -- marker 3
    };
    
    for i=1, #enterMarker do
    	createBlipAttachedTo(enterMarker[i][1], 45) -- mesma coisa do seu createMarker porém com blip e com um for diferente.
    end
    
    -- abaixo a funcaoExemplo, vc pode criar funções proprias e automatizar seu script.
    -- em vez de eu colocar setElementModel em cada if/elseif, eu chamo a função que já faz isso por mim.
    
    function funcaoExemplo(playerSource, number)
    	-- abaixo o setElementModel.
    	-- se vc for na wiki essa função requer um player ou um ped (playerSource), e tambem o modelo no caso o (number)
    	setElementModel(playerSource, number)
    end
    
    function hitarMarker(marker, dim)
    	if dim then
    		-- abaixo ele verifica se o marker hitado é equivalente ao index [1] valor [1] da tabela enterMarker, ou seja a marker criada 1.
    		if marker == enterMarker[1][1] then
    			outputChatBox("loja 1", source, 0, 255, 0)
    			funcaoExemplo(source, 1) -- chamando a função criada por mim, setando ao source (player) a skin (1)
    		elseif  marker == enterMarker[2][1] then -- verificação no index [2] valor [1]
    			outputChatBox("loja 2", source, 0, 255, 0)
    			funcaoExemplo(source, 2) -- chamando a função criada por mim, setando ao source (player) a skin (2)
    		elseif  marker == enterMarker[3][1] then -- verificação no index [3] valor [1]
    			outputChatBox("loja 3", source, 0, 255, 0)
    			funcaoExemplo(source, 7) -- chamando a função criada por mim, setando ao source (player) a skin (7)
    		end
    	end
    end
    addEventHandler("onPlayerMarkerHit", getRootElement(), hitarMarker)

     

    • Thanks 1
  11. Ta ai, um sistema simples de Detran.

    local acl = "Detran" -- acl que tem permissão para efetuar os comandos /guinchar /soltar e pegar o carro do detran.
    
    local detran = {
    	vtr = {},
    	last = {},
    	inUse = {},
    	guinchado = {},
    };
    
    function darCarro(jogador)
    	if isPlayerInACL(jogador, acl) then
    		if detran.inUse[jogador] ~= true then
    			if detran.vtr[jogador] then 
    				destroyElement(detran.vtr[jogador])
    				detran.vtr[jogador] = nil
    			end
    			detran.vtr[jogador] = createVehicle(578, 1547.663, -2303.496, 13.545,-0, 0, 1.548)
    			warpPedIntoVehicle(jogador, detran.vtr[jogador])
    			outputChatBox("#FFA500[Detran]:#FFFFFFVocê pegou carro do Detran", jogador, 255, 255, 255, true)
    		else
    			outputChatBox("#FFA500[Detran]:#FFFFFFVocê não pode pegar um novo carro do Detran", jogador, 255, 255, 255, true)
    		end
    	end
    end
    addEventHandler("onPickupHit", carro, darCarro)
    
    function salvar_Carro (vehicle, seat, jacked)
    	if isPlayerInACL(source, acl) then
    		detran.last[source] = vehicle
    	end
    end
    addEventHandler('onPlayerVehicleEnter', getRootElement(), salvar_Carro)
     
    function guinVeh (jogador)
    	if isPlayerInACL(jogador, acl) then
    		local vtr = detran.vtr[jogador]
    		local veh = detran.last[jogador]
    		local vtrx, vtry, vtrz = getElementPosition(vtr)
    		local vehx, vehy, vehz = getElementPosition(veh)
    		local dist = getDistanceBetweenPoints3D(vtrx, vtry, vtrz, vehx, vehy, vehz)
    		if (vtr) and (veh) then
    			if dist < 5.5 then
    				if not detran.inUse[jogador] then
    					attachElements(veh, vtr, 0, -1, 1)
    					detran.guinchado[jogador] = veh
    					detran.inUse[jogador] = true
    					outputChatBox("#FFA500[Detran]:#FFFFFFVeículo guinchado!", jogador, 255, 255, 255, true)
    				else
    					outputChatBox("#FFA500[Detran]:#FFFFFFVocê já guinchou um veículo!", jogador, 255, 255, 255, true)
    				end
    			else
    				outputChatBox("#FFA500[Detran]:#FFFFFFAproxime o guincho do veículo!", jogador, 255, 255, 255, true)
    			end
    		end
    	end
    end
    addCommandHandler("guinchar", guinVeh) 
    
    function soltarVeh (jogador)
    	if isPlayerInACL(jogador, acl) then
    		local vtr = detran.vtr[jogador]
    		local veh = detran.guinchado[jogador]
    		local jogx, jogy, jogz = getElementPosition(jogador)
    		local vtrx, vtry, vtrz = getElementPosition(vtr)
    		local dist = getDistanceBetweenPoints3D(jogx, jogy, jogz, vtrx, vtry, vtrz)
    		if (vtr) and (veh) then
    			if dist < 3.5 then
    				if detran.inUse[jogador] then
    					detachElements(veh, vtr)
    					detran.inUse[jogador] = false
    					detran.guinchado[jogador] = nil
    					outputChatBox("#FFA500[Detran]:#FFFFFFVeículo liberado!", jogador, 255, 255, 255, true)
    				end
    			else
    				outputChatBox("#FFA500[Detran]:#FFFFFFAproxime-se do guincho!", jogador, 255, 255, 255, true)
    			end
    		end
    	end
    end
    addCommandHandler("soltar", soltarVeh)
    
    
    function isPlayerInACL(player, acl)
    	if isElement(player) and getElementType(player) == "player" and aclGetGroup(acl or "") and not isGuestAccount(getPlayerAccount(player)) then
    		local account = getPlayerAccount(player)
    
    		return isObjectInACLGroup( "user.".. getAccountName(account), aclGetGroup(acl) )
    	end
    	return false
    end

    Se ocorrer algum erro, só estar comentando aqui. Não se esqueça de ativar seu debugscript (/debugscript 3).

    @zking0d

    • Like 1
  12. - Crie uma tabela 

    - Insira o veículo dentro da tabela

    - Use onPlayerVehicleEnter como evento.

    local viatura = {} -- tabela criada
    function salvar_Carro (vehicle, seat, jacked)
    	viatura[source] = vehicle -- veiculo inserido
    end
    addEventHandler('onPlayerVehicleEnter', getRootElement(), salvar_Carro) -- evento de ativação!

     

    • Like 1
  13. Faça o seguinte. Nas linhas 436, 437, 439 e 440 troque player por source. 

    Algumas dicas simples:

    - Antes de tudo, procure postar suas duvidas nesta seção, pois isto ajuda a manter a organização do fórum:

    https://forum.multitheftauto.com/forum/127-programação-em-Lua/

    - Abaixo vou deixar um post explicando melhor como funciona este fórum:

    - Sempre que estiver mexendo com seus mods ative o debugscript 3, digitando /debugscript 3 no chat ( para desligar use /debugscript 0). Isto lhe ajuda a identificar o que esta dando erro!

    - Se você entende quase 0 de scripts de uma olhada nesses posts:

    Post por manawydan - Lógica de Programação Básica:

     

    Post por DNL291 - Informações úteis - Scripting/Configurações/Tutoriais para o MTA:

     

    Para finalizar, caso não funcione o script só estar comentando novamente, e por favor se puder informe o erro com uma print ou algo do tipo (não se esqueça de ativar o debugscript!). Facilita bastante a estar te ajudando. :)

    • Like 1
  14. Sim, a tbm recomendo você mudar aquele getPlayerFromName() por  getPlayerFromPartialName() 

    isso muda a forma que vc tem q digitar exemplo se vc quiser me algemar com getPlayerFromName(), você teria que digitar /a eder

    já com getPlayerFromPartialName()  você pode simplesmente digitar /a ede ou /a ed que a função já retorna o player.

    se não me engano o Jonas^ mandou essa function no seu outro post, da uma procurada lá.

  15.  

    
    local posicoesCJ =
        {
            { 2488, -1670, 14 },	
        }
    	
    local posicoesPraia =
        {
            { 324, -1779, 5 },	
    	}
    
    local segundos = 5 -- tempo em segundos
    local tempo = {} -- tabela que salva o tempo.
    
    function PosicaoPlayer ( jogador, comando )
    	if getTickCount() - (tempo[jogador] or 0) >= segundos * 1000 then -- faz a contagem se já passou os 5 segundos para o player.
    		local veh = getPedOccupiedVehicle(jogador)
    		local nome = getPlayerName(jogador)
    		if comando == "cj" then
    			if (veh) then
    				setElementPosition(veh, unpack(posicoesCJ[math.random(#posicoesCJ)]))
    			else
    				setElementPosition(jogador, unpack(posicoesCJ[math.random(#posicoesCJ )]))
    			end
    			tempo[jogador] = getTickCount()
    			outputChatBox ('#FFFFFF[ #00FF00Tele#FFFFFF ]: #FFFFFF'..nome..' #828282Foi Para A Casa Do Cj #FFFFFF(#00FF00 /cj #FFFFFF)', root, 255, 255, 255, true)
    		elseif comando == "praia" then
    			if (veh) then
    				setElementPosition(veh, unpack(posicoesPraia[math.random( #posicoesPraia )]))
    			else
    				setElementPosition(jogador, unpack(posicoesPraia[math.random(#posicoesPraia)]))
    			end	
    			tempo[jogador] = getTickCount()
    			outputChatBox ('#FFFFFF[ #00FF00Tele#FFFFFF ]: #FFFFFF'..nome..' #828282Foi Para A Praia #FFFFFF(#00FF00 /praia #FFFFFF)', root, 255, 255, 255, true)
    		end
    	else
    		outputChatBox ('#FFFFFF[ #00FF00Anti-flood#FFFFFF ]: #FFFFFFAguarde Para utilizar o comando novamente!', jogador, 255, 255, 255, true)
    	end
    end
    addCommandHandler("cj", PosicaoPlayer)
    addCommandHandler("praia", PosicaoPlayer)

    Testado!

    Pronto, arrumado.

    O erro estava nos Parênteses da linha 16

    @SkillZNT

  16. local posicoesCJ =
    {
       { 2488, -1670, 14 },	
    };
    	
    local posicoesPraia =
    {
       { 324, -1779, 5 },	
    };
    	
    local segundos = 5 -- tempo em segundos
    local tempo = {} -- tabela que salva o tempo do jogador.
    
    function PosicaoPlayer ( jogador, comando )
    	if (getTickCount() - tempo[jogador] or 0) >= segundos * 1000) then -- faz a contagem se já passou os 5 segundos para o jogador.
    		local veh = getPedOccupiedVehicle(jogador)
    		local nome = getPlayerName(jogador)
    		if comando == "cj" then
    			if (veh) then
    				setElementPosition(veh, unpack(posicoesCJ[math.random(#posicoesCJ)]))
    			else
    				setElementPosition(jogador, unpack(posicoesCJ[math.random(#posicoesCJ )]))
    			end
    			tempo[jogador] = getTickCount()
    			outputChatBox ('#FFFFFF[ #00FF00Tele#FFFFFF ]: #FFFFFF'..nome..' #828282Foi Para A Casa Do Cj #FFFFFF(#00FF00 /cj #FFFFFF)', root, 255, 255, 255, true)
    		elseif comando == "praia" then
    			if (veh) then
    				setElementPosition(veh, unpack(posicoesPraia[math.random( #posicoesPraia )]))
    			else
    				setElementPosition(jogador, unpack(posicoesPraia[math.random(#posicoesPraia)]))
    			end	
    			tempo[jogador] = getTickCount()
    			outputChatBox ('#FFFFFF[ #00FF00Tele#FFFFFF ]: #FFFFFF'..nome..' #828282Foi Para A Praia #FFFFFF(#00FF00 /praia #FFFFFF)', root, 255, 255, 255, true)
    		end
    	else
    		outputChatBox ('#FFFFFF[ #00FF00Anti-flood#FFFFFF ]: #FFFFFFAguarde Para utilizar o comando novamente!', jogador, 255, 255, 255, true)
    	end
    end
    addCommandHandler("cj", PosicaoPlayer)
    addCommandHandler("praia", PosicaoPlayer)

    Obs: Não testado!

    Ligue primeiro seu debug ( /debugscript 3) e depois inicie o resource! 7

    Caso de algum erro só mandar aqui que irei consertar.

    @SkillZNT

  17. Olá novamente @vanessa, acabei deixando passar no outro post porém para ficar mais fácil de estarmos te ajudando, por favor poste o seu código corretamente clicando sobre o botão code <>  

    Abaixo uma imagem ilustrativa do botão:

    ux5Wjw7.jpg

    lib3RV2.jpg

    Se você puder estar editando o seu tópico e fazendo desta maneira, ficara mais fácil para os membros lhe ajudar! 

     

    Bom quanto ao seu problema você chegou a verificar seu /debugscript 3? Para ver se aparece algum erro quanto aos Resources?

    Qual o problema exato com a sua hud?

    Ela não liga?

    Ela liga, porém falta alguma coisa nela ou algo do tipo?

×
×
  • Create New...