JA
poketibia

[Talkaction] Sistema De Auto Loot (Poketibia)

Por jackbolin, 04 de dez. de 2011 em Actions e Talkactions

otserv
tibia
script
27
18.7k
jackbolinJ
04 de dezembro de 2011 às 02:56

Eae Xtibianos Blz?

 

Agradecerei a quem comentar o tópico.

Esse Script serve para Poketibia, mais não testei em ot servers de Tibia.

 

Vim Trazer a Vcs Uma Talkaction Bem Legal. Você está cansado de ficar indo até o corpo do pokemon para pegar o loot? Então ake está um sistema que ao invés de você ter que ir no corpo do pokemon pegar o loot, esse script pega automaticamente para você.

 

 

Vamos Ao Script:

 

Vá em Talkactions.xml adicione isso la parte dos players:

 

<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/>

 

 

Agora em Crie um Arquivo .lua e com nome de aloot.lua e coloque isso e salve dentro da pasta Talkactions:

 

local stor, limit = 7575, 5 --storage, limit to add.

 

local allow_container = false --empty! not looted with items, atleast for now.

 

function onSay(cid, words, param)

local expl = param:explode(':')

local action, rst = expl[1], expl[2]

if (action:lower() == 'check') then

local infos, list = getPlayerStorageValue(cid, stor), {}

if (infos ~= -1) then

list = tostring(infos):explode(',')

end

local txt = 'Autoloot List:\n'

if (#list > 0) then

for k, id in ipairs(list) do

id = id:gsub('_', '')

if tonumber(id) then

txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '')

end

end

else

txt = 'Empty'

end

doPlayerPopupFYI(cid, txt)

elseif (action:lower() == 'add') then

local infos, list = getPlayerStorageValue(cid, stor), {}

if (infos ~= -1) then

list = tostring(infos):gsub('_', ''):explode(',')

end

