Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola amigos, estou com um problema no autoloot, ele tem um limite configuravel do maximo de itens para autoloot, só que quando esse limite é preenchido, ele não remove mais os itens que ja estao na lista. Deve ser facil corrigir para quem sabe :), mas para mim é muito complicado.

 Se alguem puder dar uma olhada no sistema e puder me dizer onde esta a falha eu agradeço.

 

talkactions.xml

<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/>

aloot.lua

local stor, limit = 7575, 5 --storage, limit to add.
 
local allow_container = false --empty! not looted with items, atleast for now.
 
function onSay(cid, words, param)
    local expl = param:explode(':')
    local action, rst = expl[1], expl[2]
    if (action:lower() == 'check') then
        local infos, list = getPlayerStorageValue(cid, stor), {}
        if (infos ~= -1) then
            list = tostring(infos):explode(',')
        end
        local txt = 'Autoloot List:\n'
        if (#list > 0) then
            for k, id in ipairs(list) do
                id = id:gsub('_', '')
                if tonumber(id) then
                    txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '')
                end
            end
        else
            txt = 'Empty'
        end
        doPlayerPopupFYI(cid, txt)
    elseif (action:lower() == 'add') then
        local infos, list = getPlayerStorageValue(cid, stor), {}
        if (infos ~= -1) then
            list = tostring(infos):gsub('_', ''):explode(',')
        end
        if (#list >= limit) then
            return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.')
        end
        local item = tonumber(rst)
        if not item then
            item = getItemIdByName(rst, false)
            if not item then
                return doPlayerSendCancel(cid, 'not valid item.')
            end
        end
        if not allow_container and isItemContainer(item) then
            return doPlayerSendCancel(cid, 'this item can not be autolooted.')
        end
        local attrs = getItemInfo(item)
        if not attrs then
            return doPlayerSendCancel(cid, 'not valid item.')
        elseif not attrs.movable or not attrs.pickupable then
            return doPlayerSendCancel(cid, 'this item can not be autolooted.')
        end
        if isInArray(list, item) then
            return doPlayerSendCancel(cid, 'already added.')
        end
        table.insert(list, tostring(item))
        local new = ''
        for v, id in ipairs(list) do
            new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')
        end
        doPlayerSetStorageValue(cid, stor, tostring(new))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.')
    elseif (action:lower() == 'remove') then
        local infos, list = getPlayerStorageValue(cid, stor), {}
        if (infos ~= -1) then
            list = tostring(infos):gsub('_', ''):explode(',')
        end
        if (#list == 0) then
            return doPlayerSendCancel(cid, 'You dont have any item added.')
        end
        if (#list >= limit) then
            return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.')
        end
        local item = tonumber(rst)
        if not item then
            item = getItemIdByName(rst, false)
            if not item then
                return doPlayerSendCancel(cid, 'not valid item.')
            end
        end
        if not isInArray(list, item) then
            return doPlayerSendCancel(cid, 'This item is not in the list.')
        end
        local new = ''
        for v, id in ipairs(list) do
            if (tonumber(id) ~= item) then
                new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')
            end
        end
        doPlayerSetStorageValue(cid, stor, tostring(new))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.')
    end        
    return true
end

 
 
creaturescripts.xml
<event type="login" name="aloot_reg" event="script" value="aloot.lua"/>
<event type="kill" name="aloot_kill" event="script" value="aloot.lua"/>

aloot.lua

function onLogin(cid)
    registerCreatureEvent(cid, "aloot_kill")
    return true
end
 
local stor = 7575
 
function autoloot(cid, target, pos)
    local function doStack(cid, itemid, new)
        local count = getPlayerItemCount(cid, itemid)
        if (count > 100) then
            count = count - math.floor(count / 100) * 100
        end
        local newCount = count + new
        if (count ~= 0) then
            local find = getPlayerItemById(cid, true, itemid, count).uid
            if (find > 0) then
                doRemoveItem(find)
            else
                newCount = new
            end
        end
        local item = doCreateItemEx(itemid, newCount)
        doPlayerAddItemEx(cid, item, true)
    end
 
    local function scanContainer(cid, uid, list)
        for k = (getContainerSize(uid) - 1), 0, -1 do
            local tmp = getContainerItem(uid, k)
            if (isInArray(list, tmp.itemid)) then
                if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then
                    doStack(cid, tmp.itemid, tmp.type)
                else
                    local item = doCreateItemEx(tmp.itemid, tmp.type)
                    doPlayerAddItemEx(cid, item, true)
                end
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.')
                doRemoveItem(tmp.uid)
            elseif isContainer(tmp.uid) then
                scanContainer(cid, tmp.uid, list)
            end
        end
    end
 
    local items = {}
    for i = getTileInfo(pos).items, 1, -1 do
        pos.stackpos = i
        table.insert(items, getThingFromPos(pos))
    end
 
    if (#items == 0) then
        return
    end
 
    local corpse = -1
    for _, item in ipairs(items) do
        local name = getItemName(item.uid):lower()
        if name:find(target:lower()) then
            corpse = item.uid
            break
        end
    end
 
    if (corpse ~= -1) and isContainer(corpse) then
        scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(','))
    end
end
 
function onKill(cid, target, lastHit)
    if not isPlayer(target) then
        local infos = getPlayerStorageValue(cid, stor)
        if (infos == -1) then
            return true
        end
        local list = tostring(infos):explode(',')
        if (#list == 0) then
            return true
        end
        addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target))
    end
    return true
end

 
 
Bem esses são os arquivos do aloot.
 
E aparece varias veses um erro no console, creio eu que seja pq o aloot deixa passar alguns itens, e quando empilha 100 itens ele não junta mais, a não ser que o player separe 1 item da pilha dos 100. segue o erro no console:
[10/07/2014 23:24:50] [Error - CreatureScript Interface] 
[10/07/2014 23:24:50] In a timer event called from: 
[10/07/2014 23:24:50] data/creaturescripts/scripts/aloot.lua:onKill
[10/07/2014 23:24:50] Description: 
[10/07/2014 23:24:50] data/lib/050-function.lua:239: attempt to index a boolean value
[10/07/2014 23:24:50] stack traceback:
[10/07/2014 23:24:50] 	data/lib/050-function.lua:239: in function 'getItemName'
[10/07/2014 23:24:50] 	data/creaturescripts/scripts/aloot.lua:57: in function <data/creaturescripts/scripts/aloot.lua:8>

050-function.lua

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 doPlayerBuyItem(cid, itemid, count, cost, charges)
return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)
end
 
function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)
return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)
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 isPremium(cid)
return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('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)
    if str:find("[AaEeIiOoUuYy]") then 
  return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"
    else
       print("Error trying to use Look.lua in a pokeball!!")
       return "a"
    end
end
 
function isNumber(str)
return tonumber(str) ~= nil
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 doPlayerWithdrawAllMoney(cid)
return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))
end
 
