Ir para conteúdo
  • Cadastre-se

Action%252525252FTalkaction TalkAction !stamina (Recupera stamina e dá uma potion de stamina)


Posts Recomendados

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! :D

 

 
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 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!

Link para o post
Compartilhar em outros sites

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!

Link para o post
Compartilhar em outros sites

Tive que fazer algumas alterações pra rodar no TFS 0.4, mas deu certo! :D

Fiquei feliz, se alguém usar por favor me avise! Abraços!

 

Gle5vOS.jpg

[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!

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo