-
Posts
36 -
Joined
-
Last visited
About FelipeX
- Birthday 24/02/2005
Details
-
Gang
MTA Dev's
-
Location
Brazil
-
Occupation
Programmer
-
Interests
Mapper desing, Graphic Designer, Gereral Programmer, Help in doubts.
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
FelipeX's Achievements
Rat (9/54)
8
Reputation
-
Envie o meta.xml aqui para ver se existe algum export de function, se possivel.
-
Segue no exemplo abaixo, quando um player executar o comando /fly ele envia uma mensagem no chat para todos os players online que estão na acl 'Staff'. addCommandHandler("fly", function(playerSource, Command) for i, admins in ipairs(getElementsByType("player")) do -- Retorna todos os players do servidor. if aclGetGroup("Staff") and isObjectInACLGroup ( "user." ..getAccountName(getPlayerAccount(admins)), aclGetGroup("Staff")) then -- Verifica e retorna os player que estão na acl 'Staff'. outputChatBox("#FF0000Infomation: #FFFFFFO Staff "..getPlayerName(playerSource).." ativou o '/"..Command.."'.", admins, 255, 255, 255, true) -- Envia as mensagens aos players após a verificação. end end end)
- 1 reply
-
- 1
-
Veja se consigo te ajudar com este código, não testei apenas montei. ( Perdoa-me pela indentação ) local RequestCancel = {} local DestroyBlip = {} local Blip = {} addCommandHandler("cmecanico", function(PlayerSource) if not isTimer(Request[PlayerSource]) then -- Verifica se o player não possui o tempo de solicitação. for i, Mecanico in ipairs(getElementsByType("player")) do -- Retorna todos os players do servidor. if aclGetGroup("Mecanico") and isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(Mecanico)), aclGetGroup("Mecanico")) then -- Verifica se existe a acl 'Mecanico', e retorna apenas quem está na acl. local x, y, z = getElementPosition(PlayerSource) -- Pega a posição do cliente. local Cidade = ""..getZoneName(x, y, z).." | "..getZoneName(x, y, z, true).."" -- Pega a localização e cidades. outputChatBox("#FF0000INFO: #FFFFFF"..getPlayerName(PlayerSource).." chamou um mecanico em "..Cidade..", use '/aceitar <nome>' para aceitar.", Mecanico, 255, 255, 255, true) end end RequestCancel[PlayerSource] = setTimer(function() -- Cria um tempo para cancelar a solicitação. outputChatBox("#FF0000INFO: #FFFFFFSeu pedido expirou!", 255, 255, 255, true) killTimer(RequestCancel[PlayerSource]) -- Destroy o tempo de solicitação. end, 5000, 1, PlayerSource) -- Encerra a função do tempo, define o quanto tempo é para destruir a solicitação e quantas vezes fazer isso. else outputChatBox("#FF0000INFO: #FFFFFFVocê já tem uma solicitação em andamento, aguarde.", PlayerSource, 255, 255, 255, true) end end) addCommandHandler("aceitar", function(Mecanico, Comando, Nome) if Comando and Nome then -- Verifica se tem o comando e nome. local Player = getPlayerFromName(Nome) -- Retorna o player do nome destinado como um elemento. if ( Player ) then -- Se tem o player, então: if isTimer(Request[Player]) then -- Se tem uma solicitação, então: local x, y, z = getElementPosition(Player) -- Pega a posição do cliente. outputChatBox("#FF0000INFO: #FFFFFFO Mecanico "..getPlayerName(Mecanico).." aceitou seu chamado e está a caminho.", Player, 255, 255, 255, true) outputChatBox("#FF0000INFO: #FFFFFFO Você aceitou o chamado do "..getPlayerName(Player).." e ele te enviou a localização.", Mecanico, 255, 255, 255, true) Blip[Mecanico] = createBlip(x, y, z, 0, 0, 0, 0, 255, Mecanico ) -- Cria um blip fixo na posição do cliente apenas para o mecanico. DestroyBlip[Mecanico] = setTimer(function() -- Cria um timer para destruir o blip. destroyElement(Blip[Mecanico]) -- Destroi o blip. end, 60000, 1, Mecanico) -- Encerra a função do timer e define quanto tempo é para destruir e quantas vezes repetir a função. killTimer(RequestCancel[Player]) -- Destroi a solicitação do player. else -- Se não houver o player, então: outputChatBox("#FF0000INFO: #FFFFFFO player não tem um chamado.", Mecanico, 255, 255, 255, true) end else outputChatBox("#FF0000INFO: #FFFFFFO player não foi encontrado", Mecanico, 255, 255, 255, true) end end end) addEventHandler("onPlayerQuit", root, function() -- Destruir o tempo caso o player dê quit. if isTimer(Request[source]) or isTimer(DestroyBlip[source]) then killTimer(RequestCancel[source]) killTimer(DestroyBlip[source]) end end)
-
além desse addCommandHandler, crie mais 2, um para aceitar e outro para recusar, depois quando um player executar um desses dois comandos basta verificar se eles tem chamados para ser aceito por elementData.
-
Te recomendo ver videos do youtube e aprender a ler a wiki de imediato, tudo você consegue resolver vendo a wiki, só saber pesquisar, leia o tópico Tutorias em Geral e veja o que lhe ajuda de começo, também veja os videos que estão demonstrando a Aqui. Fora isso caso tenha dúvidas use comunidades de scripts, este forum e o discord do mta.
- 1 reply
-
- 1
-
Teria por editBox, salvando as mensagens em algum banco de dados e etc.
-
Use bindKey e onPlayerChat, quando o player realizar o evento/função guarde em uma tabela, depois tire as informações da tabela e coloque no painel que você criou. -- Bind keys para novos chats bindKey (players, "u", "down", "chatbox", "DeepWeb") --bindKey (elemento, tecla, estado, func, Comando) -- Evento ( Geralmente para chat local ) addEventHandler("onPlayerChat", root, function)
-
Fiz um exemplo básico, agora é só aplicar. ( Me perdoa pela indentação ) Para verificar o tempo da solicitação e se já existe solicitação use setTimer e killTimer para remover o timer caso o player morra, quite ou algo do tipo. addCommandHandler("chamar", function(playerSource, Comando, ID) if ID and tonumber(ID) then -- Se tem o id e for um número, então: local playerID = tonumber(ID) -- Retorna o id definido. if playerID then -- Se tem o id, então: local targetPlayer, targetPlayerName = getPlayerID(playerID) if targetPlayer then -- Se existir o jogador online, então: outputChatBox("Você enviou solicitação para o id "..ID.." ( "..getPlayerName(targetPlayer).." )", playerSource, 255, 255, 255, true) else -- Se não existir jogador online, então: outputChatBox("O jogador não está na cidade ou não foi encotrado.", playerSource, 255, 255, 255, true) end end else -- Se não tiver o id ou o argumento 1 não for um numero, então: outputChatBox("'Sintaxe incorreta, use: '/chamar <ID DO JOGADOR>'", playerSource, 255, 255, 255, true) end end) --[[ █▀▀█ █▀▀▀ █▀▀█ █▀▀█ █▀▀█ ▀█▀ █▀▀▄ █▄▄█ █▀▀▀ █░▄▄ █▄▄█ █▄▄▀ ░█░ █░▒█ █░░░ █▄▄▄ █▄▄█ █░▒█ █░▒█ ▄█▄ █▄▄▀ ]]-- function getPlayerID(id) v = false for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then v = player break end end return v end
-
Randomizar resultados com mais eficiência
FelipeX replied to Doongogar's topic in Programação em Lua
--[[ █▀▀█ █▀▀▀█ █▀▄▀█ █▀▀▀█ █░▒█ █▀▀▀█ █▀▀█ █▀▀█ █░░░ █░░▒█ █▒█▒█ █░░▒█ █░▒█ ▀▀▀▄▄ █▄▄█ █▄▄▀ █▄▄█ █▄▄▄█ █░░▒█ █▄▄▄█ ▀▄▄▀ █▄▄▄█ █░▒█ █░▒█ ]] local Sucesso = prob(90) -- Retorna a função util que enviei antes, agora definido a porcentagem ( 90 ). if Sucesso then -- Se a chance for dentro dos 90%, então: -- Exibe 1 mensagem no chat. else -- Se não, então: -- Exibe outra mensagem no chat. end --[[ █▀▀▀ █░▒█ █▄░▒█ █▀▀█ █▀▀█ █▀▀▀█ █░▒█ ▀▀█▀▀ ▀█▀ █░░░ █▀▀▀ █░▒█ █▒█▒█ █░░░ █▄▄█ █░░▒█ █░▒█ ░▒█░░ ░█░ █░░░ █░░░ ▀▄▄▀ █░░▀█ █▄▄█ █░▒█ █▄▄▄█ ▀▄▄▀ ░▒█░░ ▄█▄ █▄▄█ ]]-- function prob(numberOfChance) local factor = numberOfChance / 100 -- Pega o fator da chance, ou seja, se for 40, então o fator será 0.4. return 10 + (factor * math.random(100)) < numberOfChance -- No começo, eu coloquei um '10', que seria a margem de erro da probabilidade, e também 10% de chance seria bem difícil. Depois, eu multipliquei o nosso fator (0.4, no exemplo citado acima) por um número aleatório de 1 a 100, pra gerar alguma aleatoriedade bem simples. Caso o resultado dessa multiplicação for menor que o número da chance, então ele é verdadeiro. Quanto menor o número, mais difícil fica. end -
Randomizar resultados com mais eficiência
FelipeX replied to Doongogar's topic in Programação em Lua
Não sei se ira lhe ajudar, mas usei isso em um projeto meus e não tive problemas, peguei do discord do mta. Probabilidade por porcentagem. function prob(numberOfChance) local factor = numberOfChance / 100 -- Pega o fator da chance, ou seja, se for 40, então o fator será 0.4. return 10 + (factor * math.random(100)) < numberOfChance -- No começo, eu coloquei um '10', que seria a margem de erro da probabilidade, e também 10% de chance seria bem difícil. Depois, eu multipliquei o nosso fator (0.4, no exemplo citado acima) por um número aleatório de 1 a 100, pra gerar alguma aleatoriedade bem simples. Caso o resultado dessa multiplicação for menor que o número da chance, então ele é verdadeiro. Quanto menor o número, mais difícil fica. end -
Erro linha 224, após eu adicionar esse função
FelipeX replied to Nakka Lindo's topic in Programação em Lua
Isso eu vi ali na função KKKKKK, preciso ver o codigo antes disso para ver como você está definindo a variavel X. -
Erro linha 224, após eu adicionar esse função
FelipeX replied to Nakka Lindo's topic in Programação em Lua
Mande o codigo completo para saber-mos qual é a variavel 'x'. ( Se possivel ) -
Creio que uns dos erros mais comuns que contem em scripts é criar setTimer varias vezes verifique se isso existe e pense em outra maneira de aplica-lo, exemplo abaixo. setTimer(function() -- Cria o time -- Codigo vai estar aqui end, 10, 0) -- O end fecha a função setTimer, o 10 é a quantidades em milesegundo que a verificação vai ocorrer e 0 quantas vezes vai ocorrer ( Se 0 então fica infinito )
-
Pelo que entendi, sim você pode chamar ela usando o nome da variável ou: -- Shared Config = { ["Acl"] = "Console", } -- Para puxar no client ou server = Config["Acl"] ou -- Shared Grupo = "Console" -- Para puxar no client ou server = Grupo print(Grupo) -- Vai mostrar no config o que tiver entre as aspas do shared.