#Teus Posted April 7, 2018 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
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators 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)
#Teus Posted April 7, 2018 Author 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
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators 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
#Teus Posted April 7, 2018 Author 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!
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators Posted April 7, 2018 De nada, estamos aqui para ajudar.
#Teus Posted April 7, 2018 Author 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
Other Languages Moderators Lord Henry Posted April 7, 2018 Other Languages Moderators 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
#Teus Posted April 14, 2018 Author 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
Other Languages Moderators Lord Henry Posted April 14, 2018 Other Languages Moderators 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
#Teus Posted April 15, 2018 Author 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 .-.
DNL291 Posted April 15, 2018 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
TeixeiraRB Posted April 15, 2018 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?
DNL291 Posted April 15, 2018 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.
Other Languages Moderators Lord Henry Posted April 15, 2018 Other Languages Moderators 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.
TeixeiraRB Posted April 16, 2018 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
Other Languages Moderators Lord Henry Posted April 16, 2018 Other Languages Moderators 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.
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