Postado Junho 7, 2015 9 anos [7/6/2015 4:8:30] [Error - Action Interface] [7/6/2015 4:8:30] data/actions/scripts/other/doors.lua:onUse [7/6/2015 4:8:30] Description: [7/6/2015 4:8:30] data/actions/scripts/other/doors.lua:13: attempt to index global 'DOORS' (a nil value) [7/6/2015 4:8:30] stack traceback: [7/6/2015 4:8:30] data/actions/scripts/other/doors.lua:13: in function <data/actions/scripts/other/doors.lua:7> Meu actions/other/doors.lua local function doorEnter(cid, uid, id, position) doTransformItem(uid, id) doTeleportThing(cid, position) return true end function onUse(cid, item, fromPosition, itemEx, toPosition) if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) return true end local locked = DOORS[item.itemid] if(locked) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") return true end local door = getItemInfo(item.itemid) if(door.levelDoor > 0) then if(item.aid == 189) then if(not isPremium(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end local gender = item.aid - 186 if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE}, gender)) then if(gender ~= getPlayerSex(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end local skull = item.aid - 180 if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then if(skull ~= getCreatureSkullType(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end local group = item.aid - 150 if(group >= 0 and group < 30) then if(group > getPlayerGroupId(cid)) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end local vocation = item.aid - 100 if(vocation >= 0 and vocation < 50) then local vocationEx = getVocationInfo(getPlayerVocation(cid)) if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.") return true end if(door.specialDoor) then if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then return doorEnter(cid, item.uid, door.transformUseTo, toPosition) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.") return true end toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition) if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then return true end local doorCreature = getThingFromPosition(toPosition) if(doorCreature.itemid ~= 0) then toPosition.x = toPosition.x + 1 local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles if(query == RETURNVALUE_NOTPOSSIBLE) then toPosition.x = toPosition.x - 1 toPosition.y = toPosition.y + 1 query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found end if(query ~= RETURNVALUE_NOERROR) then doPlayerSendDefaultCancel(cid, query) return true end doTeleportThing(doorCreature.uid, toPosition) if(not door.closingDoor) then doTransformItem(item.uid, door.transformUseTo) end return true end return false end Este problema aconteceu dps que troquei de tfs 0.4 para Otx, ja resolvi todos os erros, mas esse nao consegui, se alguem souber oque faço da um help ae REP + pra quem ajudar! Editado Junho 7, 2015 9 anos por gbik (veja o histórico de edições)
Postado Junho 7, 2015 9 anos Autor Em 07/06/2015 em 07:23, Alienbear disse: cara tente mudar os DOORS por doors ja fiz isso e nada
Postado Junho 7, 2015 9 anos então seu distro n tem a função do script Pode postar sua lib/50-function?
Postado Junho 7, 2015 9 anos Autor Em 07/06/2015 em 07:41, Alienbear disse: então seu distro n tem a função do script Pode postar sua lib/50-function? ai a function function isInArray(array, value, caseSensitive) if(caseSensitive == nil or caseSensitive == false) and type(value) == "string" then local lowerValue = value:lower() for _, _value in ipairs(array) do if type(_value) == "string" and lowerValue == _value:lower() then return true end end else for _, _value in ipairs(array) do if (value == _value) then return true end end end return false end function setPlayerStorageValueDB(guid, key, value) db.executeQuery("UPDATE player_storage SET value = "..value.." WHERE key = "..key.." AND player_id = ".. guid ..";") return true end function getPlayerStorageValueDB(guid, key) local result = db.getResult("SELECT value FROM `player_storage` WHERE key = "..key.." AND player_id = ".. guid ..";") if result:getID() ~= -1 then return result:getDataInt("value") else return -1 end result:free() end function doPlayerGiveItem(cid, itemid, amount, subType) local item = 0 if(isItemStackable(itemid)) then item = doCreateItemEx(itemid, amount) if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then return false end else for i = 1, amount do item = doCreateItemEx(itemid, subType) if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then return false end end end return true end function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType) for i = 1, amount do local container = doCreateItemEx(containerid, 1) for x = 1, getContainerCapById(containerid) do doAddContainerItem(container, itemid, subType) end if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then return false end end return true end function doPlayerTakeItem(cid, itemid, amount) return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount) end function doPlayerSellItem(cid, itemid, count, cost) if(not doPlayerTakeItem(cid, itemid, count)) then return false end if(not doPlayerAddMoney(cid, cost)) then error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).') end return true end function doPlayerWithdrawMoney(cid, amount) if(not getBooleanFromString(getConfigInfo('bankSystem'))) then return false end local balance = getPlayerBalance(cid) if(amount > balance or not doPlayerAddMoney(cid, amount)) then return false end doPlayerSetBalance(cid, balance - amount) return true end function doPlayerDepositMoney(cid, amount) if(not getBooleanFromString(getConfigInfo('bankSystem'))) then return false end if(not doPlayerRemoveMoney(cid, amount)) then return false end doPlayerSetBalance(cid, getPlayerBalance(cid) + amount) return true end function doPlayerAddStamina(cid, minutes) return doPlayerSetStamina(cid, getPlayerStamina(cid) + minutes) end function isPremium(cid) return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigValue('freePremium')))) end function getMonthDayEnding(day) if(day == "01" or day == "21" or day == "31") then return "st" elseif(day == "02" or day == "22") then return "nd" elseif(day == "03" or day == "23") then return "rd" end return "th" end function getMonthString(m) return os.date("%B", os.time{year = 1970, month = m, day = 1}) end function getArticle(str) return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a" end function doNumberFormat(i) local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0 repeat str, found = string.gsub(str, "(%d)(%d%d%d),", "%1,%2,", 1) until found == 0 return str end function doPlayerAddAddons(cid, addon) for i = 0, table.maxn(maleOutfits) do doPlayerAddOutfit(cid, maleOutfits, addon) end for i = 0, table.maxn(femaleOutfits) do doPlayerAddOutfit(cid, femaleOutfits, addon) end end function getTibiaTime(num) local minutes, hours = getWorldTime(), 0 while (minutes > 60) do hours = hours + 1 minutes = minutes - 60 end if(num) then return {hours = hours, minutes = minutes} end return {hours = hours < 10 and '0' .. hours or '' .. hours, minutes = minutes < 10 and '0' .. minutes or '' .. minutes} end function doWriteLogFile(file, text) local f = io.open(file, "a+") if(not f) then return false end f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n") f:close() return true end function getExperienceForLevel(lv) lv = lv - 1 return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3 end function doMutePlayer(cid, time) local condition = createConditionObject(CONDITION_MUTED, (time == -1 and time or time * 1000)) return doAddCondition(cid, condition, false) end function doSummonCreature(name, pos) local cid = doCreateMonster(name, pos, false, false) if(not cid) then cid = doCreateNpc(name, pos) end return cid end function getPlayersOnlineEx() local players = {} for i, cid in ipairs(getPlayersOnline()) do table.insert(players, getCreatureName(cid)) end return players end function getPlayerByName(name) local cid = getCreatureByName(name) return isPlayer(cid) and cid or nil end function isPlayer(cid) return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS end function isPlayerGhost(cid) return isPlayer(cid) and (getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE, CONDITIONID_DEFAULT) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)) end function isMonster(cid) return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS end function isNpc(cid) -- Npc IDs are over int32_t range (which is default for lua_pushnumber), -- therefore number is always a negative value. return isCreature(cid) and (cid < 0 or cid >= AUTOID_NPCS) end function isUnderWater(cid) return isInArray(underWater, getTileInfo(getCreaturePosition(cid)).itemid) end function doPlayerAddLevel(cid, amount, round) local experience, level, amount = 0, getPlayerLevel(cid), amount or 1 if(amount > 0) then experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level)) else experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount)) end return doPlayerAddExperience(cid, experience) end function doPlayerAddMagLevel(cid, amount) local amount = amount or 1 for i = 1, amount do doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false) end return true end function doPlayerAddSkill(cid, skill, amount, round) local amount = amount or 1 if(skill == SKILL__LEVEL) then return doPlayerAddLevel(cid, amount, round) elseif(skill == SKILL__MAGLEVEL) then return doPlayerAddMagLevel(cid, amount) end for i = 1, amount do doPlayerAddSkillTry(cid, skill, getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill), false) end return true end function isPrivateChannel(channelId) return channelId >= CHANNEL_PRIVATE end function doBroadcastMessage(text, class) local class = class or MESSAGE_STATUS_WARNING if(type(class) == 'string') then local className = MESSAGE_TYPES[class] if(className == nil) then return false end class = className elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then return false end for _, pid in ipairs(getPlayersOnline()) do doPlayerSendTextMessage(pid, class, text) end print("> Broadcasted message: \"" .. text .. "\".") return true end function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost) local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then return false end if(type(class) == 'string') then local className = TALKTYPE_TYPES[class] if(className == nil) then return false end class = className elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then return false end for _, pid in ipairs(getPlayersOnline()) do doCreatureSay(cid, text, class, ghost, pid) end print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".") return true end function doCopyItem(item, attributes) local attributes = ((type(attributes) == 'table') and attributes or { "aid" }) local ret = doCreateItemEx(item.itemid, item.type) for _, key in ipairs(attributes) do local value = getItemAttribute(item.uid, key) if(value ~= nil) then doItemSetAttribute(ret, key, value) end end if(isContainer(item.uid)) then for i = (getContainerSize(item.uid) - 1), 0, -1 do local tmp = getContainerItem(item.uid, i) if(tmp.itemid > 0) then doAddContainerItemEx(ret, doCopyItem(tmp, true).uid) end end end return getThing(ret) end function doSetItemText(uid, text, writer, date) local thing = getThing(uid) if(thing.itemid < 100) then return false end doItemSetAttribute(uid, "text", text) if(writer ~= nil) then doItemSetAttribute(uid, "writer", tostring(writer)) if(date ~= nil) then doItemSetAttribute(uid, "date", tonumber(date)) end end return true end function getItemWeightById(itemid, count, precision) local item, count, precision = getItemInfo(itemid), count or 1, precision or false if(not item) then return false end if(count > 100) then -- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!') end local weight = item.weight * count return precission and weight or math.round(weight, 2) end function choose(...) local arg, ret = {...} if type(arg[1]) == 'table' then ret = arg[1][math.random(#arg[1])] else ret = arg[math.random(#arg)] end return ret end function doPlayerAddExpEx(cid, amount) if(not doPlayerAddExp(cid, amount)) then return false end local position = getThingPosition(cid) doPlayerSendTextMessage(cid, MESSAGE_EXPERIENCE, "You gained " .. amount .. " experience.", amount, COLOR_WHITE, position) local spectators, name = getSpectators(position, 7, 7), getCreatureName(cid) for _, pid in ipairs(spectators) do if(isPlayer(pid) and cid ~= pid) then doPlayerSendTextMessage(pid, MESSAGE_EXPERIENCE_OTHERS, name .. " gained " .. amount .. " experience.", amount, COLOR_WHITE, position) end end return true end function getItemTopParent(uid) local parent = getItemParent(uid) if(not parent or parent.uid == 0) then return nil end while(true) do local tmp = getItemParent(parent.uid) if(tmp and tmp.uid ~= 0) then parent = tmp else break end end return parent end function getItemHolder(uid) local parent = getItemParent(uid) if(not parent or parent.uid == 0) then return nil end local holder = nil while(true) do local tmp = getItemParent(parent.uid) if(tmp and tmp.uid ~= 0) then if(tmp.itemid == 1) then -- a creature holder = tmp break end parent = tmp else break end end return holder end function valid(f) return function(p, ...) if(isCreature(p)) then return f(p, ...) end end end function addContainerItems(container,items) local items_mod = {} for _, it in ipairs(items) do if( isItemStackable(it.id) and it.count > 100) then local c = it.count while( c > 100 ) do table.insert(items_mod,{id = it.id,count = 100}) c = c - 100 end if(c > 0) then table.insert(items_mod,{id = it.id,count = c}) end else table.insert(items_mod,{id = it.id,count = 1}) end end local free = getContainerCap(container.uid) - (getContainerSize(container.uid) ) local count = math.ceil(#items_mod/ free) local main_bp = container.uid local insert_bp = main_bp local counter = 1 for c,it in ipairs(items_mod) do local _c = isItemStackable(it.id) and (it.count > 100 and 100 or it.count) or 1 if count > 1 then if (counter < free) then doAddContainerItem(insert_bp, it.id, _c) else insert_bp = doAddContainerItem(insert_bp, container.itemid, 1) count = (#items_mod)-(free-1) free = getContainerCap(insert_bp) count = math.ceil(count/ free) doAddContainerItem(insert_bp, it.id, _c) counter = 1 end counter = counter + 1 else doAddContainerItem(insert_bp, it.id, _c) end end return main_bp end o erro é esse 7/6/2015 4:46:19] [Error - Action Interface] [7/6/2015 4:46:19] data/actions/scripts/other/doors.lua:onUse [7/6/2015 4:46:20] Description: [7/6/2015 4:46:20] data/actions/scripts/other/doors.lua:13: attempt to index global 'doors' (a nil value) [7/6/2015 4:46:20] stack traceback: [7/6/2015 4:46:20] data/actions/scripts/other/doors.lua:13: in function <data/actions/scripts/other/doors.lua:7> Editado Junho 7, 2015 9 anos por gbik (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.