Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Salve rápázyádá, recentemente estava de rolê pelo tk, e vi um tópico com o seguinte pedido: "Jinchuuriki System", pra que não conhece irei da um breve resumo.

 

Para quem conhece o anime naruto sabe sobre as bijuus, e que elas foram seladas em shinobis destinados a carregar tamanha responsabilidade devido a cada biju ter um poder destruidor, como por exemplo a bijuu raposa de nove caldas(Kyuubi), selada dentro do personagem principal chamado de Naruto Uzumaki, a Kyuubi quando dominada, dá ao usuário uma grotesca quantidade de chakra, assim como jutsus e muito mais, cada bijuu tem sua especialidade, jutsus de defesa, assim como a própia defesa e resistência do usuário a tais jutsus, mas claro para você ter a bijuu, é necessário que você sele-a dentro de você, através de um dos jutsus proibidos, como o Shiki Fuujin usado por Minato o 4º Hokage e também pai de naruto, ao usar o selo ele consome a alma de quem usa levando-o a morte após o termino do jutsu, minato como hokage não poderia deixar a kyuubi destruir a vila, então ele invoca o Selo Consumidor do Demônio Morto(Shiki Fuujin) conhecido também como Selo Ceifeiro da Morte, e sela a kyuubi dentro de seu própio filho salvando a vila e morrendo como herói, e naruto desde então passa a ser o Jinchuuriki da raposa de nove caldas.

 

 

Tendo uma ideia básica de como funciona, vamos a explicação do sistema, que não é diferente.

 

Ao usar um jutsu(spell) de selo em algum bijuu(monstro), você terá ele selado dentro de você e obterá os jutsus de acordo com cada bijuu, mas para isso, a vida(hp) da bijuu deve está menor que 20%(configurável), e então você durante 2(configurável) dias, terá ele selado dentro de você e poderá usar os jutsus, ao acabar esse tempo você irá perdelo, assim como os jutsus.

Sistema criado e testado na versão 8.60 usando uma distro na versão 0.4, mesmo assim pode funcionar em versões inferiores!!

 

Siga os passos corretamente que é sucesso.

 

Vá em data/lib e crie um arquivo chamado JinchuurikiSystem.lua e coloque o seguinte code dentro:

Spoiler

jin_bijuus = {
["shukaku"] = {sto = 1, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 30, effBuff = 3},
["nibi"] = {sto = 2, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["sanbi"] = {sto = 3, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["yonbi"] = {sto = 4, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["gobi"] = {sto = 5, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["rokubi"] = {sto = 6, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["shichibi"] = {sto = 7, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["hachibi"] = {sto = 8, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 60, effBuff = 3},
["kyuubi"] = {sto = 9, spells = {""}, bijuu_outfit = 323, skill_p = 10, time_buff = 15, effBuff = 3}
}

id_name = {
-- id da storage refrente ao monstro na primeira tabela, lembrando que se for adicionar mais, a variável sto tem que dar um valor de storage referente ao novo monstro adicionado
[1] = "Shukaku",
[2] = "Nibi",
[3] = "Sanbi",
[4] = "Yonbi",
[5] = "Gobi",
[6] = "Rokubi",
[7] = "Shichibi",
[8] = "Hachibi",
[9] = "Kyuubi"
}



jin_Storage = 1234255 -- Storage que armazena o Jinchuuriki
jin_StorageTime = 1234256 -- Storage de quanto tempo o player tem de Jinchuuriki 
jin_TimeDay = 2 -- Tempo em dias que o player ficará com a Bijuu selada nele
jin_percentHp = 20 -- Porcentagem que precisa para selar o Bijuu
jin_cond_id = 23 -- Sub-Id da condição do buff, assim não da conflito com outros buffs.
jin_cond_id = 24 -- Sub-Id da condição do outfit, assim não da conflito com outros buffs.

jin = {
-- jin.getPlayerBijuu(uid)
getPlayerBijuu = function(uid) -- retorna o nome da biju do player em string.
if getPlayerStorageValue(uid, jin_Storage) == -1 then
  return 0
 end
return id_name[getPlayerStorageValue(uid, jin_Storage)]
end,

-- jin.setPlayerBijuu(uid, BijuuId)
setPlayerBijuu = function(uid, BijuuId) -- Set no player a Bijuu tornando-o um Jinchuuriki.
return doCreatureSetStorage(uid, jin_Storage, BijuuId)
end,

-- jin.setBijuuTime(uid, days)
setBijuuTime = function(uid, days) -- Seta a quantidade de dias que o player ficará com a bijuu.
return doCreatureSetStorage(uid, jin_StorageTime, os.time()+days*24*60*60)
end,

-- jin.getPlayerBijuuTime(uid)
getPlayerBijuuTime = function(uid) -- Retorna tempo e hora que falta pra acabar o Jinchuuriki do Player.
if getPlayerStorageValue(uid, jin_StorageTime)-os.time() <= 0 then
return "Tempo restante é de 0 dias, 0 horas e 0 segundos."
end
local tempo = getPlayerStorageValue(uid, jin_StorageTime)-os.time()
local segundos =  tempo % 60
local minutos =  math.floor(tempo%3600/60)
local horas = math.floor(tempo%86400/3600)
local dias = math.floor(tempo%604800/86400)
return "Tempo restante é de "..dias.." dia"..(dias > 1 and "s" or "")..", "..horas.." hora"..(horas > 1 and "s" or "")..", "..minutos.." minuto"..(minutos > 1 and "s"or "").." e "..segundos.." segundo"..(segundos > 1 and "s" or "")..""
end,



-- jin.doPlayerSetSpells(uid, spells)
doPlayerSetSpells = function(uid, spells) -- Faz o player aprender mais de 1 spells.
if type(spells) == "table" then
for i = 1, #spells do
doPlayerLearnInstantSpell(uid, spells[i])
end
else
doPlayerLearnInstantSpell(uid, spells)
end
end,


-- jin.doPlayerRemoveSpells(uid, spells)
doPlayerRemoveSpells = function(uid, spells) -- Remove todas as spells aprendidas do player.
if type(spells) == "table" then
for i = 1, #spells do
doPlayerUnlearnInstantSpell(uid, spells[i])
end
else
doPlayerUnlearnInstantSpell(uid, spells)
end
end,


-- jin.doPlayerRemoveJinchuuriki(uid)
doPlayerRemoveJinchuuriki = function(uid) -- Remove o Jinchuuriki do player.
if jin.getPlayerBijuu(uid) ~= 0 then
jin.doPlayerRemoveSpells(uid, jin_bijuus[jin.getPlayerBijuu(uid):lower()].spells)
doCreatureSetStorage(uid, jin_StorageTime, -1)
doCreatureSetStorage(uid, jin_Storage, -1)
end
end
}

 

 

A tabela está de acordo com a ordem de bijuus existente desde o bijuu de 1 calda, até a biju de nove caldas, então você irá mexer somente em qual ou quais jutsus(spells) cada bijuu irá usar, mais precisamente aqui:

spells = {""} entre aspas coloque a quantidade que seja de jutsus(spell), como por exemplo:

Tk no Jutsu 1- Tk no jutsu 2, separados por virgula, assim:

spells = {"Tk no jutsu 1", "Tk no jutsu 2"}

Lembrando que o nome das spells não é a que fica em words, é que  fica em name na xml, por exemplo:

eu tenho um jutsu chamado kai, quem joga narutibia sabe pra que serve, para usar ela, usamos o nome que está em words, e a que fica em name, será que vai ser mostrada quando for usar, entretanto a função que faz o player aprender a spell, segui pelo nome:

<instant name="Kai!" words="kai"

note que contém uma exclamação no nome da spell, então vai ter que ir exclamação e tudo junto, ficando assim:

spells = {"Tk no jutsu 1", "Tk no jutsu 2", "Kai!"}

e então quando o player for usar a spell pelo words kai, a spell será usada.

 

Agora vá em data/spells/scripts crie um arquivo chamado selojin.lua e coloque o seguinte code dentro:

Spoiler

local selo_effect = 4 -- Efeito do selo que vai sair em cima do monstro selando ele.

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, jin_Storage) <= 0 then
 if isMonster(getCreatureTarget(cid)) then
  if jin_bijuus[getCreatureName(getCreatureTarget(cid)):lower()] then
   if getCreatureHealth(getCreatureTarget(cid)) <= getCreatureMaxHealth(getCreatureTarget(cid))/100*jin_percentHp then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora é Jinchuuriki do "..getCreatureName(getCreatureTarget(cid)):gsub("^%l", string.upper)..", use tamanho poder com sabedoria!!")
    jin.setPlayerBijuu(cid, jin_bijuus[getCreatureName(getCreatureTarget(cid)):lower()].sto)
    jin.setBijuuTime(cid, jin_TimeDay)
    jin.doPlayerSetSpells(cid, jin_bijuus[getCreatureName(getCreatureTarget(cid)):lower()].spells)
	doSendMagicEffect(getThingPosition(getCreatureTarget(cid)), selo_effect)
    doRemoveCreature(getCreatureTarget(cid))
    return true
   else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você só pode selar o bijuu quando o hp dele estiver menor ou igual a "..jin_percentHp..".")
   end
  else 
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Esse monstro não é um Bijuu.")   
  end
 else
  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você só pode selar as Bijuus como Jinchuuriki.")
 end 
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você não pode selar mais bijuu, atualmente você é Jinchuuriki do "..jin.getPlayerBijuu(cid)..", espere o tempo acabar.")
end
return false
end

 

 

Agora vá em data/spells/scripts crie um arquivo chamado buff bijuu.lua e coloque o seguinte code dentro:

Spoiler

function buff_bijuu(cid, pointsSkill, time, subId)

local buff_bijuu = createConditionObject(CONDITION_ATTRIBUTES)
 setConditionParam(buff_bijuu, CONDITION_PARAM_TICKS, time*1000)
 setConditionParam(buff_bijuu, CONDITION_PARAM_STAT_MAGICLEVEL, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_FIST, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_SWORD, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_AXE, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_CLUB, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_DISTANCE, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SKILL_SHIELD, pointsSkill)
 setConditionParam(buff_bijuu, CONDITION_PARAM_SUBID, subId)
return doAddCondition(cid, buff_bijuu)

end

function onCastSpell(cid, var)
 if jin.getPlayerBijuu(cid) ~= 0 then
  if not getCreatureCondition(cid, CONDITION_ATTRIBUTES, jin_cond_id) then
   doSetCreatureOutfit(cid, {lookType = jin_bijuus[jin.getPlayerBijuu(cid):lower()].bijuu_outfit} , jin_bijuus[jin.getPlayerBijuu(cid):lower()].time_buff*1000)
   buff_bijuu(cid, jin_bijuus[jin.getPlayerBijuu(cid):lower()].skill_p, jin_bijuus[jin.getPlayerBijuu(cid):lower()].time_buff, jin_cond_id)
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Bijuu Buff Mode Ativado!!")
   doSendMagicEffect(getThingPosition(cid), jin_bijuus[jin.getPlayerBijuu(cid):lower()].effBuff)
  else
   return false, doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você já está com o buff de sua bijuu.")
  end
 else
  return false, doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você precisa selar algum bijuu para usar seu buff.")
 end
  return true
end

 

 

 

a tag que você irá colocar na spells.xml para esse jutsu(spell) será a seguinte:

<instant name="Shiki Fuujin" words="shiki fuujin" lvl="1" mana="1" prem="0" exhaustion="10" enabled="1" needtarget="1" event="script" value="selojin.lua">
</instant>
<instant name="Buff Jin" words="buff jin" lvl="1" mana="0" prem="0" selftarget="1" exhaustion="1000" enabled="1" event="script" value="buff bijuu.lua">
</instant>

 

 

Agora vá em data/talkactions/scripts e crie um arquivo chamado jincheck.lua e coloque o seguinte code dentro:

Spoiler

function onSay(cid, words, param, channel)
 if jin.getPlayerBijuu(cid) ~= 0 then
  doPlayerPopupFYI(cid, "[====== Jinchuuriki System ======]\n\nVocê Jinchuuriki de ["..jin.getPlayerBijuu(cid).."]\n"..jin.getPlayerBijuuTime(cid))
 else
  doPlayerPopupFYI(cid, "[====== Jinchuuriki System ======]\n\nVocê não é Jinchuuriki.\n"..jin.getPlayerBijuuTime(cid))
 end
return true
end

 

 

Nota: esse comando serve para você checar quanto tempo você tem de Jinchuuriki, e qual bijuu está selado dentro de você.

A tag da talkactions.xml para esse jutsu(spell) é a seguinte:

<talkaction words="!jincheck" event="script" value="jincheck.lua"/>

 

Agora vá em data/globalevents/scripts e crie um arquivo chamado jincheck.lua e coloque o seguinte code dentro:

Spoiler

function onThink(interval, lastExecution)
for _, ons in pairs(getPlayersOnline()) do
 if getPlayerStorageValue(ons, jin_StorageTime)-os.time() <= 0 and jin.getPlayerBijuu(ons) ~= 0 then
  jin.doPlayerRemoveJinchuuriki(ons)  
  doPlayerSendTextMessage(ons, MESSAGE_STATUS_CONSOLE_RED, "O selo do Jinchuuriki foi desfeito, e você perdeu o bijuu, você sela-lo novamente, ou selar outro.") 
 end
end 
return TRUE
end

 

 

Nota: esse script checa a cada um minuto, os players online na qual o tempo de Jinchuuriki já expirou, e então remove, para assim ele não continuar com os jutsus.

 

A tag do globalevents.xml desse script é a seguinte:

<globalevent name="JinSystem" interval="60000" script="jincheck.lua"/>

 

Agora pra finalizar vá em data/creaturescripts/scripts e crie um arquivo chamado jinsystem.lua e adicione o seguinte code:

Spoiler

function onLook(cid, thing, position, lookDistance)
if isPlayer(thing.uid) then
 if jin.getPlayerBijuu(thing.uid) ~= 0 then
  doPlayerSetSpecialDescription(thing.uid, "\nJinchuuriki de: ["..jin.getPlayerBijuu(thing.uid).."]")
 else
  doPlayerSetSpecialDescription(thing.uid, "\nNão é um Jinchuuriki.")
 end
end 
 return true
end

function onDeath(cid)
 if getPlayerStorageValue(cid, jin_StorageTime)-os.time() <= 0 and jin.getPlayerBijuu(cid) ~= 0 then
  jin.doPlayerRemoveJinchuuriki(cid)
 end

return true
end

function onLogin(cid)
registerCreatureEvent(cid, "JinSystemLook")
registerCreatureEvent(cid, "JinSystemDeath")

 if getPlayerStorageValue(cid, jin_StorageTime)-os.time() <= 0 and jin.getPlayerBijuu(cid) ~= 0 then
  jin.doPlayerRemoveJinchuuriki(cid)
 end
return true
end


function onLogout(cid)
 if getPlayerStorageValue(cid, jin_StorageTime)-os.time() <= 0 and jin.getPlayerBijuu(cid) ~= 0 then
  jin.doPlayerRemoveJinchuuriki(cid)
 end
return true
end

 

 

e a tag do creaturescripts.xml desse script é a seguinte:

	<!-- Jinchuuriki System -->
	<event type="look" name="JinSystemLook" event="script" value="jinsystem.lua"/>
	<event type="death" name="JinSystemDeath" event="script" value="jinsystem.lua"/>
	<event type="login" name="JinSystemLogin" event="script" value="jinsystem.lua"/>
	<event type="logout" name="JinSystemLogout" event="script" value="jinsystem.lua"/>

 

Nota: na spells.xml que não precisam ter uma vocação especifica para ser usada e devem conter a tag:

needlearn="1" 

contendo essa tag, a spell não irá aparecer para nenhum player e não poderá ser usado até que o player sele a bijuu, após ser aprendida quando o player sela a bijuu, irá aparecer no comando !jutsus que em servidores normais é o spellbook e o !spells, em quanto o player não selar, ele não ver e nem pode usar.

 

bijuu_outfit é o id da looktype que o player vai ganhar ao usar o buff(se você tem outro buff ou speel que faça o mesmo, remova-o ou então remova a função doSetCreatureOutfit da minha buff, assim não gerando conflito e ficando o outfit que deseja).

skill_p é a quantidade de pontos que ao usar o buff da bijuu, vai add no player.

time_buff é quanto tempo o buff vai ficar no player valendo também para a looktype.

effBuff é o id do efeito que vai sair em cima do player quando ele usar o buff.

 

Pronto, basta configura a spells que cada bijuu(monstro), e pronto.

Acho que não preciso explicar como configurar, no própio script deixei umas observações.

 

É totalmente proibido levar meu sistema para outro blog, site ou fórum, fiz esse sistema exclusivamente para membros da comunidade do TibiaKing.

 

 

Quaisquer erros, sugestões, críticas(construtivas), fiquem a vontade, caso tenha alguma duvida sobre tal parte do script, ou não entendeu alguma parte de como configurar, basta comentar que estarei dando suporte.

 

Script feito por mim.

 

 

 

Abraços, bom uso, e boa noite! xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

  • Respostas 55
  • Visualizações 9.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Perfeito Mano !!!!!!!!!!!! Supera a Perfeiçao xD vlw todos querem esse system

  • @VaizardX com certeza, ainda falta o buff que lhe da a outfit da bijuu, só podendo usar caso tenha um deles selado, o jutsu bijuu mode!!

  • @FabiiioH por nada, espero que tenha gostado, estou com algumas coisas pendentes por agora, quando eu estiver livre, dento de 2 ou 3 dias, ae farei o buff desse sistema, e atualizarei o tópico. Abraço

Posted Images

Postado

Perfeito Mano !!!!!!!!!!!! Supera a Perfeiçao xD vlw todos querem esse system

O rei de seu proprio destino é aquele que luta pela gloria do amanhã!
Discord : ZoR#9373


 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo