Gw8

Members
  • Content count

    19
  • Joined

  • Last visited

Community Reputation

5 Neutral

About Gw8

  • Rank
    Square
  1. Vendo server completo de Race DM DD FUN

    Apos a venda os scripts terao um novo dono certo? A partir disso ele faz oque quiser ...eu nao preciso ter o controle dele ...além disso quem comprar será mesmo que compraria só para postar na net? Meus scripts sao exclusivos para apenas um comprador.
  2. Olá Boa tarde galera, estou vendendo meus novos scripts que eu criei a uns tempos atraz, nele contem diversas coisas como Youtube, Musicas, MapShop,CustomShop,Stats, options enfim um painel de usuario NOVO e EXCLUSIVO para aquele que comprar, já esta integrado o sistema para conectar ao forum da sua equipe e um sistema de Avatar onde baixa as fotos do forum e as salva no server. Tudo construído usando OOP e Class, não existe nenhum componente que usa GUI no painel, sistema de salvamento eu uso SQL podendo se conectar a qualquer DB independente da localização dela. Foi feito o mais simples possivel para que independente de quem comprar consiga edita-lo. Voce pode testar os scripts tambem. crie conta no forum http://brasilracing.tk e depois logue no servidor mtasa://192.140.91.215:22003 vo deixar quatro imagem para ver basicamente como é o scripts.image 1 image 2 image 3 image_4 existem varios efeitos tambem bem legais, bom isso foi o basico que eu consegui mostrar se voce se interessou pode entrar no server para conferir o restante... estou pedindo em tudo que esta no servidor R$200. me desculpem se eu postei no lugar errado .. é que eu nao sei onde eo lugar certo.
  3. NOVA AJUDA :D RSRSRSR

    Tenho um server pronto para vender ... se voce se interessar manda msg no privado.
  4. Colorpicker

    Eu que fiz esse ai, ele tem a base igual a do cpicker do mta só que é todo feito em DX, sem os componentes GUI.
  5. Ajuda para otimizar

    function onPlayerCommand(command) if command == "msg" then cancelEvent() outputChatBox("Use o comando /pm em vez deste comando",source,255,0,0) playSoundFrontEnd(source,40) end end addEventHandler("onPlayerCommand",root,onPlayerCommand) privateMessage = { players = {}, getPlayer = function(playerPart) local pl = getPlayerFromName(playerPart) if isElement(pl) then return pl else for i,v in ipairs(getElementsByType("player")) do if (string.find(getPlayerName(v):lower(),playerPart:lower())) then return v elseif (string.find(string.gsub(getPlayerName(v),"#%x%x%x%x%x%x",""):lower(),playerPart:lower())) then return v end end end end, start = function(player) privateMessage.players[player] = { delay = false, replyPlayer = false, blockPlayer = {} } end, stop = function(player) privateMessage.players[player] = nil end, send = function(player,cmd,toPlayer,...) local pmMessage = nil for k,v in pairs({...}) do if pmMessage == nil then pmMessage = v else pmMessage = pmMessage.." "..v end end local toPlayer = privateMessage.getPlayer(toPlayer) if not toPlayer or pmMessage == nil or pmMessage=="" then return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFSYNTAX: /pm <jogador> <mensagem>",player,255,255,255,true) end if toPlayer == player then playSoundFrontEnd(player,40) return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFVocê não pode enviar mensagem para si mesmo",player,255,255,255,true) end if privateMessage.players[player].delay then local tempo = math.floor(getTimerDetails(privateMessage.players[player].delay)/1000) playSoundFrontEnd(player,40) return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFEspere "..tempo.." segundos para enviar outra mensagem",player,255,255,255,true) end if privateMessage.players[toPlayer].blockPlayer[player] then playSoundFrontEnd(player,40) return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFEste jogador bloqueou o recebimento de mensagens",player,255,255,255,true) end outputChatBox("#0080FF[PM] recebida de #FFFFFF"..getPlayerName(player).."#FFFFFF: "..pmMessage,toPlayer,255,255,255,true) outputChatBox("#0080FF[PM] para #FFFFFF"..getPlayerName(toPlayer).."#FFFFFF: "..pmMessage,player,255,255,255,true) privateMessage.players[toPlayer].replyPlayer = player privateMessage.players[player].replyPlayer = toPlayer triggerClientEvent(toPlayer,"playNotifyPM",resourceRoot) privateMessage.players[player].delay = setTimer( function(player) privateMessage.players[player].delay = false end ,3000,1,player) end, reply = function(player,cmd,...) local pmMessage = nil for k,v in pairs({...}) do if pmMessage == nil then pmMessage = v else pmMessage = pmMessage.." "..v end end local toPlayer = privateMessage.players[player].replyPlayer if not isElement(toPlayer) then return outputChatBox("#0080FF[PM] #FF1717ERROR: player nao encontrado",player,255,255,255,true) end if pmMessage == nil or pmMessage=="" then return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFSYNTAX: /re <mensagem>",player,255,255,255,true) end if privateMessage.players[player].delay then local tempo = math.floor(getTimerDetails(privateMessage.players[player].delay)/1000) playSoundFrontEnd(player,40) return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFEspere "..tempo.." segundos para enviar outra mensagem",player,255,255,255,true) end if privateMessage.players[toPlayer].blockPlayer[player] then playSoundFrontEnd(player,40) return outputChatBox("#0080FF[PM] #FF1717ERROR: #FFFFFFEste jogador bloqueou o recebimento de mensagens",player,255,255,255,true) end outputChatBox("#0080FF[PM] recebida de #FFFFFF"..getPlayerName(player).."#FFFFFF: "..pmMessage,toPlayer,255,255,255,true) outputChatBox("#0080FF[PM] para #FFFFFF"..getPlayerName(toPlayer).."#FFFFFF: "..pmMessage,player,255,255,255,true) privateMessage.players[toPlayer].replyPlayer = player privateMessage.players[player].replyPlayer = toPlayer triggerClientEvent(toPlayer,"playNotifyPM",resourceRoot) privateMessage.players[player].delay = setTimer( function(player) privateMessage.players[player].delay = false end ,3000,1,player) end, block = function(player,cmd,toPlayer) local toPlayer = privateMessage.getPlayer(toPlayer) if not toPlayer then return outputChatBox("#0080FF[PM] #FF1717ERROR: player nao encontrado",player,255,255,255,true) end if not privateMessage.players[player].blockPlayer[toPlayer] then privateMessage.players[player].blockPlayer[toPlayer] = true return outputChatBox("#0080FF[PM] #FFFFFFVoce deu pmblock no jogador "..getPlayerName(toPlayer),player,255,255,255,true) end end, unblock = function(player,cmd,toPlayer) local toPlayer = privateMessage.getPlayer(toPlayer) if not toPlayer then return outputChatBox("#0080FF[PM] #FF1717ERROR: player nao encontrado",player,255,255,255,true) end if privateMessage.players[player].blockPlayer[toPlayer] then privateMessage.players[player].blockPlayer[toPlayer] = nil return outputChatBox("#0080FF[PM] #FFFFFFVoce deu unblock no jogador "..getPlayerName(toPlayer),player,255,255,255,true) end end, } addCommandHandler("pmunblock",privateMessage.unblock) addCommandHandler("pmblock",privateMessage.block) addCommandHandler("pm",privateMessage.send) addCommandHandler("re",privateMessage.reply) for _,player in ipairs(getElementsByType("player")) do privateMessage.start(player) end addEventHandler("onPlayerJoin",root,function() privateMessage.start(source) end) addEventHandler("onPlayerQuit",root,function() privateMessage.stop(source) end) Se eu tivesse feito, meu código ficaria assim ;D tenta tirar algo de util pra voce, ver se acha algo novo pra voce sei la fica avonts.
  6. fiz essa parte do client, só nao testei, nao tive tempo. -- afk por ficar parado local x,y = guiGetScreenSize() local afk = { x = 0, y = 0, z = 0, tick = getTickCount(), state = false } function drawAfkMsg() dxDrawText("You Are AFK!",0,0,x,y,tocolor(255,255,255,255),1,"default","center","center",true) end function startAfk() local x,y,z = getElementPosition(localPlayer) if afk.x == x and afk.y == y and afk.z == z then local now = getTickCount() - afk.tick if now >= 10000 then if not afk.state then afk.state = true setElementData(localPlayer,"posAFK",true) removeEventHandler("onClientRender",root,drawAfkMsg) addEventHandler("onClientRender",root,drawAfkMsg) end end else clearAfk() end end function clearAfk() removeEventHandler("onClientRender",root,drawAfkMsg) local x,y,z = getElementPosition(localPlayer) setElementData(localPlayer,"posAFK",false) afk.x = x afk.y = y afk.z = z afk.tick = getTickCount() afk.state = false end setTimer(startAfk,1000,0) -- afk por sair do jogo addEventHandler("onClientMinimize",root, function() setElementData(localPlayer,"tabAFK",true) end ) addEventHandler("onClientRestore",root, function() setElementData(localPlayer,"tabAFK",false) end )
  7. getRanking = function() local rankCash = conn:query('SELECT TOP 3 * FROM teamSystem ORDER BY cash DESC') local resultCash = rankCash:poll(-1) or {} local rankReputation = conn:query('SELECT TOP 3 * FROM teamSystem ORDER BY reputation DESC') local resultReputation = rankReputation:poll(-1) or {} return resultCash,resultReputation end, [2018-01-18 11:39:10] WARNING: new\storage\sql_team.lua:148: poll failed; near "3": syntax error WTF ERROR dahsdjksaj alguem sabe outra sql que vá me da o mesmo resultado ou como acerta isso?
  8. Hide HEX Nick | guiGridList

    local name = client.name:gsub('#%x%x%x%x%x%x','')
  9. MTA PAINEL COM ANIMAÇAO

    vou tentar ser o mais simples possível pra ensinar usar o InterpolateBetween.. interpolateBetween(a,b,c,d,e,f,progresso,efeito) ela cria 3 intervalos, o segredo dessa ferramenta do mta está no progresso é ele que comanda... A -> D B -> E C -> F ocorre o seguinte quando se usa isso o valor estabelecido em A ele é transformado em D conforme o progresso. exemplo A = 0 e D = 300, quando o progresso estiver em 0.5 o valor será 150 valor = interpolateBetween(0,0,0,300,0,0,0.5,"Linear") como eu citei encima voce pode criar 3 intervalos de uma unica vez.. valor1,valor2,valor3 = interpolateBetween(0,0,0,300,150,50,0.5,"Linear") entao seria os seguintes valores; valor1 = 150 valor2 = 75 valor3 = 25 quando o progresso estiver em 0.5... agora creio que essa parte voce ja entendeu vou falar um pouco mais sobre o progresso.. normalmente se usa getTickCount() na maioria das vezes. local start = getTickCount() function render() local progresso = math.min((getTickCount()-start)/5000,1) -- no caso esse efeito sera executado em 5 segundos end addEventHandler("onClientRender",root,render) local pg = 0 function render() pg = pg +0.1 -- tambem daria certo, sendo que para deixa mais rapido vc ia almentar a soma ou mais lento voce vai diminuir -- pg = pg + 0.2 mais rapido -- pg = pg +0.05 mais lento end addEventHandler("onClientRender",root,render) o valor do progresso é sempre entre 0.0 e 1.0, acima disso ou abaixo ele nao considera ou seja menor que 0 fica travado no valor A acima de 1 fica travado no D, espero que tenha entendido foi o mais simples que consegui. ultimo exemplo : local pg = 0 function render() pg = pg + 0.05 valor = interpolateBetween(10,0,0,320,0,0,pg,"Linear") print(valor) end addEventHandler("onClientRender",root,render)
  10. [PAGO] Aulas de Lua e MTA

    olha LUA não é difícil, primeiro faça o seguinte baixe alguns resources e leia eles tentando entender de verdade como funciona o codigo, eu aprendi inicialmente, oque é uma variavel, quando usar o local, os operadores logicos And,or,not , dps as condiçoes if,then,else,elseif depois que voce entende isso voce parte para as construçoes de funçoes basicas so para se familiarizar, dps aprenda loop(for,while,repeat,do), e dps manipular tabelas {}, matriz e vector. posso tirar suas duvidas caso queira realmente aprender, fica a dica também estudar um pouco sobra tabela verdade, nela vc aprende tudo isso de uma forma simples. meu skype:lucas.pmachado
  11. Recuperar objeto

    VLW MAN!! Entre 26 scripters que eu conheço, apenas 2 me deram a solução mais eficaz e simples, Banex e Anony Vlw!! é Nois. Precisar de mim é só chama.
  12. Recuperar objeto

    creio que vc entendeu o codigo, entao vo tenta explicar melhor, exemplo eu crio 1oo usuarios e nao salvei eles for i =1,100 do registro.new(tostring(i),1234) end como eu recupero o usuario "10" sendo que nao salvei ele? trazer ele dnv pra fica salvo numa variavel pra dps recuperar a senha...
  13. registro = {} registro.__index = registro function registro.new(nome,senha) local dados = {} setmetatable(dados,registro) dados.nome = nome dados.senha = senha return dados end function registro:name() outputDebugString(tostring(self.nome)) end function registro:pw() outputDebugString(tostring(self.senha)) end user1 = registro.new("gw8","1234") user2 = registro.new("gw9","789654") user1:name() user2:name() por exemplo neste código que eu criei aqui rapidinho, como eu devo fazer o inverso, tipo neste eu crio o objeto e pego as informações através dele, como eu faria para localizar o objeto através de uma determinada propriedade, tipo localizar o objeto user1 pelo nome dele que no caso eo "gw8".
  14. -- * Modo porcentagem * ... -- simples metodo que usa um valor real para ser multiplicado por um valor entre 0 e 1, base para entender o calculo: -- temos uma variavel x cujo valor é 500 -- x = 500, multiplicar x*0 = 0, ou x*1 = 500 e por fim x*0.5 = 250. -- continuando .. calculos para escala sX,sY = guiGetScreenSize() -- valor real em pixels x e y do monitor function resX(value) -- (aspectRatio) return (value/1920)*sX -- calculo baseado na resolucao full hd end function resY(value) -- (aspectRatio) return (value/1080)*sY -- calculo baseado na resolucao full hd end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",resX(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos de como ser usado dxDrawRectangle(sX*0.2,sY*0.2,resX(200),resY(200),tocolor(255,255,255,255)) dxDrawText("test text",sX*0.2,sY*0.2,sX*0.2+resX(200),sY*0.2+resY(200),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- * Calculo normal... + - / -- maioria dos scripts que eu vejo sao assim para -- calcular centro do monitor -- sX/2 ou sY/2, ai acabam tipo fazendo o script naquele tamanho em todas as resolucoes.. -- eu tambem fiz um metodo para calcular isso e fazer ele crescer comforme os tamanhos do sY function fixRes(value) local min_ = math.floor(sY/500) local count = 1 if min_ > 1 then count = count + 0.2*min_ end return value*count end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",fixRes(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos dxDrawRectangle(sX/2-fixRes(100),sY/2-fixRes(100),fixRes(200),fixRes(200),tocolor(255,255,255,255)) dxDrawText("test text",sX/2-fixRes(100),sY/2-fixRes(100),sX/2+fixRes(100),sY/2+fixRes(100),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- espero q tenham entendido como eu uso, fiquem avontade para melhorar o sistema e tambem dar dicas onde devo melhorar Vlw Galera!
  15. local ids = {} function assignID() for i=1,getMaxPlayers() do if not ids[i] then ids[i] = source setElementData(source,"id",i) break end end end addEventHandler("onPlayerJoin",root,assignID) function startup() ids = {} for k, v in ipairs(getElementsByType("player")) do local id = setElementData(v,"id",k) ids[k] = v end end addEventHandler("onResourceStart",resourceRoot,startup) function freeID() local id = getElementData(source,"id") if not id then return end ids[id] = nil end addEventHandler("onPlayerQuit",root,freeID) function getPlayerID ( player ) return getElementData( player, "id") end function getPlayerFromId ( theID ) if theID then local theID = tonumber(theID) local theplayer for index,player in ipairs(getElementsByType("player")) do if getElementData(player ,"id") == theID then theplayer = player end end return theplayer else return false end end sistema de id,mais top que já vi kk sempre uso esse. Não sei quem fez mas Vlw ae!