#Teus Posted April 7, 2018 Share Posted April 7, 2018 Ola, estou tentando editar o ''mod fome'' que tem aqui na comunidade. Eu queria colocar um painel (*GUI) que quando o player apertar o botao subir uma parte da % da barra e ele perder dinheiro, caso queira informaçoes detalhadas comunique abaixo Link to comment
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators Share Posted April 7, 2018 Qual o resource em questão? Qual tecla será usada para abrir esse painel GUI? Isso deve funcionar em qualquer lugar? Ou somente em lugares específicos? (dentro de lanchonetes por exemplo) Você chegou a abrir o código do resource para estudar como ele funciona? (Se o resource estiver compilado, você não tem permissão para alterá-lo) Link to comment
#Teus Posted April 7, 2018 Author Share Posted April 7, 2018 52 minutes ago, Lord Henry said: Qual o resource em questão? Qual tecla será usada para abrir esse painel GUI? Isso deve funcionar em qualquer lugar? Ou somente em lugares específicos? (dentro de lanchonetes por exemplo) Você chegou a abrir o código do resource para estudar como ele funciona? (Se o resource estiver compilado, você não tem permissão para alterá-lo) 1 -http://www.mtabrasil.com.br/2018/02/mod-fome-exclusivo.html (Esse resource) 2. Voce tera que chegar um cima do marker, dai vai aparecer uma mensagem em dx como por exemplo ''Aperte N para acessar o menu de lanches'' 3. Apenas em cima do marker na lanchonete 4. Ja estudei, inclusive fiz uma alteraçao que adicionei uma 2° barra, que no caso será de sede Link to comment
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators Share Posted April 7, 2018 (edited) Estou vendo aqui, que o resource calcula a fome somente com base no tamanho da barra de fome e não salva esse valor em lugar nenhum. Se o resource for reiniciado ou o jogador reconectar no servidor, ele volta ao 100%. Além disso, pelo que entendi do código, ele come automaticamente o hamburger ao encostar no marker, e recarrega de graça toda a fome. Mas você quer q seja necessário apertar a tecla N depois que entrou no marker para comprar o lanche. Na última função do markerHit (client.lua), delete a função e cole isso tudo: function recarregaFome (key, state) if (getHungerState (localPlayer) < 60) then if getPlayerMoney () >= 10 then setHungerState (localPlayer,100) outputChatBox ("Você pagou $10 pelo hamburger.",255,255,0,false) outputChatBox ("Você está alimentado :D",0,255,0,false) triggerServerEvent ("take10money", localPlayer) -- Executa a função no server.lua else outputChatBox ("Você não tem dinheiro suficiente!",255,0,0,false) end else outputChatBox ("Você não está com fome!",255,0,0,false) end end addEventHandler ("onClientMarkerHit",getRootElement(), function(hitEle,dim) if (localPlayer == hitEle) and (getElementData (source,"HAMBURGUER!") == true) then bindKey ("n", "down", recarregaFome) guiSetVisible (windowMessage, true) -- Mostra a mensagem GUI que já foi criada antes. end end) addEventHandler ("onClientMarkerLeave",getRootElement(), function(leaveEle,dim) if (localPlayer == leaveEle) and (getElementData (source,"HAMBURGUER!") == true) then unbindKey ("n", "down", recarregaFome) guiSetVisible (windowMessage, false) -- Oculta a mensagem GUI. end end) Para fazer o jogador pagar, você deve fazer isso server-side, pois tirar dinheiro do jogador client-side não vai dar certo, já que vai tirar uma "grana falsa" e ele vai continuar com a mesma quantidade no servidor. Para isso, crie um script server.lua, declare-o no meta.xml e coloque isso no server.lua: function pagarHamburger () takePlayerMoney (client, 10) end addEvent ("take10money", true) addEventHandler ("take10money", getRootElement(), pagarHamburger) Declaração no meta.xml: <script src="server.lua" type="server"/> Para criar a mensagem GUI, informando para apertar a tecla N para comprar o hamburger, volte ao início do script client.lua, no começo da primeira função e crie o painel GUI com a mensagem lá, bem no início da função do onClientResourceStart. Coloque isso lá: windowMessage = guiCreateWindow (0.0260,0.6,0.1828,0.08, "Lanchonete", true) message = guiCreateLabel (0.05,0.5,1,1,"Pressione 'N' para comprar hamburger.",true, windowMessage) guiSetVisible (windowMessage, false) Edited April 7, 2018 by Lord Henry 1 Link to comment
#Teus Posted April 7, 2018 Author Share Posted April 7, 2018 1 hour ago, Lord Henry said: Estou vendo aqui, que o resource calcula a fome somente com base no tamanho da barra de fome e não salva esse valor em lugar nenhum. Se o resource for reiniciado ou o jogador reconectar no servidor, ele volta ao 100%. Além disso, pelo que entendi do código, ele come automaticamente o hamburger ao encostar no marker, e recarrega de graça toda a fome. Mas você quer q seja necessário apertar a tecla N depois que entrou no marker para comprar o lanche. Na última função do markerHit (client.lua), delete a função e cole isso tudo: function recarregaFome (key, state) if (getHungerState (localPlayer) < 60) then if getPlayerMoney () >= 10 then setHungerState (localPlayer,100) outputChatBox ("Você pagou $10 pelo hamburger.",255,255,0,false) outputChatBox ("Você está alimentado :D",0,255,0,false) triggerServerEvent ("take10money", localPlayer) -- Executa a função no server.lua else outputChatBox ("Você não tem dinheiro suficiente!",255,0,0,false) end else outputChatBox ("Você não está com fome!",255,0,0,false) end end addEventHandler ("onClientMarkerHit",getRootElement(), function(hitEle,dim) if (localPlayer == hitEle) and (getElementData (source,"HAMBURGUER!") == true) then bindKey ("n", "down", recarregaFome) guiSetVisible (windowMessage, true) -- Mostra a mensagem GUI que já foi criada antes. end end) addEventHandler ("onClientMarkerLeave",getRootElement(), function(leaveEle,dim) if (localPlayer == leaveEle) and (getElementData (source,"HAMBURGUER!") == true) then unbindKey ("n", "down", recarregaFome) guiSetVisible (windowMessage, false) -- Oculta a mensagem GUI. end end) Para fazer o jogador pagar, você deve fazer isso server-side, pois tirar dinheiro do jogador client-side não vai dar certo, já que vai tirar uma "grana falsa" e ele vai continuar com a mesma quantidade no servidor. Para isso, crie um script server.lua, declare-o no meta.xml e coloque isso no server.lua: function pagarHamburger () takePlayerMoney (client, 10) end addEvent ("take10money", true) addEventHandler ("take10money", getRootElement(), pagarHamburger) Declaração no meta.xml: <script src="server.lua" type="server"/> Para criar a mensagem GUI, informando para apertar a tecla N para comprar o hamburger, volte ao início do script client.lua, no começo da primeira função e crie o painel GUI com a mensagem lá, bem no início da função do onClientResourceStart. Coloque isso lá: windowMessage = guiCreateWindow (0.0260,0.6,0.1828,0.08, "Lanchonete", true)message = guiCreateLabel (0.05,0.5,1,1,"Pressione 'N' para comprar hamburger.",true, windowMessage)guiSetVisible (windowMessage, false) Obrigado pela ajuda e desculpe te fazer gastar tempo =) será de grande importancia sua ajuda! Link to comment
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators Share Posted April 7, 2018 De nada, estamos aqui para ajudar. Link to comment
#Teus Posted April 7, 2018 Author Share Posted April 7, 2018 2 minutes ago, Lord Henry said: De nada, estamos aqui para ajudar. Aproveitando, me ajuda com o painel? qual a function devo adicionar pra quando o player clicar no butao perder money e aumentar a barra? -----------Painel function Painel() Painel1 = guiCreateWindow(477, 136, 260, 525, "ALIMENTOS", false) guiWindowSetSizable(Painel1, false) windowMessage = guiCreateWindow (0.0260,0.6,0.1828,0.08, "Lanchonete", true) message = guiCreateLabel (0.05,0.5,1,1,"Pressione 'N' para comprar hamburger.",true, windowMessage) guiSetVisible (windowMessage, false) Botao1 = guiCreateButton(0.08, 0.10, 0.53, 0.04, "HAMBURGUER", true, Painel1) guiSetFont(Botao1, "default-bold-small") guiSetProperty(Botao1, "NormalTextColour", "CBD80000") Botao2 = guiCreateButton(0.08, 0.16, 0.53, 0.04, "COCA-COLA", true, Painel1) guiSetFont(Botao2, "default-bold-small") guiSetProperty(Botao2, "NormalTextColour", "CBD80000") Botao3 = guiCreateButton(22, 118, 138, 23, "TACO", false, Painel1) guiSetFont(Botao3, "default-bold-small") guiSetProperty(Botao3, "NormalTextColour", "CBD80000") showCursor (true) addEventHandler ( "onClientGUIClick", Botao1, comida1, false ) end addCommandHandler ("comida", Painel) function comida1() showCursor(true) triggerServerEvent ( "onGreeting", resourceRoot ) end Link to comment
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators Share Posted April 7, 2018 No exemplo que eu dei, ele já faz isso quando vc aperta a tecla N em cima do marker. Ele desconta $10 do jogador. 1 Link to comment
#Teus Posted April 14, 2018 Author Share Posted April 14, 2018 Entao mano, eu fiz tudo que vc pediu acima e quando vou comprar comida (Mesmo com a barra mt baixa) aparece ''Voce nao esta com fome'' ,-, oq devo fazer agora? OBS: Demorei pra relatar o erro pois fui viajar Link to comment
Other Languages Moderators Lord Henry Posted April 14, 2018 Other Languages Moderators Share Posted April 14, 2018 (edited) Vi que você alterou o exemplo que mandei. Acho que seria mais fácil não usar botões em menus. Bastaria usar N para comprar o alimento que está no pickup. E vc está usando isso: addEventHandler ( "onClientGUIClick", Botao1, comida1, false ) Só vai funcionar para o Botao1. Pois a função só é ativada no Botao1. E você está criando o painel por meio de comando, isso dará erro se você tentar executar o painel sem ter criado ele. Na verdade usar comandos para criar painéis é um dos piores jeitos e nada otimizado. Você deve criar o painel ao iniciar o resource (onClientResourceStart), e logo em seguida deixá-lo invisível (guiSetVisible). Então na função que faz o painel aparecer, basta torná-lo visível novamente. Se você cria um painel por comando, você provavelmente vai precisar de outro comando para destruí-lo, sendo que é mais fácil apenas ocultá-lo. Edited April 14, 2018 by Lord Henry 1 Link to comment
#Teus Posted April 15, 2018 Author Share Posted April 15, 2018 3 hours ago, Lord Henry said: Vi que você alterou o exemplo que mandei. Acho que seria mais fácil não usar botões em menus. Bastaria usar N para comprar o alimento que está no pickup. E vc está usando isso: addEventHandler ( "onClientGUIClick", Botao1, comida1, false ) Só vai funcionar para o Botao1. Pois a função só é ativada no Botao1. E você está criando o painel por meio de comando, isso dará erro se você tentar executar o painel sem ter criado ele. Na verdade usar comandos para criar painéis é um dos piores jeitos e nada otimizado. Você deve criar o painel ao iniciar o resource (onClientResourceStart), e logo em seguida deixá-lo invisível (guiSetVisible). Então na função que faz o painel aparecer, basta torná-lo visível novamente. Se você cria um painel por comando, você provavelmente vai precisar de outro comando para destruí-lo, sendo que é mais fácil apenas ocultá-lo. N to usando mais painel, dei uma pesquisada e descobri que painel dxa o servidor pesado ent desisti de usar, msm sem painel (do jeito que vc mandou em cima) n funciona .-. Link to comment
DNL291 Posted April 15, 2018 Share Posted April 15, 2018 8 hours ago, #Teus said: Entao mano, eu fiz tudo que vc pediu acima e quando vou comprar comida (Mesmo com a barra mt baixa) aparece ''Voce nao esta com fome'' ,-, oq devo fazer agora? OBS: Demorei pra relatar o erro pois fui viajar Primeiramente, nesses casos você precisa depurar seu código, colocando um output para o chat pra saber o que getHungerState realmente retorna. Você poderia postar seu código aqui, ou se não quiser compartilhar ele publicamente é só enviar em privado pra alguém que possa te ajudar. 1 Link to comment
TeixeiraRB Posted April 15, 2018 Share Posted April 15, 2018 Aproveita que o amigo abriu esse Topico, queria tirar uma duvida sobre esse recurso. Tem algum jeito de fazer o sistema de fome so que a barra em dx? e como? Link to comment
DNL291 Posted April 15, 2018 Share Posted April 15, 2018 36 minutes ago, TeixeiraRB said: Aproveita que o amigo abriu esse Topico, queria tirar uma duvida sobre esse recurso. Tem algum jeito de fazer o sistema de fome so que a barra em dx? e como? Você se refere ao dx-rectangle funcionando como o progress-bar da GUI? Use uma variável com o tamanho total da barra; digamos que você nomeia ela como barWidth. Você vai precisar fazer o seguinte calculo no 3º argumento de dxDrawRectangle, que é a largura: progressoAtual = (getHungerState() / 100) * barWidth Se você quer dizer o calculo da barra, isso é o principal, que é o calculo do progresso atual. Link to comment
Other Languages Moderators Lord Henry Posted April 15, 2018 Other Languages Moderators Share Posted April 15, 2018 Eu fiz um resource de fome/sede/sono que funciona assim. As barras aparecem em DX. O preço e tipo de alimento que é carregado depende do pickup (que também pode ser uma bebida). O sono é o mais simples, basta usar /dormir, dai o personagem faz animação de dormindo e começa a recarregar o sono aos poucos. Se quiserem, posso fazer um vídeo mostrando como funciona. Link to comment
TeixeiraRB Posted April 16, 2018 Share Posted April 16, 2018 15 hours ago, DNL291 said: Você se refere ao dx-rectangle funcionando como o progress-bar da GUI? Use uma variável com o tamanho total da barra; digamos que você nomeia ela como barWidth. Você vai precisar fazer o seguinte calculo no 3º argumento de dxDrawRectangle, que é a largura: progressoAtual = (getHungerState() / 100) * barWidth Se você quer dizer o calculo da barra, isso é o principal, que é o calculo do progresso atual. Tipo fazer um resource de fome do 0 so que em dx. 5 hours ago, Lord Henry said: Eu fiz um resource de fome/sede/sono que funciona assim. As barras aparecem em DX. O preço e tipo de alimento que é carregado depende do pickup (que também pode ser uma bebida). O sono é o mais simples, basta usar /dormir, dai o personagem faz animação de dormindo e começa a recarregar o sono aos poucos. Se quiserem, posso fazer um vídeo mostrando como funciona. Ficaria muito agradecido por ver o video Link to comment
#Teus Posted April 16, 2018 Author Share Posted April 16, 2018 Problema Resolvido. Obrigado a todos =) Link to comment
Other Languages Moderators Lord Henry Posted April 16, 2018 Other Languages Moderators Share Posted April 16, 2018 15 hours ago, TeixeiraRB said: Ficaria muito agradecido por ver o video Ta ae o vídeo: Spoiler https://www.youtube.com/watch?v=PFwGpoOtQvU&index=4&t=0s&list=PLfmz7dULp2ueFkL8o8yNJeyEfNY1j57kU Mais detalhes estão no comentário fixado do vídeo. 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