Lord Henry

Members
  • Content count

    952
  • Joined

  • Last visited

  • Days Won

    13

Lord Henry last won the day on October 10

Lord Henry had the most liked content!

Community Reputation

286 Superstar

About Lord Henry

  • Rank
    Hoodsta
  • Birthday 16/01/1996

Details

  • Gang
    Grove Street
  • Location
    Brazil
  • Occupation
    Gamer,Game Designer,Level Designer,Developer
  • Interests
    Game Design, Script Development

Recent Profile Visitors

2,919 profile views
  1. Lord Henry

    [MTA] ->> Cutscene

    O código que ele passou não resolve o problema dele. Ele passou um código que faz movimentação de câmera, não tem nada a ver com reproduzir Cutscenes do GTA.
  2. Lord Henry

    [MTA] ->> Cutscene

    @Gw8 não fique dando código assim de graça, isso desestimula o usuário a aprender. E se você tivesse lido as outras respostas, saberia que não é isso que ele queria.
  3. Lord Henry

    MINI ROYALE beta

    Olá, parabéns pelo seu servidor. Algumas considerações: Vi que você criou esse post 2 vezes. Este na sessão correta e outro na sessão geral. Tome mais cuidado da próxima vez. Poste o link direto das imagens para que elas carreguem automaticamente, assim o usuário não precisa ficar clicando nos links para ver as imagens. Você fez certo em deixar as imagens ocultas, pois como são várias, elas acabam causando Spam. Pergunta: O Gamemode possui o sistema de Safe Zone? Que vai diminuindo com o tempo e quem estiver fora começa a tomar dano pelo "gás tóxico". Seguem as imagens respectivamente. Painel Login: Menu de seleção: Lobby: Itens espalhados: Espero ter ajudado.
  4. Lord Henry

    [MTA] ->> Cutscene

    Sim, mas ele disse "rodar uma cutscene do GTA dentro do MTA", então ele quer mostrar ao player uma cutscene que já existe em vez dele criar uma em tempo real. Mas concordo que daria pra criar uma cutscene própria dentro do MTA usando as funções de câmera.
  5. Lord Henry

    [TUTORIAL] MySQLITE

    Tem também o IS NULL e o IS NOT NULL.
  6. Lord Henry

    Teamspeak3 MTA

    Da próxima vez, poste na sessão destinada para divulgação de servidores.
  7. Lord Henry

    [TUTORIAL] MySQLITE

    Galera, por favor. Não vamos ficar discutindo no tópico. Devemos resolver nossas diferenças por privado.
  8. Lord Henry

    [TUTORIAL] MySQLITE

    Olá. Eu criei o tutorial depois do seu sim. Foi mais para demonstrar como fazer um tutorial bem feito e detalhado. Então postei o tutorial para servir de comparação com o seu. PORÉM A informação contida no meu tutorial já existia faz bastante tempo, eu apenas repostei e mudei algumas coisas pequenas. Fonte original:
  9. Lord Henry

    [REQ] Parar o motor quando Bater

    Bom, já que vc quer um script, boa sorte em achar. Eu já joguei em servidores que tinham esse sistema. Era bem irritante de jogar assim, mas é você quem sabe. Mas se você quer criar um, sugiro que comece por: setVehicleDamageProof (faz o veículo ficar blindado, impedindo que ele exploda) setElementHealth (setando a vida do veículo em 250, apagará o fogo da explosão, saindo no lugar apenas fumaça preta) getElementHealth (você vai precisar verificar se o veículo tem vida menor que 250 para detectar que ele "quebrou") setVehicleEngineState (desliga o motor do veículo) onVehicleDamage (evento que é ativado toda vez que um veículo recebe dano, use isso para ativar o sistema no momento correto) onVehicleEnter (evento que é ativado toda vez que alguém entra em um veículo, use isso para desativar o motor novamente quando o player entrar no veículo quebrado) Boa sorte.
  10. Lord Henry

    [MTA] ->> Cutscene

    Olá Não é possível. A não ser que você execute um vídeo da cutscene na tela do player a partir de um navegador. Você pode usar a função útil playVideo que executa um vídeo do youtube na tela do jogador.
  11. Lord Henry

    Dúvida | SaveSkin

    Você pode simplesmente remover a função que seta skin aleatória no player quando ele nasce. Essa função fica no gamemode Play, no script broph.lua
  12. Lord Henry

    Erro outputChatBox

    Cara, copiei seu código e aqui funcionou normal. Mesmo na formatação ANSI e UTF-8 (sem BOM). Tudo normal. Também mudei a interface do MTA para inglês para ver se bugava os acentos mas também funcionou normal. O problema não está no seu código.
  13. O que é? Pra que serve? Um banco de dados é onde ficam salvos diversos tipos de dados que são usados entre as sessões dos jogadores e do servidor, isto significa que mesmo se o jogador relogar no servidor ou até mesmo o servidor reiniciar, os dados salvos no banco de dados não são perdidos. (se o script que salvou lá foi feito corretamente). O que posso salvar neles? O MTA já cria 2 bancos de dados padrão quando vc cria seu servidor, são eles: internal.db - Onde são salvos todos os dados das contas dos jogadores, login, senha, grana do bolso, posição do jogador quando deslogou, vida, colete, skin, armas, munição, etc. registry.db - Onde são salvos todos os dados que são utilizados pelos resources, como por exemplo melhores pontuações das corridas (race gamemode), proprietários das casas, dados bancários dos jogadores, saldo bancário dos jogadores, carros comprados pelos jogadores, roupas compradas pelos jogadores, empresas adquiridas pelos jogadores, etc. Onde eles estão? Estes dois bancos de dados estão na pasta deathmatch do seu servidor, estão na linguagem SQLite. Você ainda pode criar outros bancos de dados externos, para serem usados pelos resources, mas na minha opinião isso não é recomendável, uma vez que vc usaria MySQL, que é mais complexo e exige certos cuidados de acesso e domínio, mas alguns servidores profissionais precisam fazer assim pois fizeram os bancos de dados ficarem fora do servidor em outro IP por segurança, dai é necessário ter bancos de dados externos. Nesse tutorial vamos tratar somente dos bancos de dados nativos do MTA, por serem mais fáceis de entender. Como mexo neles? Para salvar alguma coisa na conta do jogador, isto é, no internal.db, você usa setAccountData, e para obter esses dados depois, use getAccountData. É extremamente simples, funciona da mesma forma que um setElementData, mas em vez de salvar uma data temporária em um elemento, salva uma data permanente numa conta. Porém, para salvar alguma coisa no registry.db, é um pouco mais complicado, uma vez que vc vai precisar criar uma tabela nova para cada resource. Por exemplo, vc acabou de criar um resource de ranking por kills/deaths e você deseja salvar esse ranking no banco de dados para que ao reiniciar o resource ou o servidor, o ranking não seja perdido. Para isso vc vai precisar primeiramente criar uma tabela no banco de dados registry.db, essa tabela será acessada pelo resource, que irá salvar os dados dele lá. Para fazer qualquer coisa neste banco de dados (criar tabelas, inserir, alterar, remover, deletar, inserir colunas em determinada tabela, etc) vc vai precisar usar isso: executeSQLQuery. Aqui, será necessário conhecimento em SQLite para fazer isso, mas é mais fácil do que aprender uma linguagem de programação nova, pois suas opções e sintaxes são menores do que uma linguagem inteira de programação, você não vai inventar nenhum sistema novo aqui, apenas criar e gerenciar tabelas e dados. Criar tabela nova no banco de dados: (o Caps Lock não é uma regra, mas é melhor para entender o que é código e o que é nome) [Os seguintes códigos só funcionam server-side] executeSQLQuery ("CREATE TABLE IF NOT EXISTS nomedatabela (nomecoluna1 TEXT, nomecoluna2 REAL, nomecoluna3 INTEGER)") TEXT = Valores desta coluna serão textos. Podem ter símbolos, números e espaços. REAL = Valores desta coluna serão numéricos reais. (números com vírgula, positivos, negativos e 0.0) INTEGER = Valores desta coluna serão numéricos inteiros. (positivos, negativos e 0) (não existe tipo BOOLEAN, use TEXT e insira valor "false" ou "true") (existe valor NULL, é diferente de vazio. NULL não é um tipo de dado e sim um valor nulo. Você pode atribuir valor NULL a qualquer célula.) Deletar tabela do banco de dados: executeSQLQuery ("DROP TABLE nomedatabela") Todas as linhas, colunas, células e valores desta tabela são deletados junto. Deletar linhas da tabela: (as células não ficarão NULL) executeSQLQuery ("DELETE FROM nomedatabela WHERE colunaespecífica=?", valorDaCelulaEspecifica) O ? indica que o valor está após a declaração do SQL. Você poderia colocar o valor direto no lugar do ?. Mas por alguma razão, as vezes isso gera erro. Além disso, se o valor da célula estiver em uma variável no seu script, você não pode declarar a variável no lugar do ?. Ali só pode ser o valor direto, pois a declaração SQL inteira se trata de uma string. Por isso o uso do ?, que está recebendo o valor da variável que está depois da vírgula. Obs: Para verificar se uma célula tem valor nulo, não se usa os operadores lógicos de ==, <= >=. Para isso, usa-se IS NULL ou IS NOT NULL. Ex: executeSQLQuery ("DELETE nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3 IS NULL") Isso vai deletar todas as células da coluna 1 e coluna 2 onde a coluna 3 tem uma célula de valor NULL. Se a coluna 3 não tiver nenhuma célula de valor NULL, nada acontece. Inserir nova linha de valores: (ele vai criar automaticamente uma nova linha com novas células) executeSQLQuery ("INSERT INTO nomedatabela(nomecoluna1,nomecoluna2,nomecoluna3) VALUES(?,?,?)", valorCelulaColuna1, valorCelulaColuna2, valorCelulaColuna3) Neste caso, ele está inserindo 3 novos valores, cada valor em uma coluna. Se você não declarar os nomes das colunas, ele vai preencher na ordem das colunas automaticamente. Você pode deixar de declarar uma coluna se não quiser atribuir valor na célula daquela coluna. Se o tipo de valor da variável não for do tipo de dado daquela coluna, dará erro. Atualizar valores de células que já existem em uma tabela: (não é possível alterar os tipos de valores, é necessário editar o tipo da coluna se quiser fazer isso) executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2=?,nomecoluna3=? WHERE nomecoluna1=?", valorCelulaColuna2, valorCelulaColuna3, valorCelulaColuna1) No caso acima, ele vai atualizar as células das colunas 2 e 3 onde o valor da célula da coluna 1 for igual ao valor de valorColunaCelula1. OBS: Nada impede que você coloque as primeiras variáveis junto à declaração SQL, mas para fazer isso você deve "cortar" a string, inserir as variáveis e depois continuar a string, Ex: executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2= '".. valorCelulaColuna2 .."',nomecoluna3='".. valorCelulaColuna2 .."' WHERE nomecoluna1=?", valorCelulaColuna1) Lembrando que o valor destas variáveis também são strings na declaração, portanto use aspas simples antes e depois de cada corte para transformar os valores em string. Os dois pontos (..) significam que estes valores fazem parte do argumento SQL. Da mesma forma, se vc usar "1" .. "1", será igual a "11". (Por isso acho muito mais fácil deixar tudo ? na declaração SQL e colocar as variáveis todas após a string.) Selecionar determinadas células da tabela: (usado geralmente para obter os valores destas células para usar no script, você pode selecionar somente 1 célula ou várias) executeSQLQuery ("SELECT nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3=?", valorCelulaColuna3) Neste exemplo, ele vai selecionar a célula da coluna 1 e a célula da coluna 2, na linha onde a célula da coluna 3 for igual a valorCelulaColuna3. Alterar a tabela (adicionar coluna nova) [SQLite não suporta deletar coluna nem editar tipo de coluna] executeSQLQuery ("ALTER TABLE nomedatabela ADD nomecoluna4 REAL") Devido a limitações do SQLite, ALTER TABLE não pode ser usado para deletar uma coluna nem para editar seu tipo. Para fazer isso é necessário recriar a tabela inteira com as novas alterações. No exemplo acima, ele vai adicionar uma nova coluna chamada "nomecoluna4". Fiz um código com vários testes de banco de dados. Cada comando faz alguma coisa. Espero ter ajudado.
  14. Lord Henry

    Alguém conhece urgentemente ?

    Então me refiro ao setElementData (hitElement, "protegido", true)
  15. Lord Henry

    Alguém conhece urgentemente ?

    Sempre vai existir os espertinhos pra tentar burlar seu sistema. E isso é ótimo, pois você se obriga a estudar melhor seu script em busca de novas proteções e isso faz você melhorar na programação. Eu por exemplo, depois que os meus resources postados no community do MTA foram roubados e repostados em sites de terceiros sem minha autorização, eu parei de publicar meus resources e inventei um sistema de proteção por IP + Senha. Cada resource possui uma senha própria que é verificada por outro resource que eu criei. E esse outro resource verifica o IP do servidor, se for um IP diferente do IP que o resource está pedindo, cancela a ativação daquele resource. E se por acaso o cara for espertinho e tirar a permissão de stopResource dele, então o próprio resource nem vai iniciar e dará erro de inicialização. Os resources não precisam de permissão para cancelar sua própria ativação. O esquema das senhas eu criei pois se o cara for um programador experiente, ele pode tentar criar um resource que sempre retorne um IP válido, mesmo não sendo o IP real do servidor. Mas sem a senha correta do resource, não vai adiantar. Eu pensei em tudo e claro, está tudo compilado e somente os desenvolvedores do MTA possuem o descompilador. (perdão por desviar do assunto do tópico)