#DeltaSCR Posted December 10, 2018 Share Posted December 10, 2018 Queria pedir a ajuda de vocês na seguinte situação, eu quero que, quando um player execute um determinado comando, por exemplo "adc", ele seja adicionado em uma ACL específica, nesse caso, o que eu deveria utilizar e como... Link to comment
Other Languages Moderators Lord Henry Posted December 10, 2018 Other Languages Moderators Share Posted December 10, 2018 Você quer que o usuário especifique a ACL no comando? Ou você quer que o script coloque em uma ACL já determinada? Link to comment
#DeltaSCR Posted December 11, 2018 Author Share Posted December 11, 2018 9 hours ago, Lord Henry said: Você quer que o usuário especifique a ACL no comando? Ou você quer que o script coloque em uma ACL já determinada? Quero que seja em uma ACL já determinada Link to comment
#DeltaSCR Posted December 11, 2018 Author Share Posted December 11, 2018 1 hour ago, brunob22 said: isObjectInACLGroup Mas isso não é para verificar se o Player está na ACL? Link to comment
Jonas^ Posted December 11, 2018 Share Posted December 11, 2018 Você pode usar aclGroupAddObject Link to comment
#DeltaSCR Posted December 11, 2018 Author Share Posted December 11, 2018 20 minutes ago, OverKILL said: Você pode usar aclGroupAddObject ta, mas como eu usaria? pq tipo, eu quero que quando execute o comando "adc", ele seja adicionado em uma acl especifica Link to comment
Jonas^ Posted December 11, 2018 Share Posted December 11, 2018 Use este exemplo como base: function setarGrupo (thePlayer, commandName, accountName) if accountName then aclGroupAddObject (aclGetGroup("ACL_NAME"), "user."..accountName) outputChatBox ( "Você adicionou a conta '"..accountName.."' ao grupo ACL_NAME", thePlayer) else outputChatBox ( "Uso correto: /adc conta", thePlayer) end end addCommandHandler ("adc", setarGrupo) Teste, use /adc nome da conta Link to comment
#DeltaSCR Posted December 11, 2018 Author Share Posted December 11, 2018 (edited) 12 minutes ago, OverKILL said: Use este exemplo como base: function setarGrupo (thePlayer, commandName, accountName) if accountName then aclGroupAddObject (aclGetGroup("ACL_NAME"), "user."..accountName) outputChatBox ( "Você adicionou a conta '"..accountName.."' ao grupo ACL_NAME", thePlayer) else outputChatBox ( "Uso correto: /adc conta", thePlayer) end end addCommandHandler ("adc", setarGrupo) Teste, use /adc nome da conta function trab (source) if isElementWithinMarker then -- vou adicionar o marker ainda local getAccountName(source) = conta if conta then aclGroupAddObject (aclGetGroup("UBER"), "user. "..conta)) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) end else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) end end addCommandHandler ("trab2", trab) eu fiz assim mano, sera que funciona? pq eu quero que o player, no caso o que está dando o comando seja adicionado na acl, somente com o comando especificado Edited December 11, 2018 by danblemes1 Link to comment
miiguelz Posted December 11, 2018 Share Posted December 11, 2018 Acho que não precisa da linha 7, No caso a linha 9 seria pra alerta que você não está no local correto no caso o marker, então não precisaria do end só mesmo o else. Link to comment
Jonas^ Posted December 11, 2018 Share Posted December 11, 2018 (edited) Tente isto: OBS: A resource precisa de permissão admin, adicione na acl admin: resource.nome local NomeMark = createMarker (2737.34, -1433.672, 29.1, "cylinder", 1, 16, 102, 231, 255) -- Cria o pra testes. function iniciarTrampo (source) -- Função propriamente dita. local acc = getPlayerAccount (source) -- Pega a conta do jogador if isElementWithinMarker (source, NomeMark) and not getPedOccupiedVehicle (source) then -- Só ira funcionar se o jogador estiver no mark informado e sem um veículo aclGroupAddObject(aclGetGroup ("UBER"), "user."..getAccountName(acc) ) -- Adiciona o jogador que usou o comando na acl informada (UBER) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) -- Envia output informando else -- Se não estiver no mark então: outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) -- Envia output informando end -- Finaliza o if da verificação do mark end -- Finaliza a função addCommandHandler ("trab2", iniciarTrampo) -- Comando que executa a função. Edited December 11, 2018 by OverKILL Link to comment
Jonas^ Posted December 11, 2018 Share Posted December 11, 2018 3 hours ago, brunob22 said: isObjectInACLGroup Aqui você esta verificando se algum determinado jogador esta ou não em determinada acl, o que o carinha quer é totalmente diferente, pelo contrario, não necessita de nem uma verificação ACL pra fazer isso, apenas aclGroupAddObject. https://wiki.multitheftauto.com/wiki/AclGroupAddObject Bons estudos Link to comment
Other Languages Moderators Lord Henry Posted December 11, 2018 Other Languages Moderators Share Posted December 11, 2018 7 hours ago, danblemes1 said: function trab (source) if isElementWithinMarker then -- vou adicionar o marker ainda local getAccountName(source) = conta if conta then aclGroupAddObject (aclGetGroup("UBER"), "user. "..conta)) outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) end else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) end end addCommandHandler ("trab2", trab) eu fiz assim mano, sera que funciona? pq eu quero que o player, no caso o que está dando o comando seja adicionado na acl, somente com o comando especificado Dará erro na linha 2 (mas vc justificou, então blz) Erro na linha 3, pois você não pode usar uma função como nome de variável. Faça ao contrário. Além disso, você só pode obter o account name de uma conta e não direto do player. local conta = getAccountName(getPlayerAccount(source)) Na linha 4 é inútil verificar se a conta existe, pois ela sempre vai existir mesmo que o player esteja deslogado (Guest account). Em vez disso verifique se ela é uma conta Guest ou não usando isGuestAccount. if not (isGuestAccount (getPlayerAccount(source))) then -- Se a conta do jogador que usou o comando não for deslogado, então: O resto pode continuar assim. 1 Link to comment
#DeltaSCR Posted December 12, 2018 Author Share Posted December 12, 2018 4 minutes ago, Lord Henry said: Dará erro na linha 2 (mas vc justificou, então blz) Erro na linha 3, pois você não pode usar uma função como nome de variável. Faça ao contrário. Além disso, você só pode obter o account name de uma conta e não direto do player. local conta = getAccountName(getPlayerAccount(source)) Na linha 4 é inútil verificar se a conta existe, pois ela sempre vai existir mesmo que o player esteja deslogado (Guest account). Em vez disso verifique se ela é uma conta Guest ou não usando isGuestAccount. if not (isGuestAccount (getPlayerAccount(source))) then -- Se a conta do jogador que usou o comando não for deslogado, então: O resto pode continuar assim. Então essa última que você mandou, do guest, eu tenho que colocar esse "if not..." no lugar de "if conta then"? Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 Sim, pois Se NÃO for uma conta guest, então faz o que deve ser feito. Se for Guest, não dará certo. 1 Link to comment
#DeltaSCR Posted December 12, 2018 Author Share Posted December 12, 2018 3 minutes ago, Lord Henry said: Sim, pois Se NÃO for uma conta guest, então faz o que deve ser feito. Se for Guest, não dará certo. Então depois que eu fizer todas essas alterações, quando o player que estiver no Marker der o comando "trab2", ele será adicionado na acl? Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 Teste aí e descubra Link to comment
#DeltaSCR Posted December 12, 2018 Author Share Posted December 12, 2018 1 minute ago, Lord Henry said: Teste aí e descubra Isso foi um sim? Kk Link to comment
DNL291 Posted December 12, 2018 Share Posted December 12, 2018 Tente o seguinte: function trab ( playerSource ) if isElementWithinMarker(marker) then -- vou adicionar o marker ainda local account = isGuestAccount(getPlayerAccount(playerSource)) and false or getPlayerAccount(playerSource) -- se for uma conta "guest" a variável retornará false if account then if isObjectInACLGroup( "user."..getAccountName(account), aclGetGroup( "UBER" ) ) then return outputChatBox("Você já está neste trabalho!", playerSource, 230, 0, 0) -- o jogador já tá nesse grupo, então manda a msg de aviso end if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", playerSource, 255, 255, 255, true) -- faz a checagem verificando se a conta foi adicionada, então envia a mensagem no chat end end else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", playerSource, 255, 255, 255, true) end end addCommandHandler ("trab2", trab) 1 Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 2 minutes ago, DNL291 said: Tente o seguinte: function trab ( playerSource ) if isElementWithinMarker(marker) then -- vou adicionar o marker ainda local account = isGuestAccount(getPlayerAccount(playerSource)) and false or getPlayerAccount(playerSource) -- se for uma conta "guest" a variável retornará false if account then if isObjectInACLGroup( "user."..getAccountName(account), aclGetGroup( "UBER" ) ) then return outputChatBox("Você já está neste trabalho!", playerSource, 230, 0, 0) -- o jogador já tá nesse grupo, então manda a msg de aviso end if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", playerSource, 255, 255, 255, true) -- faz a checagem verificando se a conta foi adicionada, então envia a mensagem no chat end end else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", playerSource, 255, 255, 255, true) end end addCommandHandler ("trab2", trab) Hum... Boa. Está evitando de adicionar o usuário que já está na ACL Group. 1 Link to comment
#DeltaSCR Posted December 12, 2018 Author Share Posted December 12, 2018 2 minutes ago, Lord Henry said: Hum... Boa. Está evitando de adicionar o usuário que já está na ACL Group. Tomara q dê certo hihi Tá agora se eu quisesse que, quando um player der o comando /uber, fosse criado um blip nele visível somente para a acl uber, como eu faria? Link to comment
DNL291 Posted December 12, 2018 Share Posted December 12, 2018 (edited) Não testei mas acho que dá certo sim, só você testar e ver 10 minutes ago, danblemes1 said: Tomara q dê certo hihi Tá agora se eu quisesse que, quando um player der o comando /uber, fosse criado um blip nele visível somente para a acl uber, como eu faria? createBlipAttachedTo getElementsByType -- loop em todos jogadores isObjectInACLGroup -- verificar se é uber setElementVisibleTo Edit: e quando alguém entrar na ACL, você vai precisar atualizar o jogador para que ele possa visualizar os blips dos colegas. Edited December 12, 2018 by DNL291 Link to comment
#DeltaSCR Posted December 12, 2018 Author Share Posted December 12, 2018 Mano, eu fiz exatamente como voces recomendaram, mas acho que deu algum problema pois o marker inicial não aparece mais... entrada = createMarker (1154.66015625, -1457.9853515625, 14.796875, "cylinder", 1.1, 0, 191, 255, 150) function trab (source) if isElementWithinMarker(source, mktrab) then local account = isGuestAccount(getPlayerAccount(source)) and false or getPlayerAccount(source) if account then if isObjectInACLGroup("user."..getAccountName(account), aclGetGroup("UBER")) then return outputChatBox("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você já está trabalhando de Uber", source, 255, 255, 255, true) end if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) end end else outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) end end addCommandHandler ("trab2", trab) Link to comment
Other Languages Moderators Lord Henry Posted December 12, 2018 Other Languages Moderators Share Posted December 12, 2018 Sempre deixe o /debugscript 3 ativado para ver se há erros. Link to comment
Jonas^ Posted December 12, 2018 Share Posted December 12, 2018 Não entendi o seu erro, eu testei aqui e funcionou, lembrando que você criou um mark com nome ' entrada ' e na função de verificação se o jogador esta no mark ou não esta 'mktrab' Teste assim, leia os comentários nas linhas. local entrada = createMarker (1154.66015625, -1457.9853515625, 14.796875, "cylinder", 1.1, 0, 191, 255, 150) -- Entrada ( não sei do que é ) local mktrab = createMarker (1151.968, -1454.409, 14.9, "cylinder", 1.1, 255, 0, 0, 150) -- Mark de pegar o trampo function trab (source) -- Função if isElementWithinMarker (source, mktrab) then -- Se o jogador estiver no mark 'mktrab' então: local account = isGuestAccount(getPlayerAccount(source)) and false or getPlayerAccount(source) -- Verifica se o jogador não esta deslogado, se tiver retorna false if account then if isObjectInACLGroup("user."..getAccountName(account), aclGetGroup("UBER")) then -- Se o jogador já estiver na ACL uber então: return outputChatBox("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você já está trabalhando de Uber", source, 255, 255, 255, true) -- Retorna false enviando a output end if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then -- Se não estiver na ACL uber e usar o comando então é adicionado outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) -- Envia essa mensagem se ocorrer tudo bem end end else -- Se o jogador não estiver no mark então: outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) -- envia essa mensagem. end end addCommandHandler ("trab2", trab) -- Comando que executa a função toda. ---------------------------- -- Comando de testes pra você ir até o mark que criei pra testar, após testar pode remover. function teleMark (thePlayer) setElementPosition (thePlayer, 1151.968, -1454.409, 16.1 ) end addCommandHandler ( "1", teleMark) 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