Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 17/10/18 in Posts

  1. Work is going kind of slow at the moment due to lack of time; however the editor is still being actively worked on and I hope to have open alpha out on the 21st. (Open alpha marks it being a complete replacement for the old editor (Meaning it'll have all of the functionality) then future updates will massively expand on the concept, currently I'm working on ensuring everything that can be done in the old editor can be done here aswell as adding in a lot of extra tools that'll help map makers massively.)
    3 points
  2. خذها نصيحه : هذا شي يتعلق فيك موب تاخذ كلام من الناس > بنسبه لي الحمدالله اختفي و اجي يعني من سنه ل ـسنه ـ ولا اكتب اعتزال او اتعب نفسي مثل بعض الناس يقولون لك بعتزل وهو بلعبه متكي بس مغير اسم يضحك ع نفسه > او الشخص ثاني الي يقولك اختبارات بعتزل او دراسه ثم ارجع هذا ما يسمى اعتزال العتزال الحقيقي تعتزل مره وحدهـ تقريبا من بديت لعب من 2009 - 2018 10 سنوات والحمدالله ما زلت بلعبه . ولي يقول لك مافي لاعبين و الخ بعكس الحين افضل وقت السبب اول تشوف فيه 300 سيرفر ونصهم خايسين وصعب تجيب لاعبين من كثر رومات حاليا 13-15 سيرفر موجود يمديك تجيب لاعبين بسرعه ومن خلال تجربه قلت لك >ما جبت شي من راسي حاليا متكي مع اخوياي توهم فتحين سيرفر وصك 40-60 لاعب هذا دليل انه فيه نجاح مزال موجود ع العموم بتوفيق لك
    2 points
  3. Olá talvez aqui voce entenda como brinca um pouco com ele e largar as db do proprio mta Bom primeiro vamos entender o SQL vamos usar aqui SQLITE e uma versao lite do SQL onde e possivel guarda as info em arquivo .db voce pode usar oque vou ensinar aqui em SQL tb primeiro vamos fazer a connecta ao banco db = dbConnect( "sqlite", "db/banco.db" ) não precisa ter o arquivo o, proprio mta cria ele para voce ? Agora vamos criar as TABELAS e suas COLUNAS dbExec(db, "CREATE TABLE IF NOT EXISTS SERVIDOR (CONTAPLAYER TEXT,SERIAL_PLAYER TXT,SENHA_PLAYER TEXT,DINHEIRO_PLAYER INT)") O codigo acima vai criar uma tabela chamda " SERVIDOR " com 4 colunas vamos entender os tipos de coluna que usei TEXT > E uma coluna do tipo TEXTO INT > E uma coluna do tipo NUMERO INTEIROS ex ( 1 | 33333 | 77777) como eu sei que o dinheiro do player e um numero inteiro botei INT voce não vai precisa coloca isso caso não queira. e melhor para o futuro e tals vou mostra aqui para voce algums argumento de consulta,alteração,e deletar dbQuery(db, "SELECT * FROM SERVIDOR") SELECT > SELECIONA * > TUDO FROM > DE SERVIDOR > NOME DA TABELA nessa ai vimos que eu mandei um comando falando para selecionar tudo da tabela SERVIDOR function SQLiteCall_SERVER () local SV = dbQuery(db, "SELECT * FROM SERVER") if SV then return SV end end aqui um ex de função que vai retorna a tabela selecionada Porem tem que ler ela de uma forma que voce pode ver os dados colocados nela function QualMeuDinheiro(source) local Serial = getPlayerSerial( source ) -- PEGANDO O SERIAL DO PLAYER QUE CHAMO A FUNÇÃO local banco = SQLiteCall_Fazendas() -- CHAMANDO A FUNÇÃO QUE SELECIONA O BANCO DE DADOS if banco then -- VERIFICA SE A TABELA QUE ELE PEGO EXISTE local p = dbPoll(banco,-1) -- BASICAMENTE ELA SERVER PARA RECEBER O RESULTADO DA TABELA for index , dados in ipairs(p) do -- AQUI ABRE A TABELA E TORNA O DADOS POSSIVEL DE LER if Serial == dados["SERIAL_PLAYER"] then -- AQUI TO COMPARANDO O SERIAL COM O DADO LA NO BANCO DE DADOS outputChatBox( "SEU DINHERO E :"..dados["DINHEIRO_PLAYER"],source,255,255,255,true) -- E AQUI FOI SELECIONADO O DINHEIRO DO PLAYER DA VERIFICAÇÃO ACIMA end end end end addCommandHandler( "meudinheiro",QualMeuDinheiro ) a função acima informa o dinheiro do player baseado oque tem no banco de dados essa parte dados["DINHEIRO_PLAYER"] "DINHEIRO_PLAYER" ea nome da coluna la na tabela Ok aqui voce aprendeu a ler os dados e exibir. Agora voce me pergunta e fazer update? dbExec(db, "UPDATE SERVIDOR SET DINHEIRO_PLAYER=? WHERE SERIAL_PLAYER=?",dinheiro,serial) UPDATE > FAZER ALTERAÇÃO SET > QUAL COLUNA DINHEIRO_PLAYER > O NOME DA COLUNA WHERE > E QUAL PARTE | isso que dizer que ele vai pesguisa no banco SERIAL_PLAYER > o nome da tabela que ele vai procura function MoneyMoney(source) local DINHEIRO_NOVO = 10000 local serial = getPlayerSerial( source ) dbExec(db, "UPDATE SERVIDOR SET DINHEIRO_PLAYER=? WHERE SERIAL_PLAYER=?",DINHEIRO_NOVO,serial) -- AQUI FOI FEITO ALTERAÇAO end addCommandHandler( "querodinheiro",MoneyMoney ) essa função faiz o update no banco de dados mais lembre-se se o player tem 50000 la no banco de dados e voce fizer update para 10000 o valor vai ser 10000 então para almenta ou diminuir faça a consulta no banco de dados dps some com o valor novo e assim faiz o update dbExec(db, "INSERT INTO SERVIDOR (CONTAPLAYER,SERIAL_PLAYER,SENHA_PLAYER,DINHEIRO_PLAYER) VALUES(?,?,?,?)",Conta,Serial,Senha,Dinheiro) INSERT > Inserir Into > Em Servidor > Nome da tabela function Megrava () local Conta = "OlaLogin" local Serial = "65D56AS45D5A45D56A4DADAD5A4D" local Senha = "1234b" local Dinheiro = 50000 dbExec(db, "INSERT INTO SERVIDOR (CONTAPLAYER,SERIAL_PLAYER,SENHA_PLAYER,DINHEIRO_PLAYER) VALUES(?,?,?,?)",Conta,Serial,Senha,Dinheiro) --/\ ? são o tanto de argumento que vai por -- end addCommandHandler( "gravar",Megrava ) Nessa parte eu to gravando os dados do player no banco de dados dbExec(db, "DELETE FROM SERVIDOR WHERE SERIAL_PLAYER=?", Serial) -- MESMA IDEIA DO UPDATE MAIS AQUI VOCE DELETA OS DADOS DE UM SERIAL X dbExec(db, "DELETE FROM SERVIDOR") -- AQUI VOCE DELETA TUDO QUE TEM NA TABELA SERVIDOR esse ai e para DELETAR elemento na tabela do banco de dados Eu acho que isso eu basico e todo que voce precisa saber sobre MYSQL qualquer outra duvida pode pergunta @DNL291 DNL se tiver erros de portugues que eu sei que tem kkkk pode corrigir e se tiver confuso pode da uma melhorada se possivel? acho que esse e um tutorial importante ^^
    1 point
  4. I created a complex first person movement script with weapons and custom animations. This is the first version of it.
    1 point
  5. 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 SQL 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 decimais, 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 e diferente de 0. NULL significa ausência de dados. O NULL aparece quando você cria uma linha ou coluna nova sem atribuir valores a elas.) 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". Tá, mas como ficaria tudo isso dentro de um script? Fiz um código com vários testes de banco de dados. Cada comando faz alguma coisa. É possível mexer em um banco de dados manualmente sem usar scripts? Sim, é possível. Eu mesmo costumo fazer isso para corrigir algumas coisas rápidas sem precisar programar mais nada. Para poder abrir os bancos de dados (internal.db e registry.db) você deve usar um programa chamado DB Browser for SQLite. Um programa gratuito, leve e bem fácil de entender. Nele você consegue acessar todas as tabelas do banco de dados e editar os valores como se fosse em uma planilha do Excel. Basta ir na aba Navegar dados, selecionar a tabela que deseja modificar, clicar em cima da célula cujo valor deseja atualizar, digitar o novo valor, clicar em Aplicar e depois clicar em Escrever modificações (salvar banco de dados). Pronto! E tem mais! Se você já tiver conhecimento avançado com a linguagem SQL, você também pode fazer alterações avançadas via código dentro do programa. Basta acessar a aba Executar SQL, escrever o comando SQL corretamente e depois clicar no botão de Play. Espero ter ajudado.
    1 point
  6. @iMr.WiFi..! a bit off topic but why you made it for him without even let him try ? You're not helping when you give the entire script
    1 point
  7. عشان يبي ينزله بالقسم الاجنبي ؟
    1 point
  8. : ) يآليت معي فورت نآيت وجهآزي خآيسس ". ~~~ ععَ العمؤم بتؤفيق يـ بــطــل <3 ..
    1 point
  9. Si es posible y tienes que usar setElementCollisionsEnabled
    1 point
  10. I've meant to attatch the event to the resourceRoot, not the root. It was already working when attatched to the root. Biistamais' method works the way I wanted it to be ^^ But thanks anyway
    1 point
  11. Yeah I've added that argument by mistake, it shouldn't be there, I'll remove it. Thank you for the help, it works properly now and I also understand what I did wrong ^^
    1 point
  12. function sendPedVoices() triggerClientEvent(source, "applyVoicesClient", resourceRoot, ballas1, ballas2, ballas3, ballas4, ballas5) outputChatBox ( "#FF0000zzzzzz", source, 231, 217, 176, true ) end addEvent("sendPedVoices", true, true) addEventHandler("sendPedVoices", resourceRoot, sendPedVoices) -- <<<<< attatched to root function requestVoices() triggerServerEvent ( "sendPedVoices", resourceRoot) end
    1 point
  13. Que isso, o que importa é não interferir na interpretação de quem lê, erro de português não é algo anormal, na verdade a grande maioria sempre comete erros.
    1 point
  14. شباب اليوتيوب شغال عندكم ؟
    1 point
  15. اخ يا قلبي ===== تم قتلي من قبل المز التونسي ذذ ====
    1 point
  16. احرجتني تعال واتس ولا خاص خلنا ندردش
    1 point
  17. Result : map = nil Tip : source = player Correction : setPedGravity(source,0.008)
    1 point
  18. I really love what you did in here. I believe that RP servers need such features, but I'm going to ask you if you're able to determine exact position for the object you're going to place in the car's bed ?
    1 point
  19. انا معتزل اللعبه واخشها مره مرتين بالشهـر, وهذا كله بسبب اني مشـغول بالعـمل وما ألعب فقط الا اذا كنـت فاضي, او ابرمج . لكن ما احب اقول معتزل عشان لاحد يقعد يمسك علي ذله كل ما نزلت موضوع او تكلمـت في موضوع !
    1 point
  20. خلك من حركات الاطفال - بعدين قالك اعلن اعتزالي - الظاهر جاي يجر شكل فطنش و خلك بموضوعك
    1 point
  21. السلام عليكم ورحمة الله وبركاته ي شباب حبيت اطلب مساعدة بسيطه منكم بس ، ابي مود الشات يلي يكون على اليسار مثل في سيرفر شباب المملكه اذا احد عنده ياريت يساعدني ، ومشكوووووووور ، اتمنى الافاده .
    1 point
  22. <3 تسلم حبيبي عقبال اوصل لـ العشق ================================================== > @MoDeR2014 @Default#^ @Abdul KariM @Mr.SAUD @KillerX @بويكا @LoOs ولي اعرفهم بالاسماء : جنتول , خالدالعمري , جوست بوي , كنق عبادي , الصراحة واجد الي نسيته يعذرني العشق : @سعد الغامدي
    0 points
  23. برستيج وضعيه الميت هههههههه @iPrestege
    0 points
  24. @Abdul KariM @MoDeR2014 @Default#^ @سعد الغامدي @*RayaN-Alharbi. والعشق @Tapleto-Host
    0 points
×
×
  • Create New...