Gw8

Members
  • Content Count

    50
  • Joined

  • Last visited

Community Reputation

17 Decent

3 Followers

About Gw8

  • Rank
    Snitch

Recent Profile Visitors

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

  1. Faça uma API no site que verifique se exista login e se a senha esta correta, assim que ela estiver pronta voce faz um script chamando ela no servidor. *Porque uma API? Resposta simples, assim voce pode utilizar o mesmo sistema de login do SITE sem perder tempo integrando DbConnect e gerando sistema de encrypt oque seria complexo. Em questao dos Status voce deve utilizar este sistema MTA PHP_SDK pelo menos e esse que eu utilizo no meu. $server = new Server('127.0.0.1', 22005); $auth = new Authentication('login', 'senha'); $mta = new Mta($server, $auth); $resposta = $mta->getResource('nome_do_resource')->call('nome_da_funcao', $arg1, $arg2, $arg3, ...); se sua função no servidor tiver argumentos deve ser preenchido ali o $arg1, $arg2... e a $resposta é oque a função que você chamou te retorna eo 'return' dela. exemplo $response = $mta->getResource('executaCalculo')->call('soma',5,5); -- funcao no servidor dentro do resource executaCalculo function soma(a,b) return (a+b) end -- $resposta = 10. tem outras questoes tambem voce deve verificar como o Meta(<export function="soma" type="server" http="true" />) para habilitar a funcao eo user que e um user somente para http. Espero ter ajudado.
  2. Boa noite pessoal, Pense na seguinte situação: Voce tem os resources A, B e C, todos eles utlizam browser, cada um com um fim especifico para o sistema. Para manter tudo funcionando perfeitamente, sem um click interferir em 2 browser ao mesmo tempo foi integrado o focusBrowser, mas isso me causou um outro problema que é "Eu preciso saber qual browser está com o focus no momento indepente do resource que esteja com ele e salvar o elemento dele para assim que eu fechar o browser atual retornar o focus pro anterior". Vou postar a classe do browser que criei, e duas prints dos sistemas. se alguem tiver uma solução simples que me atenda para um grande numero de browsers eh nois. browser = {} browser.__index = browser function browser.create(x,y,w,h,localy,url) local self = setmetatable({},browser) self.x = x self.y = y self.w = w self.h = h self.url = url self.tick = getTickCount() self.element = createBrowser(self.w,self.h,localy,true) self.init = function() self:setUrl(url) end self.cursorMove = function(_,_,x,y) if self.element:isFocused() then self:onCursorMove(x,y) end end self.scrol = function(key) if self.element:isFocused() then self:key(key) end end self.onClick = function(button,state) if self.element:isFocused() then self:click(button,state) end end addEventHandler("onClientClick",root,self.onClick) addEventHandler("onClientKey",root,self.scrol) addEventHandler("onClientBrowserCreated",self.element,self.init) addEventHandler("onClientCursorMove",root,self.cursorMove) return self end function browser:render() local posX,posY,alpha = self.x,self.y,1 dxDrawImage(posX,posY,self.w,self.h,self.element,0,0,0,tocolor(255,255,255,255*alpha)) end function browser:setUrl(url) self.element:loadURL(url,"",false) self:requestFocus(true) end function browser:requestFocus(bool) if bool then focusBrowser(self.element) else focusBrowser(nil) end end function browser:execJS(string) executeBrowserJavascript(self.element,string) end function browser:checkPageName(name) if string.find(self.element:getURL():lower(),name,1,true) then return true end return false end function browser:key(key) if key == "mouse_wheel_down" then self.element:injectMouseWheel(-40,0) elseif key == "mouse_wheel_up" then self.element:injectMouseWheel(40,0) end end function browser:onCursorMove(x,y) local posX,posY = self.x,self.y self.element:injectMouseMove(x-posX,y-posY) end function browser:click(button,state) if state == "down" then self.element:injectMouseDown(button) else self.element:injectMouseUp(button) end end function browser:getUrl() return self.element.url end function browser:destroy() removeEventHandler("onClientClick",root,self.onClick) removeEventHandler("onClientKey",root,self.scrol) removeEventHandler("onClientBrowserCreated",self.element,self.init) removeEventHandler("onClientCursorMove",root,self.cursorMove) self.element:destroy() setmetatable(self,nil) end
  3. Genial essa ideia da black e white list!!!🤣

  4. @Angelo Pereira por mais que pareça que o código que você criou está certo, ele ainda não está executando corretamente oque ele solicitou, tente interpretar o texto corretamente desta vez.
  5. Você está tentando mesclar 2 sistemas ou tentando apenas fazer está função ser executada a cada 10 minutos? function timecount ( ) for i, player in ipairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if acc then if not isGuestAccount(acc) then --if getElementData ( player, "AirNewSCR_LiberarXP" ) == "Sim" then -- setElementData ( player, "AirNewSCR_LiberarXP", "Não" ) local level = tonumber(getElementData(player,"Level")) or 0 --if tonumber(level) == nil then level = 0 end local exp = tonumber(getElementData(player,"LSys:EXP")) or 0 --if tonumber(exp) == nil then exp = 0 end --local onlinetime = getElementData(player,"LSys:Online") or 0 if tonumber(onlinetime) == nil then onlinetime = 0 end --local mins = getElementData(player,"LSys:Mins") or 0 if tonumber(mins) == nil then mins = 0 end --if tonumber(mins) >= 600 then --outputConsole("resetou minuto") --outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Ganhou +1 de Experiência. (".. tonumber(exp)+1 .."/20)", player, 255, 255, 255, true ) setElementData(player,"LSys:EXP",tonumber(exp)+1) --playSoundFrontEnd ( player, 44 ) --setElementData(player,"LSys:Mins",1) --end if tonumber(exp) >= 19 then setElementData(player,"LSys:EXP",0) setElementData(player,"Level",tonumber(level)+1) --outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Ganhou +1 de Experiência. (".. tonumber(exp)+1 .."/6)", player, 255, 255, 255, true ) outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Juntou 20 de Experiência e Ganhou +1 Level ("..tonumber(level)+1 ..")", player, 255, 255, 255, true ) playSoundFrontEnd ( player, 45 ) --DarSalario (player) -- Efetua os Pagamentos dos Jogadores else outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Ganhou +1 de Experiência. (".. tonumber(exp)+1 .."/20)", player, 255, 255, 255, true ) --setElementData(player,"LSys:EXP",tonumber(exp)+1) playSoundFrontEnd ( player, 44 ) end --if tonumber(mins) < 600 then --setElementData(player,"LSys:Mins",tonumber(mins)+1) --setElementData(player,"LSys:Online",tonumber(onlinetime)+1) --end end --end end end end setTimer ( timecount, 1000*60*10, 0 )
  6. Gw8

    ajuda criar

    function OnExit() if getOccupants(source) then destroyElement(source) end end addEventHandler("onVehicleExit",root,OnExit) function getOccupants(vehicle) return #getVehicleOccupants(vehicle) == 0 end for _,vehicle in ipairs (getElementsByType("vehicle") do if getOccupants(vehicle) then destroyElement(vehicle) end end esse modelo so deve ser usado se o resource de evento é iniciado e parado após o evento. Não testei.
  7. Gw8

    random for letter

    function asd() local bb = {"A", "B", "C", "F", "G"} local z = bb[math.random(1,#bb)] outputChatBox(z) end addCommandHandler ( "ss", asd )
  8. Gw8

    random for letter

    function asd() local bb = {"A", "B", "C", "F", "G"} local z = "" for _, i in ipairs( bb ) do z = i end outputChatBox(z) end addCommandHandler ( "ss", asd )
  9. mano tudo depende do quando voce usa por exemplo, se voce usa element data pra fazer um sistema no serverside tente emplementar ele usando tabelas, é uma alternativa, agora se voce usa elementdata que intergram client-server nao tem outra opção. por exemplo uma data com nome 'cash' onde voce atualiza ela no serverside e mostra ela com um dx no client, é muito melhor usar o element mesmo do que uma função que fica atualizando.
  10. Gw8

    MessageDx

    Cara a solução para o seu problema é simples, você deve criar um setElementData no player salvando o nome do seu trabalho, como a função de verificação é feita atraves da acl isso so funciona no serverside e nao clientside como estava ali. No client voce so verifica se ele existe, se sim mostra o nome. local myJob = localPlayer:getData("myJob") or false if myJob then dxDrawText(myJob) end
  11. Gw8

    Me ajudem

    local inRender = false function render() dxDrawRectangle(0,0,300,200,tocolor(0,220,0,150)) end function setRender(cmd) removeEventHandler("onClientRender",root,render) inRender = not inRender if inRender then addEventHandler("onClientRender",root,render) end end addCommandHandler("show",setRender)
  12. não faz sentido isso que voce escreveu, ninguem usa exports em um resource aleatorio, voce precisa do nome dele previamente. call ( getResourceFromName ( "resource" ), "exportedFunction", 1, "2", "three" ) exports.resource:exportedFunction ( 1, "2", "three" ) exports["resource"]:exportedFunction ( 1, "2", "three" ) e tambem voce consegue utilizar o getResourceFromName e getResourceState para uma pre checagem antes de executar o exports via client.
  13. eu colocaria exports só porque o sistema ficaria melhor encapsulado, e também eliminaria o serverside.
  14. impossivel, quando foi criada a função da senha por exemplo function acesso(player,cmd,pass) end addCommandHandler("senha",acesso) foi atribuido o cmd "senha" a função acesso, se voce tentar remover ele, as senhas reais vao virar comandos primarios, por exemplo /1, ele vai procurar uma função que foi atribuido o cmd "1".