if (#list >= limit) then

return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.')

end

local item = tonumber(rst)

if not item then

item = getItemIdByName(rst, false)

if not item then

return doPlayerSendCancel(cid, 'Esse item nao existe.')

end

end

if not allow_container and isItemContainer(item) then

return doPlayerSendCancel(cid, 'this item can not be autolooted.')

end

local attrs = getItemInfo(item)

if not attrs then

return doPlayerSendCancel(cid, 'Esse item nao existe.')

elseif not attrs.movable or not attrs.pickupable then

return doPlayerSendCancel(cid, 'this item can not be autolooted.')

end

if isInArray(list, item) then

return doPlayerSendCancel(cid, 'Ja foi adicionado.')

end

table.insert(list, tostring(item))

local new = ''

for v, id in ipairs(list) do

new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')

end

doPlayerSetStorageValue(cid, stor, tostring(new))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.')

elseif (action:lower() == 'remove') then

local infos, list = getPlayerStorageValue(cid, stor), {}

if (infos ~= -1) then

list = tostring(infos):gsub('_', ''):explode(',')

end

if (#list == 0) then

return doPlayerSendCancel(cid, 'You dont have any item added.')

end

local item = tonumber(rst)

if not item then

item = getItemIdByName(rst, false)

if not item then

return doPlayerSendCancel(cid, 'not valid item.')

end

end

if not isInArray(list, item) then

return doPlayerSendCancel(cid, 'This item is not in the list.')

end

local new = ''

for v, id in ipairs(list) do

if (tonumber(id) ~= item) then

new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')

end

end

doPlayerSetStorageValue(cid, stor, tostring(new))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.')

end

return true

end

 

 

 

Gente desculpa, esqueci de por a parte do creaturescripts.

Agr vá em creaturescripts.xml e adicione essa tag:

 

<event type="login" name="aloot_reg" event="script" value="aloot.lua"/>
<event type="kill" name="aloot_kill" event="script" value="aloot.lua"/>

 

 

Agr crie um arquivo .lua e com nome de aloot.lua e coloque isso dentro e salve dentro da pasta creaturescripts/scripts.

 

function onLogin(cid)
registerCreatureEvent(cid, "aloot_kill")
return true
end

local stor = 7575

function autoloot(cid, target, pos)
local function doStack(cid, itemid, new)
	local count = getPlayerItemCount(cid, itemid)
	if (count > 100) then
		count = count - math.floor(count / 100) * 100
	end
	local newCount = count + new
	if (count ~= 0) then
		local find = getPlayerItemById(cid, true, itemid, count).uid
		if (find > 0) then
			doRemoveItem(find)
		else
			newCount = new
		end
	end
	local item = doCreateItemEx(itemid, newCount)
	doPlayerAddItemEx(cid, item, true)
end

local function scanContainer(cid, uid, list)
	for k = (getContainerSize(uid) - 1), 0, -1 do
		local tmp = getContainerItem(uid, k)
		if (isInArray(list, tmp.itemid)) then
			if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then
				doStack(cid, tmp.itemid, tmp.type)
			else
				local item = doCreateItemEx(tmp.itemid, tmp.type)
				doPlayerAddItemEx(cid, item, true)
			end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.')
			doRemoveItem(tmp.uid)
		elseif isContainer(tmp.uid) then
			scanContainer(cid, tmp.uid, list)
		end
	end
end

local items = {}
for i = getTileInfo(pos).items, 1, -1 do
	pos.stackpos = i
	table.insert(items, getThingFromPos(pos))
end

if (#items == 0) then
	return
end

local corpse = -1
for _, item in ipairs(items) do
	local name = getItemName(item.uid):lower()
	if name:find(target:lower()) then
		corpse = item.uid
		break
	end
end

if (corpse ~= -1) and isContainer(corpse) then
	scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(','))
end
end

function onKill(cid, target, lastHit)
if not isPlayer(target) then
	local infos = getPlayerStorageValue(cid, stor)
	if (infos == -1) then
		return true
	end
	local list = tostring(infos):explode(',')
	if (#list == 0) then
		return true
	end
	addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target))
end
return true
end

 

 

 

FIM... Espero que gostem ...agradecerei a quem comentar.

 

Se o script te ajudou:

Vale um REP+?

 

 

Só apertar no + ali no canto da tela.Nao Vai Quebrar a Mão.

 

 

VLW.

Editado Dezembro 7 por jackbolin

04 de dezembro de 2011 às 20:28

ta mas tipow você naum falo pra que ele serve :S

 

se posivel edit e bota pra que ele serve

 

vlw

jackbolinJ
04 de dezembro de 2011 às 23:50

Edited @eduardolokao.

VincV
05 de dezembro de 2011 às 18:54

---edit----

agora sim ta completo

Editado Dezembro 7 por lordbug99

jackbolinJ
05 de dezembro de 2011 às 21:03

@lordbug99

O Script te ajudo???

 

 

Então o que custa dar um REP+?

GreenOakG
06 de dezembro de 2011 às 10:33

Aqui não funcionou. Continuo tento que ir no corpo.

VincV
06 de dezembro de 2011 às 13:16

@lordbug99

O Script te ajudo???

 

 

Então o que custa dar um REP+?

n eu uso o do MatheusMkalo

eu disse que acho que esta faltando partde do script,pelo que vi esse so cria uma lista de items a serem pegos no autoloot,mais n tem um autoloot

---edit---

ae agora ta arrumado

Editado Dezembro 7 por lordbug99

1391
06 de dezembro de 2011 às 13:26

@Jackbolin,

Você que fez o script?

Tem certeza de que funciona?

 

Aqui não funcionou. Continuo tento que ir no corpo.

jackbolinJ
06 de dezembro de 2011 às 19:05

Gente eu esqueci de por a parte do creaturescripts, ja atualizei ae.

Funciona sim.

2 semanas depois...
ezequielssaE
15 de dezembro de 2011 às 11:05

So funciona em pokemon? Tipo, é só dar /aloot "nome do item"??

Editado Dezembro 15 por ezequielssa

CrytosC
15 de dezembro de 2011 às 11:19

Cara testei e não funciono =x , não da certo . ele não pega o LOOT

jackbolinJ
18 de dezembro de 2011 às 17:28

Galera pra adc o item é /aloot add:nome do item . Para remover o item é /aloot remove:nome do item que foi adicionado e para checar os itens que adicionou é /aloot check

Desculpa por nao respondeer ae é pq tavo sem net.

cordisC
18 de dezembro de 2011 às 19:35

Brother aqui funciono em alguns monstros só, a noticia boa é que funciona, a ruim é que ainda tem bugs, pq eu consigui pegar loot de demon,dragon,ghoul entre outros testados.

mas bosses, demon skell e mais outros la não deu certo

jackbolinJ
18 de dezembro de 2011 às 23:30

Hmmmm...

é pq é pra mais poketibia, poketibia e funfa direito mano, tendeu?

 

Mais se funfa

 

da um REP+ ?

2 meses depois...
05 de fevereiro de 2012 às 02:48

no funciona