Pessoal estou com um problema no autoloot que eu adicionei no meu server. Se alguém puder por favor me ajude, estarei disponibilizando algumas prints a baixo. Como vc podem ver, quando eu uso o comando !autoloot ele aparece todas as informações normal, não da nenhum bug quando eu uso os comandos "!autoloot, !autoloot add, !autoloot gold, !autoloot power"
Mas quando eu mato um mob da um erro e o dinheiro do comando "!autoloot gold" não vai para o banco, também da erro quando eu uso o comando !autoloot goldinfo. Enfim, basicamente o sistema não está coletando nada. Também gostaria que nao tivesse limite de slot para os free.
PS:Não sei se esse post esta no local correto. Se não estiver por favor movam! att
Esse é o talkaction.
Spoiler
functionExistItemByName(name)--by vodka
local items = io.open("data/items/items.xml","r"):read("*all")localget= items:match('name="'.. name ..'"')ifget==nilorget==""thenreturnfalseendreturntrueendlocalfunction getPlayerList(cid)local tab ={}if getPlayerStorageValue(cid,04420021)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420021))endif getPlayerStorageValue(cid,04420031)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420031))endif getPlayerStorageValue(cid,04420041)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420041))endif getPlayerStorageValue(cid,04420051)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420051))endif#tab > 0 thenreturn tab
endreturnfalseendlocalfunction addToList(cid, name)local itemid = getItemIdByName(name)if getPlayerList(cid)and isInArray(getPlayerList(cid), itemid)thenreturnfalseendif getPlayerStorageValue(cid,04420021)==-1thenreturn doPlayerSetStorageValue(cid,04420021, itemid)
elseif getPlayerStorageValue(cid,04420031)==-1thenreturn doPlayerSetStorageValue(cid,04420031, itemid)
elseif getPlayerStorageValue(cid,04420041)==-1thenreturn doPlayerSetStorageValue(cid,04420041, itemid)
elseif getPlayerStorageValue(cid,04420051)==-1thenreturn doPlayerSetStorageValue(cid,04420051, itemid)endendlocalfunction removeFromList(cid, name)local itemid = getItemIdByName(name)if getPlayerStorageValue(cid,04420021)== itemid thenreturn doPlayerSetStorageValue(cid,04420021,-1)
elseif getPlayerStorageValue(cid,04420031)== itemid thenreturn doPlayerSetStorageValue(cid,04420031,-1)
elseif getPlayerStorageValue(cid,04420041)== itemid thenreturn doPlayerSetStorageValue(cid,04420041,-1)
elseif getPlayerStorageValue(cid,04420051)== itemid thenreturn doPlayerSetStorageValue(cid,04420051,-1)endreturnfalseendfunction onSay(cid, words, param)if param ==""thenlocalfi= getPlayerStorageValue(cid,04420021)~=-1and getItemNameById(getPlayerStorageValue(cid,04420021))or""local se =not vip.hasVip(cid)and"Não disponível para free account"or getPlayerStorageValue(cid,04420031)~=-1and getItemNameById(getPlayerStorageValue(cid,04420031))or""local th =not vip.hasVip(cid)and"Não disponível para free account"or getPlayerStorageValue(cid,04420041)~=-1and getItemNameById(getPlayerStorageValue(cid,04420041))or""local fo =not vip.hasVip(cid)and"Não disponível para free account"or getPlayerStorageValue(cid,04420051)~=-1and getItemNameById(getPlayerStorageValue(cid,04420051))or""local stt = getPlayerStorageValue(cid,04421011)==1and"sim"or"não"local str = getPlayerStorageValue(cid,04421001)==1and"sim"or"não"
doPlayerPopupFYI(cid,"{Auto-Loot} ---Menu Auto Loot do jogador\n{Auto-Loot} ----------------\n{Auto-Loot} ---Coletar dinheiro: "..stt..". Para ligar/desligar: !autoloot gold \n{Auto-Loot} ---Coletar itens únicos: "..str..". Para ligar/desligar: !autoloot power\n{Auto-Loot} --Configuração dos slots:\n{Auto-Loot} ---Slot 1: "..fi.."\n{Auto-Loot} ---Slot 2: "..se.."\n{Auto-Loot} ---Slot 3: "..th.."\n{Auto-Loot} ---Slot 4: "..fo.."\n{Auto-Loot} ---Para adicionar um novo item aos slots: !autoloot add, <nome do item>\n{Auto-Loot} ---Para retirar um item dos slots: !autoloot remove, <nome do item>\n{Auto-Loot} ---Para limpar todos os slots utilize: !autoloot clear\n{Auto-Loot} ---Para informações de quanto você já fez utilizando a coleta de dinheiro, use: !autoloot goldinfo\n\nSe seu autoloot bugar use !autoloot desbug\n\n{Auto-Loot} ----------------")returntrueendlocal t =string.explode(param,",")if t[1]=="power"thenlocal check = getPlayerStorageValue(cid,04421001)==-1and"ligou"or"desligou"
doPlayerSetStorageValue(cid,04421001, getPlayerStorageValue(cid,04421001)==-1and1or-1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você "..check.." o auto loot.")
elseif t[1]=="gold"thenlocal check = getPlayerStorageValue(cid,04421011)==-1and"ligou"or"desligou"
doPlayerSetStorageValue(cid,04421011, getPlayerStorageValue(cid,04421011)==-1and1or-1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você "..check.." a coleta de dinheiro.")
doPlayerSetStorageValue(cid,04421021,0)
elseif t[1]=="goldinfo"thenlocal str = getPlayerStorageValue(cid,04421011)==-1and"O sistema de coleta de dinheiro está desligado"or"O sistema já coletou "..getPlayerStorageZero(cid,04421021).." gold coins"
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, str)
elseif t[1]=="add"thenifExistItemByName(t[2])thenlocal item = getItemIdByName(t[2])if isInArray({2160,2148,2152}, item)thenreturn doPlayerSendCancel(cid,"Você não pode adicionar moedas no autoloot. Para coletar dinheiro use !autoloot gold")endif vip.hasVip(cid)thenif getPlayerStorageValue(cid,04420011)<3thenif addToList(cid, t[2])then
doPlayerSetStorageValue(cid,04420011, getPlayerStorageValue(cid,04420011)+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga !autoloot list")else
doPlayerSendCancel(cid, t[2].." já está em sua lista!")endelse
doPlayerSendCancel(cid,"Sua lista já tem 4 itens! Você deve remover algum antes de adicionar outro.")endelseif getPlayerStorageValue(cid,04420011)==-1thenif addToList(cid, t[2])then
doPlayerSetStorageValue(cid,04420011, getPlayerStorageValue(cid,04420011)+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga !autoloot")else
doPlayerSendCancel(cid, t[2].." já está em sua lista!")endelse
doPlayerSendCancel(cid,"Você já tem um item adicionado no auto loot! Para adicionar outro, você deve remover o item atual.")endendelse
doPlayerSendCancel(cid,"Este item não existe!")end
elseif t[1]=="remove"thenifExistItemByName(t[2])thenif removeFromList(cid, t[2])then
doPlayerSetStorageValue(cid,04420011, getPlayerStorageValue(cid,04420011)-1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." removido da sua lista do auto loot!")else
doPlayerSendCancel(cid,"Este item não está na sua lista!")endelse
doPlayerSendCancel(cid,"Este item não existe!")end
elseif t[1]=="clear"thenif getPlayerStorageValue(cid,04420011)>-1then
doPlayerSetStorageValue(cid,04420011,-1)
doPlayerSetStorageValue(cid,04420021,-1)
doPlayerSetStorageValue(cid,04420031,-1)
doPlayerSetStorageValue(cid,04420041,-1)
doPlayerSetStorageValue(cid,04420051,-1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Lista limpa!")else
doPlayerSendCancel(cid,"Sua lista ja esta limpa!")end
elseif t[1]=="desbug"or t[1]=="desbugar"then
doPlayerSetStorageValue(cid,04420011,-1)
doPlayerSetStorageValue(cid,04420021,-1)
doPlayerSetStorageValue(cid,04420031,-1)
doPlayerSetStorageValue(cid,04420041,-1)
doPlayerSetStorageValue(cid,04420051,-1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Desbugado!")
elseif t[1]=="list"thenlocalfi= getPlayerStorageValue(cid,04420021)~=-1and""..getItemNameById(getPlayerStorageValue(cid,04420021)).."\n"or""local se = getPlayerStorageValue(cid,04420031)~=-1and""..getItemNameById(getPlayerStorageValue(cid,04420031)).."\n"or""local th = getPlayerStorageValue(cid,04420041)~=-1and""..getItemNameById(getPlayerStorageValue(cid,04420041)).."\n"or""local fo = getPlayerStorageValue(cid,04420051)~=-1and""..getItemNameById(getPlayerStorageValue(cid,04420051)).."\n"or""
doPlayerPopupFYI(cid,"O sistema auto loot está coletando:\n "..fi..""..se..""..th..""..fo)endreturntrueend
Esse é o creaturescript.
Spoiler
local aloot_boost ={[2406]=36,[2537]=4800,[2377]=480,[2663]=600,[2472]=195000,[2398]=36,[2475]=7200,[2519]=6500,[2497]=10700,[2523]=180000,[2494]=325000,[2400]=144000,[2491]=6000,[2421]=325000,[2646]=260000,[2477]=7200,[2413]=84,[2656]=18000,[2498]=52000,[2647]=600,[2534]=32500,[7402]=19500,[2466]=26000,[2465]=240,[2408]=120000,[2518]=1800,[2500]=3000,[2376]=30,[2470]=91000,[2388]=24,[2645]=26000,[2434]=2400,[2463]=480,[2536]=11700,[2387]=240,[2396]=4800,[2381]=240,[2528]=4800,[2409]=1800,[2414]=12000,[2427]=9000,[2407]=7200,[2458]=42,[2383]=960,[2392]=3600,[2488]=18000,[2525]=120,[2423]=240,[7382]=13000,[2462]=1300,[2520]=39000,[2390]=180000,[2417]=72,[2436]=1200,[5741]=52000,[2378]=120,[2487]=24000,[2476]=6500,[8891]=36000,[2459]=36,[2195]=52000,[2391]=7200,[2464]=120,[8889]=72000,[2432]=13000,[2431]=108000,[2492]=52000,[2515]=240,[2430]=2400,[2393]=13000,[7419]=36000,[2522]=130000,[2514]=65000}localfunction getPlayerStorageZero(cid, storage)--ByKillualocal sto = getPlayerStorageValue(cid, storage)if tonumber(sto)thenreturn tonumber(sto)> tonumber(0)and tonumber(sto)or tonumber(0)endreturn tonumber(0)endlocal tabela ={}localfunction getPlayerList(cid)local tab ={}if getPlayerStorageValue(cid,04420021)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420021))endif getPlayerStorageValue(cid,04420031)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420031))endif getPlayerStorageValue(cid,04420041)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420041))endif getPlayerStorageValue(cid,04420051)~=-1then
table.insert(tab, getPlayerStorageValue(cid,04420051))endif#tab > 0 thenreturn tab
endreturn{}endlocalfunction boost(cid)return tonumber(getPlayerStorageValue(cid,722381))>= os.time()endlocalfunction autoLoot(cid, pos)ifnot isPlayer(cid)thenreturnendlocal check =falselocal str =""local position ={}for i =1,255do
pos.stackpos = i
if getThingFromPos(pos).uid and getThingFromPos(pos).uid >0and isContainer(getThingFromPos(pos).uid)then
position = pos
check =truebreakendendif check thenlocal corpse = getContainerItemsInfo(getThingFromPos(position).uid)if corpse thenfor index, info in pairs(corpse)doif index < countTable(corpse)thenif info.uid and info.itemid thenif isContainer(info.uid)thenlocal bag = getContainerItemsInfo(info.uid)for i =1, countTable(bag)doif isInArray(getPlayerList(cid), bag[i].itemid)thenif bag[i].quant >1then
doRemoveItem(bag[i].uid, bag[i].quant)
doPlayerAddItem(cid, bag[i].itemid, bag[i].quant)
str = str.." "..bag[i].quant.." "..getItemNameById(bag[i].itemid).." +"else
doRemoveItem(bag[i].uid)if boost(cid)thenif aloot_boost[bag[i].itemid]then
doPlayerSetBalance(cid,getPlayerBalance(cid)+ aloot_boost[bag[i].itemid])
str = str.." 1 "..getItemNameById(bag[i].itemid).." ("..aloot_boost[bag[i].itemid].."gp no banco) +"else
doPlayerAddItem(cid, bag[i].itemid,1)
str = str.." 1 "..getItemNameById(bag[i].itemid).." +"endelse
doPlayerAddItem(cid, bag[i].itemid,1)
str = str.." 1 "..getItemNameById(bag[i].itemid).." +"endendendendendendendif isInArray(getPlayerList(cid), info.itemid)thenif info.quant >1then
doRemoveItem(info.uid, info.quant)
doPlayerAddItem(cid, info.itemid, info.quant)
str = str.." "..info.quant.." "..getItemNameById(info.itemid).." +"else
doRemoveItem(info.uid)if boost(cid)thenif aloot_boost[info.itemid]then
doPlayerSetBalance(cid,getPlayerBalance(cid)+ aloot_boost[info.itemid])
str = str.." 1 "..getItemNameById(info.itemid).." ("..aloot_boost[info.itemid].."gps no banco) +"else
doPlayerAddItem(cid, info.itemid,1)
str = str.." 1 "..getItemNameById(info.itemid).." +"endelse
doPlayerAddItem(cid, info.itemid,1)
str = str.." 1 "..getItemNameById(info.itemid).." +"endendendendendend
setPlayerTableStorage(cid,822564,{[1]= str,[2]=0})endlocalfunction autoGold(cid, pos)ifnot isPlayer(cid)thenreturnendlocal check =falselocal total =0local position ={}for i =1,255do
pos.stackpos = i
if getThingFromPos(pos).uid and getThingFromPos(pos).uid >0and isContainer(getThingFromPos(pos).uid)then
position = pos
check =truebreakendendif check thenlocal corpse = getContainerItemsInfo(getThingFromPos(position).uid)if corpse thenfor index, info in pairs(corpse)doif info.uid and info.itemid thenif index < countTable(corpse)thenif isContainer(info.uid)thenlocal bag = getContainerItemsInfo(info.uid)for i =1, countTable(bag)doif isInArray({2148,2152,2160}, bag[i].itemid)thenlocal multiplie =1if bag[i].itemid ==2148then
multiplie =1
elseif bag[i].itemid ==2152then
multiplie =100
elseif bag[i].itemid ==2160then
multiplie =10000end
doRemoveItem(bag[i].uid, bag[i].quant)
doPlayerSetBalance(cid, getPlayerBalance(cid)+ tonumber(bag[i].quant)* multiplie)
total = total + bag[i].quant * multiplie
doPlayerSetStorageValue(cid,04421021, tonumber(getPlayerStorageZero(cid,04421021))+ tonumber(info.quant)* tonumber(multiplie))endendendendif isInArray({2148,2152,2160}, info.itemid)thenlocal multiplie =1if info.itemid ==2148then
multiplie =1
elseif info.itemid ==2152then
multiplie =100
elseif info.itemid ==2160then
multiplie =10000end
doRemoveItem(info.uid, info.quant)
doPlayerSetBalance(cid, getPlayerBalance(cid)+ info.quant * multiplie)
doPlayerSetStorageValue(cid,04421021, tonumber(getPlayerStorageZero(cid,04421021))+ tonumber(info.quant)* tonumber(multiplie))
total = total + info.quant * multiplie
endendendendendif total >0then
total = total -(total *0.2)
total = math.ceil(total)
doPlayerSetBalance(cid,getPlayerBalance(cid)+ total)local tab = getPlayerTableStorage(cid,822564)
tab[2]= total
setPlayerTableStorage(cid,822564,tab)endendlocalfunction sendMsg(cid)ifnot isPlayer(cid)thenreturnendlocal tab = getPlayerTableStorage(cid,822564)if countTable(tab)>=1thenif tab[1]thenif tab[2]and tab[2]>0then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"[Auto Loot System] Coletados: ".. tab[1].." ".. tab[2].." gold coins.")elseif type(tab[1])=="string"andstring.len(tab[1])>1then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"[Auto Loot System] Coletados: "..tab[1])endend
elseif not tab[1]thenif tab[2]then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"[Auto Loot System] Coletados: "..tab[2].." gold coins.")endendend
doPlayerSetStorageValue(cid,822564,-1)endfunction onKill(cid, target, lastHit)if isPlayer(cid)and isMonster(target)thenif getPlayerStorageValue(cid,04421001)==1and#getPlayerList(cid) > 0 thenlocal pos = getCreaturePosition(target)
addEvent(autoLoot,500, cid, pos)endif getPlayerStorageValue(cid,04421011)==1thenlocal pos = getCreaturePosition(target)
addEvent(autoGold,540, cid, pos)endif getPlayerStorageValue(cid,04421001)==1or getPlayerStorageValue(cid,04421011)==1then
addEvent(sendMsg,560, cid)endendreturntrueend
Comando !autoloot
Comando !autoloot gold, e !autoloot power
Comando de !autoloot add,
Como podem ver não da erro.
Porem quando eu mato um mob da esse seguinte erro:
info
Grupo: Campones
Registrado: 25/01/19
Posts: 8
Reputação: 0
Pessoal estou com um problema no autoloot que eu adicionei no meu server. Se alguém puder por favor me ajude, estarei disponibilizando algumas prints a baixo. Como vc podem ver, quando eu uso o comando !autoloot ele aparece todas as informações normal, não da nenhum bug quando eu uso os comandos "!autoloot, !autoloot add, !autoloot gold, !autoloot power"
Mas quando eu mato um mob da um erro e o dinheiro do comando "!autoloot gold" não vai para o banco, também da erro quando eu uso o comando !autoloot goldinfo. Enfim, basicamente o sistema não está coletando nada. Também gostaria que nao tivesse limite de slot para os free.
PS: Não sei se esse post esta no local correto. Se não estiver por favor movam! att
Esse é o talkaction.
Esse é o creaturescript.
Comando !autoloot
Comando !autoloot gold, e !autoloot power
Comando de !autoloot add,
Como podem ver não da erro.
Porem quando eu mato um mob da esse seguinte erro:
Como voces podem ver, o loot não é coletado.
Editado Agosto 21 por saddnl