Ir para conteúdo

Featured Replies

Postado

alguem sabe dizer oque pode ser esse erro http://prntscr.com/998o2w  ???

 

local tabela = {}

local function getPlayerList(cid)
	local tab = {}
	if getPlayerStorageValue(cid, 0442002) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442002))
	end
	if getPlayerStorageValue(cid, 0442003) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442003))
	end
	if getPlayerStorageValue(cid, 0442004) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442004))
	end
	if getPlayerStorageValue(cid, 0442005) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442005))
	end
	if #tab > 0 then
		return tab
	end
	return false
end

local function autoLoot(cid, pos)
	local check = false
	local str = ""
	local position = {}
	for i = 1, 255 do
		pos.stackpos = i
		if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
			position = pos
			check = true
			break
		end
	end
	if check then
		local corpse = getContainerItemsInfo(getThingFromPos(position).uid)		
		if corpse then
			for index, info in pairs(corpse) do
				if index < countTable(corpse) then
    					if tonumber(info.uid) and tonumber(info.itemid) then
						if isContainer(info.uid) then
							local bag = getContainerItemsInfo(info.uid)
							for i = 1, countTable(bag) - 1 do
								if isInArray(getPlayerList(cid), bag[i].itemid) then
									if bag[i].quant > 1 then
										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)
										doPlayerAddItem(cid, bag[i].itemid, 1)
										str = str.." 1 "..getItemNameById(bag[i].itemid)..","
									end
								end
							end
						end
					end
				end
				if isInArray(getPlayerList(cid), info.itemid) then
					if info.quant > 1 then
						doRemoveItem(info.uid, info.quant)
						doPlayerAddItem(cid, info.itemid, info.quant)
						str = str.." "..info.quant.." "..getItemNameById(info.itemid)..","
					else
						doRemoveItem(info.uid)
						doPlayerAddItem(cid, info.itemid, 1)
						str = str.." 1 "..getItemNameById(info.itemid)..","
					end
				end
			end
		end
	end
	tabela[getCreatureName(cid)] = {item = "[Auto Loot System] Coletados: "..str, gold = 0}
end

local function autoGold(cid, pos)
	local check = false
	local total = 0
	local position = {}
	for i = 1, 255 do
		pos.stackpos = i
		if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
			position = pos
			check = true
			break
		end
	end
	if check then
		local corpse = getContainerItemsInfo(getThingFromPos(position).uid)
		if corpse then
			for index, info in pairs(corpse) do
				if info.uid and info.itemid then
					if index < countTable(corpse) then
						if isContainer(info.uid) then
							local bag = getContainerItemsInfo(info.uid)
							for i = 1, countTable(bag) - 1 do
								if isInArray({2148, 2152, 2160}, bag[i].itemid) then
									local multiplie = 1
									if bag[i].itemid == 2148 then
										multiplie = 1
									elseif bag[i].itemid == 2152 then
										multiplie = 100
									elseif bag[i].itemid == 2160 then
										multiplie = 10000
									end
									doRemoveItem(bag[i].uid, bag[i].quant)
									doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
									total = total + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0)
									doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
								end
							end
						end
					end
					if isInArray({2148, 2152, 2160}, info.itemid) then
						local multiplie = 1
						if info.itemid == 2148 then
							multiplie = 1
						elseif info.itemid == 2152 then
							multiplie = 100
						elseif info.itemid == 2160 then
							multiplie = 10000
						end
    doRemoveItem(info.uid, info.quant)
						doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
						doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
						total = total + (tonumber(info.quant) and tonumber(info.quant) * multiplie or 0)
					end
				end
			end
		end
	end
	if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
		tabela[getCreatureName(cid)].gold = total
	end
end

local function sendMsg(cid)
	if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
		if tabela[getCreatureName(cid)].gold == 0 then
			doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item)
		else
			doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item.." "..tabela[getCreatureName(cid)].gold.." gold coins.")
		end
		tabela[getCreatureName(cid)] = nil
	end
end

function onKill(cid, target, lastHit)
	if isPlayer(cid) and isMonster(target) then
		if getPlayerStorageValue(cid, 0442100) == 1 and getPlayerList(cid) then
			local pos = getCreaturePosition(target)
			addEvent(autoLoot, 500, cid, pos)
		end
		if getPlayerStorageValue(cid, 0442101) == 1 then
			local pos = getCreaturePosition(target)
			addEvent(autoGold, 500, cid, pos)
		end
		if getPlayerStorageValue(cid, 0442100) == 1 or getPlayerStorageValue(cid, 0442101) == 1 then
			addEvent(sendMsg, 540, cid)
		end
	end
	return true
end

 

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

Postado

MMHUCMQ.png  Esta é uma mensagem automática, este tópico foi movido para a área correta.
  Regras do fórum: http://www.tibiaking.com/forum/topic/1281-regras-gerais/#comment-7680

