SlayingWorld
Active Member
Alright well i tested it on my TFS currently using the latest one, and everything worked fine!
Remember this is just the NPC.lua file, you have to do the rest, vocations.xml, spells, etc
Remember this is just the NPC.lua file, you have to do the rest, vocations.xml, spells, etc
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
alreadypromoted1 = 'You already have the first promotion, stop wasting my time!'
alreadypromoted2 = 'You already have the second promotion, stop wasting my time!'
nomoney = 'You do not have enough money.'
firstpromotionlevel = 'You need level 20+ for the first promotion!'
secondpromotionlevel = 'You need level 150+ for the second promotion!'
cantskippromo = 'You have to get the first promotion first!'
-- FIRST PROMOTION --
function FirstPromotion(cid, message, keywords, parameters, node)
local player = Player(cid)
local promolevel = 20
local promocost = 20000
if(not npcHandler:isFocused(cid)) then
return false
end
if player:getLevel() < promolevel then
selfSay(firstpromotionlevel, cid)
return false
end
if player:getMoney() < promocost then
selfSay(nomoney, cid)
return false
end
if player:getVocation():getId() == 5 or player:getVocation():getId() == 6 or player:getVocation():getId() == 7 or player:getVocation():getId() == 8 then
selfSay(alreadypromoted1, cid)
return false
end
if player:getVocation():getId() == 9 or player:getVocation():getId() == 10 or player:getVocation():getId() == 11 or player:getVocation():getId() == 12 then
selfSay(alreadypromoted2, cid)
return false
end
if player:getVocation():getId() == 1 then
player:removeMoney(promocost)
player:setVocation(5)
elseif player:getVocation():getId() == 2 then
player:removeMoney(promocost)
player:setVocation(6)
elseif player:getVocation():getId() == 3 then
player:removeMoney(promocost)
player:setVocation(7)
elseif player:getVocation():getId() == 4 then
player:removeMoney(promocost)
player:setVocation(8)
end
end
-- SECOND PROMOTION --
function SecondPromotion(cid, message, keywords, parameters, node)
local player = Player(cid)
local promolevel = 150
local promocost = 200000
if(not npcHandler:isFocused(cid)) then
return false
end
if player:getLevel() < promolevel then
selfSay(secondpromotionlevel, cid)
return false
end
if player:getMoney() < promocost then
selfSay(nomoney, cid)
return false
end
if player:getVocation():getId() == 1 or player:getVocation():getId() == 2 or player:getVocation():getId() == 3 or player:getVocation():getId() == 4 then
selfSay(cantskippromo, cid)
return false
end
if player:getVocation():getId() == 9 or player:getVocation():getId() == 10 or player:getVocation():getId() == 11 or player:getVocation():getId() == 12 then
selfSay(alreadypromoted2, cid)
return false
end
if player:getVocation():getId() == 5 then
player:removeMoney(promocost)
player:setVocation(9)
elseif player:getVocation():getId() == 6 then
player:removeMoney(promocost)
player:setVocation(10)
elseif player:getVocation():getId() == 7 then
player:removeMoney(promocost)
player:setVocation(11)
elseif player:getVocation():getId() == 8 then
player:removeMoney(promocost)
player:setVocation(12)
end
end
node1 = keywordHandler:addKeyword({'first promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to become promoted for 20,000 gold coins?'})
node1:addChildKeyword({'yes'}, FirstPromotion, {})
node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Stop wasting my time.', reset = true})
node2 = keywordHandler:addKeyword({'second promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want the second promotion for 200,000 gold coins?'})
node2:addChildKeyword({'yes'}, SecondPromotion, {})
node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Stop wasting my time.', reset = true})
npcHandler:addModule(FocusModule:new())