Gw8

Members
  • Content count

    26
  • Joined

  • Last visited

Community Reputation

9 Neutral

2 Followers

About Gw8

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Gw8

    How to destroy marker with command??

    change marker to a global variable.
  2. isso é meio obvio, voce só consegue escalonar um texto se a fonte for custumizada. tipo https://wiki.multitheftauto.com/wiki/GuiCreateFont myFont = guiCreateFont( "segoeui.ttf", 20*(sy/1080) ) -- Create GUI custom font guiSetFont( myLabel, myFont )
  3. fiz esse codigo como exemplo de base, nao quer dizer que ele deve ser seguido: local sX,sY = guiGetScreenSize() local min_Y = math.floor(sY/480) local min_X = math.floor(sX/640) if min_Y <= min_X then g_Scale = min_Y else g_Scale = min_X end local g_Scale = 1 + 0.2*g_Scale function resX(value) return (value*g_Scale) end function resY(value) return (value*g_Scale) end local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle(x,y,w,h,tocolor,postGui) return _dxDrawRectangle(x,y,resX(w),resY(h),tocolor,postGui) end addEventHandler("onClientRender",root, function() dxDrawRectangle(sX/2-resX(350),sY/2-resY(250),700,500,tocolor(255,255,255,200),false) end ) pense o seguinte o normal do mta é manter a os tamanho para todos os monitores exemplo : dxDrawRectangle(100,100,200,200,tocolor(255,255,255,255),false) sempre manter tudo a x=100,y=100 e assim vai sempre ter os mesmos valores de pixels, mas chegamos ao ponto que agora no inicio voce esta usando uma resolução de 640 px no eixo X, usar 200 px é um bom tamanho, mas se voce usar 200px em um monitor de 1080 px é um retangulo minusculo, e assim chegamos onde eu quero chegar que é a ideia da ESCALA. onde eu PARTICULARMENTE só vejo duas maneira de se fazer com eficacia, um metodo que é por porcentagem exemplo:( que eu nao gosto muito, porque tira a proporção entre as coisas, vc tambem perde qualidade em imagens, etc..) local sX,sY = guiGetScreenSize() dxDrawRectangle(sX*0.2,sY*0.2,sX*0.4,sY*0.6,tocolor(255,255,255,255)) e outro eo primeiro exemplo, que voce trava como resolução minima 640x480 e faz tudo crescer a partir desta resolução. voce tambem consegue usar essa escala para GUI(para escala de textos tenha como referencia apenas o g_Scale). Vlw ai espero ter ajudado.
  4. Gw8

    Problema com script

    Da pra fazer tudo isso que você fez usando menos de 180 linhas, muito menos. Tente.
  5. Gw8

    PLAYER PAIS AJUDA

    Adicionar resource na ACL - SERVERSIDE: function onCountryStart() for i,thePlayer in pairs(getElementsByType("player")) do getPlayerCountry(thePlayer) end end addEventHandler("onResourceStart",resourceRoot,onCountryStart) function getPlayerCountry(thePlayer) if thePlayer then local playerIP = getPlayerIP(thePlayer) if playerIP then fetchRemote("http://www.geoplugin.net/json.gp?ip="..playerIP, setPlayerCountry, "", false, thePlayer ) end end end function setPlayerCountry(countryTable,errorCode,thePlayer) if thePlayer and countryTable and errorCode == 0 then local countryTable = fromJSON("["..countryTable.."]") if countryTable then setElementData(thePlayer,"country",countryTable.geoplugin_countryCode) setElementData(thePlayer,"countryName",countryTable.geoplugin_countryName) end end end function listarJogadores(thePlayer,cmd) local br = 0 local players = getElementsByType("player") for _,p in ipairs(players) do if getElementData(p,"country") == "br" then br = br + 1 end end outputChatBox("Jogadores Brasileiros: #889123"..br,thePlayer,255,255,255,true) outputChatBox("Jogadores Gringos: #889123"..(#players-br),thePlayer,255,255,255,true) outputChatBox("Total: #889123"..#players,thePlayer,255,255,255,true) end addCommandHandler("players",listarJogadores)
  6. Gw8

    DÚVIDA TABLES

    A pergunta que voce tem que se fazer é .. eu preciso disso em mais algum lugar? se sim : não se usa local se não : usa local exemplo : voce tem um arquivo chamado "config.lua" e tem nele este codigo: config = { priceweapons = 5000, priceColete = 2000 } como voce vai usar isso em outros arquivos, entao esta tabela nao pode ser local, quando voce torna uma variavel local ela só é acessivel dentro daquele arquivo. cuidado tambem ao usar local dentro de funçoes exemplo: local info = {50,200,10} function execute() local info = {} end neste caso a funcao execute esta criando uma nova tabela dentro de seu escopo. local info = {50,200,10} function execute() info = {} end neste caso a funcao execute esta resetando a tabela info. Espero ter ajudado vlw '-'
  7. Gw8

    VERIFICAÇÃO

    function skinv1 () if getElementModel(source)==73 then return outputChatBox( "voce já esta com essa skin", source, 243, 219, 4, true ) end setPedSkin ( source, 73 ) outputChatBox( "Teste skin1", source, 243, 219, 4, true ) end addEvent("Skin1",true) addEventHandler ( "Skin1", getRootElement(), skinv1 )
  8. Gw8

    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.
  9. 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.
  10. Gw8

    NOVA AJUDA :D RSRSRSR

    Tenho um server pronto para vender ... se voce se interessar manda msg no privado.
  11. Gw8

    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.
  12. Gw8

    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.
  13. 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 )
  14. 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?
  15. Gw8

    Hide HEX Nick | guiGridList

    local name = client.name:gsub('#%x%x%x%x%x%x','')