Jump to content

Olá Tibiano! Notamos que você está com um adblocker ligado... 

Nós promovemos servidores dentro da comunidade, para que eles tenham visibilidade.

Por favor, nos ajude a continuar promovendo esses servidores. Adicione nosso domínio na whitelist de seu adblocker, ok? :)

  • 0
wizav01

lua [Resolvido] Knight spell ! Rep++

Question

Versão do Servidor: TFS - 0.4
Tipo de Script: spell
Código:

Please login or register to see this spoiler.

boa rapeize, alguem pode ajudar, como faço uma spell, que ela sejá apenas para o knight, ou vocation 4 - 8...
eu não quero escrever ela e ativar, quero que ela seja propria do personagem sem escrever nada sem ativar...

bom seguinte, quando o knight tiver com vida menor que 30% do total da vida dele... ele ganha + 20 de skill, axe sword e club... tem como alguém ajudar ? 

lembrando, eu não quero ativar ela igual utito tempo, e não quero que tenha um tempo determinado, quero que seja do personagem... ta com -30% de life ele ganha skill... 
agradeço desde já !

Edited by wizav01
Mudança de plano

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 1
--<event type="statschange" name="SpellBuff" event="script" value="spellbuff.lua"/>--
--<event type="login" name="RegisterBuff" event="script" value="spellbuff.lua"/>--

local vocations = {4, 8} -- ID das vocations que receberao o buff
local percentageToActive = 0.30 -- 30%
local bonusSkill = 20 -- Quantidade de skill que o buff vai dar

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, bonusSkill)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * percentageToActive) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
		if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * percentageToActive) then
			doAddCondition(cid, condition)
		end	
	end
	return true
end

function onLogin(cid)
	if isInArray(vocations, getPlayerVocation(cid)) then
		registerCreatureEvent(cid, "SpellBuff")
	end
	return true
end

 

Edited by Woox

Share this post


Link to post
Share on other sites
  • 0
17 horas atrás, Woox disse:
local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * 0.30) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
        if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * 0.30) then
			doAddCondition(cid, condition)
        end	
	end
	return true
end

 

Aonde colocamos ela? globalevents? tem que registar no login?

como colocar pra enquanto o personagem ficar com 30% de hp ela ficar ativa?
se caso ele healar e ficar com + de 30% de hp essa "passiva" acabe?

Edited by diarmaint

Share this post


Link to post
Share on other sites
  • 0
47 minutos atrás, diarmaint disse:

Aonde colocamos ela? globalevents? tem que registar no login?

como colocar pra enquanto o personagem ficar com 30% de hp ela ficar ativa?
se caso ele healar e ficar com + de 30% de hp essa "passiva" acabe?

Tinha postado tarde, tava cansado pra explicar, é creaturescript. Editei o script e deixei esses dados configuráveis e já vai com login pra registrar, o buff já está funcionando desta maneira, ativa com -30% de life, acima disso é desativado.

Share this post


Link to post
Share on other sites
  • 0
8 minutos atrás, Woox disse:

Tinha postado tarde, tava cansado pra explicar, é creaturescript. Editei o script e deixei esses dados configuráveis e já vai com login pra registrar, o buff já está funcionando desta maneira, ativa com -30% de life, acima disso é desativado.

o que mais eu poderia usar no lugar desse 

setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)

para outras vocações?

Share this post


Link to post
Share on other sites
  • 0
1 minuto atrás, diarmaint disse:

o que mais eu poderia usar no lugar desse 

setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)

para outras vocações?

CONDITION_PARAM_STAT_MAGICLEVEL
CONDITION_PARAM_SKILL_FIST
CONDITION_PARAM_SKILL_CLUB
CONDITION_PARAM_SKILL_SWORD
CONDITION_PARAM_SKILL_AXE
CONDITION_PARAM_SKILL_DISTANCE
CONDITION_PARAM_SKILL_SHIELD

 

Edited by Woox

Share this post


Link to post
Share on other sites
  • 0
1 minuto atrás, Woox disse:
CONDITION_PARAM_SKILL_FIST
CONDITION_PARAM_SKILL_CLUB
CONDITION_PARAM_SKILL_SWORD
CONDITION_PARAM_SKILL_AXE
CONDITION_PARAM_SKILL_DISTANCE
CONDITION_PARAM_SKILL_SHIELD

 

Algo além de skills? tipo almento de dano ?

increasemagicpercent

 

Share this post


Link to post
Share on other sites
  • 0
1 minuto atrás, diarmaint disse:

Algo além de skills? tipo almento de dano ?

increasemagicpercent

 

Não nesse caso, você pode encontrar os skills e stats que podem ser alterados na lib 000-constant.lua do seu servidor.

Share this post


Link to post
Share on other sites
  • 0
18 horas atrás, Woox disse:
--<event type="statschange" name="SpellBuff" event="script" value="spellbuff.lua"/>--
--<event type="login" name="RegisterBuff" event="script" value="registerbuff.lua"/>--

local vocations = {4, 8} -- ID das vocations que receberao o buff
local percentageToActive = 0.30 -- 30%
local bonusSkill = 20 -- Quantidade de skill que o buff vai dar

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, bonusSkill)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * percentageToActive) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
		if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * percentageToActive) then
			doAddCondition(cid, condition)
		end	
	end
	return true
end

function onLogin(cid)
	if isInArray(vocations, getPlayerVocation(cid)) then
		registerCreatureEvent(cid, "SpellBuff")
	end
end

 

Então vou deixar o xml como 

spellbuff.lua

dai eu mudei a vocação e pronto, to usando 0.4 e não aconteceu nada..

Share this post


Link to post
Share on other sites
  • 0
4 horas atrás, diarmaint disse:

Então vou deixar o xml como 

spellbuff.lua

dai eu mudei a vocação e pronto, to usando 0.4 e não aconteceu nada..

Deixei as tags as serem usadas no XML nas primeiras linhas do script. Você provavelmente configurou algo errado, o script está funcional.

Share this post


Link to post
Share on other sites
  • 0
Em 21/03/2019 em 04:13, Woox disse:

Deixei as tags as serem usadas no XML nas primeiras linhas do script. Você provavelmente configurou algo errado, o script está funcional.

Desculpa pela burrice, pensei que as tags eram pra ficar dentro do script, igual vc postou. rsrs

EDIT.

@Woox deixei as tags assim

<event type="statschange" name="SpellBuff" event="script" value="diarmaint/passiva.lua"/>
<event type="login" name="RegisterBuff" event="script" value="diarmaint/passiva.lua"/>

Não dá nenhum erro no console mas o personagem não loga, fica conectando..

e fica registrado no console

[20:4:41.940] Diarmaint has logged in.
[20:4:41.943] Diarmaint has logged out.

 

Edited by diarmaint

Share this post


Link to post
Share on other sites
  • 0
Em 21/03/2019 em 11:52, diarmaint disse:

Desculpa pela burrice, pensei que as tags eram pra ficar dentro do script, igual vc postou. rsrs

EDIT.

@Woox deixei as tags assim

<event type="statschange" name="SpellBuff" event="script" value="diarmaint/passiva.lua"/>
<event type="login" name="RegisterBuff" event="script" value="diarmaint/passiva.lua"/>

Não dá nenhum erro no console mas o personagem não loga, fica conectando..

e fica registrado no console

[20:4:41.940] Diarmaint has logged in.
[20:4:41.943] Diarmaint has logged out.

 

Tinha esquecido 1 return true no login, editei o código de novo, testa ai.

Share this post


Link to post
Share on other sites
  • 0
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para

Please login or register to see this link.

. Se você tiver outras dúvidas, crie um novo tópico.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Similar Content

    • By ZoR
      Olá, comecei meus estudos em Otclient, porem tenho muitas duvidas!.
       

       
      Oque ser isso? variaveis? porque todas nil?
       

       
      @onLoad: init() ?
      @onUnload: terminate() ?
       

      Please login or register to see this attachment.
       
      Variaveis com local sem o nil? oque isso muda?
      porque g_game? g_game.IsOnine ? isso é uma função do otclient? como posso tirar essa função da sourcer?
       
       
      Como se inicia um modulo? com local Nome ou Local Nome = nil? ou só a variavel = nil?
      todas ela tem que tem function init()? function onGameConnectionError(message, code) ? de onde saiu onGameConnection?
      sourcer? function CharacterList.terminate() ? 
       
      if charactersWindow then -- se for charactersWindow entao characterList = nil -- lista de char = nil? charactersWindow:destroy() -- :destroy a lista de char ok! charactersWindow = nil -- nil novamente? end function CharacterList.doLogin() ? de onde tira isso? das funçoes da sourcer?
    • By Emooooo
      [01/04/2019 20:22:33] [Error - GlobalEvent Interface] 
      [01/04/2019 20:22:33] data/globalevents/scripts/record.lua:onRecord
      [01/04/2019 20:22:33] Description: 
      [01/04/2019 20:22:33] data/globalevents/scripts/record.lua:2: attempt to call field 'executeQuery' (a nil value)
      [01/04/2019 20:22:33] stack traceback:
      [01/04/2019 20:22:33]     data/globalevents/scripts/record.lua:2: in function <data/globalevents/scripts/record.lua:1>
       
       
      ALGUÉM AJUDA AE ! PLIS 
      +REP
    • By JulianoZN
      Então eu tinha esse script de carpet em transform_to a bastante tempo desde 2016, mais simples
      Então então estou postando hoje
       
      Vamos ao Assunto.
       
      vai em data "datapack"/actions/scripts
      Crie um arquivo chamado carpet.lua
      coloque isso
      Please login or register to see this spoiler.
       
      Carpet fechado

       
      Carpet aberto

       
       
       
      DONO: PokemonZbr  ( Online )
      DONO: OtPokemonTvZ  ( Offline ) 
       
      Links do meu jogo

      Please login or register to see this link.
       (Online)  

      Please login or register to see this link.
       (Offline)  
      Eu sou:
      Scripter: 5%
      Mapper: 30%
      Programador: 4%
      Website : 50%
    • By Yan Liima
      #Introdução
      Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras)
      Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources.
      Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo você por para kikar jogadores com ms muito alto...
      Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano, mês, dia, hora, minutos, segundos, milisegundos...
      Enfim chega de enrolação e vamos lá!
      Code para TFS 0.4 e OTX:
      Please login or register to see this spoiler.
       
      Prontinho, agora seu servidor está pronto para utilizar as funções de Ping. Seja criativo!
      Ahh você é daqueles que quer tudo na mão né? Aqui vai um talkactions para ver o ping.
       
      Em talkactions/scripts crie um arquivo chamado playerping.lua, cole isto dentro:
      -- Script by Yan Liima(Night for xtibia.com) function onSay(cid, words, param, channel) local ms = ping.CheckPing(cid) doPlayerSendTextMessage(cid,22,"Ping aproximado --> ["..ms.."].") return true end Em talkactions.xml
      <talkaction words="!ping" event="script" value="playerping.lua"/>  
    • By moskitinho
      Olá camaradas,
       
      Voltei ao fórum depois de anos e queria encontrar alguém para me ajudar num projeto de OT 8.6 o mapa esta pronto, o que falta é configurar as quests e eventos. Eu procurei em fóruns e tutoriais de todas as maneiras, mas não consegui aprender. As distros de hoje em dia vem com muitos scripts bagunçados e fica difícil pra aprender apenas copiando. Porque na maioria dos casos o que funciona em um server não funciona no outro.
       
      Então deixo registrado aqui meu pedido.
       
      Procura-se um Action/Script Maker
       
      Moskitinho o que é esse projeto?
      - É um OT Server 8.6 com mapa próprio.
      - A cidade principal é Carlin que foi renomeada para Draenor. E modificada para se ajustar a parte do RPG.
      - As hunts serão por portal (mas nada de caves sem graça e cheia de retas) usei respawns famosos do global para melhorar o aspecto visual das hunts.
      - Não teremos itens VIP ou mesmo o VIP System. Todos os jogadores tem acesso à 100% do conteúdo. (Sujeito a modificação)
      - Vocações balancedas. (fast attack moderado e os regens de mana e life configurados corretamente para não ser tão fácil)
      - Sou um RPG Maker e talvez muitos pensem que OTs com rates altas não consigam juntas ambas as coisas, mas é essa barreira que quero derrubar.
      - As rates começam em 600x e param em 3x a partir do nível 800. (Tudo sujeito a modificação depois de testes)
       
      O que precisa saber?
      - Configurar quests como Annihilator, Demon Helmet, Pits of Inferno, Inquisition e Wrath of the Emperor. 
       
      Obs.: A maior parte destas quest no server foi diminuída ou modificada para facilitar.
       
      Horários?
      - Sem pressa amigo, trabalhe em tempo livre. Eu não quero ocupar tempo, apenas concluir este projeto. Se não puder fazer, mas puder me ensinar eu aceito.
       
      Porque você deve aceitar?
      - Tenho alguns anos na área e qualquer membro antigo do Éks pode afirmar minha credibilidade. Quero muito lançar esse server que é particularmente um sonho pessoal. Como disse acima eu não quero tudo na mão, estou disposto a ajudar no que puder e aprender também.
       
      Bom pessoal é isto. Os interessados por favor preencham a ficha abaixo e respondam aqui no fórum ou podem me adicionar no facebook @felipelotz ou skype f_lotz

       
       
       
      E galera volto a repetir se você não quiser configurar, mas souber e puder me ensinar eu vou ficar muito grato.
       
      Agradeço desde já,
      Felipe.
       
       
       
×
×
  • Create New...