Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá pessoal tudo bem? sou novo aqui no fórum, mais vou tentar ajudar um pouco com meu conhecimento :) 

Hoje estarei trazendo para vocês um script que todos tem vontade de ter(eu acho) HUAHAUHAUH

quando você entra naquele baiak e digita !autoloot e ve aquele scriptzão de pega loot e fica com vontade de ter,

hoje estarei trazendo ele aqui pra vocês:

 

autoloot1.thumb.png.bac40759f47eed1a57a18bb8184665d2.png

 

Primeiramente o sistema é contido em 3 arquivos(Talkactions,creaturescripts,login.lua)

 

Vamos começar pelo talkactions!

 

Em talkactions.xml adicione a seguinte tag:

       <talkaction words="!autoloot" event="script" value="Auto Loot.lua"/>

Agora vá na pasta talkactions/scripts e crie 1 arquivo chamado Auto Loot.lua e nele adicione o seguinte codigo:

function ExistItemByName(name) -- by vodka
	local items = io.open("data/items/items.xml", "r"):read("*all")
	local get = items:match('name="' .. name ..'"')
	if get == nil or get == "" then
		return false
	end
	return true
end

local function getPlayerList(cid)
	local tab = {}
	if getPlayerStorageValue(cid, 04420021) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420021))
	end
	if getPlayerStorageValue(cid, 04420031) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420031))
	end
	if getPlayerStorageValue(cid, 04420041) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420041))
	end
	if getPlayerStorageValue(cid, 04420051) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420051))
	end
	if #tab > 0 then
		return tab
	end
	return false
end

local function addToList(cid, name)
	local itemid = getItemIdByName(name)
	if getPlayerList(cid) and isInArray(getPlayerList(cid), itemid) then
		return false
	end
	if getPlayerStorageValue(cid, 04420021) == -1 then
		return doPlayerSetStorageValue(cid, 04420021, itemid)
	elseif getPlayerStorageValue(cid, 04420031) == -1 then
		return doPlayerSetStorageValue(cid, 04420031, itemid)
	elseif getPlayerStorageValue(cid, 04420041) == -1 then	
		return doPlayerSetStorageValue(cid, 04420041, itemid)
	elseif getPlayerStorageValue(cid, 04420051) == -1 then
		return doPlayerSetStorageValue(cid, 04420051, itemid)
	end
end

local function removeFromList(cid, name)
	local itemid = getItemIdByName(name)
	if getPlayerStorageValue(cid, 04420021) == itemid then
		return doPlayerSetStorageValue(cid, 04420021, -1)
	elseif getPlayerStorageValue(cid, 04420031) == itemid then
		return doPlayerSetStorageValue(cid, 04420031, -1)
	elseif getPlayerStorageValue(cid, 04420041) == itemid then
		return doPlayerSetStorageValue(cid, 04420041, -1)
	elseif getPlayerStorageValue(cid, 04420051) == itemid then
		return doPlayerSetStorageValue(cid, 04420051, -1)
	end
	return false
end

function onSay(cid, words, param)
	if param == "" then
		local fi = getPlayerStorageValue(cid, 04420021) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420021)) or ""
		local se = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420031) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420031)) or ""
		local th = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420041) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420041)) or ""
		local fo = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420051) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420051)) or ""
		local stt = getPlayerStorageValue(cid, 04421011) == 1 and "sim" or "não"
		local str = getPlayerStorageValue(cid, 04421001) == 1 and "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} ----------------")
		return true
	end
	
	local t = string.explode(param, ",")
	
	if t[1] == "power" then
		local check = getPlayerStorageValue(cid, 04421001) == -1 and "ligou" or "desligou"
		doPlayerSetStorageValue(cid, 04421001, getPlayerStorageValue(cid, 04421001) == -1 and 1 or -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." o auto loot.")
	elseif t[1] == "gold" then
		local check = getPlayerStorageValue(cid, 04421011) == -1 and "ligou" or "desligou"
		doPlayerSetStorageValue(cid, 04421011, getPlayerStorageValue(cid, 04421011) == -1 and 1 or -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." a coleta de dinheiro.")
		doPlayerSetStorageValue(cid, 04421021, 0)
	elseif t[1] == "goldinfo" then
		local str = getPlayerStorageValue(cid, 04421011) == -1 and "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" then
		if ExistItemByName(t[2]) then
			local item = getItemIdByName(t[2])
			if isInArray({2160, 2148, 2152}, item) then
				return doPlayerSendCancel(cid, "Você não pode adicionar moedas no autoloot. Para coletar dinheiro use !autoloot gold")
			end
			if vip.hasVip(cid) then
				if getPlayerStorageValue(cid, 04420011) < 3 then
					if 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!")
					end
				else
					doPlayerSendCancel(cid, "Sua lista já tem 4 itens! Você deve remover algum antes de adicionar outro.")
				end
			else
				if getPlayerStorageValue(cid, 04420011) == -1 then
					if 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!")
					end
				else
					doPlayerSendCancel(cid, "Você já tem um item adicionado no auto loot! Para adicionar outro, você deve remover o item atual.")
				end
			end
		else
			doPlayerSendCancel(cid, "Este item não existe!")
		end
	elseif t[1] == "remove" then
		if ExistItemByName(t[2]) then
			if 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!")
			end
		else
			doPlayerSendCancel(cid, "Este item não existe!")
		end
	elseif t[1] == "clear" then
		if getPlayerStorageValue(cid, 04420011) > -1 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, "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" then
		local fi = getPlayerStorageValue(cid, 04420021) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420021)).."\n" or ""
		local se = getPlayerStorageValue(cid, 04420031) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420031)).."\n" or ""
		local th = getPlayerStorageValue(cid, 04420041) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420041)).."\n" or ""
		local fo = getPlayerStorageValue(cid, 04420051) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420051)).."\n" or ""
		doPlayerPopupFYI(cid, "O sistema auto loot está coletando:\n "..fi..""..se..""..th..""..fo)
	end
	return true
