Ir para conteúdo
  • 0

[New Pedido] Auto Loot Por Talkation


Denuvo

Pergunta

Boa noite pessoal! Eu tive uma ideia baseada em outra e queria saber se algen pode desenvolver um auto loot por talkation.Tipoo, o player tá la jogando e tals ai ele quer que todos os loot's do bixo vão direto para a bag ao matar o bixo..

dai ele iria usar o comando !autolooton para ativar.. depois de um tempo ele decide naum qerer mais usar o comando pq não quer todos os loot's do bixo.. dai ele iria usar o comando !autolootoff para desativar.. Tem como algen desenvolver esse system.. seria bem ultui para vários servidores do REP+

:D OBG PELA ATENÇÃO!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Alem, De ter Varios Scripts como esse vou te ajudar

 

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

 

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

 

local stor, limit = 7575, 5 --storage, limit to add.[/size][/color][/font]
[font="helvetica, arial, sans-serif"][color="#282828"][size=3]local allow_container = false --empty! not looted with items, atleast for now.[/size][/color][/font]
[font="helvetica, arial, sans-serif"][color="#282828"][size=3]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

 

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

 

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

 

<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 pastacreaturescripts/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

 

Pronto Espero ter ajudado !

 

COMO USAR :

 

/aloot check

Cheka a Lista dos Loots

 

/aloot add:itemid ou nome do item

 

Exemplo

/aloot add:worm

/aloot add:2170

 

 

Para remover

/aloot remove:worm

/aloot remove:2170

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

  • 0

aaaaaaaaaah sorry man.. naum sabia que existia :D

vlw msmo ajudo mt cara REP+

 

@Edit

Man uma duvida.. meu servidor é de Poketibia queria saber como que iria funcionar em relação ao " /aloot check " como que faço pra add os itens nessa " lista " como funciona ?

 

 

@Edit²

Aaah axo que agora compreendi.. funcionaria assim: eu pego o item " x " por exemplo leaves e usaria o comando:

 

/aloot add:leaves

 

para add na lista ou seja o bixo que eu matar e dropar leaves ela iria direto pra bag se eu qiser remover ou seja naum qiser qe a leaves va direto pra minha bag é só usar o comando:

 

/aloot remove:leaves

 

e o comando /aloot check seria para me olhar quais itens estão no auto loot née isso? script bem interesante:D, vlw man!

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

×
×
  • Criar Novo...