nelsonjrr23 Posted February 2, 2014 Share Posted February 2, 2014 oi , eu queria criar um Sistema de Level mas para dar inicio precisava de saber como por uma barra aumentando a cada xp que ganhasse Bem eu queria usar esta funcao mas nao sei como mete para ele ir aumentando por cada xp que ganhe function clientResourceStart( ) progressBar = guiCreateProgressBar( 0.8, 0.8, 0.1, 0.1, true, nil ) end addEventHandler( "onClientResourceStart", getRootElement(), clientResourceStart ) function clientResourceStop( ) destroyElement( progressBar ) end addEventHandler( "onClientResourceStop", getRootElement(), clientResourceStop ) Link to comment
DNL291 Posted February 2, 2014 Share Posted February 2, 2014 Para aumentar a barra de progresso, faça isso: function addExp(exp) guiProgressBarSetProgress(progressBar, guiProgressBarGetProgress(progressBar) + exp) end E chame a função addExp para adicionar mais xp. Link to comment
nelsonjrr23 Posted February 2, 2014 Author Share Posted February 2, 2014 Qual é essa funçao addExp como a uso ? Tem no mta wiki ? Link to comment
manawydan Posted February 3, 2014 Share Posted February 3, 2014 voce poderia usa o recurso exp_system de castilo e usa suas funções exportadas https://community.multitheftauto.com/in ... ls&id=1253 Link to comment
DNL291 Posted February 3, 2014 Share Posted February 3, 2014 Sim, ele pode baixar o exp_system do Castillo, mas acredito que ele queira criar o sistema de nível dele próprio. Qual é essa funçao addExp como a uso ? Tem no mta wiki ? No argumento exp, você deve colocar o valor que irá aumentar o progresso, creio que você deverá antes calcular a porcentagem do valor que irá aumentar o progresso, pois a barra de progresso trabalha com porcentagem (0-100). E esse valor deve ser um número. Link to comment
Stanley Sathler Posted February 8, 2014 Share Posted February 8, 2014 Você vai precisar trabalhar um pouco com matemática. Vamos lá: Qual a experiência máxima que o jogador pode atingir para subir de level? O progressBar trabalha, como anteriormente dito, com valores de 0 a 100. Logo, você precisa antes calcular: a cada uma unidade do progressBar, quanto será de experiência? Para tal, calculamos: - Supondo que o exp máximo p/ subir de level seja 200, calculamos: 200/100 = 2. Logo, a cada 2 (dois) de exp, o progressBar vai ganhar 1 (um) de unidade. -- @fileName: client.lua -- @description: esse arquivo necessita ser um client-sided function clientResourceStart( ) progressBar = guiCreateProgressBar( 0.8, 0.8, 0.1, 0.1, true, nil ) end addEventHandler( "onClientResourceStart", getRootElement(), clientResourceStart ) function clientResourceStop( ) destroyElement( progressBar ) end addEventHandler( "onClientResourceStop", getRootElement(), clientResourceStop ) addEvent("onGetExp", true) function addExp(exp) setElementData(localPlayer, "exp", exp) exp = exp/2 guiProgressBarSetProgress(progressBar, guiProgressBarGetProgress(progressBar) + exp) end addEventHandler("onGetExp", resourceRoot, addExp) Bom, esse é seu código geral. Agora, vamos supor que quando um jogador mata um outro jogador, este ganha 15 de experiência. Você vai usar esse código em um arquivo server-sided: -- @fileName: server.lua -- @description: esse arquivo necessita ser um server-sided addEventHandler("onGetExp", resourceRoot, function(attacker, weapon, bodypart, loss) -- source da funcao eh o jogador assassinado killPed(source, attacker, weapon, bodypart) triggerClientEvent("onGetExp", attacker, 15) -- 15 significa a exp ganha ao matar o jogador end) ----------------------------------------------- Isso é um código MUITO básico. Inúmeros detalhes precisariam ser adicionados como, por exemplo, a necessidade de se salvar a experiência do usuário usando setAccountData() toda vez que ele sair (uma vez que os dados salvos com setElementData() são perdidos quando o elemento sai ou é destruído). Outra necessidade é definir (usando guiProgressBarSetProgress()) o exp toda vez que o usuário entrar no jogo. Enfim, são muitas coisas que precisariam ser adicionadas. Outra: eu não sei se o código está 100% certo pois não testei. Escrevi um esboço. Se não entender de scripting você ficará um pouco perdido, é necessário se dedicar. Link to comment
nelsonjrr23 Posted February 8, 2014 Author Share Posted February 8, 2014 Obrigado StanleySathler ajudou bastante . Estarei testando e fazendo o resource completo. Link to comment
manawydan Posted February 8, 2014 Share Posted February 8, 2014 boa sorte, se precisa de alguma ajudinha poste aki neste tópico Link to comment
DNL291 Posted February 9, 2014 Share Posted February 9, 2014 Lembre-se sempre de colocar resourceRoot como elemento anexado ao evento onClientResourceStart/Stop, a menos que queira que o evento seja chamado quando qualquer resource for iniciado. E acredito que o Stanley quis colocar o evento onPlayerWasted no lado server, onde está onGetExp. O evento também está com os argumentos diferentes do evento onPlayerWasted. Os argumentos corretos são: totalAmmo, killer, killerWeapon, bodypart, stealth (parece que está com os argumentos do evento onPlayerDamage). Obs: use root, em vez de resourceRoot nesse caso (o mesmo serve para o evento onGetExp no lado client). E também, a função clientResourceStop, que destrói o elemento gui-progressBar será inútil, pois quando o resource for parado, automaticamente o elemento será destruído. Corrigi apenas para evitar que você tivesse erros posteriores com relação a isso, e como Stanley disse, o código não foi testado. Voltando ao foco do tópico, você pode usar um método de porcentagem para calcular o valor que será adicionado ao progressBar. Exemplo: Se a exp máxima for um valor de 450, e a exp que será acrescentada for 12, você deve fazer o seguinte para calcular a porcentagem que será acrescentada na barra de progresso: 12*100 /450 --> 2.66 Será um calculo mais exato e infalível. Eu uso o método de porcentagem para calcular diversas coisas. Link to comment
Rangel Posted October 31, 2019 Share Posted October 31, 2019 (edited) Aproveitando que a discussão era Sistem de Level, Queria saber se tem como colocar algum comando nesse script, que deixe o level "Setável" Como por exemplo ---------------------- /setlevel [JOGADOR] {QUANTIDADE] --[[ ################################################ # # # Script Criado Por # # FACEBOOK.COM/AIRNEWSCR # # # # # ################################################ --]] -------------------------------------------------------------------------------------------- exports [ "scoreboardTOP" ]:addScoreboardColumn ( "Level") -------------------------------------------------------------------------------------------- function convertS(s) if type(tonumber(s)) == "number" then milisegundo = s local horas_seg=3600 local hora = math.floor(milisegundo/horas_seg) local minuto = math.floor((milisegundo-(horas_seg*hora))/60) local segundo = math.floor((milisegundo-(horas_seg*hora)-(minuto*60))) local tudo = string.format("%02d:%02d:%02d",hora,minuto,segundo) local dia = math.floor(s/86400) return hora,minuto,segundo,tudo,dia else return 0,0,0,0,0 end end -------------------------------------------------------------------------------------------- function saveData(conta) if conta then local source = getAccountPlayer(conta) local level = getElementData(source,"Level") or 0 local exp = getElementData(source,"LSys:EXP") or 0 local onlinetime = getElementData(source,"LSys:Online") or 0 local mins = getElementData(source,"LSys:Mins") or 0 setAccountData (conta, "Level",level) setAccountData (conta, "LSys:EXP",exp) setAccountData (conta, "LSys:Online",onlinetime) setAccountData (conta, "LSys:Mins",mins) end end -------------------------------------------------------------------------------------------- function loaddata(conta) if not (isGuestAccount (conta)) then if (conta) then local source = getAccountPlayer(conta) local level = getAccountData(conta,"Level") if type(level) == "boolean" or level == nil then level = 0 end setElementData (source, "Level", tonumber(level)) setElementData (source, "LSys:EXP",tonumber(getAccountData(conta,"LSys:EXP")) or 0) setElementData (source, "LSys:Online",tonumber(getAccountData(conta,"LSys:Online")) or 0) setElementData (source, "LSys:Mins",tonumber(getAccountData(conta,"LSys:Mins")) or 0) end end end -------------------------------------------------------------------------------------------- function timecount() for i, player in ipairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if acc then if not isGuestAccount(acc) then local level = getElementData(player,"Level") or 0 if tonumber(level) == nil then level = 0 end local exp = getElementData(player,"LSys:EXP") or 0 if tonumber(exp) == nil then exp = 0 end local onlinetime = getElementData(player,"LSys:Online") or 0 if tonumber(onlinetime) == nil then onlinetime = 0 end local mins = getElementData(player,"LSys:Mins") or 0 if tonumber(mins) == nil then mins = 0 end if not getElementData(player,"afkdate",true) then if tonumber(mins) == 600 then setElementData(player,"LSys:Mins",1) if tonumber(exp) == 5 then setElementData(player,"LSys:EXP",0) setElementData(player,"Level",tonumber(level)+1) outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Ganhou +1 de Experiência. (".. tonumber(exp)+1 .."/6)", player, 255, 255, 255, true ) outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Juntou 6 de Experiência e Ganhou +1 Level ("..tonumber(level)+1 ..")", player, 255, 255, 255, true ) playSoundFrontEnd ( player, 45 ) DarSalario (player) -- Efetua os Pagamentos dos Jogadores else outputChatBox ( "#ffffff[ #82FA58UP #ffffff] - Você Ganhou +1 de Experiência. (".. tonumber(exp)+1 .."/6)", player, 255, 255, 255, true ) setElementData(player,"LSys:EXP",tonumber(exp)+1) playSoundFrontEnd ( player, 44 ) end elseif tonumber(mins) < 600 then setElementData(player,"LSys:Mins",tonumber(mins)+1) end setElementData(player,"LSys:Online",tonumber(onlinetime)+1) end end end end end setTimer(timecount,1000,0) function DarSalario (player) local account = getPlayerAccount (player) local accname = getAccountName (account) local Jogador = getPlayerName (player) EmpregoAtual = getElementData ( player, "Emprego" ) sDesempregado = 300 sEntregadorDeJornal = 500 sPizzaBoy = 600 sMotoristaDeUber = 700 sMecanico = 800 sPetroleiro = 900 sMotoristaDeOnibus = 1000 sPilotoDeAviao = 1100 sEntregadorDeMalote = 2000 sEmpresarioDeFabricas = 10000 sPetroleiro = 1200 sEntregadorDeMaconha = 2500 sPilotoDeHelicoptero = 1500 sEntregadorDeEtanol = 1500 sPilotoDeCorrida = 1000 sEntregadorDePescador = 2000 SeguroDeVida = getElementData ( player, "Hospital:SeguroDeVida" ) MensalidadeSeguroDeVida = 150 outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Salário #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ALogin da Conta #ffffff: #9ABDE0"..accname.." / #BEE09ANick #ffffff: #9ABDE0"..Jogador.."", player, 255, 255, 255, true ) if EmpregoAtual == "Entregador de Jornal" then givePlayerMoney ( player, sEntregadorDeJornal ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEntregadorDeJornal.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Entregador De Pescador" then givePlayerMoney ( player, sEntregadorDePescador ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEntregadorDePescador.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Piloto De Corrida" then givePlayerMoney ( player, sPilotoDeCorrida ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPilotoDeCorrida.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Entregador De Etanol" then givePlayerMoney ( player, sEntregadorDeEtanol ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEntregadorDeEtanol.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Piloto De Helicoptero" then givePlayerMoney ( player, sPilotoDeHelicoptero ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPilotoDeHelicoptero.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "PizzaBoy" then givePlayerMoney ( player, sPizzaBoy ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPizzaBoy.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Entregador De Maconha" then givePlayerMoney ( player, sEntregadorDeMaconha ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEntregadorDeMaconha.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Petroleiro" then givePlayerMoney ( player, sPetroleiro ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPetroleiro.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Empresario De Fabricas" then givePlayerMoney ( player, sEmpresarioDeFabricas ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEmpresarioDeFabricas.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Motorista de Uber" then givePlayerMoney ( player, sMotoristaDeUber ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sMotoristaDeUber.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Mecanico" then givePlayerMoney ( player, sMecanico ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sMecanico.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Petroleiro" then givePlayerMoney ( player, sPetroleiro ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPetroleiro.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Motorista de Onibus" then givePlayerMoney ( player, sMotoristaDeOnibus ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sMotoristaDeOnibus.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Piloto de Aviao" then givePlayerMoney ( player, sPilotoDeAviao ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sPilotoDeAviao.."", player, 255, 255, 255, true ) elseif EmpregoAtual == "Entregador de Malote" then givePlayerMoney ( player, sEntregadorDeMalote ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0"..EmpregoAtual.."", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sEntregadorDeMalote.."", player, 255, 255, 255, true ) elseif EmpregoAtual == false then givePlayerMoney ( player, sDesempregado ) outputChatBox ( "#F96031» #BEE09AProfissão Atual #ffffff: #9ABDE0Desempregado", player, 255, 255, 255, true ) outputChatBox ( "#F96031» #BEE09ASalário da Profissão #ffffff: #9ABDE0$"..sDesempregado.."", player, 255, 255, 255, true ) end if SeguroDeVida == true then takePlayerMoney ( player, MensalidadeSeguroDeVida ) outputChatBox ( "#F96031» #BEE09AMensalidade do Seguro de Vida #ffffff: #FA5858-$"..MensalidadeSeguroDeVida.."", player, 255, 255, 255, true ) end outputChatBox ( "#F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #F96031Salário #F9A631~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", player, 255, 255, 255, true ) end -------------------------------------------------------------------------------------------- function meulevel(source) triggerClientEvent(source,"SHOW.WINDOW.LEVELSYS",source,true) end addCommandHandler("meulevel",meulevel) -------------------------------------------------------------------------------------------- addEventHandler("onPlayerLogin", root, function( _, acc ) setTimer(loaddata,1000,1,acc) end ) -------------------------------------------------------------------------------------------- function startScript ( res ) if res == getThisResource() then for i, player in ipairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if not isGuestAccount(acc) then loaddata(acc) end end end end addEventHandler ( "onResourceStart", getRootElement(), startScript ) -------------------------------------------------------------------------------------------- function stopScript( res ) if res == getThisResource() then for i, player in ipairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if not isGuestAccount(acc) then saveData(acc) end end end end addEventHandler ( "onResourceStop", getRootElement(), stopScript ) -------------------------------------------------------------------------------------------- function deslogar(acc) cancelEvent () end addEventHandler("onPlayerLogout",getRootElement(),deslogar) -------------------------------------------------------------------------------------------- function sair ( quitType ) local acc = getPlayerAccount(source) if not (isGuestAccount (acc)) then if acc then saveData(acc) end end end addEventHandler ( "onPlayerQuit", getRootElement(), sair ) -------------------------------------------------------------------------------------------- Edited October 31, 2019 by Rangel 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