Ir para conteúdo

[MODS] AutoLoot By Account! [+Item]


Mendiguinho91

Posts Recomendados

O sistema é feito por Item que adiciona dias de "auto loot time" para a conta e só com esse "auto loot time" para funcionar o sistema.

 

Também:


Max Slots de acordo com free ou premium
Dias de auto loot são acumulativos

Tudo em único MODS! Fácil instalação!


Comandos adicionados:
 
!autoloot --> Mostra uma janela com as informações do sistema
!autoloot item name --> para adicionar ou remover itens na lista.
!autoloot money --> Vai começar a coletar os gold automaticamente
!autoloot clear --> limpar os slots da lista
!autoloot on/off --> para ativar ou desativar o  sistema

 

 

7tsVSHX.jpg

 

 

obs: aconselho a usar no máximo 8 Slots para não bugar a storage.

 

execute no seu banco de dados:

 

ALTER TABLE `accounts` ADD loot_time INT(15) NOT NULL DEFAULT 0;

 

 

AutoLootItem.xml

<?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 = {},	BlockItemsList = {2123,2515},	Max_Slots = {free = 2, premium = 5},	Storages = {27000,28001,28002}}function getAutoLootTime(cid)	return db.getResult("SELECT `loot_time` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)):getDataInt("loot_time")endfunction setAutoLootTime(cid, time)	return db.executeQuery("UPDATE `accounts` SET `loot_time` = "..time.." WHERE `id` = "..getPlayerAccountId(cid))endfunction getAutoLootDays(cid)	local days = math.ceil((getAutoLootTime(cid) - os.time())/(86400))	return days <= 0 and 0 or daysendfunction addAutoLootDays(cid, days)	local add = (days <= 0 and 1 or days)*86400	local time = getAutoLootDays(cid) == 0 and (os.time() + add) or (getAutoLootTime(cid) + add)	return setAutoLootTime(cid, time) endfunction 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))endfunction 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 tabendfunction isInTable(cid, item)	for _,i in pairs(getPlayerStorageTable(cid, info.Storages[1]))do		if tonumber(i) == tonumber(item) then			return true		end	end	return falseendfunction 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})	endendfunction 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)endfunction 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")..".\nTime: "..(getAutoLootTime(cid) > 0 and "you have ["..getAutoLootDays(cid).."] days --> ends in "..os.date("%d/%m/%y %X", getAutoLootTime(cid)).."." or "no have Auto Loot time.").."\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)endfunction 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 itemsendfunction 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 itemsendfunction 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)	endendfunction 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)endfunction 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	endend]]></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 trueend]]></event><event type="kill" name="LootEventKIll" event="script"><![CDATA[domodlib('Loot_func')function onKill(cid, target, lastHit) 	if isPlayer(cid) and getAutoLootDays(cid) > 0 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 trueend]]></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.freeif not param or param == "" then	ShowItemsTabble(cid) return trueelseif tonumber(param) then	doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return trueelseif 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 trueelseif 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 trueelseif 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 trueendlocal item = getItemIdByName(param, false)if not item then	doPlayerSendTextMessage(cid, MESSAGE_FIRST, "This item does not exist.") return trueendlocal var = isInTable(cid, item)if isInArray({2148,2152,2160},item) then 	doPlayerSendTextMessage(cid, MESSAGE_FIRST, "Enter !autoloot money to add money in your list!") return true	elseif isInArray(info.BlockItemsList, item) then	doPlayerSendTextMessage(cid, MESSAGE_FIRST, "You can not add this item in the list!") return trueelseif not var and #getPlayerStorageTable(cid, info.Storages[1]) >= slots then	doPlayerSendTextMessage(cid, MESSAGE_FIRST, "max "..slots.." from auto loot") return trueendif not var then	addItemTable(cid, item)else	removeItemTable(cid, item)enddoPlayerSendTextMessage(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><action itemid="7703" event="script"><![CDATA[domodlib('Loot_func')function onUse(cid, item, fromPosition, itemEx, toPosition) 	local days = 3	addAutoLootDays(cid, days)	doSendMagicEffect(getCreaturePosition(cid), 29)	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You received "..days.." days of AutoLoot, you have "..getAutoLootDays(cid).." auto loot days.")	doRemoveItem(item.uid)	return trueend]]></action></mod>

 

 

Bbs: Caso seu servidor seja em mysql, troque 'db.executeQuery' por 'db.query'

 

 

 

Para editar o sistema:

 

<action itemid="7703" event="script"><![CDATA[

 

7703 é o item que ao clicar vai dar os dias de auto loot.

 

local days = 3

 

é a quantidade de dias que será adicionado na conta.

Link para o comentário
Compartilhar em outros sites

ta puxando os itens para bag aqui não, e não ta dando nenhum erro na distro.

meu servidor é de poketibia só para consta vai ver não pega em poketibia por ser o pokemon matando sei la.

Editado por atakashi
Link para o comentário
Compartilhar em outros sites

20 horas atrás, atakashi disse:

ta puxando os itens para bag aqui não, e não ta dando nenhum erro na distro.

meu servidor é de poketibia só para consta vai ver não pega em poketibia por ser o pokemon matando sei la.

 

não funciona em poketibia, pq mudaram mtas funções comparado ao tfs normal.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 4 months later...

Bom dia uma duvida, instalei sistema, o item deu os dias de autoloot, mas por exemplo faço !autoloot demon shield, ou outro item e ele nao pega, estou a usar otx 2.0, alguem podera ajudar?

Link para o comentário
Compartilhar em outros sites

  • 7 months later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...