Postado Julho 26, 2014 10 anos Primeiramente agradecer à: http://www.tibiaking.com/forum/topic/32839-tfs-10-stamina-refuel/ Que serviu como uma das bases para esse script. É o seguinte o script acima é o de stamina potion que eu adaptei aqui, e a partir dele criei uma talkaction !stamina Onde você compra stamina, recebe de brinde um stamina potion e a sua stamina se enche para 42 horas. É tudo configurável e vou tentar explicar ao máximo como fazer isso. PS: Os dois scripts ainda não foram testados mas acho que estão ok! Primeiro o do potion: Adicione em actions.xml a seguinte linha: <action itemid="9000" script="staminapotion.lua"/> É o seguinte, eu ainda não defini qual é o item stamina potion, por isso deixei o id "9000", mas vocês poderão escolher um item no seu servidor e definir ele como stamina potion, basta pegar o itemid dele e colocar no lugar de 9000. Crie agora um arquivo com o nome de staminapotion.lua em actions/scripts e coloque isso dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) local stamina_full = 42 * 60 -- config. 42 = horas local player = Player(cid) if player:getStamina() >= stamina_full then player:sendCancelMessage("Your stamina is already full.") elseif player:getPremiumDays() < 1 then player:sendCancelMessage("You must have a premium account.") else player:setStamina(stamina_full) player:sendTextMessage(MESSAGE_INFO_DESCR, "Your stamina has been refilled.") Item(item.uid):remove(1) -- player:removeItem(item.uid) ??? end return true end Ao ser clicado, o item escolhido acima, vai adicionar X horas de stamina ao seu jogador, e remover o item em seguida. Lembrando que este script funciona apenas para premmium account. Caso queira que funcione para qualquer player, remova as linhas em verde no script acima. Bom, até aí foi basicamente o post que eu citei no começo do tópico. Agora vamos entrar na talkaction que eu editei e criei algumas coisas para funcionar legal. Quer dizer, espero que funcione! Vamos lá galera! Primeiro adicione em talkactions.xml a seguinte linha: <talkaction words="!buystamina" event="script" value="stamina.lua"/> Ou seja, a partir do comando !buystamina, o jogador poderá executar o script stamina.lua Que nós vamos conhecer agora! Adicione um arquivo chamado stamina.lua na pasta talkactions/scripts e coloque dentro: function onSay(cid, words, param, channel) local config = { stamina = getPlayerStamina(cid), -- Nao precisa mexer staminasafe = 40 * 60, -- Nao esta em uso no script, mas posso explicar depois costPremiumDays = 1, -- Quanto custa pra comprar stamina com o comando !buystamina quant = 1, -- Quantas potions você ganha de brinde com o comando !buystamina premdays = 20, -- O minimo de premdays para comprar a stamina } local stamina_full = 42 * 60 -- config. 42 = horas local player = Player(cid) local staminapotion = 9000 -- ID do item stamina potion (igual ao da action do outro script) if config.stamina >= stamina_full then doPlayerSendCancelMessage("Your stamina is already full.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end if(getPlayerPremiumDays(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, not enough premium time. Calling for stamina costs " .. config.costPremiumDays .. " days.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end if(getPlayerPremiumDays(cid) < config.premdays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You must have more than " .. config.premdays .. "premmium days in order to purchase more stamina.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end if(getPlayerPremiumDays(cid) < 39000) then doPlayerAddPremiumDays(cid, -config.costPremiumDays) end player:setStamina(stamina_full) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have fullfilled stamina and lost " .. config.costPremiumDays .. " days of premium time.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) doPlayerAddItem(cid, staminapotion, config.quant) if isPlayer(cid) then doPlayerPopupFYI(cid, "Your stamina is "..config.stamina..".") end return true end O que o script faz? Você compra stamina, ganha uma ou mais potions de stamina de brinde, e paga com Premmium Days. Quando você usa o comando, ele checa como está sua stamina, se estiver cheia você não pode comprar. Depois ele checa se você é premmium account ou não, se não for e não tiver premmium days o suficiente, não pode comprar. Depois ele checa se você tem no mínimo 20 dias de Prem Days, para evitar que se gaste muitos Premmium Days nesse comando, ele bloqueia a compra de quem tiver menos que, ou 20 dias. Depois disso, se você passou pelas validações anteriores e tiver PremDays, você consegue comprar a stamina, ela se enche na hora, você ganha x potions de brinde e recebe uma mensagem dizendo de quanto é a sua stamina. Bom, agora explicando só o porque coloquei staminasafe lá no começo... Se você quiser que o player só compre stamina caso a dele esteja menor do que 40 horas ou outra hora, você pode tanto mudar o horário no stamina_full ou colocar uma linha a mais no código, em baixo de if config.stamina >= stamina_full then doPlayerSendCancelMessage("Your stamina is already full.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end você colocaria: if config.stamina > config.staminasafe then doPlayerSendCancelMessage("Your stamina must be lower than " .. config.staminasafe .. ", to buy more stamina.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end O que iria colocar uma condição nova para comprar a !stamina, que é de que você tem que ter menos de X stamina para poder comprar, e esse valor você define em staminasafe = 40 ou o valor que você quiser. Se tiver algum erro ou alguma dúvida, podem perguntar! Obrigado e um abraço à todos! E detalhe, o ITEM de itemid 9000 é só um exemplo, não sei que item é esse e ainda não defini um para o staminapotion pois não testei no otserver isso ainda, portanto não usem o 9000 porque eu não sei que item é e se for algum item estranho pode bugar. Editado Julho 26, 2014 10 anos por krellgaming (veja o histórico de edições) [TalkAction] Comando !stamina e stamina potion. http://www.tibiaking.com/forum/topic/38953-talkaction-stamina-recupera-stamina-e-d%C3%A1-uma-potion-de-stamina/ Krell Gaming, OTServer estará ONLINE em breve! Training Offline Tasks, Mounts, Addons, Outfits Quests baú, Quests lógicas, Quests misteriosas Mistery Box (Itens Aleatórios), Upgrade your Itens(Melhorar os atributos dos itens), Frag Remover, Monster Cards Stamina System e Stamina Potion Castle com sistema próprio Área Free com variadas e equilibradas hunts. Mapa RPG porém equilibrado às rates do servidor. Rates Variadas (Stages que podem variar de exp alta pra baixa, não baixando sempre como a maioria) Drop rate: variando entre 3 ou mais x Skills e ML: 20/10 Houses apenas para premium accounts. Premium Account = 15 reais um mês. Aproveite!
Postado Julho 27, 2014 10 anos Autor Obrigado mano, voltei a mexer com otservers e como eu costumava ser scripter, voltei a estudar lua e c++ para ir desenvolvendo alguns scripts, consegui chegar nesse aí mas ainda to aprendendo as funções dos ots, são muitas e estão cada vez mais diferentes de antigamente hahahaha Abraços! [TalkAction] Comando !stamina e stamina potion. http://www.tibiaking.com/forum/topic/38953-talkaction-stamina-recupera-stamina-e-d%C3%A1-uma-potion-de-stamina/ Krell Gaming, OTServer estará ONLINE em breve! Training Offline Tasks, Mounts, Addons, Outfits Quests baú, Quests lógicas, Quests misteriosas Mistery Box (Itens Aleatórios), Upgrade your Itens(Melhorar os atributos dos itens), Frag Remover, Monster Cards Stamina System e Stamina Potion Castle com sistema próprio Área Free com variadas e equilibradas hunts. Mapa RPG porém equilibrado às rates do servidor. Rates Variadas (Stages que podem variar de exp alta pra baixa, não baixando sempre como a maioria) Drop rate: variando entre 3 ou mais x Skills e ML: 20/10 Houses apenas para premium accounts. Premium Account = 15 reais um mês. Aproveite!
Postado Julho 28, 2014 10 anos Autor Tive que fazer algumas alterações pra rodar no TFS 0.4, mas deu certo! Fiquei feliz, se alguém usar por favor me avise! Abraços! [TalkAction] Comando !stamina e stamina potion. http://www.tibiaking.com/forum/topic/38953-talkaction-stamina-recupera-stamina-e-d%C3%A1-uma-potion-de-stamina/ Krell Gaming, OTServer estará ONLINE em breve! Training Offline Tasks, Mounts, Addons, Outfits Quests baú, Quests lógicas, Quests misteriosas Mistery Box (Itens Aleatórios), Upgrade your Itens(Melhorar os atributos dos itens), Frag Remover, Monster Cards Stamina System e Stamina Potion Castle com sistema próprio Área Free com variadas e equilibradas hunts. Mapa RPG porém equilibrado às rates do servidor. Rates Variadas (Stages que podem variar de exp alta pra baixa, não baixando sempre como a maioria) Drop rate: variando entre 3 ou mais x Skills e ML: 20/10 Houses apenas para premium accounts. Premium Account = 15 reais um mês. Aproveite!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.