Este tópico foi movido:
De: Scripting OTServ > OTServ > CreatureScripts, GlobalEvents e MoveMents
Para: Suporte OTServ > OTServ > Suporte de Scripts

Postado
local tabela = {}

local function getPlayerList(cid)
	local tab = {}
	if getPlayerStorageValue(cid, 0442002) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442002))
	end
	if getPlayerStorageValue(cid, 0442003) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442003))
	end
	if getPlayerStorageValue(cid, 0442004) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442004))
	end
	if getPlayerStorageValue(cid, 0442005) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 0442005))
	end
	if #tab > 0 then
		return tab
	end
	return false
end

local function autoLoot(cid, pos)
	local check = false
	local str = ""
	local position = {}
	for i = 1, 255 do
		pos.stackpos = i
		if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
			position = pos
			check = true
			break
		end
	end
	if check then
		local corpse = getContainerItemsInfo(getThingFromPos(position).uid)		
		if corpse then
			for index, info in pairs(corpse) do
				if index < countTable(corpse) then
    					if tonumber(info.uid) and tonumber(info.itemid) then
						if isContainer(info.uid) then
							local bag = getContainerItemsInfo(info.uid)
							for i = 1, countTable(bag) - 1 do
								if isInArray(getPlayerList(cid), bag[i].itemid) then
									if bag[i].quant > 1 then
										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)
										doPlayerAddItem(cid, bag[i].itemid, 1)
										str = str.." 1 "..getItemNameById(bag[i].itemid)..","
									end
								end
							end
						end
					end
				end
				if isInArray(getPlayerList(cid), info.itemid) then
					if info.quant > 1 then
						doRemoveItem(info.uid, info.quant)
						doPlayerAddItem(cid, info.itemid, info.quant)
						str = str.." "..info.quant.." "..getItemNameById(info.itemid)..","
					else
						doRemoveItem(info.uid)
						doPlayerAddItem(cid, info.itemid, 1)
						str = str.." 1 "..getItemNameById(info.itemid)..","
					end
				end
			end
		end
	end
	tabela[getCreatureName(cid)] = {item = "[Auto Loot System] Coletados: "..str, gold = 0}
end

local function autoGold(cid, pos)
	local check = false
	local total = 1
	local position = {}
	for i = 1, 255 do
		pos.stackpos = i
		if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then
			position = pos
			check = true
			break
		end
	end
	if check then
		local corpse = getContainerItemsInfo(getThingFromPos(position).uid)
		if corpse then
			for index, info in pairs(corpse) do
				if info.uid and info.itemid then
					if index < countTable(corpse) then
						if isContainer(info.uid) then
							local bag = getContainerItemsInfo(info.uid)
							for i = 1, countTable(bag) - 1 do
								if isInArray({2148, 2152, 2160}, bag[i].itemid) then
									local multiplie = 1
									if bag[i].itemid == 2148 then
										multiplie = 1
									elseif bag[i].itemid == 2152 then
										multiplie = 100
									elseif bag[i].itemid == 2160 then
										multiplie = 10000
									end
									doRemoveItem(bag[i].uid, bag[i].quant)
									doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
									total = total + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0)
									doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
								end
							end
						end
					end
					if isInArray({2148, 2152, 2160}, info.itemid) then
						local multiplie = 1
						if info.itemid == 2148 then
							multiplie = 1
						elseif info.itemid == 2152 then
							multiplie = 100
						elseif info.itemid == 2160 then
							multiplie = 10000
						end
    doRemoveItem(info.uid, info.quant)
						doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
						doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
						total = total + (tonumber(info.quant) and tonumber(info.quant) * multiplie or 0)
					end
				end
			end
		end
	end
	if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
		tabela[getCreatureName(cid)].gold = total
	end
end

local function sendMsg(cid)
	if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
		if tabela[getCreatureName(cid)].gold == 0 then
			doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item)
		else
			doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item.." "..tabela[getCreatureName(cid)].gold.." gold coins.")
		end
		tabela[getCreatureName(cid)] = nil
	end
end

function onKill(cid, target, lastHit)
	if isPlayer(cid) and isMonster(target) then
		if getPlayerStorageValue(cid, 0442100) == 1 and getPlayerList(cid) then
			local pos = getCreaturePosition(target)
			addEvent(autoLoot, 500, cid, pos)
		end
		if getPlayerStorageValue(cid, 0442101) == 1 then
			local pos = getCreaturePosition(target)
			addEvent(autoGold, 500, cid, pos)
		end
		if getPlayerStorageValue(cid, 0442100) == 1 or getPlayerStorageValue(cid, 0442101) == 1 then
			addEvent(sendMsg, 540, cid)
		end
	end
	return true
end

tenta esse

 

 

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.6k

Informação Importante

Confirmação de Termo