potinho
Advanced OT User
Good afternoon people, I'm using a script from an NPC Guide that works fine, but it only understands one word of hunt. I would like to put both singular and plural, eg ["Runes"], ["Rune]", ["Runas"], etc. I tried that way but it didn't work, could you help me?
Lua:
-- City Guide, adding mapmarks to locations by Limos
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
local config = {
["Runes"] = {mark = {x = 94, y = 54, z = 7}, type = MAPMARK_SKULL, name = "Dark Rodo's Runes Shop", text = "find", info = "Dark Rodo sells runes, wands, rods and fluids."},
["Djins"] = {mark = {x = 600, y = 59, z = 7}, type = MAPMARK_BAG, name = "Djins", text = "hunt in Desert City"},
["Carniphilas"] = {mark = {x = 800, y = 218, z = 7}, type = MAPMARK_REDNORTH, name = "Carniphilas", text = "hunt in Isengard"},
["Elephants"] = {mark = {x = 243, y = 125, z = 7}, type = MAPMARK_REDNORTH, name = "Elephants", text = "hunt in Saramansa Desert"},
["Trolls"] = {mark = {x = 142, y = 76, z = 7}, type = MAPMARK_TICK, name = "Trolls", text = "hunt"},
["Cyclops"] = {mark = {x = 126, y = 81, z = 7}, type = MAPMARK_REDNORTH, name = "Cyclops", text = "hunt"}
}
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 function addCptl(first, rest)
return first:upper()..rest:lower()
end
local x = config[msg:gsub("(%a)([%w_']*)", addCptl)]
if(x and talkState[talkUser] ~= 2) then
selfSay('Do you want me to add a mapmark where you can '..x.text..' '..msg..'?', cid)
xmsg = msg
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
x = config[xmsg:gsub("(%a)([%w_']*)", addCptl)]
selfSay('Here you are.', cid)
doPlayerAddMapMark(cid, x.mark,x.type,x.name)
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no') and talkState[talkUser] == 1) then
selfSay('Ok then.', cid)
talkState[talkUser] = 0
elseif(msgcontains(msg, 'information')) then
selfSay('About which location do you want more information?', cid)
talkState[talkUser] = 2
elseif(talkState[talkUser] == 2) then
if(x) then
if(x.info) then
selfSay('' .. x.info, cid)
else
selfSay('Sorry, I can\'t give you any useful information about this location.', cid)
end
else
selfSay('I don\'t know about this place, look in the {list} which locations I know.', cid)
end
talkState[talkUser] = 0
elseif (msgcontains(msg, 'mapmark')) then
selfSay("Which location do you want to go?", cid)
talkState[talkUser] = 0
elseif(msgcontains(msg, 'list')) then
selfSay('Here is my list, tell me where you want to go or you can also ask me for {information} about a location.', cid)
local text = 'Locations\n'
for i, x in pairs(config) do
text = text .. '\n' .. i .. ''
end
doShowTextDialog(cid, 1949, '' .. text)
talkState[talkUser] = 0
else
local messages = {'Sorry, I have no idea what you mean with '..msg..'.', 'What?', 'What do you mean?', 'Hmm?', 'Tell me a location, you can look in the {list} which locations I know.'}
selfSay(messages[math.random(#messages)], cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())