-
Posts
251 -
Joined
-
Last visited
-
Days Won
7
Everything posted by Angelo Pereira
-
para você desabilita-lo, basta fazer : addEventHandler("onPlayerChat", root, function ( msg, type_msg ) cancelEvent(true) end)
-
Ah, isso sim, entendi, porem, se o jogador vier a executar a hora 24 e o minuto 60, será verificado e passado para 0
-
você diz isso, na forma que o @vírus passou?
-
Fiz algumas alterações no script feito, a explicação segue a mesma. function mudar_tempo ( cmd, h, m ) if cmd == "hora" then local horas = tonumber(h) or 0 if horas == 24 then horas = 0 end local minutos = tonumber(m) or 0 if minutos == 60 then minutos = 0 end if horas >= 0 and horas <= 24 then if minutos >= 0 and minutos <= 60 then setTime(horas,minutos) outputChatBox("#00FF00Horário Setado Para: #FFFFFF"..horas.." #00FF00Hora(s) e #FFFFFF"..minutos.." #00FF00Minuto(s)!", 255,255,255,true) else outputChatBox("#FF0000Erro!, O Valor Máximo para os Minutos é 60, e minimo é 0",255,255,255,true) end else outputChatBox("#FF0000Erro!, O Valor Máximo para as Horas é 24, e minimo é 0",255,255,255,true) end elseif cmd == "congelar" then setMinuteDuration(1000000000) outputChatBox("Você Congelou seu Tempo!",255,255,255,true) elseif cmd == "descongelar" then setMinuteDuration(100) outputChatBox("Você Descongelou seu Tempo!",255,255,255,true) end end addCommandHandler("hora", mudar_tempo) addCommandHandler("congelar", mudar_tempo) addCommandHandler("descongelar", mudar_tempo)
-
Bom, fiz um exemplo (básico, e funcional, onde você pode tirar algum proveito). (Não testado). local table_marker = { } addCommandHandler( "mark", function ( player ) if table_marker[player] then return outputChatBox("Já Existe um Marker em Você!", player, 255,255,255, true) end local x,y,z = getElementPosition(player) table_marker[player] = createMarker ( x, y, z, "cylinder", 2, 255, 255, 0, 170 ) attachElements ( table_marker[player], player, 0, 0, -1) setElementID ( table_marker[player], getPlayerSerial(player) ) end) addEventHandler("onMarkerHit", getRootElement ( ), function ( hitElement, d ) if isElement(hitElement) and getElementType (hitElement) == "player" and d then local player = take_player ( getElementID(source) ) if player then outputChatBox(""..getPlayerName(hitElement).." Colidiu no seu Marker!", player, 255,255,255, true) else outputChatBox("Não Encontrado!") end end end) function take_player ( id ) for i, v in ipairs( getElementsByType ( "player" ) ) do if getPlayerSerial(v) == id then return v end end return false end
- 1 reply
-
- 1
-
--/> Sistema básico, se tiver utilidade para você. teste, local alpha = 255 local contagem = "down" local timer_tick = getTickCount ( ) function system_alpha ( ) if timer_tick >= 1000 then if contagem == "down" then if alpha <= 100 then contagem = "up" else alpha = alpha - 1 end elseif contagem == "up" then if alpha >= 250 then contagem = "down" else alpha = alpha + 1 end end timer_tick = getTickCount ( ) end end --/# Pequeno exemplo, ao iniciar o resource. addEventHandler("onClientRender", root, function ( ) system_alpha ( ) --/> Chamará a função. dxDrawRectangle ( x*10, y*10, x*1366-20, y*766-20, tocolor ( 0, 0, 0, alpha ) ) end)
-
o problema, então pode estar nas permissões da sua ACL. Caso, eventualmente, você fez alterações nas permissões da ACL, você pode ter bugado a permissão.
-
lembrando, faça esse processo com o servidor desligado, e sempre antes de fazer alterações (principalmente pelo ftp), faça um backup antes. Assim, evita de você perde seus dados, com algum erro, ou problema de transferência.
-
você pode pegar esses dados usando a função getAccountData
-
Somente você não consegue fala in-game? Se, você fez as alterações no mtaconfig de ativação do voice, salvou o arquivo xml, ligou o servidor, ativou o resource de voice, era pra está funcionando.
- 1 reply
-
- 1
-
pegar a cor do veiculo : https://wiki.multitheftauto.com/wiki/GetVehicleColor setar uma cor no veiculo : https://wiki.multitheftauto.com/wiki/SetVehicleColor Então, você usar o getVehicleColor, para pegar a cor do veiculo, salva essa informação, e quando o veiculo for spwanado, faz a setagem.
-
Faz um teste na sua conexão, usando o speedtest. 1. Verifique a velocidade do seu download e upload. 2. Caso, seu upload esteja 0.01 de velocidade, a sua rede pode está com problemas. Agora, caso não seja problema de velocidade, então, redefina seu firewall. (Painel de Controle\Sistema e Segurança\Windows Defender Firewall) Lado esquerdo, "Restaurar padrões".
-
Dúvida sobre qual a melhor opção setElementData ou Table
Angelo Pereira replied to Gaimo's topic in Programação em Lua
Bom, se você precisar trabalhar com esses dados do lado client-side, você vai precisar fazer em setElementData. Agora, se você vai trabalha com esses dados em apenas no seu server-side, faça em tabela. -- Caso, você tenha seu elemento na função, você pode fazer a busca usando este elemento na tabela, igual quando busca o player na tabela. -
função : getDistanceBetweenPoints3D () --/ https://wiki.multitheftauto.com/wiki/GetDistanceBetweenPoints3D exemplo : local x1,y1,z1 = getElementPosition(source) local x2,y2,z2 = getElementPosition(elemento) if ( getDistanceBetweenPoints3D ( x1,y1,z1,x2,y2,z2 ) <= 10 ) then print("dentro") else print("fora") end
- 1 reply
-
- 1
-
[AJUDA] Desligar motor ao entrar no veiculo
Angelo Pereira replied to Welf's topic in Programação em Lua
Teste lá : function triggerVehicleSystem(sys) local veh = getPedOccupiedVehicle(source) if veh and getVehicleController(veh) == source then if sys == "engine" then if not getElementData(veh,"Gasolina") then setVehicleEngineState(veh, not getVehicleEngineState(veh)) return end if getElementData(veh,"Gasolina") > 0 then setVehicleEngineState(veh, not getVehicleEngineState(veh)) else outputChatBox("Нет бензина!",source,200,0,0) end elseif sys == "lights" then if getVehicleOverrideLights( veh ) ~= 2 then setVehicleOverrideLights( veh, 2 ) else setVehicleOverrideLights( veh, 1 ) end elseif sys == "lock" then setVehicleLocked(veh,not isVehicleLocked(veh)) end end end addEvent("triggerVehicleSystem",true) addEventHandler("triggerVehicleSystem",root,triggerVehicleSystem) --# Adicionado : local estado_do_motor = { } addEventHandler ( "onPlayerVehicleExit", getRootElement ( ), function ( veh, seat, jacked ) if seat == 0 then if estado_do_motor[veh] == "true" then setVehicleEngineState ( veh, true ) else setVehicleEngineState ( veh, false ) end end end) --# Verifica o Motor, ao Começa a Sair do Veiculo. addEventHandler ( "onVehicleStartExit", getRootElement ( ), function ( thePlayer, seat, jacked ) if seat == 0 then local veh = getPedOccupiedVehicle(thePlayer) estado_do_motor[veh] = tostring(getVehicleEngineState(veh)) end end) addEventHandler ( "onPlayerVehicleEnter", getRootElement ( ), function ( veh, seat, jacked ) if seat == 0 then if estado_do_motor[veh] == "true" then setVehicleEngineState ( veh, true ) else setVehicleEngineState ( veh, false ) end end end) --# Verifica o Motor, ao Começar a Entrar no Veiculo. addEventHandler ( "onVehicleStartEnter", getRootElement ( ), function ( thePlayer, seat, jacked ) if seat == 0 then local veh = getPedOccupiedVehicle(thePlayer) estado_do_motor[veh] = tostring(getVehicleEngineState(veh)) end end) -
Bom, existe vários erros, dentro dele, o mais importante, é : "Quando a pessoa acertar a senha do portão (Isso parte do client-side), setasse uma acl no mesmo", porem no seu script, é totalmente diferente essa indagação, pois, ao colidir com o marker, setará a acl no player. Enfim, fiz um script, para você testa no seu server privado, para lhe dar um pouco de conhecimento, da forma que você colocou no título do tópico. --# pequena demostração. -- client-side. local senha_do_portao = "001" --/> Senha do Portão. addEventHandler("onClientResourceStart", resourceRoot, function ( ) --/> Ao Iniciar o Recurso do Lado Client-Side, Então : showCursor(true) --/> Ativar Cursor do Mouse. digitar_password = guiCreateEdit( 1366/2, 768/2, 100, 40, "", false ) --/> Cria uma Caixa de Texto. guiEditSetMaxLength ( digitar_password, 8 ) --/> Defini o Tamanho Máximo de Texto Para 8. botao_confirmar = guiCreateButton ( 1366/2, 768/2+60, 100, 50, "Confirmar", false ) --/> Cria um Botão de Confirmação. addEventHandler("onClientGUIClick", botao_confirmar, function ( ) --/> Adiciona um Evento de Click ao Botão Confirmar. local texto = guiGetText ( digitar_password ) --/> Pega o Texto de Dentro da Caixa de Texto. if texto == senha_do_portao then --/> Então, verifica o texto, e compara com a senha do portão. outputChatBox("Senha Correta.") triggerServerEvent("Senha_Correta", resourceRoot) --/> Enviará um Evento Para o Lado server-side. else outputChatBox("Senha invalida.") end end) end) -- server-side. addEvent("Senha_Correta", true) addEventHandler("Senha_Correta", resourceRoot, function ( ) local login = getAccountName(getPlayerAccount(client)) if login ~= "guest" then if isObjectInACLGroup("user."..login, aclGetGroup("PMESP")) == false then --/> Verificar se o Player Já tem a ACL, se não tem então : aclGroupAddObject (aclGetGroup("PMESP"), "user."..login) --/> Adiciona no Grupo Acl. outputChatBox("Você Recebeu um Grupo ACL da PMESP!", client, 255,255,255, true) else outputChatBox("Você Já Possui ACL da PMESP.", client, 255,255,255, true) end else outputChatBox("Você Está Deslogado do Servidor.", client, 255,255,255, true) end end) local mylift = createObject (980, 1539.634765625,-1627.90625,15.3828125, 0, 0, 270) --/> Cria um Objeto. local marker = createMarker (1545.08020, -1627.61438, 12.38281, "cylinder", 6, 0, 255, 255, 0) --/> Cria um Marker. addEventHandler ("onMarkerHit", marker, function ( hitElement, dim ) if isElement(hitElement) and getElementType(hitElement) == "player" then if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(hitElement)), aclGetGroup("PMESP")) then moveObject(mylift, 2000, 1539.634765625, -1327.90625, 15.3828125) --/> Abrirá setTimer ( function ( ) moveObject(mylift, 2000, 1539.634765625, -1627.90625,15.3828125) end, 5000, 1 ) --/> Fechará em 5s. end end end)
-
Bom, se eu fosse você, eu criava todo o script do lado server-side, assim, evitando constantemente o uso de envios de eventos para o server-side. Teste lá : -- / lado server-side. --# bindkey. addEventHandler("onPlayerLogin", root, function () bindKey ( source, "i", "down", ligar_desligar_motor ) end) addEventHandler("onResourceStart", resourceRoot, function () for i, player in ipairs( getElementsByType("player") ) do bindKey ( player, "i", "down", ligar_desligar_motor ) end end) addEventHandler("onResourceStop", resourceRoot, function () for i, player in ipairs( getElementsByType("player") ) do unbindKey ( player, "i", "down", ligar_desligar_motor ) end end) -- funções. function ligar_desligar_motor ( player ) local veh = getPedOccupiedVehicle ( player ) if veh and getPedOccupiedVehicleSeat( player ) == 0 then if ( getVehicleEngineState (veh) == false ) then setVehicleEngineState (veh, true) setVehicleLightState (veh,0,0) setVehicleLightState (veh,1,0) setVehicleLightState (veh,2,0) setVehicleLightState (veh,3,0) else setVehicleEngineState (veh, false) setVehicleLightState (veh,0,1) setVehicleLightState (veh,1,1) setVehicleLightState (veh,2,1) setVehicleLightState (veh,3,1) end end end -- eventos. addEventHandler ( "onPlayerVehicleEnter", root, function ( theVehicle, seat ) if seat == 0 then if ( getVehicleEngineState (theVehicle) == false ) then setVehicleEngineState (theVehicle, true) setVehicleLightState (theVehicle,0,0) setVehicleLightState (theVehicle,1,0) setVehicleLightState (theVehicle,2,0) setVehicleLightState (theVehicle,3,0) end end end) addEventHandler ( "onPlayerVehicleExit", root, function ( theVehicle, seat ) if seat == 0 then if ( getVehicleEngineState (theVehicle) == true ) then setVehicleEngineState (theVehicle, false) setVehicleLightState (theVehicle,0,1) setVehicleLightState (theVehicle,1,1) setVehicleLightState (theVehicle,2,1) setVehicleLightState (theVehicle,3,1) end end end)
-
Bom, o erro em si, é na linha 3 do meta, está contendo duas aspas, precisa remover uma das aspas : ( marcado em vermelho ) <script src="server.Lua" type="server"" /> Também lembrando : O nome que você denominou no seu script lá dentro da pasta do seu resource, você precisa coloca o mesmo nome no meta. Exemplo : Tenho um script chamado : LigarMotor.Lua Então no meta será : <meta> <info author="Samuel Boechat" description="Motor do carro" version="1.0" type="misc" /> <script src="LigarMotor.Lua" type="server" /> </meta>
-
no resouce, o problema se encontra aqui : --> Valor : local housesLimit = tonumber ( get ( "maxHouses" ) ) or 2 --linha 164 : if ( #getAccountHouses ( accountName ) >= housesLimit ) then --> Problema : ">=", o que significa? se for maior, ou igual. --> Então se a pessoa tentar compra a 2ª casa, retornará. Solução : if ( #getAccountHouses ( accountName ) > housesLimit ) then --> Apenas deixa, se for acima do valor.
-
Apenas faltou : function formatNumber ( number ) local formatar = number while true do formatar, k = string.gsub(formatar, "^(-?%d+)(%d%d%d)", '%1,%2') if ( k == 0 ) then break end end return formatar end -- .. código abaixo.
-
Teste : -- #1, Lado Server-Side, você precisa registrar a Key para o Jogador. addEventHandler("onPlayerLogin", root, function () bindKey ( source, "k", "down", ligar_desligar_motor ) end) addEventHandler("onResourceStart", resourceRoot, function () for i, player in ipairs( getElementsByType("player") ) do bindKey ( player, "k", "down", ligar_desligar_motor ) end end) addEventHandler("onResourceStop", resourceRoot, function () for i, player in ipairs( getElementsByType("player") ) do unbindKey ( player, "k", "down", ligar_desligar_motor ) end end) -- #2, funções. function ligar_desligar_motor ( player ) local veh = getPedOccupiedVehicle ( player ) if veh then if ( getVehicleEngineState (veh) == false ) then setVehicleEngineState (veh, true) else setVehicleEngineState (veh, false) end end end -- #3, eventos. addEventHandler ( "onPlayerVehicleEnter", root, function ( theVehicle, seat ) if seat == 0 then if ( getVehicleEngineState (theVehicle) == false ) then setVehicleEngineState (theVehicle, true) end end end) addEventHandler ( "onPlayerVehicleExit", root, function ( theVehicle, seat ) if seat == 0 then if ( getVehicleEngineState (theVehicle) == true ) then setVehicleEngineState (theVehicle, false) end end end) -- # Dica, se você quer aprender, basta, cada função/evento pesquisar no wiki do MTA. -- https://wiki.multitheftauto.com/wiki/BindKey -- https://wiki.multitheftauto.com/wiki/GetPedOccupiedVehicle -- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleEnter -- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleExit
-
TROCAR addCommandHandler PELA FUNÇÃO bindKey
Angelo Pereira replied to +Gabriel's topic in Programação em Lua
-- Server-Side / Por Comando addCommandHandler("F", function ( thePlayer ) outputChatBox("Start", thePlayer, 255, 255, 255, true ) end) -- Server-Side / Por Bindkey addEventHandler("onPlayerLogin", root, function ( ) bindKey ( source, "F", "down", sistema2 ) end) addEventHandler("onResourceStart", resourceRoot, function ( ) for i, players in ipairs( getElementsByType("player" ) ) do bindKey ( players, "F", "down", sistema2 ) end end) addEventHandler("onResourceStop", resourceRoot, function ( ) for i, players in ipairs( getElementsByType("player" ) ) do unbindKey ( players, "F", "down", sistema2 ) end end) function sistema2 ( thePlayer ) outputChatBox("Start", thePlayer, 255, 255, 255, true ) end -- Client-Side / Por Comando addCommandHandler("F", function ( ) outputChatBox("Start", 255, 255, 255, true ) end) -- Client-Side / Por Bindkey function sistema2 ( ) outputChatBox("Start", 255, 255, 255, true ) end bindKey("F7", "down", sistema2 ) Espero ter ajudado. -
Infelizmente, é algo que, nem mesmo o pessoal da moderação brasileira podem ajudar nessa questão. Sobre seu problema vamos lá ! Imagine o seguinte, apenas podem entrar na TOPLIST 20 IP(Servidores), e o tempo de durabilidade da TOPLIST é de 20 dias. Então, você terá que aguarda um bom tempo ainda, até chega a sua vez.
-
--~~> Modo de Fazer [1] - Por Tabela. (ATENÇÃO: Precisa está no mesmo script) local rendido = { } addCommandHandler("render", function (player) rendido[player] = true end) addCommandHandler("abaixar", function (player) rendido[player] = false end) -- na função que faz o roubo, crie uma verificação if rendido[source] then outputChatBox("Jogador Rendido !", source, 255, 255, 255, true) else outputChatBox("Jogador Não Esta Rendido !", source, 255, 255, 255, true) end --~~> Modo de Fazer [2] - Por ElementData. (Não é Necessário Esta no mesmo Resource). addCommandHandler("render", function (player) setElementData(player, "Rendido", true) end) addCommandHandler("abaixar", function (player) setElementData(player, "Rendido", false) end) -- na função que faz o roubo, crie uma verificação local rendido = getElementData(source, "Rendido") or false if rendido then outputChatBox("Jogador Rendido !", source, 255, 255, 255, true) else outputChatBox("Jogador Não Esta Rendido !", source, 255, 255, 255, true) end
-
Testa lá : local markers = { } addCommandHandler ( "createmarker", function ( thePlayer ) if markers[thePlayer] and isElementWithinMarker ( thePlayer, markers[thePlayer] ) then return outputChatBox("Já Existe um Marker em Você!", thePlayer, 255, 255, 255, true) end local x,y,z = getElementPosition(thePlayer) markers[thePlayer] = createMarker ( x,y,z, "cylinder", 5, 100, 0, 0, 50 ) attachElements(markers[thePlayer], thePlayer, 0,0,-1) outputChatBox("Criado com Sucesso !", thePlayer, 255, 255, 255, true) end) addEventHandler( "onPlayerQuit", root, function ( ) if markers[source] and isElementWithinMarker ( source, markers[source] ) then destroyElement(markers[source]) markers[source] = nil end end)