• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Help with NPC Lorek and Captain

Qbecky

New Member
Joined
Mar 11, 2023
Messages
29
Reaction score
1
GitHub
QbeckyX
Hi im looking for help and script to travel without doing quests.

I need script that teleport player.
After saying Hi then Mountain to NPC lorek.lua teleport player to x y z.

And second npc Captain on ship on Yalahar to traveling to every cities not just Liberty Bay.

I changed return false to return true command but dont working.
 
Hi im looking for help and script to travel without doing quests.

I need script that teleport player.
After saying Hi then Mountain to NPC lorek.lua teleport player to x y z.

And second npc Captain on ship on Yalahar to traveling to every cities not just Liberty Bay.

I changed return false to return true command but dont working.
Hard to help with invisible code. :)

Post the code from inside the .lua files of the ship captains, here in the thread.
 
local internalNpcName = "Karith"
local npcType = Game.createNpcType(internalNpcName)
local npcConfig = {}

npcConfig.name = internalNpcName
npcConfig.description = internalNpcName

npcConfig.health = 100
npcConfig.maxHealth = npcConfig.health
npcConfig.walkInterval = 2000
npcConfig.walkRadius = 2

npcConfig.outfit = {
lookType = 159,
lookHead = 79,
lookBody = 3,
lookLegs = 93,
lookFeet = 12,
lookAddons = 0
}

npcConfig.flags = {
floorchange = false
}

npcConfig.voices = {
interval = 15000,
chance = 50,
{text = 'This weather is killing me. If I only had enough money to retire.'}
}

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)

npcType.onThink = function(npc, interval)
npcHandler:eek:nThink(npc, interval)
end

npcType.onAppear = function(npc, creature)
npcHandler:eek:nAppear(npc, creature)
end

npcType.onDisappear = function(npc, creature)
npcHandler:eek:nDisappear(npc, creature)
end

npcType.onMove = function(npc, creature, fromPosition, toPosition)
npcHandler:eek:nMove(npc, creature, fromPosition, toPosition)
end

npcType.onSay = function(npc, creature, type, message)
npcHandler:eek:nSay(npc, creature, type, message)
end

npcType.onCloseChannel = function(npc, creature)
npcHandler:eek:nCloseChannel(npc, creature)
end

local function greetCallback(npc, creature)
local player = Player(creature)
local playerId = player:getId()

if player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) == -1 then
npcHandler:setMessage(MESSAGE_GREET, 'Hello! Tell me what\'s on your mind. Time is money.')
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, 0)
else
npcHandler:setMessage(MESSAGE_GREET, 'Hello! Tell me what\'s on your mind. Time is money.')
end
return true
end

local function creatureSayCallback(npc, creature, type, message)
local player = Player(creature)
local playerId = player:getId()

if not npcHandler:checkInteraction(npc, creature) then
return false
end

