Ir para conteúdo

Featured Replies

Postado

olá galera , estou aqui para perdir ajuda em um script

se refere ao meu castle 24 horas,

quando as torres do castle morrem

o servidor da um freeze de  15 segundos eretorna esse erro :

 

Spoiler

[9/2/2017 15:27:8] [Error - CreatureScript Interface] 
[9/2/2017 15:27:8] In a timer event called from: 
[9/2/2017 15:27:9] domodlib('Loot_func')
[9/2/2017 15:27:9] function onKill(cid, target, lastHit) 
[9/2/2017 15:27:9] 	if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then
[9/2/2017 15:27:9] 		addEvent(corpseRetireItems, 0, cid ,getThingPos(target))
[9/2/2017 15:27:9] 	end
[9/2/2017 15:27:9] 	return true
[9/2/2017 15:27:10] end:onKill
[9/2/2017 15:27:10] Description: 
[9/2/2017 15:27:10] [string "info = {..."]:152: bad argument #1 to 'pairs' (table expected, got boolean)
[9/2/2017 15:27:10] stack traceback:
[9/2/2017 15:27:11] 	[C]: in function 'pairs'
[9/2/2017 15:27:11] 	[string "info = {..."]:152: in function <[string "info = {..."]:141>

 

 

  • Respostas 12
  • Visualizações 691
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • tem certeza? só esses dois? então qualquer coisa adc os monstro la na config..   o MODS do auto loot use assim:   <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Loo

  • você usou   !autoloot add param(item)     o certo é   !autoloot ITEM NAME   ex: !autoloot talon   !autoloot mastermind shield   !a

Postado

tem certeza? só esses dois? então qualquer coisa adc os monstro la na config..

 

o MODS do auto loot use assim:

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes">
<config name="Loot_func"><![CDATA[

info = {
	AutomaticDeposit = true,
	BlockMonsters = {"crystal protect","castle protect"},
	BlockItemsList = {2123,2515},
	Max_Slots = {free = 2, premium = 5},
	Storages = {27000,28001,28002}
}
function setPlayerStorageTable(cid, storage, tab)
	local tabstr = "&"
	for i,x in pairs(tab) do
		tabstr = tabstr .. i .. "," .. x .. ";"
	end
	setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1))
end
function getPlayerStorageTable(cid, storage)
	local tabstr = getPlayerStorageValue(cid, storage)
	local tab = {}
	if type(tabstr) ~= "string" then
		return {}
	end
	if tabstr:sub(1,1) ~= "&" then
		return {}
	end
	local tabstr = tabstr:sub(2, #tabstr)
	local a = string.explode(tabstr, ";")
	for i,x in pairs(a) do
		local b = string.explode(x, ",")
		tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]
	end
	return tab
end
function isInTable(cid, item)
	for _,i in pairs(getPlayerStorageTable(cid, info.Storages[1]))do
		if tonumber(i) == tonumber(item) then
			return true
		end
	end
	return false
end
function addItemTable(cid, item)
	local x = {}
	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do
		table.insert(x,getPlayerStorageTable(cid, info.Storages[1])[i])
	end
	if x ~= 0 then
		table.insert(x,tonumber(item))
		setPlayerStorageTable(cid, info.Storages[1], x)
	else
		setPlayerStorageTable(cid, info.Storages[1], {item})
	end
end
function removeItemTable(cid, item)
	local x = {}
	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do
		table.insert(x,getPlayerStorageTable(cid, info.Storages[1])[i])
	end
	for i,v in ipairs(x) do
		if tonumber(v) == tonumber(item) then
			table.remove(x,i)
		end
	end
	return setPlayerStorageTable(cid, info.Storages[1], x)
end
function ShowItemsTabble(cid)
	local n,str = 0,"[+] Auto Loot Commands [+]\n\n!autoloot item name --> To add ou Remove item from list.\n!autoloot money --> To collect gold automatically.\n!autoloot clear --> To clear the list.\n!autoloot on/off --> To enable or disable the collecting of items in the system.\n\n[+] Auto Loot Info [+]\n\nSystem: "..(getPlayerStorageValue(cid, info.Storages[3]) <= 0 and "Activated" or "Disabled")..".\nGold Collecting: "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "Disabled")..".\nBalance Total: ["..getPlayerBalance(cid).."] gp's.\nMaximum Slots: ["..#getPlayerStorageTable(cid, info.Storages[1]).."/"..(isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\n[+] Auto Loot Slots [+]\n\n"
	for i = 1,#getPlayerStorageTable(cid, info.Storages[1]) do
		n = n + 1
		str = str.."Slot "..n.." - "..getItemNameById(getPlayerStorageTable(cid, info.Storages[1])[i]).."\n"
	end
	return doPlayerPopupFYI(cid, str)
end
function getContainerItems(containeruid)
	local items = {}
	local containers = {}
	if type(getContainerSize(containeruid)) ~= "number" then
		return false
	end
	for slot = 0, getContainerSize(containeruid)-1 do
		local item = getContainerItem(containeruid, slot)
		if item.itemid == 0 then
			break
		end
		if isContainer(item.uid) then
			table.insert(containers, item.uid)
		end
		table.insert(items, item)
	end
	if #containers > 0 then
		for i,x in ipairs(getContainerItems(containers[1])) do
			table.insert(items, x)
		end
		table.remove(containers, 1)
	end
	return items
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
	local items = {}
	if isContainer(container) and getContainerSize(container) > 0 then
		for slot=0, (getContainerSize(container)-1) do
			local item = getContainerItem(container, slot)
			if isContainer(item.uid) then
				local itemsbag = getItemsInContainerById(item.uid, itemid)
				for i=0, #itemsbag do
					table.insert(items, itemsbag[i])
				end
			else
				if itemid == item.itemid then
					table.insert(items, item.uid)
				end
			end
		end
	end
	return items
end
function doPlayerAddItemStacking(cid, itemid, amount) -- revisado
	local item, _G = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid), 0
	if #item > 0 then
		for _ ,x in pairs(item) do
			local ret = getThing(x)
			if ret.type < 100 then
				doTransformItem(ret.uid, itemid, ret.type+amount) 
				if ret.type+amount > 100 then
					doPlayerAddItem(cid, itemid, ret.type+amount-100)
				end
				break
			else
				_G = _G+1
			end
		end
		if _G == #item then
			doPlayerAddItem(cid, itemid, amount)
		end
	else
		return doPlayerAddItem(cid, itemid, amount)
	end
end
function AutomaticDeposit(cid,item,n)
	local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1)
	return doPlayerDepositMoney(cid, deposit)
end
function corpseRetireItems(cid, pos)
	local check = false
	for i = 0, 255 do
		pos.stackpos = i
		tile = getTileThingByPos(pos)
		if tile.uid > 0 and isCorpse(tile.uid) then
			check = true break
		end
	end
	if check == true then
		local items = getContainerItems(tile.uid)
		for i,x in pairs(items) do
			if isInArray(getPlayerStorageTable(cid, info.Storages[1]), tonumber(x.itemid)) or getPlayerStorageValue(cid, info.Storages[2]) > 0 and isInArray({2148,2152,2160},tonumber(x.itemid)) then
				if isItemStackable(x.itemid) then
					doPlayerAddItemStacking(cid, x.itemid, x.type)
					if info.AutomaticDeposit == true and isInArray({2148,2152,2160}, tonumber(x.itemid)) then
						AutomaticDeposit(cid,x.itemid,x.type)
					end
				else
					doPlayerAddItem(cid, x.itemid)
				end
				doRemoveItem(x.uid)
			end
		end
	end
end
]]></config>
<event type="login" name="LootLogin" event="script"><![CDATA[
function onLogin(cid)
	registerCreatureEvent(cid, "LootEventKIll")
	if isPremium(cid) and getPlayerStorageValue(cid, 27001) <= 0 then
		setPlayerStorageValue(cid, 27001, 1)
	elseif getPlayerStorageValue(cid, 27001) > 0 and not isPremium(cid) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!")
		setPlayerStorageValue(cid, 27001, -1)
		setPlayerStorageValue(cid, info.Storages[1], -1)
	end
	return true
end]]></event>
<event type="kill" name="LootEventKIll" event="script"><![CDATA[
domodlib('Loot_func')
function onKill(cid, target, lastHit) 
	if isPlayer(cid) and getPlayerStorageValue(cid, info.Storages[3]) <= 0 and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then
		addEvent(corpseRetireItems, 0, cid ,getThingPos(target))
	end
	return true
end]]></event>
<talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[
domodlib('Loot_func')
local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free
if not param or param == "" then
	ShowItemsTabble(cid) return true
elseif tonumber(param) then
	doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true
elseif isInArray({"clean","limpar", "clear"}, param) then
	setPlayerStorageValue(cid, info.Storages[1], -1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return true
elseif isInArray({"start","stop","on","off"}, param) then
	setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "Stopped" or "Started")..".") return true
elseif isInArray({"money","gold","gps","dinheiro"}, param) then
	setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Gold Colleting "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return true
end
local item = getItemIdByName(param, false)
if not item then
	doPlayerSendCancel(cid, "This item does not exist.") return true
end
local var = isInTable(cid, item)
if isInArray({2148,2152,2160},item) then 
	doPlayerSendCancel(cid, "Enter !autoloot money to add money in your list!") return true	
elseif isInArray(info.BlockItemsList, item) then
	doPlayerSendCancel(cid, "You can not add this item in the list!") return true
elseif not var and #getPlayerStorageTable(cid, info.Storages[1]) >= slots then
	doPlayerSendCancel(cid, "max "..slots.." from auto loot") return true
end
if not var then
	addItemTable(cid, item)
else
	removeItemTable(cid, item)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "you added the item "..param.." in the list" or "you removed the item "..param.." from the list")
return true]]></talkaction>
</mod>

 

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

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado
  • Autor

@Vodkarta parte de pegar gold ele pega agora, mais n pega platinum nem crystal

e também quando vou tentar adicionar 1 loot escrevendo

exemplo: !autoloot royal helmet

 

ele da esse retorno abaixo :

Spoiler


[10/2/2017 1:4:12] [Error - TalkAction Interface] 
[10/2/2017 1:4:12] local cid = 268476723
[10/2/2017 1:4:12] local words = "!autoloot"
[10/2/2017 1:4:12] local param = "add royal helmet"
[10/2/2017 1:4:12] local channel = 65534
[10/2/2017 1:4:12] domodlib('Loot_func')
[10/2/2017 1:4:12] local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free
[10/2/2017 1:4:12] if not param or param == "" then
[10/2/2017 1:4:12] 	ShowItemsTabble(cid) return true
[10/2/2017 1:4:12] elseif tonumber(param) then
[10/2/2017 1:4:12] 	doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true
[10/2/2017 1:4:12] elseif isInArray({"clean","limpar", "clear"}, param) then
[10/2/2017 1:4:12] 	setPlayerStorageValue(cid, info.Storages[1], -1)
[10/2/2017 1:4:12] 	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return true
[10/2/2017 1:4:12] elseif isInArray({"start","stop","on","off"}, param) then
[10/2/2017 1:4:12] 	setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0)
[10/2/2017 1:4:12] 	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "Stopped" or "Started")..".") return true
[10/2/2017 1:4:12] elseif isInArray({"money","gold","gps","dinheiro"}, param) then
[10/2/2017 1:4:12] 	setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0)
[10/2/2017 1:4:12] 	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Gold Colleting "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return true
[10/2/2017 1:4:12] end
[10/2/2017 1:4:12] local item = getItemIdByName(param, false)
[10/2/2017 1:4:12] if not item then
[10/2/2017 1:4:12] 	doPlayerSendCancel(cid, "This item does not exist.") return true
[10/2/2017 1:4:12] end
[10/2/2017 1:4:12] local var = isInTable(cid, item)
[10/2/2017 1:4:12] if isInArray({2148,2152,2160},item) then 
[10/2/2017 1:4:12] 	doPlayerSendCancel(cid, "Enter !autoloot money to add money in your list!") return true	
[10/2/2017 1:4:12] elseif isInArray(info.BlockItemsList, item) then
[10/2/2017 1:4:12] 	doPlayerSendCancel(cid, "You can not add this item in the list!") return true
[10/2/2017 1:4:12] elseif not var and #getPlayerStorageTable(cid, info.Storages[1]) >= slots then
[10/2/2017 1:4:12] 	doPlayerSendCancel(cid, "max "..slots.." from auto loot") return true
[10/2/2017 1:4:12] end
[10/2/2017 1:4:12] if not var then
[10/2/2017 1:4:12] 	addItemTable(cid, item)
[10/2/2017 1:4:12] else
[10/2/2017 1:4:12] 	removeItemTable(cid, item)
[10/2/2017 1:4:12] end
[10/2/2017 1:4:12] doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "you added the item "..param.." in the list" or "you removed the item "..param.." from the list")
[10/2/2017 1:4:12] return true
[10/2/2017 1:4:12] Description: 
[10/2/2017 1:4:12] (luaGetItemIdByName) Item not found

 

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo