• 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!

Lua NPC SVARGROND ARENA

OTcreator

Active Member
Joined
Feb 14, 2022
Messages
412
Solutions
1
Reaction score
44
Hello.
I use Svargrond Arena MOD (in TFS 0.3.7).
All work pefect, but i need npc - where i can chose arena.
In my old npc i must done first arena to go second arena.


What to change so that I can choose the level of the arena?
etc:

Hi -> Arena - > greenshore or scrapper or warlord -> yes (and go to chosen arena)



Lua:
   domodlib('arenaFunctions')
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 focus = 0

local talk_start = 0

local TS = 0



function onCreatureDisappear(cid, pos)

    if focus == cid then

        selfSay('Good bye then.')

        focus = 0

        talk_start = 0

    end

end



local function BYE()

    focus = 0

    talk_start = 0

    TS = 0

end



function msgcontains(txt, str)

      return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end



function onCreatureSay(cid, type, msg)



    msg = string.lower(msg)

    if (msgcontains(msg, 'hi') and (focus == 0)) then

        selfSay('Hello ' .. getCreatureName(cid) .. ', Do you want to make arena?.')

          focus = cid

          talk_start = os.clock()

        TS = 1

    elseif msgcontains(msg, 'hi') and (focus ~= cid) then

          selfSay('Im Bussy')

    elseif TS == 1 and msgcontains(msg, 'yes') or msgcontains(msg, 'fight') or msgcontains(msg, 'arena') then

        if getPlayerStorageValue(cid, myArenaLevel) < 3 then

            local enterArena = myArenaLevelIs(cid)

            if getPlayerLevel(cid) >= enterArena.RLV then

                if getPlayerMoney(cid) >= enterArena.RC then

                    setPlayerStorageValue(cid, talkNPC, 1)

                    doPlayerRemoveMoney(cid, enterArena.RC)

                    selfSay("Now you can go to test... ".. enterArena.LN .."")

                    BYE()

                else

                    selfSay("You don\'t have "..enterArena.RC.." gp! Come back when you will be ready!")

                    BYE()

                end

            else

                selfSay("You don\'t have "..enterArena.RLV.." level! Come back when you will be ready!")

                BYE()

            end

        else

            selfSay(Cancel[6])

            BYE()

        end

    elseif TS == 1 and msgcontains(msg, 'no') then

        selfSay("Bye!.")

        BYE()

    elseif msgcontains(msg, 'bye') then

        selfSay("Bye!.")

        BYE()

    end

    return true

end



function onThink()

    doNpcSetCreatureFocus(focus)

    if (os.clock() - talk_start) > 60 then

          if focus > 0 then

              selfSay('Good bye then.')

          end

          focus = 0

      end

end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
Last edited:
Back
Top