if MsgContains(message, "passage") or MsgContains(message, "sail") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"I see no reason to establish ship routes to other cities. There is nothing that would be worth the effort. ...",
"But since you won\'t stop bugging me, let\'s make a deal: If you can prove that at least five of your so-called \'cities\' are not worthless, I might reconsider my position. ...",
"Bring me something SPECIAL! The local bar tenders usually know what\'s interesting about their city.",
}, npc, creature)
npcHandler:setTopic(playerId, 0)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"For the sake of profit, we established ship routes to {Ab\'Dendriel}, {Darashia}, {Venore}, {Ankrahmun}, {Port Hope}, {Thais}, {Liberty Bay} and {Carlin}.",
}, npc, creature)
npcHandler:setTopic(playerId, 0)
else return true
end
elseif MsgContains(message, "Ab\'Dendriel") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"I\'ve never been there. I doubt the elves there came up with something noteworthy. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 1)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.AbDendriel) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"Do you want a passage to Ab\'Dendriel for 160 gold?", ---missing line
}, npc, creature)
npcHandler:setTopic(playerId, 11)
else return false
end
elseif MsgContains(message, "Darashia") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.Darashia) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"From all what I have heard, it is an unremarkable pile of huts in the desert. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 2)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Darashia) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"Of course it is merely superstition that the darashian sand wasp honey brings back youth and vitality, but as long people pay a decent price, I couldn't care less. Do you want a passage to Darashia for 210 gold?",
}, npc, creature)
npcHandler:setTopic(playerId, 12)
else return false
end
elseif MsgContains(message, "Venore") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.Venore) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"Another port full of smelly humans, fittingly located in a swamp. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 3)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Venore) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({"The swamp spice will turn out very lucrative considering that it helps to make even the most disgusting dish taste good. Do you want a passage to Venore for 185 gold?",}, npc, creature)
npcHandler:setTopic(playerId, 13)
else return false
end
elseif MsgContains(message, "Ankrahmun") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"A city full of mad death worshippers, no thanks. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 4)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"The Yalahari seem to be obsessed with conserving their dead, so I guess the embalming fluid will be a great success in Yalahar. Do you want a passage to Ankrahmun for 230 gold?",
}, npc, creature)
npcHandler:setTopic(playerId, 14)
else return false
end
elseif MsgContains(message, "Port Hope") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.PortHope) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"Another pointless human settlement. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 5)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.PortHope) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"Ivory is highly prized by the artisans of the Yalahari. Do you want a passage to Port Hope for 260 gold?",
}, npc, creature)
npcHandler:setTopic(playerId, 15)
else return false
end
elseif MsgContains(message, "Thais") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.Thais) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"Thais must be a hell hole if only half of the stories we hear about it are true. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 6)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Thais) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"Astonishing enough the royal satin seems to suit the exquisite taste of the Yalahari. Do you want a passage to Thais for 200 gold?",
}, npc, creature)
npcHandler:setTopic(playerId, 16)
else return true
end
elseif MsgContains(message, "Liberty Bay") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.LibertyBay) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"Which sane captain would sail his ship to a pirate town? Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 7)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.LibertyBay) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"Do you want a passage to Liberty Bay for 275 gold?", ---missing line
}, npc, creature)
npcHandler:setTopic(playerId, 17)
else return false
end
elseif MsgContains(message, "Carlin") then
if player:getStorageValue(Storage.SearoutesAroundYalahar.Carlin) ~= 1 and player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) < 5 then
npcHandler:say({
"An unremarkable town compared to the wonders of Yalahar. Or did you find something interesting there?",
}, npc, creature)
npcHandler:setTopic(playerId, 8)
elseif player:getStorageValue(Storage.SearoutesAroundYalahar.Carlin) == 1 or player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) >= 5 then
npcHandler:say({
"The evergreen flower pots are an amusing item that might find some customers here. Do you want a passage to Carlin for 185 gold?",
}, npc, creature)
npcHandler:setTopic(playerId, 18)
else return false
end
elseif MsgContains(message, "yes") then
if npcHandler:getTopic(playerId) == 1 and player:removeItem(8758,1) then
npcHandler:say("What's that? Bug milk? Hm, perhaps I can find some customers for that! ", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.AbDendriel, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 2 and player:removeItem(8760,1) then
npcHandler:say("Sand wasp honey? Hm, interesting at least!", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.Darashia, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 3 and player:removeItem(8759,1) then
npcHandler:say("Some special spice might be of value indeed.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.Venore, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 4 and player:removeItem(8761,1) then
npcHandler:say("I can hardly imagine that someone is interested in embalming fluid, but I\'ll give it a try.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 5 and player:removeItem(3044,1) then
npcHandler:say("Of course! Ivory! Its value is quite obvious.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.PortHope, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 6 and player:removeItem(8762,1) then
npcHandler:say("This royal satin is indeed of acceptable quality.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.Thais, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 7 and player:removeItem(5552,1,13) then
npcHandler:say("I doubt that the esteemed Yalahari will indulge into something profane as rum. But who knows, I'll give it a try.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.LibertyBay, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 8 and player:removeItem(8763,1) then
npcHandler:say("I doubt that these flowers will stay fresh and healthy forever. But if they do, they could be indeed valuable.", npc, creature)
player:setStorageValue(Storage.SearoutesAroundYalahar.Carlin, 1)
player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, player:getStorageValue(Storage.SearoutesAroundYalahar.TownsCounter) + 1)
npcHandler:setTopic(playerId, 0)
elseif npcHandler:getTopic(playerId) == 11 then
if player:removeMoneyBank(160) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32734, 31668, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 12 then
if player:removeMoneyBank(210) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(33289, 32480, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 13 then
if player:removeMoneyBank(185) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32954, 32022, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 14 then
if player:removeMoneyBank(230) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(33092, 32883, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 15 then
if player:removeMoneyBank(260) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32527, 32784, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 16 then
if player:removeMoneyBank(200) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32310, 32210, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 17 then
if player:removeMoneyBank(275) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32285, 32892, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif npcHandler:getTopic(playerId) == 18 then
if player:removeMoneyBank(185) then
npcHandler:say("Set the sails!", npc, creature)
doTeleportThing(creature, Position(32387, 31820, 6))
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say("You don\'t have enough money.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
else
npcHandler:say("Don\'t waste my time.", npc, creature)
npcHandler:setTopic(playerId, 0)
end
elseif MsgContains(message, "no") then
npcHandler:say({"Then no.",}, npc, creature)
npcHandler:setTopic(playerId, 0)
end
return true
end

-- Kick
keywordHandler:addKeyword({'kick'}, StdModule.kick, {npcHandler = npcHandler, destination = {Position(32811, 31267, 6), Position(32811, 31270, 6), Position(32811, 31273, 6)}})

-- Basic
keywordHandler:addKeyword({'job'}, StdModule.say, {npcHandler = npcHandler, text = 'I am the captain of this ship.'})
keywordHandler:addKeyword({'captain'}, StdModule.say, {npcHandler = npcHandler, text = 'I am the captain of this ship.'})
keywordHandler:addKeyword({'name'}, StdModule.say, {npcHandler = npcHandler, text = 'I\'m Karith. I don\'t belong to a caste any longer, and only serve the Yalahari.'})
keywordHandler:addKeyword({'yalahar'}, StdModule.say, {npcHandler = npcHandler, text = 'The city was a marvel to behold. It is certain that it have been the many foreigners that ruined it.'})

-- Greeting message
keywordHandler:addGreetKeyword({"ashari"}, {npcHandler = npcHandler, text = "Hello! Tell me what\'s on your mind. Time is money."})
--Farewell message
keywordHandler:addFarewellKeyword({"asgha thrazi"}, {npcHandler = npcHandler, text = "Goodbye, |PLAYERNAME|."})

npcHandler:setMessage(MESSAGE_FAREWELL, "Good bye.")
npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye.")

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true)

-- npcType registering the npcConfig table
npcType:register(npcConfig)
 
Last edited:
Back
Top