Maxilos1221
New Member
- Joined
- Sep 3, 2017
- Messages
- 3
- Reaction score
- 0
Hi. I have trouble with npc learning spells.
My lua script responsible for learning:
Here is array of spells:
When I try learn any spell i've got this error in console:
Line 84 in Helor.lua is:
Someone know why i got this error? I'm using TFS 1.1 on linux
My lua script responsible for learning:
LUA:
if player:getLevel() >= spells[npcHandler.topic[cid]].level then
if player:hasLearnedInstantSpell(spells[npcHandler.topic[cid]].spell_name) == false then
if player:getMoney() >= spells[npcHandler.topic[cid]].price then
player:removeMoney(spells[npcHandler.topic[cid]].price)
npcHandler:say("Here you are. Look in your spellbook for the pronunciation of this spell.", cid)
player:learnInstantSpell(spells[npcHandler.topic[cid]].spell_name)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
npcHandler.topic[cid] = 0
else
npcHandler:say("Oh. You do not have enough money.", cid)
npcHandler.topic[cid] = 0
end
else
npcHandler:say("You already know how to cast this spell.", cid)
npcHandler.topic[cid] = 0
end
else
npcHandler:say("You must be level " .. spells[npcHandler.topic[cid]].level .. " to learn this spell.", cid);
npcHandler.topic[cid] = 0
end
Here is array of spells:
LUA:
local spells = {
[1] = {spell_name = "Destroy Field Rune", price = 700, level = 17, number = 1},
[2] = {spell_name = "Holy Missile Rune", pice = 1600, level = 27, number = 2},
[3] = {spell_name = "Disintegrate Rune", price = 900, level = 21, number = 3},
[4] = {spell_name = "Light Healing", price = 0, level = 8, number = 4},
[5] = {spell_name = "Intense Healing", price = 350, level = 20, number = 5},
[6] = {spell_name = "Divine Healing", price = 3000, level = 35, number = 6},
[7] = {spell_name = "Cure Poison", price = 150, level = 10, number = 7},
[8] = {spell_name = "Cure Curse", price = 6000, level = 80, number = 8},
[9] = {spell_name = "Recovery", price = 4000, level = 50, number = 9},
[10] = {spell_name = "Salvation", price = 8000, level = 60, number = 10},
[11] = {spell_name = "Intense Recovery", price = 10000, level = 100, number = 11},
[12] = {spell_name = "Conjure Arrow", price = 450, level = 13, number = 12},
[13] = {spell_name = "Enchant Spear", price = 2000, level = 45, number = 13},
[14] = {spell_name = "Conjure Explosive Arrow", price = 1000, level = 25, number = 14},
[15] = {spell_name = "Ethereal Spear", price = 1100, level = 23, number = 15},
[16] = {spell_name = "Divine Missile", price = 1800, level = 40, number = 16},
[17] = {spell_name = "Divine Caldera", price = 3000, level = 50, number = 17},
[18] = {spell_name = "Holy Flash", price = 7500, level = 70, number = 18},
[19] = {spell_name = "Strong Ethereal Spear", price = 10000, level = 90, price = 19},
[20] = {spell_name = "Magic Rope", price = 200, level = 9, number = 20},
[21] = {spell_name = "Levitate", price = 500, level = 12, number = 21},
[22] = {spell_name = "Haste", price = 600, level = 14, number = 22},
[23] = {spell_name = "Find Person", price = 80, level = 8, number = 23},
[24] = {spell_name = "Light", price = 100, level = 8, number = 24},
[25] = {spell_name = "Cancel Invisibility", price = 1600, level = 26, number = 25},
[26] = {spell_name = "Great Light", price = 500, level = 13, number = 26}
}
When I try learn any spell i've got this error in console:
C++:
Lua Script Error: [Npc interface]
data/npc/scripts/Helor.lua:onCreatureSay
data/npc/scripts/Helor.lua:84: attempt to call method 'hasLearnedInstantSpell' (a nil value)
stack traceback:
[C]: in function 'hasLearnedInstantSpell'
data/npc/scripts/Helor.lua:84: in function 'callback'
data/npc/lib/npcsystem/npchandler.lua:430: in function 'onCreatureSay'
data/npc/scripts/Helor.lua:7: in function <data/npc/scripts/Helor.lua:7>
Line 84 in Helor.lua is:
LUA:
if player:hasLearnedInstantSpell(spells[npcHandler.topic[cid]].spell_name) == false then
Someone know why i got this error? I'm using TFS 1.1 on linux