FelipeMallmann Posted May 30, 2015 Share Posted May 30, 2015 Eae Galera, estou com uma duvida aqui e gostaria de entender como funciona exatamente isso! Se puderem me ajudar Quando eu vou criar uma function, eu posso colocar qualquer nome como parametro dentro dela, certo? Se eu quero criar uma funçao e colocar como parametro alguma coisa para pegar o nome do jogador, para depois exibir uma mensagem ou algo somente para ele, eu posso colocar qualquer nome? Como o jogo entende que aquilo pega o nome do player? Ou é um parametro já determinado pelo mta que faz isso? Por que eu ja vi varias funçoes com o parametro: thePlayer, player, source, e todas elas pegavam o nick do player. Enfim, queria entender como esse parametro de pegar o nick do player funciona, qual devo usar, etc etc. Muito Obrigado! Link to comment
n3wage Posted May 30, 2015 Share Posted May 30, 2015 Você pode usar o "nome" que quiser, É igual criar variaveis, o MTA Apenas manda os parâmetros, quem define o nome da variavel é você, por exemplo: --Todas as funções abaixo vão produzir o mesmo resultado: function funcao1 ( variavel_que_guarda_o_jogador_que_digitou_o_comando ) outputChatBox ( getPlayerName ( variavel_que_guarda_o_jogador_que_digitou_o_comando ) .. " Digitou !", root, 0, 255, 0 ) end addCommandHandler ( "a", funcao1 ) function funcao2 ( p ) outputChatBox ( getPlayerName ( p ) .. " Digitou !", root, 0, 255, 0 ) end addCommandHandler ( "b", funcao2 ) function funcao3 ( ... ) local params = { ... } local jogador = params[1] outputChatBox ( getPlayerName ( jogador ) .. " Digitou !", root, 0, 255, 0 ) end addCommandHandler ( "c", funcao3 ) Link to comment
FelipeMallmann Posted May 31, 2015 Author Share Posted May 31, 2015 Hmm Saquei!!! No caso eu só devo seguir a ordem do comando, por exemplo, se quisesse exibir a mensagem para o player: --Todas as funções abaixo vão produzir o mesmo resultado: function funcao1 ( variavel_que_guarda_o_jogador_que_digitou_o_comando ) outputChatBox ( " Digitou !", variavel_que_guarda_o_jogador_que_digitou_o_comando, 0, 255, 0 ) end addCommandHandler ( "a", funcao1 ) Seria assim? Obrigado! Link to comment
DNL291 Posted May 31, 2015 Share Posted May 31, 2015 Isso mesmo. Sobre a definição do parâmetro, preste atenção quando for nomeá-lo como source. Por que essa é uma variável oculta do MTA. O problema eventual seria um conflito entre esse parâmetro e a fonte do evento - o elemento no qual o evento foi originado. Só que aí no caso, não tem esse tipo de problema. Isso é só para eventos, não funções. E também, o parâmetro vai ser retornado como userdata. Mas não tem restrições, você vai definir o parâmetro com o que convém. Mas é sempre bom usar nomes adequados, como no caso: sourcePlayer, thePlayer, player... Link to comment
FelipeMallmann Posted May 31, 2015 Author Share Posted May 31, 2015 Hm entendi! Mas quando for um código assim guiSetVisible(ShopWindow6, true) Que não tem como alterar a visibilidade, como faz? Pq meu problema é refente à isso! Quando uma pessoa passa na marker e abre esse Shop6, aparece ele para todos os jogadores Link to comment
n3wage Posted May 31, 2015 Share Posted May 31, 2015 Hm entendi! Mas quando for um código assim guiSetVisible(ShopWindow6, true) Que não tem como alterar a visibilidade, como faz? Pq meu problema é refente à isso! Quando uma pessoa passa na marker e abre esse Shop6, aparece ele para todos os jogadores Poste o codigo completo, o problema deve estar no triggerServerEvent que você usa (se usa...). Link to comment
FelipeMallmann Posted May 31, 2015 Author Share Posted May 31, 2015 function onPedClick6(button, state, absX, absY, wx, wy, wz, element) if (element and getElementType(element) == "ped" and state=="down") then local x, y, z = getElementPosition(localPlayer) if (element == myPed6) then if getDistanceBetweenPoints3D(x, y, z, wx, wy, wz)<=3 then guiSetVisible(ShopWindow6, true) end end end end addEventHandler("onClientClick", root, onPedClick6) function markerhit6 (thePlayer, weaponmarker6) guiSetVisible(ShopWindow6, true) showCursor(true) end addEventHandler("onClientMarkerHit", weaponmarker6, markerhit6) Link to comment
DNL291 Posted June 6, 2015 Share Posted June 6, 2015 Tente verificando se: thePlayer == localPlayer Assim: function markerhit6 (thePlayer, dim) -- 'dim' verifica com um valor booleano se a dimensão da marca é a mesma que a do jogador if thePlayer == localPlayer then guiSetVisible(ShopWindow6, true) showCursor(true) end end addEventHandler("onClientMarkerHit", weaponmarker6, markerhit6) Link to comment
FelipeMallmann Posted June 8, 2015 Author Share Posted June 8, 2015 Funcionou DNL291! Muito obrigrado Mas se tu coloca no if para verificar se o player é o player que ta ali, ai ele abre, pq que nao continua a abrir para todos? Funcionou perfeitamente mas eu não entendi a logica nisso. Se puder me ajudar a entender Link to comment
#RooTs Posted June 8, 2015 Share Posted June 8, 2015 (edited) . Edited June 9, 2015 by Guest Link to comment
n3wage Posted June 9, 2015 Share Posted June 9, 2015 Funcionou DNL291! Muito obrigrado Mas se tu coloca no if para verificar se o player é o player que ta ali, ai ele abre, pq que nao continua a abrir para todos? Funcionou perfeitamente mas eu não entendi a logica nisso. Se puder me ajudar a entender thePlayer não é necessariamente o jogador local, por isso a checagem, imagine dois jogadores, a e b, se o jogador b (thePlayer) entrar na marker, ele não sera o jogador a (localPlayer para ele), por isso a checagem, sem ela a janela iria ser aberta para todos, a e b Link to comment
FelipeMallmann Posted June 9, 2015 Author Share Posted June 9, 2015 #RooTs, nao quero brigar com você nem nada, mas você está sempre respondendo os tópicos com coisas sem nexo algum e eu não sou o primeiro a pensar assim sobre você.. Não estou fazendo nenhuma critica nem nada, mas apenas uma observação, já tive uns 5 tópicos ou mais com respostas bem diferentes do que estou perguntando, tente cuidar isso. Eu entendo claramente as funções, só que não havia entendido a logica usada, pois pensei que mesmo verificando se o player for igual ao localPlayer, ele seria apto a abrir, mas que abriria para todos os outros, mas é que tem há o "else" que se ele não for localPlayer não acontece nada (isso que não havia percebido). De qualquer forma, muito Obrigado n3wage, DNL291 e #RooTs @EDIT Exato NewAge, demorei mas entendi! Muito obrigado Link to comment
#RooTs Posted June 9, 2015 Share Posted June 9, 2015 #RooTs, nao quero brigar com você nem nada, mas você está sempre respondendo os tópicos com coisas sem nexo algum e eu não sou o primeiro a pensar assim sobre você.. Não estou fazendo nenhuma critica nem nada, mas apenas uma observação, já tive uns 5 tópicos ou mais com respostas bem diferentes do que estou perguntando, tente cuidar isso.Eu entendo claramente as funções, só que não havia entendido a logica usada, pois pensei que mesmo verificando se o player for igual ao localPlayer, ele seria apto a abrir, mas que abriria para todos os outros, mas é que tem há o "else" que se ele não for localPlayer não acontece nada (isso que não havia percebido). De qualquer forma, muito Obrigado n3wage, DNL291 e #RooTs @EDIT Exato NewAge, demorei mas entendi! Muito obrigado legal cara, é bom eu saber disso. eu sempre tento ajudar todos da maneira que eu sei, se você não entende só lamento. sempre que você criar um tópico, apenas vou ignorar. forte abraço Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now