Jump to content

Rakashy

Members
  • Posts

    97
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Rakashy

  1. Bom, aí está a base do server-side. Agora crie um client-Side com dxDraw para fazer a tela preta com msg e chame ela aonde está indicado local PlayersCaidos = {} addEventHandler("onPlayerWasted", root, function() if getElementData(source, "CAIDO") == true then return end setElementHealth(source,10) setElementData(source, "CAIDO", true) triggerClientEvent("EVENTO QUE INICIA A TELA PRETA COM MSG", source) PlayersCaidos[source] = setTimer(function() setElementData(source, "CAIDO", false) triggerClientEvent("EVENTO QUE FINALIZA A TELA PRETA COM MSG", source) PlayersCaidos[source] = nil end, 2*60000, 1) end)
  2. Você pode utilizar setElementData(), e getElementData() para isso. Para Adições você utiliza setElementData(ElementPlayer, "ELEMENTBANCO", getElementData(ElementPlayer, "ELEMENTBANCO") + VALOR ADICIONADO) Para remoção você utiliza : if getElementData(ElementPlayer, "ELEMENTBANCO") - VALOR REMOVIDO >= 0 then setElementData(ElementPlayer, "ELEMENTBANCO", getElementData(ElementPlayer, "ELEMENTBANCO") - VALOR REMOVIDO) else Mensagem("Você não pode remover esta quantidade de dinheiro") end Te dei os meios, não é algo difícil de se fazer, mas você precisara criar uma base em dx para o banco. Boa sorte!
  3. An "easy" alternative would be to use elementData to set a value and check this value on the client side with getElementData
  4. Bom, gostaria de saber se as animações personalizadas impedem a movimentação do ped ou se existe algo a se fazer para contornar isso. O que acontece é que mesmo utilizando uma animação que permita a movimentação do ped como base, ao inserir no jogo com engineLoadIFP() o personagem simplesmente não se move, ele fica "girando", você aperta as teclas de movimentação mas não sai do lugar. Antes que alguém diga da animação "crry_prtial" eu utilizei justamente ela como base, e para terem uma ideia, se você pegar ela original e carregar por fora com o engineLoadIFP sem alterar NADA, ela tbm fica "bugada" impedindo a movimentação, girando apenas os eixos rotacionais do ped.
  5. local Contas = dbPoll(dbQuery(database, "SELECT * FROM Contas WHERE username = ?", USUARIO), -1) -- Substitua pelos dados da sua DB Connection if type ( Contas ) == 'table' and #Contas == 0 or not Contas then -- se não houver o usuário na tabela então ele execulta as funções abaixo -- o que irá executar caso o usuário não exista else -- o que irá executar caso o usuário já exista. end Se ajudei da um UP aí, o código é funcional, e fácil, utilizo para fazer algumas verificações em scripts meus.
  6. Então, estou desenvolvendo uma scroll bar para meu inventário e estou com um problema para fazer os itens desaparecerem conforme a barra é rodada, já está funcional, pra cima/baixo, só que mesmo colocando o dxSetRenderTarget() os itens continuam subindo/descendo infinitamente, sem desaparecer da tela, alguém pode me dar uma força aí ? Sei que provavelmente é algo besta, más quem puder ajudar, agradeço O que acontece : ao invés de os itens sumirem ao sair do target render, eles continuam aparecendo, mesmo se eu subir ou descer a scroll Código : local x, y = guiGetScreenSize() local renderBox = dxCreateRenderTarget(606, 531, true) local offset = 0 if renderBox then dxSetRenderTarget( renderBox, true ) -- ITENS QUE QUERO QUE RENDERIZEM DENTRO DA BOX dxDrawRectangle(514*sx + Slot_X * (120*sx), 518*sy + Slot_Y * (130*sy)+offset, 116*sx, 28*sy, tocolor(5, 0, 2, 105), true) dxDrawImage(528*sx + Slot_X * (120*sx), 440*sy + Slot_Y * (130*sy)+offset, 75*sx, 70*sy, "gfx/items/"..tostring(value.img)..".png", 0, 0, 0, tocolor(255, 255, 255, 255), true) dxDrawText(tostring(value.nome), 542*sx + Slot_X * (120*sx), 525*sy + Slot_Y * (130*sy)+offset, 502*sx, 308*sy, tocolor(255, 255, 255, 255), 1.00*sy, "default", "left", "top", false, false, true, false, false dxDrawText(tonumber(value.peso), 516*sx + Slot_X * (120*sx), 425*sy + Slot_Y * (130*sy)+offset, 540*sx, 310*sy, tocolor(255, 255, 255, 255), 1.00*sy, "default", "left", "top", false, false, true, false, false) --FIM ITENS QUE RENDERIZAM dxSetRenderTarget() -- DRAW RENDERBOX dxDrawImage(509*sx, 423*sy, 606*sx, 531*sy, myRenderTarget,0,0,0, tocolor(255,255,255,0)) end
  7. Faça uma tabela contendo as cores RGB e puxe a tabela com um math.random no DX, não é uma coisa difícil de se fazer
  8. Da um likezin ae pra ajudar na minha rep entao kkk, tmj, qlq duvida chama inbox
  9. addEventHandler("onResourceStart",resourceRoot, function() local IP = getServerConfigSetting("serverip") -- puxa o IP do servidor local Script = getResourceName(getThisResource()) if isObjectInACLGroup( "resource." .. Script, aclGetGroup ( "Admin" ) ) then -- Verifica se o script está na ACL ADM ProtecaoConnect = dbConnect( "mysql", "dbname=NOME DO BANCO DE DADOS;host=URL OU IP DE CONEXÃO", "USUÁRIO", "SENHA" ) local Dados = dbPoll(dbQuery(ProtecaoConnect, "SELECT * FROM (Tabela que contém os ips) WHERE IP = ?", IP), -1) -- Puxa os dados de IPS if type ( Dados ) == 'table' and #Dados == 0 or not Dados then -- Se não houver resultado para o IP ele da stop no script outputDebugString("#33FF58[PROTEÇÃO] #DA1B1BEndereço IP Não autorizado!") stopResource(getThisResource()) else -- Caso o resultado retorne igual a 1 (O Ip estiver na db) então ele autoriza o script outputDebugString("#33FF58[PROTEÇÃO] #DA1B1BEndereço IP Autorizado com #33FF58sucesso#DA1B1B!") end else outputDebugString("Adicione o resource a ACL ADMIN para utilizar!") cancelEvent(true) end end) -- Necessário colocar o script na acl ADM para iniciar. -- Verificação simples que checa a conexão com o banco de dados function checkConnection() if not ProtecaoConnect then outputDebugString("Não foi possível verificar a conexão MYSQL com a proteção, o script será encerrado!") stopResource(getThisResource()) end end setTimer(checkConnection, 60000, 0) Basta criar o banco de dados e adicionar os endereços IP que deseja, ele verifica se o IP está na tabela, se não estiver cancela o script. Se ajudei, de um agradecimento, tmj.
  10. Opa, to com um probleminha e queria uma opinião de pessoas que entendem melhor do que eu.. Estou desenvolvendo um sistema de inventário baseado no sistema do FiveM, o sistema possui 5 slots rápidos e meu intuito era arrastar os itens do inventário para esses slots rápidos que seriam puxados com bind 1 ao 5, o problema é que não estou conseguindo fazer o sistema de arrastar funcionar como devia, ao invés de arrastar 1 item, ele puxa todos, como na imagem abaixo : Só pra esclarecer, os itens do inventário são puxados de um arquivo config, e no dx são gerados da seguinte forma : dxDrawImage(x + Slot_X * (120*sx), y + Slot_Y * (130*sy), w, h, "gfx/items/"..tostring(value.img)..".png", 0, 0, 0, tocolor(255, 255, 255, 255), true) O valor x, y, w, h são referentes a posição do mouse. Como os itens são gerados no inventário a partir de uma tabela, acho que está dando conflito, e acaba puxando todas as imagens ao invés de apenas 1, abaixo o código de mover que estou utilizando : screenW, screenH = guiGetScreenSize() x,y,w,h = 548,438,75,70 -- Aqui seria a posição do mouse, no caso teria que referenciar essa posição com todos os ícones gerados no inventário, e por estar uma posição fixa, creio que seja o motivo pra estar puxando todos os ícones. slots = { {179, 184, 143, 163, imgx = 200, imgy = 200}, {364, 184, 143, 163, imgx = 385, imgy = 200} } showCursor(true) temp = {} movendo = false addEventHandler("onClientClick", root, function(b, s) if b == "left" then if s == "down" then if isMouseInPosition(x,y,w,h) then movendo = true addEventHandler("onClientRender", root, Mover) end else if movendo then movendo = false --> criando uma variavel local para uso mais a frente local inSlot = false --> loop para verificar se eu soltei o item dentro de algum slot for i,v in ipairs(slots) do --> verificar se o mouse estava dentro de algum slot quando foi solto if isMouseInPosition(v[1], v[2], v[3], v[4]) then --> define a variavel para saber que o item foi para um novo slot inSlot = true --> define a posição da imagem do item para a posição correta dentro do novo slot x,y = v.imgx, v.imgy break end end --> verificar se a imagem não foi solta em um slot e retorna para o local de origem if not inSlot then x,y = temp[1], temp[2] end --> zerar tudo para o proximo item ser movido temp = {} difx, dify = nil,nil removeEventHandler("onClientRender", root, Mover) end end end end) difx, dify = nil,nil function Mover() --> salva a posição inicial do item para caso seja necessario voltar para a origem if #temp == 0 then temp[1], temp[2] = x, y end --> obtem a posição do mouse (isto retorna em relativo) local mx, my = getCursorPosition() --> verifica se não diferença deifinida e define if not difx then difx, dify = (screenW * mx) - x, (screenH * my) - y end --> define a posição com a diferença local cx, cy = (screenW * mx) - difx, (screenH * my) - dify --> define a posição da imagem com os calculos feitos x, y = cx, cy end function isMouseInPosition ( x, y, width, height ) if ( not isCursorShowing( ) ) then return false end local sx, sy = guiGetScreenSize ( ) local cx, cy = getCursorPosition ( ) local cx, cy = ( cx * sx ), ( cy * sy ) return ( ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) ) end
  11. Eu vi e tentei seguir a mesma lógica, porém sem sucesso também... Poderia me dar algum exemplo ?
  12. Então brother, eu tentei desta forma, porém o arquivo decodificado não é gerado, entende ? ele continua codificado, por isso vim pedir ajuda aqui, Eu não quero apenas substituir o modelo dentro do jogo, preciso decodificar o arquivo pra poder conseguir edita-lo novamente pelo 3dsMax. Entendeu ? Colocar ele no jogo eu consigo tranquilo, pq como eu disse tenho a senha, então só dou um "fileUnprotection("arquivo.dff", senha) e consigo carregar no jogo
  13. Isso é o nome que eu dei pro evento... Você pode usar qualquer nome, no caso, você vai usar este nome pra chamar a função
  14. Eu já te dei a faca e o queijo brother. Você pode utilizar o código que te enviei para TODOS, roupas, veículos, objetos, basta trocar, no caso do veículo, ao invés da variável "ped" você utiliza "vehicle" e o restante é jogo de Textura, substitui o nome da textura, para saber qual substituir basta abrir o TXD e ver o nome da textura. Para objetos use a variavel "object". E para roupas a variavel e "ped" também pois o elemento está integrado ao jogador. Um exemplo de como fazer um sistema de armas : Pegue o modelo de uma arma limpa, sem nenhum attach, pegue o modelo de uma arma com mira, remova a mira dela pelo 3dsMax e coloque no modelo da arma "Limpa". Faça isso com outras partes, carregador, silenciador, basicamente você vai montar um modelo de uma arma completa com todos os attachs utilizando partes de outros modelos, depois jogue as texturas em cima de cada parte, mira, silenciador, carregador, etc... Exporte o dff, e pronto, vc já pode brincar com as texturas utilizando este sistema, colocando texturas invisíveis em todos os attachs e dando a arma apenas com a textura padrão, e ai ao comprar uma mira por exemplo, vc adiciona a textura da mira ao modelo, não sou mt bom pra explicar mais espero que tenha entendido o conceito
  15. Procure Rakashy no youtube e veja meus trabalhos com shader, hoje postei uma atualização do meu Custom de personagens, também tenho um sistema de skins de veiculos para Viaturas, e estou trabalhando em um custom de armas para adicionar Miras, silenciadores, carregadores, etc
  16. Segue ai meu script, um exemplo do que pode ser feito.
  17. Pode usar ai e testar, vai funcionar certinho, ai é só replicar e alterar a textura pra ir adicionando skins, e não se esqueça de sempre desencadear esses eventos via server-side, pois se chamar o evento direto do client, a skin só irá alterar para você
  18. function SetarSkin(thePlayer) local ShaderM4 = [[ texture tex; technique replace { pass P0 { Texture[0] = tex; } } ]] local thePlayer = source local ShaderM4_RK = dxCreateShader(ShaderM4, 0, 0, false, "ped") local Texture_M4 = dxCreateTexture("Texturas/M4A1/M4A1-1.png") -- LOCAL AONDE ESTÁ O PNG DA TEXTURA engineApplyShaderToWorldTexture(ShaderM4_RK, "M4A1[057]", thePlayer) -- "M4A1[057]" é o nome da textura no .dff que vai substituir dxSetShaderValue(ShaderM4_RK, "tex", Texture_M4) end addEvent( "RK:DarM4A1-1", true) addEventHandler("RK:DarM4A1-1", getRootElement(), SetarSkin) -- Se chamar este evento com uma M4 na mão irá mudar a skin para o PNG citado. Está aí.. Prontinho pra você. Este vai do lado do client. Então apenas faça um esquema para dar trigger via serverside para a skin ficar visível à todos do servidor. De nada Da um UP aí se ajudei
  19. setElementData(getRootElement(), "Carga", true) Seu problema está ai.. Como boechat disse, não se usa elementData em "root" a não ser que queira desencadear algo para TODOS do servidor. Use o elemento referente ao player. No caso do lado do servidor, se da referência ao source, más tbm não se utiliza "source" como parâmetro de função, então faça referência ao jogador e chame a variável referente a ele. No seu caso parece ser "thePlayer", apenas substitua estes "getRootElement()" pelo player local e veja se resolve. Provavelmente sim, pode ver que existe MUITA coisa errada no código, coisa típica de quem está começando agora sem saber aonde está se metendo.... é normal errar, o que podemos fazer é aconselhar e guia-lo para o rumo certo, ai cabe a ele aprender ou não... Agora se for mais um daqueles que só vem aqui e esperam receber o código pronto, ai eu sinto muito pois não vai chegar muito longe.
  20. Então gente, nos últimos 4 meses venho desenvolvendo um sistema de customização de personagens, com sistema de fardas/mochilas/mascaras integrados, igual ao FiveM mesmo, e então resolvi ir atrás de meios de codificar meus arquivos de modelagem, foi aí que todo o problema começou... Acabei encontrando esse sistema aqui no forum mesmo : searching for .dff .txd .col compiler - Scripting - Multi Theft Auto: Forums (mtasa.com) e tive sucesso para criptografar tanto dff quanto txd. Então aconteceu merd**. Acabei tendo um problema com meu HD de backup que queimou, até dei uma sumida aqui do forum por conta disso, desanimei bastante porque basicamente perdi MUITO trabalho, e os modelos originais estavam nele, e agora possuo apenas os modelos codificados. Ainda funcionam perfeitamente no meu script pois possuo a senha então apenas uso um "FileUnprotection" seguido da senha e eles carregam normalmente no jogo. A questão é que preciso editar o modelo masculino para corrigir um problema na bermuda e como está codificado não consigo mais acessar pelo 3dsMax. Minha pergunta é, existe alguma forma de decodificar estes arquivos novamente ? Lembrando que eu possuo a senha usada na codificação. Se alguém puder me dar alguma dica, aguardo resposta
  21. É exatamente isso mesmo, a gente que não tem tanta experiência na área as vezes passa uns sufoco besta né? eu igual doido tentando resolver os B.O pra no final ver que era algo tão simples... Consegui resolver todos os problemas tranquilamente quando parei pra ler com calma a wiki.. Obrigado pela ajuda, e pode encerrar o tópico.
  22. Tenho mais um problema e gostaria da ajuda de vocês, eu consigo substituir a textura da M4 tranquilamente, porém não estou conseguindo com outras armas, por exemplo, tentei com a Desert Eagle, e quando aplico a textura, a textura carregam porém não está alterando a skin da arma, tem algo que eu deva fazer no .dff da Desert Eagle para que ela aceite as texturas ? vi algo sobre ter que tirar o UV pra poder conseguir substituir as texturas, mais removendo o UV do .dff fica uma skin totalmente branca...A M4 eu consegui sem problemas pois encontrei o modelo da Arma já pronta para baixar, então não precisei modificar nada no .dff dela.
  23. Obrigado pela ajuda pessoal, mais agora talvez viajando além da conta, é só uma dúvida... Além de alterar a textura para o jogador, também serial possível alterar o .dff da arma ? Se sim, como? Ou eu estou viajando de mais kkk? Se alguém souber e puder me dar um norte de onde começar, eu aceito
  24. function SetarSkin(thePlayer) local ShaderM4 = [[ texture tex; technique replace { pass P0 { Texture[0] = tex; } } ]] local thePlayer = source local ShaderM4_RK = dxCreateShader(ShaderM4, 0, 0, false, "ped") local Texture_M4 = dxCreateTexture("image2.png") -- Textura engineApplyShaderToWorldTexture(ShaderM4_RK, "M4A1[057]", thePlayer) dxSetShaderValue(ShaderM4_RK, "tex", Texture_M4) end addEvent( "DarSkin", true) addEventHandler("DarSkin", getRootElement(), SetarSkin) Então mano, fiz desta forma e parece funcionar bem agora, pode dar uma olhada e me dizer se está de fato correto agora ?
×
×
  • Create New...