function doPlayerDepositAllMoney(cid)
return doPlayerDepositMoney(cid, getPlayerMoney(cid))
end
 
function doPlayerTransferAllMoneyTo(cid, target)
return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))
end
 
function playerExists(name)
return getPlayerGUIDByName(name) ~= 0
end
 
function getTibiaTime()
local minutes = getWorldTime()
local hours = 0
while (minutes > 60) do
hours = hours + 1
minutes = minutes - 60
end
 
return {hours = hours, minutes = 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)
setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)
return doAddCondition(cid, condition)
end
 
function getPlayerGroupName(cid)
return getGroupInfo(getPlayerGroupId(cid)).name
end
 
function getPlayerVocationName(cid)
return getVocationInfo(getPlayerVocation(cid)).name
end
 
function getPromotedVocation(vid)
return getVocationInfo(vid).promotedVocation
end
 
function doPlayerRemovePremiumDays(cid, days)
return doPlayerAddPremiumDays(cid, -days)
end
 
function getPlayerMasterPos(cid)
return getTownTemplePosition(getPlayerTown(cid))
end
 
function getHouseOwner(houseId)
return getHouseInfo(houseId).owner
end
 
function getHouseName(houseId)
return getHouseInfo(houseId).name
end
 
function getHouseEntry(houseId)
return getHouseInfo(houseId).entry
end
 
