Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,002
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Já tentou desativar o resource playerblips?
  2. Para poder mexer nos menus, vc precisa apertar F. Note que os menus estão meio transparentes enquanto você não habilita eles no F.
  3. Se você estiver se referindo a você mesmo, não é possível desativar o seu blip no mapa (aquele ponteiro branco). A não ser que você desative o mapa inteiro e crie outro sem a função do GPS.
  4. Eu estou resolvendo ainda o menu para criar eventos...quando eu voltar a mexer nos mapas dai eu aviso. Estou com um problema para converter a string "50%" para número. Usando tonumber não resolve pois ele não sabe que número é o %, então eu teria que dar um jeito de remover o % da string antes de usar o tonumber. Alguém ae sabe alguma função para encontrar e deletar determinado caractere de uma string?
  5. O objetivo é guardar o quê? Itens ou grana?
  6. Eu to pensando em fazer assim...só que não faço ideia de como "spawnar" os markers um por vez a cada vez que o jogador colide em um. Eu sei que os markers são sempre client-side, quando termina o countdown e inicia a corrida, ele cria direto o marker 1 e o 2. Quando o jogador colide no 1, ele deleta o marker 1, cria o 3 e assim por diante, sempre mantendo 2 markers criados. Só que não sei como chamar os markers de cada vez. Eu sei que no arquivo ele classifica por ID e informa qual é o próximo marker, de maneira que ele saiba qual chamar em seguida. <map mod="deathmatch"> <!-->O arquivo original está assim...mas só funciona no Race.</--> <spawnpoint posX="-2389.578125" posY="-2214.670410" posZ="32.949440" rotation="339" vehicle="468" id="spawnpoint0" /> <spawnpoint posX="-2392.252930" posY="-2214.180420" posZ="32.949440" rotation="330" vehicle="468" id="spawnpoint1" /> <spawnpoint posX="-2394.579834" posY="-2212.746582" posZ="32.949440" rotation="320" vehicle="468" id="spawnpoint2" /> <spawnpoint posX="-2396.306396" posY="-2210.714844" posZ="32.949440" rotation="306" vehicle="468" id="spawnpoint3" /> <spawnpoint posX="-2397.809570" posY="-2208.184326" posZ="32.949440" rotation="299" vehicle="468" id="spawnpoint4" /> <spawnpoint posX="-2399.312988" posY="-2205.918945" posZ="32.949440" rotation="294" vehicle="468" id="spawnpoint5" /> <spawnpoint posX="-2399.995117" posY="-2203.309814" posZ="32.949440" rotation="289" vehicle="468" id="spawnpoint6" /> <!-->Mais um monte de spawnpoints</--> <checkpoint posX="-2375.774414" posY="-2196.347656" posZ="32.376450" color="#007fff" id="checkpoint0" nextid="checkpoint1" /> <checkpoint posX="-2264.348389" posY="-2142.104492" posZ="55.736046" color="#007fff" id="checkpoint1" nextid="checkpoint2" /> <checkpoint posX="-2159.435059" posY="-2035.847534" posZ="91.579437" color="#007fff" id="checkpoint2" nextid="checkpoint3" /> <checkpoint posX="-2100.626465" posY="-1895.320435" posZ="108.437828" color="#ff0000" id="checkpoint3" nextid="checkpoint4" /> <checkpoint posX="-2224.203369" posY="-2053.038818" posZ="118.907944" color="#007fff" id="checkpoint4" nextid="checkpoint5" /> <checkpoint posX="-2447.318848" posY="-2078.869141" posZ="125.247055" color="#ff0000" id="checkpoint5" nextid="checkpoint6" /> <!-->Mais um monte de checkpoints</--> <checkpoint posX="-2375.783936" posY="-2196.322510" posZ="32.338516" color="#ffef00" id="checkpoint47" /> <!-->Checkpoint da linha de chegada.</--> <object posX="-2367.477783" posY="-2187.626709" posZ="32.561180" rotX="0" rotY="0" rotZ="0" model="2780" id="object0" /> <object posX="-2362.699219" posY="-2194.435791" posZ="32.645840" rotX="0" rotY="0" rotZ="158.995845444583" model="2780" id="object1" /> <object posX="-2525.923584" posY="-1696.326660" posZ="401.407379" rotX="0" rotY="0" rotZ="3.43774677078494" model="3264" id="object2" /> <object posX="-2319.156982" posY="-1632.014771" posZ="500.054626" rotX="0" rotY="0" rotZ="0" model="3873" id="object3" /> <!-->Alguns objetos de mapa, também classificados por IDs.</--> </map>
  7. Estou criando um script de eventos, nesse script o admin pode criar 1 evento de cada vez e os jogadores podem participar caso queiram. O que estou com dificuldade seria para eventos de corrida, pois como a maioria deve saber, os mapas de corrida simplesmente não funcionam se não estiver no gamemode race. Só que se eu alterar o gamemode do server, vai mudar para todo mundo, inclusive pra quem não está participando do evento. Eu gostaria de saber se é possível alterar o gamemode para somente alguns jogadores ou então algum jeito de ativar um mapa de corrida específico sem alterar o gamemode atual do servidor. O mapa é escolhido no script de evento pelo admin. Eu estava dando uma olhada no resource 'race' e vi que ele ativa uma série de outros resources junto, como por exemplo o votemanager dos mapas, placares, contagem regressiva, tempo de corrida, etc...No meu script a maioria deles não será necessário. No gamemode race, ele carrega outro mapa de corrida automaticamente após terminar a corrida atual, mas no meu script o evento deve terminar e os jogadores voltam para a posição que estavam antes de participar.
  8. Ele criou uma variável local chamada 'spawned' que fica false toda vez que inicia a função. (quando alguém morre) Ele vai entrar ali no For mas se o jogador que morreu for Guest, não vai entrar naquele If, dai a variável não vai se tornar verdadeira, pois o player não vai spawnar naquele instante. Depois ele vai entrar no If da linha 14 (spawned ainda será diferente de true), e vai spawnar o jogador no spawn de Guest.
  9. A propósito, eu fiz assim e funcionou normal aqui. function spawn( player ) if not isElement( player ) then return end showChat( player, true ) local acc = getPlayerAccount( player ) if isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( "YKZ" ) ) then spawnPlayer ( player, 2340.81323, 553.25513, 18.75537, 90, 120) elseif isObjectInACLGroup ( "user.".. getAccountName( acc ), aclGetGroup ( "EB" ) ) then spawnPlayer ( player, 205.75940, 1866.97839, 13.14063, 90, 287) else spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end end
  10. Não há problema em desligá-lo. Mas esteja ciente de manter ele desligado nas configurações do server. Senão toda vez que vc for ligar o server, ele vai ligar o Gamemode 'Play' novamente.
  11. Por isso que não entendi, pois já existe isso para fazer a verificação: if not isElement( player ) then return end
  12. Eu não entendi a necessidade dessa condição: if acc then
  13. Use isso: elseif isGuestAccount (getPlayerAccount (player)) then spawnPlayer (player, 1177.12634, -1327.09448, 14.05530, 90, 0) end Seria melhor vc criar outro tópico quando for fazer uma pergunta sem relação com este tópico.
  14. Se você for permitir que os membros fiquem em diferentes facções ao mesmo tempo, você vai precisar de algum sistema onde o jogador decida qual skin deseja pegar. Por exemplo: O jogador está no Exército e na Yakuza ao mesmo tempo. (EB e YKZ). Ele quer ter acesso às duas skins, mas ao executar o comando /skin, ele só recebe do exército mas queria poder receber da Yakuza também. Para resolver esse problema, será necessário que o jogador informe de alguma maneira ao resource, qual das skins ele quer pegar. Existem dois jeitos diferentes, a primeira é a mais simples, onde vc faz um comando diferente para cada skin. function darSkinEB (thePlayer) local nomeAcc = getAccountName (getPlayerAccount (thePlayer)) if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("EB")) then setElementModel (thePlayer, 287) else outputChatBox ("Você não tem permissão para usar a skin do #00BB00Exército.", thePlayer, 255, 0, 0, true) end end addCommandHandler ("skineb", darSkinEB) function darSkinYKZ (thePlayer) local nomeAcc = getAccountName (getPlayerAccount (thePlayer)) if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("YKZ")) then setElementModel (thePlayer, 140) else outputChatBox ("Você não tem permissão para usar a skin da #BB0000Yakuza.", thePlayer, 255, 0, 0, true) end end addCommandHandler ("skinykz", darSkinYKZ) Outro jeito, um pouco mais complexo porém mais leve do que criar várias funções, é você criar um parâmetro junto ao comando. Este parâmetro informará ao script qual a skin que o jogador quer pegar. Exemplo: "/skin exercito" ou "/skin yakuza" function darSkin (thePlayer, commandName, faction) -- Função geral, o faction é o que o jogador vai informar após o comando. local nomeAcc = getAccountName (getPlayerAccount (thePlayer)) if faction == "exercito" then -- Se o jogador der o comando "/skin exercito", faz o seguinte: if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("EB")) then setElementModel (thePlayer, 287) else outputChatBox ("Você não tem permissão para usar a skin do #00BB00Exército.", thePlayer, 255, 0, 0, true) end elseif faction == "yakuza" then -- Se o jogador der o comando "/skin yakuza", faz o seguinte: if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("YKZ")) then setElementModel (thePlayer, 140) else outputChatBox ("Você não tem permissão para usar a skin da #BB0000Yakuza.", thePlayer, 255, 0, 0, true) end elseif faction == nil then -- Se o jogador der o comando "/skin", faz o seguinte: outputChatBox ("Erro de sintaxe, use /skin <nome da facção>", thePlayer) else -- Se o jogador der o comando "/skin" seguido de qualquer coisa que não esteja programada aqui, faz o seguinte: outputChatBox ("Erro: Não existe skin dessa facção.", thePlayer) end end addCommandHandler ("skin", darSkin, false, false) --Esse penúltimo false indica que o comando não é restrito. O último false indica que o comando não diferencia maiúsculas de minúsculas. Ou seja, se ele usar /SkIN EXerciTO, vai funcionar mesmo assim. Espero ter ajudado. Caso possua mais dúvidas, estamos aqui para ajudar.
  15. Não é recomendável vc colocar o mesmo comando para funções diferentes. O ideal é vc colocar os dois na mesma função. function darSkin (thePlayer) local nomeAcc = getAccountName (getPlayerAccount (thePlayer)) if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("EB")) then setElementModel (thePlayer, 287) elseif isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("YKZ")) then setElementModel (thePlayer, 140) end end addCommandHandler ("skin", darSkin) Obs: Se o jogador estiver nas duas ACLs ao mesmo tempo, ele vai colocar a skin do EB, pois é a condição que ele vai entrar primeiro. Ao entrar em um IF, ele não vai entrar em um ELSE, mesmo se a condição dele também for verdadeira.
  16. @Pedro861, ele quer setar a skin somente em quem usar o comando /skin, no caso ele mesmo. Desse jeito que vc colocou vai setar a skin em todo mundo que for Admin. Do jeito que o @DNL291 fez é o correto, se o jogador que usar o comando não for do EB, mostra a mensagem de erro em vermelho. Caso contrario, seta a skin nele. Outro jeito de fazer, que no fim das contas é a mesma coisa, pode ser assim: function darSkin (thePlayer) local nomeAcc = getAccountName (getPlayerAccount (thePlayer)) --Variável 'nomeAcc' recebe a conta de quem executou o comando. (no caso, a sua conta) if isObjectInACLGroup ("user."..nomeAcc, aclGetGroup("EB")) then --Se o jogador que executou o comando estiver na ACL "EB", faz o seguinte: setElementModel (thePlayer, 287) --Coloca skin 287 nele. else --Se não estiver na ACL "EB", faz o seguinte: outputChatBox ("Somente membros do #00BB00Exercito Brasileiro#FF0000 podem pegar a skin!", thePlayer, 255, 0, 0, true) --Manda isso em vermelho, onde "Exército Brasileiro" fica em verde e o resto vermelho. Manda isso somente para quem executou o comando. end --Finaliza o If e o Else. end --Finaliza a função darSkin. addCommandHandler ("skin", darSkin) --Executa essa função quando alguém usa o comando /skin. Qualquer dúvida, volte a perguntar. Boa sorte.
  17. Hum...já entendi oq vc quer dizer. Ok, vou colocar a verificação nas garagens tbm...apesar de já ter essa verificação nas casas.
  18. Jogadores deslogados não conseguem comprar casas, logo não tem como eles abrirem os portões. O que eu fiz foi bloquear quem está logado com uma conta chamada guest. Estes agora não conseguem mais comprar casas, mesmo estando logados. O que eu quero dizer é que não há necessidade de fazer essa verificação no resource das garagens pois ela já existe no resource das casas. Os dois resources funcionam de maneira sincronizada. O portão abre/fecha somente pra quem comprou a respectiva casa. Para comprar precisa estar logado. Isso foi necessário para evitar que jogadores burlem os sistemas anti-guest de todos os demais resources. Porque isGuestAccount não detecta jogadores logados, somente os deslogados. Se eu não bloquear essa conta no register, o jogador pode criar uma conta chamada guest e conseguir comprar uma casa, pois o isGuestAccount não irá bloqueá-lo pois ele está logado. Foi por esse motivo que eu preferi fazer o bloqueio dessa conta no /register. O problema de criar uma conta chamada guest, é que dai jogadores deslogados passam a ter acesso à casa também, pois a conta deslogada usa a mesma string da conta logada guest.
  19. Pronto, já consegui. Agora jogadores logados na conta guest também não vão mais poder comprar casas, mesmo se for uma conta registrada.
  20. Pronto, fui no admin_server.lua, procurei por register. Dai lá eu adicionei essa condição: elseif username == "guest" or username == "Guest" or username == "Console" or username == "console" then outputChatBox ( "register: - Esta conta é proibida de ser registrada.", player, 255, 100, 70 ) outputServerLog ( "ADMIN ERROR: "..getPlayerName ( player ).." tried to register account '"..username.."' (IP: "..getPlayerIP(player).." Serial: "..getPlayerSerial(player)..")" ) Dai ficou assim: addCommandHandler ( "register", function ( player, command, arg1, arg2 ) local username = getPlayerName ( player ) local password = arg1 if ( arg2 ) then username = arg1 password = arg2 end if ( password ~= nil ) then if ( string.len ( password ) < 4 ) then outputChatBox ( "register: - Senha precisa ser no mínimo 4 caracteres.", player, 255, 100, 70 ) elseif ( getAccount ( username ) ) then outputChatBox ( "register: - Esta conta já existe.", player, 255, 100, 70 ) elseif username == "guest" or username == "Guest" or username == "Console" or username == "console" then outputChatBox ( "register: - Esta conta é proibida de ser registrada.", player, 255, 100, 70 ) outputServerLog ( "ADMIN ERROR: "..getPlayerName ( player ).." tried to register account '"..username.."' (IP: "..getPlayerIP(player).." Serial: "..getPlayerSerial(player)..")" ) elseif ( addAccount ( username, password ) ) then outputChatBox ( "Você se registrou com sucesso! Username: '"..username.."', Senha: '"..password.."'(não esqueça)", player, 255, 100, 70 ) outputServerLog ( "ADMIN: "..getPlayerName ( player ).." registered account '"..username.."' (IP: "..getPlayerIP(player).." Serial: "..getPlayerSerial(player)..")" ) else outputChatBox ( "Unknown Error", player, 255, 100, 70 ) end else outputChatBox ( "register: - Sintaxe é 'register <login> <senha>'", player, 255, 100, 70 ) end end ) Vou ver se mexo no sistema de casas para impedir que jogadores registrados com conta guest consigam comprar casas. Me referindo a outros servidores que não possuem esse bloqueio no /register.
  21. Eu coloquei como dono da primeira casa guest e depois desloguei. Dai o jogador deslogado conseguiu movimentar o portão...mas dai seria um problema com criação de contas, pois não deveria ser possível criar uma conta chamada guest. Vou ver onde fica o comando /register e tentar bloquear o /register guest e o /register Console.
×
×
  • Create New...