Gw8

Members
  • Content Count

    29
  • Joined

  • Last visited

Community Reputation

10 Decent

3 Followers

About Gw8

  • Rank
    Advanced Member

Recent Profile Visitors

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

  1. Boa noite galera estou a procura de uma solução no uso de memoria de alguns algoritmos feitos por mim vou tentar explicar como o sistema funciona, ele é uma framework que tem como base um onClientPreRender e onClientRender, tem varios sistemas nele, por exemplo de prioridades de janelas, arraste, entre outros. Tudo é comandado por 4 funções principais (updatePositions,render,click e doubleClick) . a hierarquia do sistema é assim: onde você partindo de um render consegue criar uma dessas coisas o maior problema que esta havendo, é quando iniciamos o resource ele simplesmente da network no server, se o player tiver pouca memoria entao ... mais facil ele reconectar. Todos os elementos foram criados em oop e programados para serem compatíveis agora um exemplo para voces entenderem melhor.. aqui temos o mapShop onde seu codigo fonte é este callServerFunction("getServerMaps",localPlayer) mapshop = window.create("MAP SHOP",sX/2-resX(350),sY/2-resY(250),700,500,255,0,0,1,"apps/mapshop/icon/mapshop.png",12,"default",false,true) mapshop_grid = gridlist.create({},1,1,698,400,16,12,"default","Search Map Name..",mapshop) function updateMaplist(newlist) mapshop_grid:updateData(newlist) end button.create(195,433,150,30,"Buy Map $"..config.priceMap,12,"default",0,220,0,[[callServerFunction("buyMap",localPlayer,mapshop_grid:getSelect())]],mapshop) button.create(355,433,150,30,"Buy Redo $"..config.priceRedo,12,"default",0,220,0,[[callServerFunction("buyRedo",localPlayer)]],mapshop) o sistema foi muito otimizado, porem agora preciso fazer ele ser econômico '-' Conto com a ajuda de todos, todas as ideias serão bem vindas, não fique com vergonha, fique a vontade para comentar.
  2. Gw8

    [MTA] ->> Cutscene

    Agora que eu cai na real, é mais fácil ensinar o cara dar playVideo em um link do que ensinar ele usar setCameraMatrix Object Ped ... porque playVideo já resolve o problema dele, ai ele não precisa quebrar cabeça pra tentar aprender programar.. é mais fácil deixa ele vim aqui pedir ajuda pra comunidade porque sempre vai ter uma pessoa que vai passar o código que resolve todo o problema dele não é? O meu código não resolve nem 10% do problema, mas mostra o caminho por onde ele deve começar e outra 90% das pessoas que eu conheço e programam a nível TOP no mta não aprendeu nada lendo aquela introdução da wiki, aprenderam interpretando códigos e refazendo scripts, obviamente com uma pequena ajuda de quem já programa, e só acho que você deveria rever os seu conceitos pois quando a pessoa perde a vontade de aprender algo é culpa de quem tentou ensinar, e você está ensinando errado.
  3. Gw8

    [MTA] ->> Cutscene

    local camera = { [1] = {1785.5252685547,-1670.3322753906,197.42810058594,1824.4713134766,-1419.6008300781,206.25146484375,1709.2348632813,-1475.1075439453,199.77049255371}, -- los santos [2] = {-1877.8803710938,448.31448364258,66.276161193848,-1545.9180908203,500.68551635742,61.879508972168,-1579.8115234375,606.18676757813,61.850708007813}, -- ponte san fierro [3] = {-2408.4401855469,1735.3631591797,38.366367340088,-2302.2407226563,1558.1441650391,37.568012237549,-2433.8842773438,1561.0505371094,37.802646636963}, -- navio [4] = {1281.0335693359,-884.94543457031,86.771049499512,1415.4288330078,-907.2900390625,85.035575866699,1415.4951171875,-808.62286376953,87.2880859375} -- vinewood } local i = 1 local dx = 0.0 function Loading() if dx < 1 then dx = dx+0.001 local x,y,z = interpolateBetween(camera[i][1],camera[i][2],camera[i][3],camera[i][4],camera[i][5],camera[i][6],dx,"SineCurve") setCameraMatrix(x,y,z,camera[i][7],camera[i][8],camera[i][9]) elseif dx > 0 then dx = 0.0 i = i + 1 if ( i >= 5) then i = 1 end end end addEventHandler("onClientRender",root,Loading) isso?
  4. Gw8

    How to destroy marker with command??

    change marker to a global variable.
  5. 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 )
  6. 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.
  7. Gw8

    Problema com script

    Da pra fazer tudo isso que você fez usando menos de 180 linhas, muito menos. Tente.
  8. 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)
  9. 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 '-'
  10. 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 )
  11. 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.
  12. 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.
  13. Gw8

    NOVA AJUDA :D RSRSRSR

    Tenho um server pronto para vender ... se voce se interessar manda msg no privado.
  14. 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.
  15. 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.