KingBC Posted June 6, 2018 Share Posted June 6, 2018 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? 1 Link to comment
Other Languages Moderators Lord Henry Posted June 6, 2018 Other Languages Moderators Share Posted June 6, 2018 Qual a dificuldade que vcs estão encontrando? Qual parte exatamente vcs não sabem fazer? 1 Link to comment
hawkbr Posted June 6, 2018 Share Posted June 6, 2018 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 Lord Henry Posted June 6, 2018 Other Languages Moderators Share Posted June 6, 2018 (edited) 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 June 6, 2018 by Lord Henry Faltou 1 acento em 1 palavra. 2 Link to comment
hawkbr Posted June 6, 2018 Share Posted June 6, 2018 (edited) 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?? 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 June 6, 2018 by hawkbr Link to comment
Other Languages Moderators Lord Henry Posted June 6, 2018 Other Languages Moderators Share Posted June 6, 2018 Use a ferramenta <> para postar códigos. https://prnt.sc/jp4g81 Link to comment
KingBC Posted June 6, 2018 Author Share Posted June 6, 2018 2 minutes ago, Lord Henry said: Use a ferramenta <> para postar códigos. https://prnt.sc/jp4g81 mostrei pra ele hahahaha ele já acertou Link to comment
Other Languages Moderators Lord Henry Posted June 6, 2018 Other Languages Moderators Share Posted June 6, 2018 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) 2 Link to comment
KingBC Posted June 6, 2018 Author Share Posted June 6, 2018 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
hawkbr Posted June 6, 2018 Share Posted June 6, 2018 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
hawkbr Posted June 6, 2018 Share Posted June 6, 2018 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
Jonas^ Posted June 7, 2018 Share Posted June 7, 2018 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! 2 Link to comment
hawkbr Posted June 7, 2018 Share Posted June 7, 2018 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
Jonas^ Posted June 7, 2018 Share Posted June 7, 2018 16 minutes ago, hawkbr said: Mas no caso, onde colocariamos ?? No comando que você quer que só quem estiver na acl '' Mecanico '' use . Link to comment
hawkbr Posted June 7, 2018 Share Posted June 7, 2018 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
Jonas^ Posted June 7, 2018 Share Posted June 7, 2018 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
hawkbr Posted June 7, 2018 Share Posted June 7, 2018 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
Jonas^ Posted June 7, 2018 Share Posted June 7, 2018 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 ! Link to comment
hawkbr Posted June 7, 2018 Share Posted June 7, 2018 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 ! Link to comment
SidneiJR Posted June 7, 2018 Share Posted June 7, 2018 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) 1 Link to comment
hawkbr Posted June 7, 2018 Share Posted June 7, 2018 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 Lord Henry Posted June 7, 2018 Other Languages Moderators Share Posted June 7, 2018 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. 3 Link to comment
hawkbr Posted June 8, 2018 Share Posted June 8, 2018 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now