Ir para conteúdo

[Encerrado] [Ajuda] Erro arena Svargrond


Farathor

Posts Recomendados

[28/2/2017 16:33:10] [Error - NpcScript Interface] [28/2/2017 16:33:10] data/npc/scripts/arena.lua:onCreatureSay[28/2/2017 16:33:10] Description: [28/2/2017 16:33:10] (LuaInterface::internalGetPlayerInfo) Player not found when requesting player info #3[28/2/2017 16:33:10] [Error - NpcScript Interface] [28/2/2017 16:33:10] data/npc/scripts/arena.lua:onCreatureSay[28/2/2017 16:33:10] Description: [28/2/2017 16:33:10] data/npc/scripts/arena.lua:81: attempt to compare number with boolean[28/2/2017 16:33:10] stack traceback:[28/2/2017 16:33:10]     data/npc/scripts/arena.lua:81: in function <data/npc/scripts/arena.lua:55>[28/2/2017 16:33:10]     [C]: in function 'selfSay'[28/2/2017 16:33:10]     data/npc/scripts/arena.lua:63: in function <data/npc/scripts/arena.lua:55>

NPC:

 

 

 

 

 

 

 

 

        domodlib('arenaFunctions')local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {} function onCreatureAppear(cid)              npcHandler:onCreatureAppear(cid)            endfunction onCreatureDisappear(cid)           npcHandler:onCreatureDisappear(cid)         endfunction onCreatureSay(cid, type, msg)          npcHandler:onCreatureSay(cid, type, msg)        endfunction onThink()                  npcHandler:onThink()                    endlocal 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 endnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())
 