function getHouseRent(houseId)
return getHouseInfo(houseId).rent
end
 
function getHousePrice(houseId)
return getHouseInfo(houseId).price
end
 
function getHouseTown(houseId)
return getHouseInfo(houseId).town
end
 
function getHouseTilesCount(houseId)
return getHouseInfo(houseId).tiles
end
 
function getItemNameById(itemid)
return getItemDescriptionsById(itemid).name
end
 
function getItemPluralNameById(itemid)
return getItemDescriptionsById(itemid).plural
end
 
function getItemArticleById(itemid)
return getItemDescriptionsById(itemid).article
end
 
function getItemName(uid)
return getItemDescriptions(uid).name
end
 
function getItemPluralName(uid)
return getItemDescriptions(uid).plural
end
 
function getItemArticle(uid)
return getItemDescriptions(uid).article
end
 
function getItemText(uid)
return getItemDescriptions(uid).text
end
 
function getItemSpecialDescription(uid)
return getItemDescriptions(uid).special
end
 
function getItemWriter(uid)
return getItemDescriptions(uid).writer
end
 
function getItemDate(uid)
return getItemDescriptions(uid).date
end
 
function getTilePzInfo(pos)
return getTileInfo(pos).protection
end
 
function getTileZoneInfo(pos)
local tmp = getTileInfo(pos)
if(tmp.pvp) then
return 2
end
 
if(tmp.nopvp) then
return 1
end
 
return 0
end
 
function doShutdown()
return doSetGameState(GAMESTATE_SHUTDOWN)
end
 
function doSummonCreature(name, pos, displayError)
local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)
if(not cid) then
cid = doCreateNpc(name, pos, displayError)
end
 
return cid
end
 
function getOnlinePlayers()
local tmp = getPlayersOnline()
local players = {}
for i, cid in ipairs(tmp) 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)
if(not isPlayer(cid)) then
return false
end
 
return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)
end
 
function isMonster(cid)
return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
end
 
function isNpc(cid)
return isCreature(cid) and cid >= AUTOID_NPCS
end
 
function doPlayerSetExperienceRate(cid, value)
return doPlayerSetRate(cid, SKILL__LEVEL, value)
end
 
function doPlayerSetMagicRate(cid, value)
return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)
end
 
function doPlayerAddLevel(cid, amount, round)
local experience, level = 0, getPlayerLevel(cid)
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)
for i = 1, amount do
doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))
end
return true
end  
 
function doPlayerAddSkill(cid, skill, amount, round)
    amount = tonumber(amount) or 1
    if amount <= 0 then amount = 1 end
                                         
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)) / getConfigInfo('rateSkill'))
    end
    return true
end
 
function getPartyLeader(cid)
local party = getPartyMembers(cid)
if(type(party) ~= 'table') then
return 0
end
 
return party[1]
end
 
function isInParty(cid)
return type(getPartyMembers(cid)) == 'table'
end
 
function isPrivateChannel(channelId)
return channelId >= CHANNEL_PRIVATE
end
 
function doPlayerResetIdleTime(cid)
return doPlayerSetIdleTime(cid, 0)
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
 
local players = getPlayersOnline()
for _, pid in ipairs(players) 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
 
local players = getPlayersOnline()
for _, pid in ipairs(players) do
doCreatureSay(cid, text, class, ghost, pid)
end
 
print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")
return true
end
 
function getBooleanFromString(input)
local tmp = type(input)
if(tmp == 'boolean') then
return input
end
 
if(tmp == 'number') then
return input > 0
end
 
local str = string.lower(tostring(input))
return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))
end
 
function doCopyItem(item, attributes)
local attributes = attributes or false
 
local ret = doCreateItemEx(item.itemid, item.type)
if(attributes) then
if(item.actionid > 0) then
doItemSetAttribute(ret, "aid", item.actionid)
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 doRemoveThing(uid)
if(isCreature(uid)) then
return doRemoveCreature(uid)
end
 
return doRemoveItem(uid)
end
 
function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)
local min, max = min or 0, max or 0
return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)
end
 
function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)
local min, max = min or 0, max or 0
return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)
end
 
function doChangeTypeItem(uid, subtype)
local thing = getThing(uid)
if(thing.itemid < 100) then
return false
end
 
local subtype = subtype or 1
return doTransformItem(thing.uid, thing.itemid, subtype)
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 getFluidSourceType(itemid)
local item = getItemInfo(itemid)
return item and item.fluidSource or false
end
 
function getDepotId(uid)
return getItemAttribute(uid, "depotid") or false
end
 
function getItemDescriptions(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
return false
end
 
local item = getItemInfo(thing.itemid)
return {
name = getItemAttribute(uid, "name") or item.name,
plural = getItemAttribute(uid, "pluralname") or item.plural,
article = getItemAttribute(uid, "article") or item.article,
special = getItemAttribute(uid, "description") or "",
text = getItemAttribute(uid, "text") or "",
writer = getItemAttribute(uid, "writer") or "",
date = getItemAttribute(uid, "date") or 0
}
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
--[[if(precision) then
return weight
end
 
local t = string.explode(tostring(weight), ".")
if(table.maxn(t) == 2) then
return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))
end]]--
 
return weight
end
 
function getItemWeaponType(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
return false
end
 
return getItemInfo(thing.itemid).weaponType
end
 
function getItemRWInfo(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
return false
end
 
local item, flags = getItemInfo(thing.itemid), 0
if(item.readable) then
flags = 1
end
 
if(item.writable) then
flags = flags + 2
end
 
return flags
end
 
function getItemLevelDoor(itemid)
local item = getItemInfo(itemid)
return item and item.levelDoor or false
end
 
function isItemStackable(itemid)
local item = getItemInfo(itemid)
return item and item.stackable or false
end
 
function isItemRune(itemid)
local item = getItemInfo(itemid)
return item and item.clientCharges or false
end
 
function isItemDoor(itemid)
local item = getItemInfo(itemid)
return item and item.type == 5 or false
end
 
function isItemContainer(itemid)
local item = getItemInfo(itemid)
return item and item.group == 2 or false
end
 
function isItemFluidContainer(itemid)
local item = getItemInfo(itemid)
return item and item.group == 12 or false
end
 
function isItemMovable(itemid)
local item = getItemInfo(itemid)
return item and item.movable or false
end
 
function isCorpse(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
return false
end
 
local item = getItemInfo(thing.itemid)
return item and item.corpseType ~= 0 or false
end
 
function getContainerCapById(itemid)
local item = getItemInfo(itemid)
if(not item or item.group ~= 2) then
return false
end
 
return item.maxItems
end
 
function getMonsterAttackSpells(name)
local monster = getMonsterInfo(name)
return monster and monster.attacks or false
end
 
function getMonsterHealingSpells(name)
local monster = getMonsterInfo(name)
return monster and monster.defenses or false
end
 
function getMonsterLootList(name)
local monster = getMonsterInfo(name)
return monster and monster.loot or false
end
 
function getMonsterSummonList(name)
local monster = getMonsterInfo(name)
return monster and monster.summons or false
end

 
Se alguem puder me ajudar eu agradeceria muito mesmo.
 
rep+

 

Link para o post
Compartilhar em outros sites

cara eu tenho meu servidor de poke e já tive esse problema é apenas você almentar o limite aqui o

local stor, limit = 7575, 5 --storage, limit to add. ali no numero 5]










Ajudei? Rep++

Editado por slyton (veja o histórico de edições)

JqGfm7S.png

Servidor com sources estáveis, com sistemas completos e tudo atualizados, para saber mais acessem   https://www.facebook.com/pokeVKS

Link para o post
Compartilhar em outros sites

cara eu tenho meu servidor de poke e já tive esse problema é apenas você almentar o limite aqui o

local stor, limit = 7575, 5 --storage, limit to add. ali no numero 5]

Ajudei? Rep++

 

Eu sei disso, no meu server esta 25 itens, eu queria saber como corrigir o erro de nao poder remover se usar todos os espaços.

Link para o post
Compartilhar em outros sites

brother esse erro não tem como corrigir, pois isso ai é uma gambiarra única auto loot que funciona 100% e da pxg.

JqGfm7S.png

Servidor com sources estáveis, com sistemas completos e tudo atualizados, para saber mais acessem   https://www.facebook.com/pokeVKS

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 10/07/2014 23:22:19, Duduph disse:

Ola amigos, estou com um problema no autoloot, ele tem um limite configuravel do maximo de itens para autoloot, só que quando esse limite é preenchido, ele não remove mais os itens que ja estao na lista. Deve ser facil corrigir para quem sabe :), mas para mim é muito complicado.

 Se alguem puder dar uma olhada no sistema e puder me dizer onde esta a falha eu agradeço.

 

