-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
Use setAccountData e getAccountData. Se vc for criar uma tabela nova no banco de dados, saiba mais sobre os comandos SQLite aqui:
-
[ERRO]Resources
Lord Henry replied to amarelinhoxx's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Por favor, não poste com esse tamanho exagerado de fonte, isso é classificado como Spam. No seu caso, creio que você baixou um resource da internet que precisa desse scr-Lib instalado para funcionar. Tente entrar em contato com quem desenvolveu ou procure o download desse resource na página que você baixou o resource com esse problema. Se for impossível de encontrar esse resource, então você deve reprogramá-lo para desfazer essa conexão. Mas como nem você e nem nós sabemos como funciona esse resource, fica difícil ajudar. -
Tente usar o evento onPlayerLogin.
-
Mta Travando = Me ajude
Lord Henry replied to OrNoT's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Aconteceu isso comigo hoje. Entrei no MTA e a seta ficou teleportando sem nem entrar em servidor algum. Dai fiz o seguinte: Saí do MTA e entrei no GTA normal pra ver se ele estava com algum problema ou travamento. Resultado: Nada, o GTA está normal. Abri o CCleaner que eu já tenho instalado no PC. Fiz uma análise dos registros. Resultado: Sem nenhum problema nos registros. (eu já havia corrigidos os problemas de registro na semana passada) Ainda no CCleaner, fiz uma limpeza nos programas e navegadores de internet, mas desabilitei pra limpar o cache no Chrome pois não quero que ele deslogue dos sites que estou automaticamente logado. Resultado: A maioria dos programas tinha pouca coisa pra ser limpada, mas o Chrome tinha bastante e foi limpo. Fechei o CCleaner e também fechei ele na bandeja de notificações da área de notificação do Windows, senão ele fica executando em segundo plano. Abri novamente o MTA. Resultado: Sem travamentos, executou normalmente. -
Fiz esse exemplo pra ficar mais fácil. A variavelAzul também funciona dentro da área verde e da vermelha, mas a variavelVerde não funciona na área azul mas funciona na vermelha. E a variavelVermelha só funciona dentro do próprio escopo onde ela foi criada. A variável azul funciona em todo esse arquivo.lua, mas somente dentro dele. Se não fossem variáveis locais, elas funcionariam em qualquer lugar do seu script, inclusive fora deste arquivo.lua. Mas não funcionariam em scripts de lado oposto ao script de origem. (Se este arquivo.lua for client-side, elas não funcionam em arquivos server-side e nem vice-versa.) De forma resumida: As variáveis locais funcionam somente em seu escopo e nos escopos que estão dentro dele. Mas nunca funcionam fora de seu escopo. No caso da variavelAzul, que não está dentro de um escopo, ele funciona no script inteiro. -------------------------------------------------------------------- Esse é um dos principais motivos do porquê é importante indentar seu código (colocar os espaços no início das linhas), pois demarcam quais linhas pertencem a qual escopo, deixando o código muito mais fácil de interpretar e ler.
-
Anexe uma espera de colisão no mesmo bone que o objeto está anexado usando createColSphere e attachElements.
-
addCommandHandler ("teste1", function () local numero1 = 1 if numero2 > 1 then -- Erro: Impossivel calcular nulo com 1. outputChatBox ("Olá") end end) addCommandHandler ("teste2", function () local numero2 = 2 if numero1 > 0 then -- Erro: Impossivel calcular nulo com 2. outputChatBox ("mundo.") end end) Local é usado para variáveis que devem ser usadas somente dentro do escopo em que foram criadas. Faça o seguinte teste: Crie 2 funções com um addCommandHandler diferente em cada uma delas. Dentro de cada função crie uma variável local com um valor diferente em cada uma. Tente usar a variável de uma função na outra função e perceba que ele vai dar erro como se a variável nem existisse. Também é possível fazer funções locais.
-
Fecha o painel e abre de novo. E coloque uma condição que verifica se o jogador existe. Se não existir, envia um outputChatBox avisando que o player não foi encontrado.
- 9 replies
-
- br
- brasileiro
-
(and 3 more)
Tagged with:
-
Sem alterar as armas originais do jogo não sei se é possível. (talvez seja, mas vai precisar fazer muita gambiarra para fazer os novos objetos terem seu próprio tiro.) Em vez de tentar fazer algo além dos limites do GTA SA, substitua os modelos das armas que já existem e evite problemas. Você pode alterar as propriedades de uma arma, usando SetWeaponProperty.
-
Você deve preencher a lista ao abri-la e limpá-la ao fechar a lista. Dessa forma, no client: local screenH, screenW = guiGetScreenSize() local x, y = (screenH/1366), (screenW/768) local font2 = dxCreateFont("gfx/Blix-Black.ttf", 19) local dxfont1_font = dxCreateFont("gfx/font.ttf", 11) local dxfont2_font = dxCreateFont("gfx/font.ttf", 10) gridListDoar = guiCreateGridList(495, 302, 176, 257, false) colunaDoar = guiGridListAddColumn(gridListDoar, "Jogadores", 0.9) guiGridListSetSelectionMode(gridListDoar, 2) guiSetAlpha(gridListDoar, 0.50) guiSetVisible(gridListDoar, false) editBoxDoar = guiCreateEdit(724, 343, 184, 23, tonumber("0"), false) guiSetVisible(editBoxDoar, false) guiSetAlpha(editBoxDoar, 0.50) guiEditSetMaxLength(editBoxDoar, 8) -- 85555 function SetAll() if (trans == true) then if tonumber(guiGetText(editBoxDoar)) ~= nil then totalDoar = tonumber(guiGetText(editBoxDoar)) end end end setTimer(SetAll, 50, 0) cor = {} totalDoar = 0 trans = false function server() local dinheiro = getPlayerMoney(getLocalPlayer()) cor[1] = tocolor(255,255,255,255) cor[2] = tocolor(0, 0, 0, 140) if cursorPosition(x*948,y*259,x*962,y*288) then cor[1] = tocolor(255,0,0,255) end if cursorPosition(x*774,y*376,x*91,y*27) then cor[2] = tocolor(247, 142, 7, 200) end dxDrawRectangle(474, 265, 498, 323, tocolor(0, 0, 0, 226), false) dxDrawRectangle(474, 265, 498, 26, tocolor(0, 0, 0, 187), false) dxDrawText("Transferidor De Dinheiro", 473, 265, 972, 292, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawRectangle(x*774,y*376,x*91,y*27,cor[2], false) dxDrawText("Transferir", 773, 376, 864, 402, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Seu Dinheiro : "..dinheiro,x*756,y*413,x*1040,y*430, tocolor(255, 255, 255, 255), 1.00, dxfont2_font, "left", "top", false, false, false, false, false) end function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end function getGridlistPlayer() local player = getPlayerFromName(guiGridListGetItemText(gridList, guiGridListGetSelectedItem(gridList), 1)) if (player) then return player end end function dxDrawXeets(absX, absY, sizeX, sizeY, color, ancho) dxDrawRectangle(absX, absY, sizeX, ancho, color) dxDrawRectangle(absX, absY + ancho, ancho, sizeY - ancho, color) dxDrawRectangle(absX + ancho, absY + sizeY - ancho, sizeX - ancho, ancho, color) dxDrawRectangle(absX + sizeX - ancho, absY + ancho, ancho, sizeY - ancho * 2, color) end function onGridClick() local player = getGridlistPlayer() if (player == "" or player == nil) then return else triggerServerEvent("onGridClick", getLocalPlayer(), player) end end function convertNumber(number) local formated = number while true do formated, k = string.gsub(formated, "^(-?%d+)(%d%d%d)", "%1,%2") if (k == 0) then break end end return formated end local componentes = {"armour", "wanted", "weapon", "money", "health", "clock", "breath", "ammo"} local tableSkins = {1, 2, 7, 9, 10, 11, 12, 14, 15, 16, 18, 28, 310, 311, 312} function enviar(_,state) if trans == true then if state == "down" then if cursorPosition(x*774,y*376,x*91,y*27) then selectedDoar = guiGridListGetItemText(gridListDoar, guiGridListGetSelectedItem(gridListDoar), 1) amount = guiGetText(editBoxDoar) triggerServerEvent("onGridClickDoar", getLocalPlayer(), selectedDoar, amount) end end end end addEventHandler ("onClientClick", root, enviar) function OpenTrasf() if trans == false then -- Se o painel não está visível, então: for _, player in ipairs(getElementsByType("player")) do -- Atualiza a lista, preenchendo com os jogadores online. local rowDoar = guiGridListAddRow(gridListDoar) guiGridListSetItemText(gridListDoar, rowDoar, colunaDoar, getPlayerName(player), false, false) guiGridListSetItemColor(gridListDoar, rowDoar, colunaDoar, 255, 165, 0) end showCursor (true) addEventHandler ("onClientRender", root, server) trans = true guiSetVisible (gridListDoar,true) -- Torna o painel visível. guiSetVisible (editBoxDoar,true) guiSetVisible (coluna,true) else -- Se o painel está visível, então: showCursor (false) removeEventHandler ("onClientRender", root, server) trans = false guiGridListClear (gridListDoar) -- Limpa a lista, deixando ela vazia. guiSetVisible (gridListDoar,false) -- Torna o painel invisível. guiSetVisible (editBoxDoar,false) guiSetVisible (colunaDoar,false) end end bindKey ("F10", "down", OpenTrasf) function cursorPosition(x, y, w, h) if (not isCursorShowing()) then return false end local mx, my = getCursorPosition() local fullx, fully = guiGetScreenSize() cursorx, cursory = mx*fullx, my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end Não mexi no server.lua, mas já detectei problema de lógica na linha 27 em relação a linha 43. Além disso você pode usar acentos nos textos do outputChatBox.
- 9 replies
-
- br
- brasileiro
-
(and 3 more)
Tagged with:
-
E provavelmente setElementDimension também.
-
Obtenha todos os jogadores online com getElementsByType ("player") e verifique cada um deles com um FOR se estão dentro de uma ACL Group usando isObjectInACLGroup. Se estiver, use setElementHealth para setar a vida nele.
-
Fps de MTA travado em 6 / 25
Lord Henry replied to R1S1NG's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Qual é seu processador e quanto tem de memória RAM? Pode ser drivers desatualizados. Mantenha os drivers do sistema operacional e da placa de vídeo recentes. -
Para verificar sua distância em relação a outro player, use getDistanceBetweenPoints3D. Use também um getElementsByType ("player") para obter todos os players online. E um loop de FOR para verificar quais players estão perto demais de vc. Os que estiverem perto demais, verifique se são da CV com isObjectInACLGroup. Se nenhum deles for da CV ou se não houver ninguém por perto, o comando funciona normalmente, caso contrário manda uma mensagem avisando que há um rival por perto.
-
hum, dai não sei o que pode estar ocorrendo. Precisa estudar mais para descobrir.
-
Server-side: addEventHandler ("onPlayerJoin", getRootElement(), function () triggerClientEvent (source, "iniciarTexturas", source) -- Executa o evento "iniciarTexturas" do client.lua somente no jogador que entrou. end) addEventHandler ("onPlayerQuit", getRootElement(), function () triggerClientEvent (source, "desativarTexturas", source) -- Executa o evento "desativarTexturas" do client.lua somente no jogador que saiu. end) Client-side: function iniciar () if not txd then -- Se a textura não está ativada, então: txd = engineLoadTXD ("Textura/texture.txd") engineImportTXD (txd, 14853) end end addEvent ("iniciarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts. addEventHandler ("iniciarTexturas", getRootElement(), iniciar) addCommandHandler ("enable", iniciar) -- Comando para ativar as texturas manualmente. function desativar () if isElement (txd) then -- Se existe a textura, então: destroyElement (txd) -- Deleta a textura e volta ao original. txd = nil end end addEvent ("desativarTexturas", true) -- Cria um evento personalizado e permite que ele seja chamado por outros scripts. addEventHandler ("desativarTexturas", getRootElement(), desativar) addCommandHandler ("disable", desativar) -- Comando para desativar as texturas manualmente. Obs: Não cheguei a testar.
-
Não. Vai usar no lado server. Por isso que precisa do triggerClientEvent.
-
Ative a textura com o evento onPlayerJoin e desative com onPlayerQuit. Vai precisar usar triggerClientEvent.
-
Teste e descubra.
-
O floor arredonda para baixo e o ceil arredonda para cima. No exemplo: Floor: 1.276813074565884 >> 1.270000000000000 >> 1.27 Ceil: 1.276813074565884 >> 1.280000000000000 >> 1.28 Se nenhum dos dois for declarado, ele arredonda para o mais próximo, por exemplo: 1.556 >> 1.56 1.555 >> 1.55 1.554 >> 1.55
-
Sua função de redução está diferente da minha. Estou usando assim: function math.round (number, decimals, method) decimals = decimals or 0 local factor = 10 ^ decimals if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor else return tonumber(("%."..decimals.."f"):format(number)) end end E no código que está chamando o math.round, está faltando parâmetro como eu já havia mencionado da outra vez. -- Como está: math.round(tonumber(ratio[i]), 2) -- Como deve ser: math.round (tonumber(ratio[i]), 2, "floor") E a função só funciona direito client-side.
-
Mostre a parte do script onde o redutor é chamado pelo código e a função do redutor.
-
No exemplo em questão ele por padrão já deixa desativado. Ele só ativa ao usar o /enable. Só adicionar uma condição que verifica se txd já existe. addCommandHandler ("ativartexturas", function () if not txd then txd = engineLoadTXD ("Diretorio da textura") engineImportTXD (txd, id) outputChatBox ("Texturas ativadas!", 0, 255, 0) else outputChatBox ("Texturas já estão ativadas!", 255, 255, 0) end end) addCommandHandler ("desativartexturas", function () if isElement (txd) then destroyElement (txd) txd = nil outputChatBox ("Texturas desativadas!", 255, 0, 0) else outputChatBox ("Texturas já estão desativadas!", 255, 255, 0) end end)
-
Fiz este exemplo que você pode ativar e desativar a textura da Grove Street em seus respectivos modelos usando /enable e /disable. addCommandHandler ("enable", function () txd = engineLoadTXD ("Los Santos/lae2roadshub.txd") -- Neste exemplo, substitui a textura da Grove Street. engineImportTXD (txd, 17595, 17597, 17610, 17611, 17612, 17613) -- Aplica a textura aos respectivos objetos. end) addCommandHandler ("disable", function () if isElement (txd) then -- Se existe a textura, então: destroyElement (txd) -- Deleta a textura e volta ao original. txd = nil end end) Da mesma forma, você pode usar para ativar ou desativar texturas de lojas.
-
Dai nesse caso é mais trabalhoso de fazer, pois como vc já deve saber, precisa informar todos os IDs de todas as ruas que terão a textura substituída. Mas basicamente funciona da mesma forma. A única coisa que não vai ter é a parte do DFF, já que não há substituição de modelo, apenas de texturas.