MOD:

 

 

 

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?><mod name="Arena Svargrond" version="1.0" author="Tommy" contact="tommycrusher@gmail.com" enabled="yes"> <config name="arenaFunctions"><![CDATA[KickPosition = {x=1273, y=881, z=6} --if the player leave the arena or time is over, where he go.RewardsRoom = {x=1255, y=831, z=6} --rewards room position.arenaRoomMaxTime = 240 --max time for each room 240 = 4 min.OpenDoorsID = 5127 --if you change doors item ids, change me   TimeStor = 42350 --here will be saved the time.myArenaLevel = 45450 --here will be saved the arena level.talkNPC = 45451 --Storage to check if the player have paid to the npc and can enter to the arena.RewardsStor = {42361, 42371, 42381} --Storage for greenshore, scrapper, warlord.isIN = 42352 --to check if the player is in the arena.myRoom = 46000 --here will be saved the current room.MonStor = 47000 --here will be saved the monster uid.  DoorsActID = 42357 --Doors near the npc.LeavePortals = 42321 --The action id of the portal to leave the rooms (south portals).GobletTiles = {42360, 42370, 42380} --Action ids of the tiles for Bronze, Silver and Gold Goblets. Cancel = {    --message when use door and have not paid to the npc.    [1] = "You have not paid NPC yet.",    --message when leave arena.    [2] = "You have been kicked.!",    --message when the player can't get the reward.    [3] = "You can\'t get this item",    --message when already got any reward.    [4] = "It is empty.",    --when try to open a reward door and haven't completed the level.    [5] = "You have not finished this arena level.",    --NPC answer if the player completed all arena levels.    [6] = "You already did all the arena levels.",    --message when time is over    [7] = "The time is over.",    --message when you can go to the next room, LoL >_> this is not a cancel btw.    [8] = "You can go to the next room.",    --when try to go to the next room and not killed the monster yet.    [9] = "Kill the monster first",    --when try to go to the next room but there is a player yet...this text will be PLAYERNAME + this text    [10] = "is in the room yet."    } Completed = {    [1] = "Congatulations! you have completed the arena in",    --HERE WILL BE THE ARENA NAME.    [2] = "difficulty!, now go and take your reward."}    --then the message will be "Congatulations! you have completed the arena in greenshore/scrapper/warlord difficulty!, now go and take your reward."    Arena = {    --greenshore    [0] = {        Cost = 10000,        LevelName = 'greenshore',        LevelNeeded = 30,        Goblet = 5807        },    --scrapper    [1] = {        Cost = 50000,        LevelName = 'scrapper',        LevelNeeded = 50,        Goblet = 5806        },    --warlord    [2] = {        Cost = 100000,        LevelName = 'warlord',         LevelNeeded = 80,        Goblet = 5805        }    }  Rewards = {    --greenshore    --present with items.    [42361] = {        Stor = RewardsStor[1],        Cont = 1990,        items = {7372, 6569, 6574, 2114},        count = {1, 10, 1, 1}        },    --blacksteel sword.    [42362] = {        Stor = RewardsStor[1],        Cont = nil,        item = 7406        },    --headchopper.    [42363] = {        Stor = RewardsStor[1],        Cont = nil,        item = 7380        },    --orcish maul.    [42364] = {        Stor = RewardsStor[1],        Cont = nil,        item = 7392        },    --backpack with items.    [42365] = {        Stor = RewardsStor[1],        Cont = 7342,        items = {7365, 7364},        count = {100, 100}        },    --scrapper    --present with items.    [42371] = {        Stor = RewardsStor[2],        Cont = 1990,        items = {7372, 6569, 6574, 7183},        count = {1, 10, 1, 1}        },    --mystic blade.    [42372] = {        Stor = RewardsStor[2],        Cont = nil,        item = 7384        },    --heroic axe.    [42373] = {        Stor = RewardsStor[2],        Cont = nil,        item = 7389        },    --cranial basher    [42374] = {        Stor = RewardsStor[2],        Cont = nil,        item = 7415        },    --backpack with items.    [42375] = {        Stor = RewardsStor[2],        Cont = 7342,        items = {7365, 2547, 2547, 2311, 2304},        count = {100, 100, 100, 50, 50}        },    --warlord    --present with items.    [42381] = {        Stor = RewardsStor[3],        Cont = 1990,        items = {7372, 6569, 6574, 6568},        count = {1, 10, 1, 1}        },    --justice seeker    [42382] = {        Stor = RewardsStor[3],        Cont = nil,        item = 7390        },    --royal axe.    [42383] = {        Stor = RewardsStor[3],        Cont = nil,        item = 7434        },    --blessed sceptre.    [42384] = {        Stor = RewardsStor[3],        Cont = nil,        item = 7429        },    --backpack with items.    [42385] = {        Stor = RewardsStor[3],        Cont = 7342,        items = {2273, 2268, 7443, 7440, 7529},        count = {50, 50, 1, 1, 100}        }    } arena_monsters = {    --greenshore                            -scrapper                           --warlord    [45300] = "Frostfur",               [45310] = "Avalanche",          [45320] = "Webster",    [45301] = "Bloodpaw",               [45311] = "Kreebosh the Exile", [45321] = "Darakan the Executioner",    [45302] = "Bovinus",                [45312] = "The Dark Dancer",    [45322] = "Norgle Glacierbeard",    [45303] = "Achad",                  [45313] = "The Hag",            [45323] = "The Pit Lord",    [45304] = "Colerian The Barbarian", [45314] = "Slim",               [45324] = "Svoren the Mad",    [45305] = "The Hairy One",          [45315] = "Grimgor Guteater",   [45325] = "The Masked Marauder",    [45306] = "Axeitus Headbanger",     [45316] = "Drasilla",           [45326] = "Gnorre Chyllson",    [45307] = "Rocky",                  [45317] = "Spirit of Earth",    [45327] = "Fallen Mooh'tah Master Ghar",    [45308] = "Cursed Gladiator",       [45318] = "Spirit of Water",    [45328] = "Deathbringer",    [45309] = "Orcus the Cruel",        [45319] = "Spirit of Fire",     [45329] = "The Obliverator"} Checking = false RoomsACT = {42301, 42302, 42303, 42304, 42305, 42306, 42307, 42308, 42309} Goblets = {    [42360] = {Id=Arena[0].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[0].LevelName.." difficulty."},    [42370] = {Id=Arena[1].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[1].LevelName.." difficulty."},    [42380] = {Id=Arena[2].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[2].LevelName.." difficulty."}} RewardsDoors = {[42366] = 1, [42376] = 2, [42386] = 3} ArenaAdding = {[0] = 3000, [1] = 3010, [2] = 3020} function myArenaLevelIs(cid)    Stor = getPlayerStorageValue(cid, myArenaLevel)    if Stor == -1 then        setPlayerStorageValue(cid, myArenaLevel, 0)        Stor = 0    elseif Stor == 3 then Stor = 2    end    return {        RC = Arena[stor].Cost,        LN = Arena[stor].LevelName,        RLV = Arena[stor].LevelNeeded,        LV = getPlayerStorageValue(cid, myArenaLevel)    }end function getDirectionMove(cid, itempos)    --function by Nahruto    p = getCreaturePosition(cid)    i = itempos    if p.x > i.x then        if p.y > i.y then            ret = NORTHWEST        elseif p.y < i.y then            ret = SOUTHWEST        else            ret = WEST        end    elseif p.x < i.x then        if p.y > i.y then            ret = NORTHEAST        elseif p.y < i.y then            ret = SOUTHEAST        else            ret = EAST        end    else        if p.y > i.y then            ret = NORTH        elseif p.y < i.y then            ret = SOUTH        else            ret = nil        end    end    return retend function LeaveArena(cid)    for i = 45300, 45329 do        setPlayerStorageValue(cid, i, 0)    end    if isCreature(getPlayerStorageValue(cid, MonStor)) == TRUE then        doRemoveCreature(getPlayerStorageValue(cid, MonStor))    end    setGlobalStorageValue(getPlayerStorageValue(cid, myRoom), 0)    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[2])    doTeleportThing(cid, KickPosition, FALSE)    setPlayerStorageValue(cid, TimeStor, 0)    setPlayerStorageValue(cid, isIN, 0)end function CheckRooms()    addEvent(CheckRooms, 1000)    for i = 42300, 42309 do        local Player = getGlobalStorageValue(i)        if isPlayer(Player) == TRUE then            local PlayerTime = getPlayerStorageValue(Player, TimeStor)            if PlayerTime <= os.time() then                doTeleportThing(Player, KickPosition, FALSE)                setPlayerStorageValue(Player, TimeStor, 0)                setGlobalStorageValue(i, 0)                doPlayerSendTextMessage(Player,MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[7])                if isCreature(getPlayerStorageValue(Player, MonStor)) == TRUE then                    doRemoveCreature(getPlayerStorageValue(Player, MonStor))                end            elseif PlayerTime - 10 <= os.time() then                doPlayerSendTextMessage(Player, MESSAGE_EVENT_DEFAULT, "you have "..PlayerTime - os.time().." seconds left.!")            end        else            setGlobalStorageValue(i, 0)        end    endend function getArenaMonsterIdByName(name)    for i = 45300, 45329 do        if tostring(arena_monsters[i]) == string.lower(tostring(name)) then            return i        end    end    return falseend]]></config>        <event type="login" name="arenaRegister" event="script"><![CDATA[        domodlib('arenaFunctions')        function onLogin(cid)    registerCreatureEvent(cid, "PlayerArena")    registerCreatureEvent(cid, "ArenaKill")        return trueend]]></event> <event type="death" name="PlayerArena" event="script"><![CDATA[    domodlib('arenaFunctions')    function onDeath(cid, corpse, deathList)        if getPlayerStorageValue(cid, isIN) == 1 then            I = 0                    for i = 45300, 45329 do                if getPlayerStorageValue(cid, i) == 1 then                    I = i                end            end            GlobalStor = I - ArenaAdding[myArenaLevelIs(cid).LV]            setGlobalStorageValue(GlobalStor, 0)            setPlayerStorageValue(cid, isIN, 0)            if isCreature(getPlayerStorageValue(cid, MonStor)) then                doRemoveCreature(getPlayerStorageValue(cid, MonStor))            end        end        return true    end]]></event>         <event type="kill" name="ArenaKill" event="script"><![CDATA[        domodlib('arenaFunctions')function onKill(cid, target, lastHit)    if getPlayerStorageValue(cid, isIN) == 1 then        local Room = getArenaMonsterIdByName(getCreatureName(target))        if Room ~= 0 then            setPlayerStorageValue(cid, Room, 1)            doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, Cancel[8])        end       end        return trueend]]></event>         <action fromaid="42357" toaid="42386" event="script"><![CDATA[        domodlib('arenaFunctions')function onUse(cid, item, fromPosition, itemEx, toPosition)    local myMove = getDirectionMove(cid, fromPosition)     if myMove == nil then         return FALSE     end     local Reward = Rewards[item.actionid]     if Reward then         if getPlayerStorageValue(cid, Reward.Stor) ~= 1 then             local reward = nil             if Reward.Cont ~= nil then                 reward = doCreateItemEx(Reward.Cont, 1)                 for i = 1, #Reward.items do                     doAddContainerItem(reward, Reward.items[i], Reward.count[i])                 end             else                 reward = doCreateItemEx(Reward.item, 1)             end             if reward ~= nil then                 if doPlayerAddItemEx(cid, reward, FALSE) == RETURNVALUE_NOERROR then                     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,'You have found a '..getItemNameById(getThing(reward).itemid)..'.')                     setPlayerStorageValue(cid, Reward.Stor, 1)                                 addPlayerRep(cid, 5, TEXTCOLOR_LIGHTBLUE)                 else                     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[3])                 end             end         else             doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[4])         end     elseif RewardsDoors[item.actionid] then         if myArenaLevelIs(cid).LV >= RewardsDoors[item.actionid] then             doTransformItem(item.uid, OpenDoorsID)             doMoveCreature(cid, myMove)         else             doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[5])         end     elseif item.actionid == DoorsActID and getPlayerStorageValue(cid, talkNPC) == 1 then         doTransformItem(item.uid, OpenDoorsID)         doMoveCreature(cid, myMove)     else         doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[1])end     return TRUE end]]></action>     <movevent type="StepIn" fromaid="42300" toaid="42380" event="script"><![CDATA[        domodlib('arenaFunctions')function onStepIn(cid, item, position, fromPosition)    local ArenaRoom = item.actionid     if item.actionid == LeavePortals then         LeaveArena(cid)     elseif isInArray(GobletTiles, item.actionid) == TRUE then         local gobletPos = getThingPos(item.uid)         if getPlayerStorageValue(cid, item.actionid) ~= 1 then             setPlayerStorageValue(cid, item.actionid, 1)             local Goblet = doCreateItemEx(Goblets[item.actionid].Id, 1)             doItemSetAttribute(Goblet, "description", ""..Goblets[item.actionid].txt.."\nAwarded to "..getCreatureName(cid)..".")             gobletPos.y = gobletPos.y - 1             doTileAddItemEx(gobletPos, Goblet)         end         doTransformItem(item.uid, item.itemid - 1)     elseif isInArray(RoomsACT, ArenaRoom) == TRUE or ArenaRoom == 42300 then         if Checking == FALSE then Checking = TRUE CheckRooms() end         local myLevelArena = myArenaLevelIs(cid).LV         if ArenaAdding[myLevelArena] then             Mons = ArenaRoom + ArenaAdding[myLevelArena]         end         if getGlobalStorageValue(ArenaRoom) == 0 then             if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then                 if ArenaRoom == 42300 and getPlayerStorageValue(cid, talkNPC) == 1 then                     setPlayerStorageValue(cid, talkNPC, 0)                     setPlayerStorageValue(cid, isIN, 1)                     P = 1                 elseif ArenaRoom ~= 42300 and getPlayerStorageValue(cid, isIN) == 1 then                     P = 1                 else                     P = nil                 end                     if P ~= nil then                     local SpawnPos = getThingPos(ArenaRoom)                     doTeleportThing(cid, SpawnPos, FALSE)                     SpawnPos.x = SpawnPos.x - 1                     SpawnPos.y = SpawnPos.y - 1                     local Monster = doSummonCreature(arena_monsters[Mons], SpawnPos)                     setGlobalStorageValue(ArenaRoom, cid)                     setGlobalStorageValue(ArenaRoom - 1, 0)                     setPlayerStorageValue(cid, TimeStor, os.time()+arenaRoomMaxTime)                     setPlayerStorageValue(cid, MonStor, Monster)                     setPlayerStorageValue(cid, myRoom, ArenaRoom)                 else                     LeaveArena(cid)                 end             else                 doTeleportThing(cid, fromPosition, TRUE)                 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[9])             end         else             doTeleportThing(cid, fromPosition, TRUE)             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, ""..getCreatureName(getGlobalStorageValue(cid, ArenaRoom)).." "..Cancel[10].."")         end     elseif ArenaRoom == 42310 then         if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then             doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,""..Completed[1].." "..myArenaLevelIs(cid).LN.." "..Completed[2].."")             setPlayerStorageValue(cid, myArenaLevel, getPlayerStorageValue(cid, myArenaLevel) + 1)             setGlobalStorageValue(ArenaRoom - 1, 0)             setPlayerStorageValue(cid, TimeStor, 0)             setPlayerStorageValue(cid, isIN, 0)             doTeleportThing(cid, RewardsRoom, TRUE)         else             doTeleportThing(cid, fromPosition, TRUE)             doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,'Najpierw zabij potwora!')         end     end     return TRUE end]]></movevent>     <movevent type="StepOut" fromaid="42357" toaid="42387" event="script"><![CDATA[        domodlib('arenaFunctions')function onStepOut(cid, item, position, fromPosition)     if item.actionid == DoorsActID or RewardsDoors[item.actionid] then         doTransformItem(item.uid, item.itemid - 2)     elseif isInArray(GobletTiles, item.actionid) == TRUE then         doTransformItem(item.uid, item.itemid + 1)        end     return TRUE end]]></movevent> </mod>
 
Link para o comentário
Compartilhar em outros sites

  • 9 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...