talkactions.xml


<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/>

aloot.lua

 

 

Conteúdo Oculto

 
 
creaturescripts.xml

<event type="login" name="aloot_reg" event="script" value="aloot.lua"/>
<event type="kill" name="aloot_kill" event="script" value="aloot.lua"/>

aloot.lua

 

 

Conteúdo Oculto

 
 
Bem esses são os arquivos do aloot.
 
E aparece varias veses um erro no console, creio eu que seja pq o aloot deixa passar alguns itens, e quando empilha 100 itens ele não junta mais, a não ser que o player separe 1 item da pilha dos 100. segue o erro no console:

[10/07/2014 23:24:50] [Error - CreatureScript Interface] 
[10/07/2014 23:24:50] In a timer event called from: 
[10/07/2014 23:24:50] data/creaturescripts/scripts/aloot.lua:onKill
[10/07/2014 23:24:50] Description: 
[10/07/2014 23:24:50] data/lib/050-function.lua:239: attempt to index a boolean value
[10/07/2014 23:24:50] stack traceback:
[10/07/2014 23:24:50] 	data/lib/050-function.lua:239: in function 'getItemName'
[10/07/2014 23:24:50] 	data/creaturescripts/scripts/aloot.lua:57: in function <data/creaturescripts/scripts/aloot.lua:8>

050-function.lua

 

 

Conteúdo Oculto

 
Se alguem puder me ajudar eu agradeceria muito mesmo.
 
rep+

 

 

 

Tem correção para não dar mais o erro na distro dps q juntar os 100 itens, mas continua não pegando dps q junta 100, dai tem q separar em 50 e 50 ou guardar no Depot, pelo menos o erro não aparece mais não dando lag.

Solução:

Spoiler
Citar

trocando essa parte...

local corpse = -1
for _, item in ipairs(items) do
local name = getItemName(item.uid):lower()
if name:find(target:lower()) then
corpse = item.uid
break
end
end

por essa..

local corpse = -1
for _, item in ipairs(items) do
   if item and item.itemid >= 100 then
      local name = getItemName(item.uid):lower()
      if name:find(target:lower()) then
         corpse = item.uid
         break
      end
   end
end

 

 

Créditos da resolução do Erro1: Slicer por resolver e Zipter por repassar.

 

 

Editado por samlecter (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 month later...

Usando da matemática pra corrigir o problema de empilhamento. Adaptei aqui no meu server e funcionou, espero ajudar. Segue a mudança

 

La em creaturescripts no seu aloot.lua 

Como está:

 

if (count > 100) then

			count = count - math.floor(count / 100) * 100

		end

Como deve Ficar:

if (count >= 100) then

			count = count - math.floor(count / 100) * 100

		end

Só mudar a linha na qual verifica a quantidade de items na bag, a atual verifica só ate + que 100, com isso tem que estar 101+. Com o outro ele ja verifica o 100+. Espero ter ajudado.

--

Att,

Lucas Soledade  :pirate:
 
Desenvolvedor de Servidores  :wow: 
Inovação  :D 


-> Colossus Server <-

A4Zbobt.jpg

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

@Lucas Barreto  Nossa mano, Vlw mesmo ^^  Agora ta funfando 100%, coletando mais de 100 do iten, sem dar erro na distro, Perfect!

 

Já tinha procurado essa solução em diversos lugares, ninguém sabia resolver, só conseguiram tirar o erro que aparecia na distro, Quando eu ver em outro lugar alguém com esse problema vou postar a solução com seus créditos ou te marcar,Vlw dnv :)

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo