Sign in to follow this  
KingBC

Solicitação de pagamento

Recommended Posts

Pessoal, seguinte, eu meu amigo @hawkbr estamos tentando criar um sistema de mecânico, mas queríamos automatizar a cobrança do valor enviando uma mensagem para o player e quando ele aceitar por exemplo: /aceitar . O valor cobrado seria debitado do proprietário do veículo. Alguém pode nos ajudar?

  • Like 1

Share this post


Link to post
2 minutes ago, Lord Henry said:

Qual a dificuldade que vcs estão encontrando? Qual parte exatamente vcs não sabem fazer?

Então, eu dei uma lida sobre takeplayermoney, mas eu só achei exemplos bem simples. Queriamos fazer um sistema que o Mecanico (jogador) digite: /cobrar [nick] e que apareça no chat do player mencionado assim: [nick mecanico] está cobrando [valorfixo: exemplo:800]Reais pelo trabalho. Para aceitar, digite /aceitar. 

O mais perto que consegui de achar foi cobrar uma pessoa que está no seu veículo.. :( 
eu li sobre takeplayermoney e giveplayermoney mas nao achei nada ajudando.

Share this post


Link to post

Eu faria mais ou menos assim:

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

function solicitaPay (thePlayer, cmd, user)
    if not user then
        outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
    elseif not getPlayerFromPartialName (user) then
        outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
    else
    	local theUser = getPlayerFromPartialName (user)
        if getElementData (theUser, "mecanico.solicitation") then
            outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
        else
            setElementData (theUser, "mecanico.solicitation", thePlayer)
            outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
            outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
            setTimer (function ()
                if getElementData (theUser, "mecanico.solicitation") then
                    setElementData (theUser, "mecanico.solicitation", false)
                    outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
                end
            end, 10000, 1)
        end
    end
end
addCommandHandler ("consertar", solicitaPay)

function aceitaPay (thePlayer, cmd)
    if getElementData (thePlayer, "mecanico.solicitation") then
        if getPlayerMoney (thePlayer) >= 800 then
            takePlayerMoney (thePlayer, 800)
            givePlayerMoney (getElementData (thePlayer, "mecanico.solicitation"), 800)
            outputChatBox ("Seu pedido foi aceito. Você recebeu $800 pelo conserto.", getElementData (thePlayer, "mecanico.solicitation"), 0, 255, 0)
            -- Função que repara o veículo aqui.
            setElementData (thePlayer, "mecanico.solicitation", false)
            outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
        else
            outputChatBox ("Você não tem dinheiro suficiente.", thePlayer, 255, 0, 0)
        end
    end
end
addCommandHandler ("aceitar", aceitaPay)

function recusaPay (thePlayer, cmd)
    if getElementData (thePlayer, "mecanico.solicitation") then
        outputChatBox ("Seu pedido foi recusado.", getElementData (thePlayer, "mecanico.solicitation"), 255, 0, 0)
        setElementData (thePlayer, "mecanico.solicitation", false)
        outputChatBox ("Você recusou o pagamento. Seu veículo não foi consertado.", thePlayer, 255, 0, 0)
    end
end
addCommandHandler ("recusar", recusaPay)

Espero ter ajudado.

Edited by Lord Henry
Faltou 1 acento em 1 palavra.
  • Thanks 2

Share this post


Link to post
45 minutes ago, Lord Henry said:

Eu faria mais ou menos assim:


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

function solicitaPay (thePlayer, cmd, user)
    if not user then
        outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
    elseif not getPlayerFromPartialName (user) then
        outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
    else
    	local theUser = getPlayerFromPartialName (user)
        if getElementData (theUser, "mecanico.solicitation") then
            outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
        else
            setElementData (theUser, "mecanico.solicitation", thePlayer)
            outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
      outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
            setTimer (function ()
                if getElementData (theUser, "mecanico.solicitation") then
                    setElementData (theUser, "mecanico.solicitation", false)
                    outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
                end
            end, 10000, 1)
        end
    end
end
addCommandHandler ("consertar", solicitaPay)

function aceitaPay (thePlayer, cmd)
    if getElementData (thePlayer, "mecanico.solicitation") then
        if getPlayerMoney (thePlayer) >= 800 then
            takePlayerMoney (thePlayer, 800)
            givePlayerMoney (getElementData (thePlayer, "mecanico.solicitation"), 800)
            outputChatBox ("Seu pedido foi aceito. Você recebeu $800 pelo conserto.", getElementData (thePlayer, "mecanico.solicitation"), 0, 255, 0)
            -- Função que repara o veículo aqui.
            setElementData (thePlayer, "mecanico.solicitation", false)
            outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
        else
            outputChatBox ("Você não tem dinheiro suficiente.", thePlayer, 255, 0, 0)
        end
    end
end
addCommandHandler ("aceitar", aceitaPay)

function recusaPay (thePlayer, cmd)
    if getElementData (thePlayer, "mecanico.solicitation") then
        outputChatBox ("Seu pedido foi recusado.", getElementData (thePlayer, "mecanico.solicitation"), 255, 0, 0)
        setElementData (thePlayer, "mecanico.solicitation", false)
        outputChatBox ("Você recusou o pagamento. Seu veículo não foi consertado.", thePlayer, 255, 0, 0)
    end
end
addCommandHandler ("recusar", recusaPay)

Espero ter ajudado.

Opa cara, ajudou demais! Porém ao colocar a função de reparar não funcionou :/ Consegue nos ajudar??
**Também queriamos colocar pra que apenas quem estiver no grupo da ACL "Mecanico" poderia usar este comando. Mas todos pudessem usar o /aceitar ou /recusar. Sabe se tem como??

 

  1. 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
    function solicitaPay (thePlayer, cmd, user)
        if not user then
            outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
        elseif not getPlayerFromPartialName (user) then
            outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
        else
            local theUser = getPlayerFromPartialName (user)
            if getElementData (theUser, "mecanico.solicitation") then
                outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
            else
                setElementData (theUser, "mecanico.solicitation", thePlayer)
                outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
          outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
                setTimer (function ()
                    if getElementData (theUser, "mecanico.solicitation") then
                        setElementData (theUser, "mecanico.solicitation", false)
                        outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
                    end
                end, 10000, 1)
            end
        end
    end
    addCommandHandler ("consertar", solicitaPay)
    function aceitaPay (thePlayer, cmd)
        if getElementData (thePlayer, "mecanico.solicitation") then
            if getPlayerMoney (thePlayer) >= 800 then
                takePlayerMoney (thePlayer, 800)
                givePlayerMoney (getElementData (thePlayer, "mecanico.solicitation"), 800)
                outputChatBox ("Seu pedido foi aceito. Voce recebeu $800 pelo conserto.", getElementData (thePlayer, "mecanico.solicitation"), 0, 255, 0)
                
                function fix (playerSource) 
                    local theVehicle = getPedOccupiedVehicle (playerSource) 
                    if theVehicle and getVehicleController ( theVehicle ) == playerSource then 
                        fixVehicle (theVehicle) 
                        outputChatBox ("Your vehicle has been fixed !" , thePlayer) 
                    end 
                end
                addCommandHandler ("fix" , fix)
                
                setElementData (thePlayer, "mecanico.solicitation", false)
                outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
            else
                outputChatBox ("Você não tem dinheiro suficiente.", thePlayer, 255, 0, 0)
            end
        end
    end
    addCommandHandler ("aceitar", aceitaPay)
    function recusaPay (thePlayer, cmd)
        if getElementData (thePlayer, "mecanico.solicitation") then
            outputChatBox ("Seu pedido foi recusado.", getElementData (thePlayer, "mecanico.solicitation"), 255, 0, 0)
            setElementData (thePlayer, "mecanico.solicitation", false)
            outputChatBox ("Você recusou o pagamento. Seu veículo não foi consertado.", thePlayer, 255, 0, 0)
        end
    end
    addCommandHandler ("recusar", recusaPay)

     


Valeu DEMAIS! 

Edited by hawkbr

Share this post


Link to post

Nessa parte

function fix (playerSource) 
    local theVehicle = getPedOccupiedVehicle (playerSource) 
    if theVehicle and getVehicleController ( theVehicle ) == playerSource then 
        fixVehicle (theVehicle) 
        outputChatBox ("Your vehicle has been fixed !" , thePlayer) 
    end 
end
addCommandHandler ("fix" , fix)

Substitua por isso:

local theVehicle = getPedOccupiedVehicle (thePlayer)
if theVehicle and getVehicleController (theVehicle) == thePlayer then 
    fixVehicle (theVehicle)
    outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
end

Você deve tirar aquele outro outputChatBox que eu coloquei na minha parte, serão irá mandar 2x no chat.

Delete essa linha que fica em baixo do setElementData:

outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)

 

  • Thanks 2

Share this post


Link to post
7 minutes ago, Lord Henry said:

Nessa parte


function fix (playerSource) 
    local theVehicle = getPedOccupiedVehicle (playerSource) 
    if theVehicle and getVehicleController ( theVehicle ) == playerSource then 
        fixVehicle (theVehicle) 
        outputChatBox ("Your vehicle has been fixed !" , thePlayer) 
    end 
end
addCommandHandler ("fix" , fix)

Substitua por isso:


local theVehicle = getPedOccupiedVehicle (thePlayer)
if theVehicle and getVehicleController (theVehicle) == thePlayer then 
    fixVehicle (theVehicle)
    outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
end

Você deve tirar aquele outro outputChatBox que eu coloquei na minha parte, serão irá mandar 2x no chat.

Delete essa linha que fica em baixo do setElementData:


outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)

 

CARA MUITO OBRIGADO! Funcionou, vlw demais!!!!

Share this post


Link to post
8 minutes ago, Lord Henry said:

Nessa parte


function fix (playerSource) 
    local theVehicle = getPedOccupiedVehicle (playerSource) 
    if theVehicle and getVehicleController ( theVehicle ) == playerSource then 
        fixVehicle (theVehicle) 
        outputChatBox ("Your vehicle has been fixed !" , thePlayer) 
    end 
end
addCommandHandler ("fix" , fix)

Substitua por isso:


local theVehicle = getPedOccupiedVehicle (thePlayer)
if theVehicle and getVehicleController (theVehicle) == thePlayer then 
    fixVehicle (theVehicle)
    outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
end

Você deve tirar aquele outro outputChatBox que eu coloquei na minha parte, serão irá mandar 2x no chat.

Delete essa linha que fica em baixo do setElementData:


outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)

 

MUITO OBRIGADO MANO <3

Share this post


Link to post
40 minutes ago, Lord Henry said:

Nessa parte


function fix (playerSource) 
    local theVehicle = getPedOccupiedVehicle (playerSource) 
    if theVehicle and getVehicleController ( theVehicle ) == playerSource then 
        fixVehicle (theVehicle) 
        outputChatBox ("Your vehicle has been fixed !" , thePlayer) 
    end 
end
addCommandHandler ("fix" , fix)

Substitua por isso:


local theVehicle = getPedOccupiedVehicle (thePlayer)
if theVehicle and getVehicleController (theVehicle) == thePlayer then 
    fixVehicle (theVehicle)
    outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)
end

Você deve tirar aquele outro outputChatBox que eu coloquei na minha parte, serão irá mandar 2x no chat.

Delete essa linha que fica em baixo do setElementData:


outputChatBox ("Seu veículo foi consertado.", thePlayer, 0, 255, 0)

 

E como a gente adcionaria o sistema de ACL?

 

Share this post


Link to post
20 minutes ago, hawkbr said:

E como a gente adcionaria o sistema de ACL?

 

Use a função: 

 

if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecanico" ) ) then

OBS: criar o grupo na ACL do servidor com o mesmo nome caso contrario não ira funcionar!

  • Thanks 2

Share this post


Link to post
Just now, OverKILL said:

Use a função: 

 


if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Mecanico" ) ) then

OBS: criar o grupo na ACL do servidor com o mesmo nome caso contrario não ira funcionar!

Mas no caso, onde colocariamos ?? 

Share this post


Link to post
16 minutes ago, hawkbr said:

Mas no caso, onde colocariamos ?? 