end
					

Lembrando esse script libera dois slots de autoloot pra free account e quatro slots para vip account, o sistema configurado nele é o vipSystemByMock caso use um script diferente basta alterar função vip.hasVip(cid)

 

Vamos continuar?

Próximo passo vamos adicionar o creaturescripts!

 

Na pasta creaturescripts, abra o creaturescripts.xml e adicione a seguinte tag:

          <event type="kill" name="autoloot" event="script" value="Auto Loot.lua"/>

Agora dentro da pasta creaturescripts vá ate a pasta scripts e crie um arquivo chamado Auto Loot.lua e adicione o seguinte codigo:

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}

local function getPlayerStorageZero(cid, storage) -- By Killua
    local sto = getPlayerStorageValue(cid, storage)
    if tonumber(sto) then
        return tonumber(sto) > tonumber(0) and tonumber(sto) or tonumber(0)
    end
    return tonumber(0)
end

local tabela = {}

local function getPlayerList(cid)
	local tab = {}
	if getPlayerStorageValue(cid, 04420021) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420021))
	end
	if getPlayerStorageValue(cid, 04420031) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420031))
	end
	if getPlayerStorageValue(cid, 04420041) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420041))
	end
	if getPlayerStorageValue(cid, 04420051) ~= -1 then
		table.insert(tab, getPlayerStorageValue(cid, 04420051))
	end
	if #tab > 0 then
		return tab
	end
	return {}
end

local function boost(cid)
	return tonumber(getPlayerStorageValue(cid,722381)) >= os.time()
end

local function autoLoot(cid, pos)
	if not isPlayer(cid) then return end
	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 info.uid and info.itemid then
						if isContainer(info.uid) then
							local bag = getContainerItemsInfo(info.uid)
							for i = 1, countTable(bag) 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)
										if boost(cid) then
											if 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).." +"
											end
										else
											doPlayerAddItem(cid, bag[i].itemid, 1)
											str = str.." 1 "..getItemNameById(bag[i].itemid).." +"
										end
									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)
						if boost(cid) then
							if 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).." +"
							end
						else
							doPlayerAddItem(cid, info.itemid, 1)
							str = str.." 1 "..getItemNameById(info.itemid).." +"
						end
					end
				end
			end
		end
	end
	setPlayerTableStorage(cid,822564,{[1] = str, [2] = 0})
end

local function autoGold(cid, pos)
	if not isPlayer(cid) then return end
	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) 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) * multiplie)
									total = total + bag[i].quant * multiplie
									doPlayerSetStorageValue(cid, 04421021, tonumber(getPlayerStorageZero(cid, 04421021)) + tonumber(info.quant) * tonumber(multiplie))
								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) + info.quant * multiplie)
						doPlayerSetStorageValue(cid, 04421021, tonumber(getPlayerStorageZero(cid, 04421021)) + tonumber(info.quant) * tonumber(multiplie))
						total = total + info.quant * multiplie
					end
				end
			end
		end
	end
	if total > 0 then
		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)
	end
end

local function sendMsg(cid)
	if not isPlayer(cid) then return end
	local tab = getPlayerTableStorage(cid,822564)
	if countTable(tab) >= 1 then
		if tab[1] then
			if tab[2] and tab[2] > 0 then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: ".. tab[1] .." ".. tab[2] .." gold coins.")
			else
				if type(tab[1]) == "string" and string.len(tab[1]) > 1 then
					doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: "..tab[1])
				end
			end
		elseif not tab[1] then
			if tab[2] then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: "..tab[2].." gold coins.")
			end
		end
	end
	doPlayerSetStorageValue(cid,822564,-1)
end

function onKill(cid, target, lastHit)
	if isPlayer(cid) and isMonster(target) then
		if getPlayerStorageValue(cid, 04421001) == 1 and #getPlayerList(cid) > 0 then
			local pos = getCreaturePosition(target)
			addEvent(autoLoot, 500, cid, pos)
		end
		if getPlayerStorageValue(cid, 04421011) == 1 then
			local pos = getCreaturePosition(target)
			addEvent(autoGold, 540, cid, pos)
		end
		if getPlayerStorageValue(cid, 04421001) == 1 or getPlayerStorageValue(cid, 04421011) == 1 then
			addEvent(sendMsg, 560, cid)
		end
	end
	return true
end

 

E por fim ainda dentro da pagina scripts procure o arquivo login.lua e registre a seguinte tag:

 

                                        registerCreatureEvent(cid, "autoloot")
                                        registerCreatureEvent(cid, "Auto Loot")

 

Créditos: Killua - Vitor cardoso bertolucci

 

Obrigado a todos e até a próxima!

JNetworks.com.br

 

 

1.png.4dcd10276068e66565a1005c176a5978.png

Jnetworks agradece a preferência!

 

 

 

Está querendo abrir 1 OTServer e não sabe onde hospedar?
Acesse: JNetworks.com.br

Instalamos seu OTServer apartir da contratação de 3GB de ram!

  • Respostas 41
  • Visualizações 14.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Olá pessoal tudo bem? sou novo aqui no fórum, mais vou tentar ajudar um pouco com meu conhecimento   Hoje estarei trazendo para vocês um script que todos tem vontade de ter(eu acho) HUAHAUHAUH

  • Cara fiz exatamente igual ao tutorial, mas quando entro no jogo e executo o comando não acontece nada, o que sera que pode ser ?

Posted Images

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

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