Jump to content

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
Link to comment
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.

Link to comment
  • Other Languages Moderators

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
Link to comment
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
Link to comment
  • Other Languages Moderators

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
Link to comment
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!!!!

Link to comment
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

Link to comment
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?

 

Link to comment
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
Link to comment
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 ?? 

Link to comment
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

 

Link to comment
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)

 

Link to comment
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 :(

Link to comment

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
Link to comment
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

 

Link to comment
  • Other Languages Moderators

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
Link to comment
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!!!

 

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