No comando que você quer que só quem estiver na acl '' Mecanico '' use .

Share this post


Link to post
4 minutes ago, OverKILL said:

No comando que você quer que só quem estiver na acl '' Mecanico '' use .

Assim??

Não precisa de client né?

 

function solicitaPay (thePlayer, cmd, user)
    if not user then
        outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
    elseif not getPlayerFromPartialName (user) then
        outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
    else
        local theUser = getPlayerFromPartialName (user)
        if getElementData (theUser, "mecanico.solicitation") then
            outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
        else
            setElementData (theUser, "mecanico.solicitation", thePlayer)
            outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
      outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
            setTimer (function ()
                if getElementData (theUser, "mecanico.solicitation") then
                    setElementData (theUser, "mecanico.solicitation", false)
                    outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
                end
            end, 10000, 1)
        end
    end
end
addCommandHandler ("consertar", solicitaPay)
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "MEC" ) ) then

 

Share this post


Link to post
4 minutes ago, hawkbr said:

Assim??

Não precisa de client né?

 


function solicitaPay (thePlayer, cmd, user)
    if not user then
        outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
    elseif not getPlayerFromPartialName (user) then
        outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
    else
        local theUser = getPlayerFromPartialName (user)
        if getElementData (theUser, "mecanico.solicitation") then
            outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
        else
            setElementData (theUser, "mecanico.solicitation", thePlayer)
            outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
      outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
            setTimer (function ()
                if getElementData (theUser, "mecanico.solicitation") then
                    setElementData (theUser, "mecanico.solicitation", false)
                    outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
                end
            end, 10000, 1)
        end
    end
end
addCommandHandler ("consertar", solicitaPay)
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "MEC" ) ) then

 

function solicitaPay (thePlayer, cmd, user)
	if isObjectInACLGroup ("user."..accName, aclGetGroup ( "MEC" ) ) then
		if not user then
			outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
		elseif not getPlayerFromPartialName (user) then
			outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
		else
			local theUser = getPlayerFromPartialName (user)
			if getElementData (theUser, "mecanico.solicitation") then
				outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
			else
				setElementData (theUser, "mecanico.solicitation", thePlayer)
				outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
		outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
				setTimer (function ()
					if getElementData (theUser, "mecanico.solicitation") then
						setElementData (theUser, "mecanico.solicitation", false)
						outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
					end
				end, 10000, 1)
			end
		end
	end
end	
addCommandHandler ("consertar", solicitaPay)

 

Share this post


Link to post
3 minutes ago, OverKILL said:

function solicitaPay (thePlayer, cmd, user)
	if isObjectInACLGroup ("user."..accName, aclGetGroup ( "MEC" ) ) then
		if not user then
			outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
		elseif not getPlayerFromPartialName (user) then
			outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
		else
			local theUser = getPlayerFromPartialName (user)
			if getElementData (theUser, "mecanico.solicitation") then
				outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
			else
				setElementData (theUser, "mecanico.solicitation", thePlayer)
				outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
		outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
				setTimer (function ()
					if getElementData (theUser, "mecanico.solicitation") then
						setElementData (theUser, "mecanico.solicitation", false)
						outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
					end
				end, 10000, 1)
			end
		end
	end
end	
addCommandHandler ("consertar", solicitaPay)

 

Não funcionou cara :(

Share this post


Link to post
3 minutes ago, hawkbr said:

Não funcionou cara :(

Tente ler na wiki faça igual eu, eu tentei ajudar, eu também sou um pouco iniciante, ou espere algum veterano responder !

Share this post


Link to post
Just now, OverKILL said:

Tente ler na wiki faça igual eu, eu tentei ajudar, eu também sou um pouco iniciante, ou espere algum veterano responder !

beleza.. mas valeu mesmo assim cara ! 

Share this post


Link to post

Tente:

--Server

function solicitaPay (thePlayer, cmd, user)
    local accName = getAccountName(getPlayerAccount(thePlayer))
	if isObjectInACLGroup ("user."..accName, aclGetGroup ("MEC") ) then
       if cmd == "consertar" then
		if not user then
			outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
		elseif not getPlayerFromPartialName (user) then
			outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
		else
			local theUser = getPlayerFromPartialName (user)
			if getElementData (theUser, "mecanico.solicitation") then
				outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
			else
				setElementData (theUser, "mecanico.solicitation", thePlayer)
				outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
		outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
				setTimer (function ()
					if getElementData (theUser, "mecanico.solicitation") then
						setElementData (theUser, "mecanico.solicitation", false)
						outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
					end
				end, 10000, 1)
			end
		end
end
else
outputChatBox("#FF0000Você não tem permissão para executar este comando!", thePlayer, 255, 255, 255, true )
end
end
addCommandHandler ("consertar", solicitaPay)

 

  • Thanks 1

Share this post


Link to post
1 hour ago, SidneiJR said:

Tente:


--Server

function solicitaPay (thePlayer, cmd, user)
    local accName = getAccountName(getPlayerAccount(thePlayer))
	if isObjectInACLGroup ("user."..accName, aclGetGroup ("MEC") ) then
       if cmd == "consertar" then
		if not user then
			outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
		elseif not getPlayerFromPartialName (user) then
			outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
		else
			local theUser = getPlayerFromPartialName (user)
			if getElementData (theUser, "mecanico.solicitation") then
				outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
			else
				setElementData (theUser, "mecanico.solicitation", thePlayer)
				outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true)
		outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true)
				setTimer (function ()
					if getElementData (theUser, "mecanico.solicitation") then
						setElementData (theUser, "mecanico.solicitation", false)
						outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true)
					end
				end, 10000, 1)
			end
		end
end
else
outputChatBox("#FF0000Você não tem permissão para executar este comando!", thePlayer, 255, 255, 255, true )
end
end
addCommandHandler ("consertar", solicitaPay)

 

Funcionou!! MUITO OBRIGADO

 

Share this post


Link to post

Só uma pequena correção: Se a função só possui 1 comando ativando ela. Não precisa verificar se o cmd = "consertar", pois isso sempre será true.
Deixei comentários no código pra vc entender o que acontece em cada linha. Fazer isso é importante para estudar seu código.

function solicitaPay (thePlayer, cmd, user)
    local accName = getAccountName (getPlayerAccount(thePlayer)) -- accName = nome da conta do jogador que executou o comando. (Exemplo: joao123)
    if isObjectInACLGroup ("user."..accName, aclGetGroup ("MEC") ) then -- Se o objeto user.joao123 está na ACL Group MEC, então:
        if not user then -- Se nenhum nick foi informado junto com o comando, então:
            outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
        elseif not getPlayerFromPartialName (user) then -- Se o nick foi informado mas não existe um jogador com esse nick, então:
            outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
        else -- Se o nick foi informado e o jogador foi encontrado, então:
            local theUser = getPlayerFromPartialName (user) -- theUser = jogador encontrado. (elemento)
            if getElementData (theUser, "mecanico.solicitation") then -- Se o jogador encontrado tem uma solicitação pendente, então:
                outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
            else -- Se o jogador encontrado não tem nenhuma solicitação pendente, então:
                setElementData (theUser, "mecanico.solicitation", thePlayer) -- Coloca solicitação pendente no jogador encontrado.
                outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true) -- Avisa o jogador que executou o comando, que ele enviou uma solicitação ao jogador encontrado.
                outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true) -- Avisa o jogador encontrado que ele tem uma solicitação de pagamento, para que ele use /aceitar ou /recusar.
                setTimer (function () -- Inicia um temporizador de 10 segundos para remover automaticamente a solicitação, caso o jogador não recuse nem aceite, para ele não ficar com a solicitação eternamente.
                    if getElementData (theUser, "mecanico.solicitation") then -- Depois dos 10 segundos, se o jogador ainda estiver com a solicitação (não recusou nem aceitou)
                        setElementData (theUser, "mecanico.solicitation", false) -- Remove a solicitação dele.
                        outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true) -- Avisa pra ele, que a solicitação que ele tinha pendente foi expirada.
                    end
                end, 10000, 1)
            end
        end
    else -- Se o objeto user.joao123 não está na ACL MEC, então:
        outputChatBox ("Você não tem permissão para executar este comando!", thePlayer, 255, 0, 0) -- Avisa o jogador que ele não tem permissão.
    end
end
addCommandHandler ("consertar", solicitaPay) -- Comando que irá ativar a função solicitaPay.

Sugiro também que vc estude lógica de programação, assim você saberá onde deve colocar as funções que passamos pra você e também terá extrema facilidade de entender o que vc está fazendo.

  • Thanks 3

Share this post


Link to post
11 hours ago, Lord Henry said:

Só uma pequena correção: Se a função só possui 1 comando ativando ela. Não precisa verificar se o cmd = "consertar", pois isso sempre será true.
Deixei comentários no código pra vc entender o que acontece em cada linha. Fazer isso é importante para estudar seu código.


function solicitaPay (thePlayer, cmd, user)
    local accName = getAccountName (getPlayerAccount(thePlayer)) -- accName = nome da conta do jogador que executou o comando. (Exemplo: joao123)
    if isObjectInACLGroup ("user."..accName, aclGetGroup ("MEC") ) then -- Se o objeto user.joao123 está na ACL Group MEC, então:
        if not user then -- Se nenhum nick foi informado junto com o comando, então:
            outputChatBox ("Erro de sintaxe, use /consertar <nick>", thePlayer, 255, 255, 0)
        elseif not getPlayerFromPartialName (user) then -- Se o nick foi informado mas não existe um jogador com esse nick, então:
            outputChatBox ("Jogador não encontrado.", thePlayer, 255, 255, 0)
        else -- Se o nick foi informado e o jogador foi encontrado, então:
            local theUser = getPlayerFromPartialName (user) -- theUser = jogador encontrado. (elemento)
            if getElementData (theUser, "mecanico.solicitation") then -- Se o jogador encontrado tem uma solicitação pendente, então:
                outputChatBox ("Alguém já está solicitando pagamento mecânico a este jogador.", thePlayer, 255, 255, 0)
            else -- Se o jogador encontrado não tem nenhuma solicitação pendente, então:
                setElementData (theUser, "mecanico.solicitation", thePlayer) -- Coloca solicitação pendente no jogador encontrado.
                outputChatBox ("Você solicitou pagamento para consertar o veículo de "..user, thePlayer, 0, 255, 0, true) -- Avisa o jogador que executou o comando, que ele enviou uma solicitação ao jogador encontrado.
                outputChatBox (getPlayerName (thePlayer).."#FFFF00 está pedindo $800 para consertar seu veículo. Use /aceitar ou /recusar", theUser, 255, 255, 255, true) -- Avisa o jogador encontrado que ele tem uma solicitação de pagamento, para que ele use /aceitar ou /recusar.
                setTimer (function () -- Inicia um temporizador de 10 segundos para remover automaticamente a solicitação, caso o jogador não recuse nem aceite, para ele não ficar com a solicitação eternamente.
                    if getElementData (theUser, "mecanico.solicitation") then -- Depois dos 10 segundos, se o jogador ainda estiver com a solicitação (não recusou nem aceitou)
                        setElementData (theUser, "mecanico.solicitation", false) -- Remove a solicitação dele.
                        outputChatBox ("O pedido de pagamento de "..getPlayerName (thePlayer).."#FFFF00 expirou.", theUser, 255, 255, 0, true) -- Avisa pra ele, que a solicitação que ele tinha pendente foi expirada.
                    end
                end, 10000, 1)
            end
        end
    else -- Se o objeto user.joao123 não está na ACL MEC, então:
        outputChatBox ("Você não tem permissão para executar este comando!", thePlayer, 255, 0, 0) -- Avisa o jogador que ele não tem permissão.
    end
end
addCommandHandler ("consertar", solicitaPay) -- Comando que irá ativar a função solicitaPay.

Sugiro também que vc estude lógica de programação, assim você saberá onde deve colocar as funções que passamos pra você e também terá extrema facilidade de entender o que vc está fazendo.

Sem palavras para você! Despertou toda minha vontade de me aprofundar em scripts! Valeu mano, você é fera demais!!!

 

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.