Por favor postar
-Protocolo (versão)
-Servidor
-Nível de experiencia
-Informações adicionais
E já existem scripts de npcs que ensinam magia. (Procure antes de postar)
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

Por favor postar
-Protocolo (versão)
-Servidor
-Nível de experiencia
-Informações adicionais
E já existem scripts de npcs que ensinam magia. (Procure antes de postar)
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

no caso cada elemento é uma vocação?
exemplo:
elemento fogo é voc 5
elemento terra é voc 4
info
Grupo: Campones
Registrado: 01/12/11
Posts: 18
Reputação: +2
Char no Tibia: BuK

TFS 8.54
Nivel de experiencia baixo.. E sim eu encontrei NPCs que ensinam spells, ma nao do jeito que eu prescisava.
Nao Vodkart, todas as vocations poderao usar as spells, a diferença é que vc escolhe qual elemento quer aprender com o NPC, ai vc so aprendera spells daquele elemento.
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

data/npc
Elemental.xml
<?xml version="1.0"?> <npc name="Elemental" script="data/npc/scripts/elementos.lua" walkinterval="50000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="95" body="116" legs="121" feet="115" addons="3"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Qual elemento deseja aprender?"/> </parameters> </npc>
data/npc/script
elementos.lua
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local msg,stor = string.lower(msg),754487
local elements = {
["fire"] = {"Find Person","Flame Strike","Blood Rage","Challenge","Fierce Berserk"},
["water"] = {"Find Person","Flame Strike","Blood Rage","Challenge","Fierce Berserk"},
["earth"] = {"Find Person","Flame Strike","Blood Rage","Challenge","Fierce Berserk"},
["air"] = {"Find Person","Flame Strike","Blood Rage","Challenge","Fierce Berserk"},
["thunder"] = {"Find Person","Flame Strike","Blood Rage","Challenge","Fierce Berserk"}
}
if elements[msg] then
if getPlayerStorageValue(cid, stor) <= 0 then
for _, spells in ipairs(elements[msg]) do
doPlayerLearnInstantSpell(cid, spells)
end
setPlayerStorageValue(cid,stor,1)
npcHandler:say("Parabéns, voce aprendeu o elemento do "..msg, cid)
else
npcHandler:say("você já escolheu seu elemento.", cid)
end
else
npcHandler:say("este elemento não existe.", cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado Agosto 4 por Vodkart
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

NPC.xml
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NPC elemental" script="elemental.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="131" head="115" body="132" legs="97" feet="114" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola, Eu posso lhe posso lhe ensinar sobre um dos 5 elementos: {fogo}, {agua}, {terra}, {ar} ou {raio}."/>
<parameter key="message_farewell" value="tchau." />
<parameter key="module_keywords" value="1" />
</parameters>
</npc>
NPC.lua
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
-- fogo
if(msgcontains(msg, 'fogo')) then
if getPlayerStorageValue(cid, 25501) < 1 then
setPlayerStorageValue(cid, 25501, 1)
doPlayerLearnInstantSpell(cid, 'nome da magia de fogo 1')
doPlayerLearnInstantSpell(cid, 'nome da magia de fogo 2')
doPlayerLearnInstantSpell(cid, 'nome da magia de fogo 3')
doPlayerLearnInstantSpell(cid, 'nome da magia de fogo 4')
doPlayerLearnInstantSpell(cid, 'nome da magia de fogo 5')
doSendMagicEffect(getPlayerPosition(cid), 6)
else
npcHandler:say("já te ensinei um elemento!", cid)
end
-- agua
elseif(msgcontains(msg, 'agua')) then
if getPlayerStorageValue(cid, 25501) < 1 then
setPlayerStorageValue(cid, 25501, 1)
doPlayerLearnInstantSpell(cid, 'nome da magia de agua 1')
doPlayerLearnInstantSpell(cid, 'nome da magia de agua 2')
doPlayerLearnInstantSpell(cid, 'nome da magia de agua 3')
doPlayerLearnInstantSpell(cid, 'nome da magia de agua 4')
doPlayerLearnInstantSpell(cid, 'nome da magia de agua 5')
doSendMagicEffect(getPlayerPosition(cid), 53)
else
npcHandler:say("já te ensinei um elemento!", cid)
end
-- terra
elseif(msgcontains(msg, 'terra')) then
if getPlayerStorageValue(cid, 25501) < 1 then
setPlayerStorageValue(cid, 25501, 1)
doPlayerLearnInstantSpell(cid, 'nome da magia de terra 1')
doPlayerLearnInstantSpell(cid, 'nome da magia de terra 2')
doPlayerLearnInstantSpell(cid, 'nome da magia de terra 3')
doPlayerLearnInstantSpell(cid, 'nome da magia de terra 4')
doPlayerLearnInstantSpell(cid, 'nome da magia de terra 5')
doSendMagicEffect(getPlayerPosition(cid), 44)
else
npcHandler:say("já te ensinei um elemento!", cid)
end
-- ar
elseif(msgcontains(msg, 'ar')) then
if getPlayerStorageValue(cid, 25501) < 1 then
setPlayerStorageValue(cid, 25501, 1)
doPlayerLearnInstantSpell(cid, 'nome da magia de ar 1')
doPlayerLearnInstantSpell(cid, 'nome da magia de ar 2')
doPlayerLearnInstantSpell(cid, 'nome da magia de ar 3')
doPlayerLearnInstantSpell(cid, 'nome da magia de ar 4')
doPlayerLearnInstantSpell(cid, 'nome da magia de ar 5')
doSendMagicEffect(getPlayerPosition(cid), 2)
else
npcHandler:say("já te ensinei um elemento!", cid)
end
-- raio
elseif(msgcontains(msg, 'raio')) then
if getPlayerStorageValue(cid, 25501) < 1 then
setPlayerStorageValue(cid, 25501, 1)
doPlayerLearnInstantSpell(cid, 'nome da magia de raio 1')
doPlayerLearnInstantSpell(cid, 'nome da magia de raio 2')
doPlayerLearnInstantSpell(cid, 'nome da magia de raio 3')
doPlayerLearnInstantSpell(cid, 'nome da magia de raio 4')
doPlayerLearnInstantSpell(cid, 'nome da magia de raio 5')
doSendMagicEffect(getPlayerPosition(cid), 47)
else
npcHandler:say("já te ensinei um elemento!", cid)
end
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado Agosto 4 por OtheReality
info
Grupo: Campones
Registrado: 01/12/11
Posts: 18
Reputação: +2
Char no Tibia: BuK
Bom sem mais delongas, gostaria de pedir um NPC, que ensinasse varias spells de uma vez e por escolha..
Se chamara NPC elemental.
Voce falaria com ele e ele te ensinaria 5 spells, de 5 classes diferentes.
As classes seriam ; Fogo, Agua, Terra, Ar e Raio.
Ao falar com o NPC ele lhe perguntaria, qual elemento deseja aprender?
Ai o player escolheria um dos 5, e o NPC lhe ensinaria 5 magias do elemento escolhido.
----
Se o player falasse com o NPC novamente ele nao poderia escolher outro elemento.
Apenas um elemento por player.
---
EX:
PLAYER: Hi
NPC: Olá PLAYER, qual elemento deseja aprender?
PLAYER: Fogo
NPC: Parabéns, voce aprendeu o elemento fogo.
Ai o player aprenderia 5 spells de fogo (ou 5 de agua, ou 5 de terra, dependendo do elemento escolhido).
Acham que da pra fazer? Obg
Qm me ajudar ganha REP+