Ir para conteúdo

[Encerrado] Como Por Uma Talkaction Para Apenas Players Vip Usarem Ela?


NSparks

Posts Recomendados

Seguinte, eu peguei uma talkaction de autoloot aqui no xTibia e fiz uns edits ( coisa pequena, passei do inglês pro portugues e mudei alguma coisa no modo de ativação )...

 

Só que eu não sei colocar o script para só players vip terem acesso a ele, porque eu queria que o comando fosse apenas para players VIP poderem usar...

 

O script abaixo \/

 

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<mod name="Loot System" version="1.0" author="Vodkart And Mkalo / Edited by Sparks [alves_519@hotmail.com]" contact="none.com" enabled="yes">

<config name="Loot_func"><![CDATA[

 

info = {

OnlyPremium = true,

AutomaticDeposit = true,

BlockMonsters = {},

BlockItemsList = {2123,2515}

}

 

function 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))

end

function 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 tab

end

 

function isInTable(cid, item)

for _,i in pairs(getPlayerStorageTable(cid, 27000))do

if tonumber(i) == tonumber(item) then

return true

end

end

return false

end

function addItemTable(cid, item)

local x = {}

for i = 1,#getPlayerStorageTable(cid, 27000) do

table.insert(x,getPlayerStorageTable(cid, 27000))

end

if x ~= 0 then

table.insert(x,tonumber(item))

setPlayerStorageTable(cid, 27000, x)

else

setPlayerStorageTable(cid, 27000, {item})

end

end

function removeItemTable(cid, item)

local x = {}

for i = 1,#getPlayerStorageTable(cid, 27000) do

table.insert(x,getPlayerStorageTable(cid, 27000))

end

for i,v in ipairs(x) do

if tonumber(v) == tonumber(item) then

table.remove(x,i)

end

end

return setPlayerStorageTable(cid, 27000, x)

end

function ShowItemsTabble(cid)

local str,n = "-- My Loot List --\n\n",0

for i = 1,#getPlayerStorageTable(cid, 27000) do

n = n + 1

str = str..""..n.." - "..getItemNameById(getPlayerStorageTable(cid, 27000)).."\n"

end

return doShowTextDialog(cid, 2529, str)

end

function 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 items

end

function 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)

end

else

if itemid == item.itemid then

table.insert(items, item.uid)

end

end

end

end

return items

end

function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo

local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)

local piles = 0

if #item > 0 then

for i,x in pairs(item) do

if getThing(x).type < 100 then

local it = getThing(x)

doTransformItem(it.uid, itemid, it.type+quant)

if it.type+quant > 100 then

doPlayerAddItem(cid, itemid, it.type+quant-100)

end

else

piles = piles+1

end

end

else

return doPlayerAddItem(cid, itemid, quant)

end

if piles == #item then

doPlayerAddItem(cid, itemid, quant)

end

end

function 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)

end

function 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, 27000), 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

end

end

]]></config>

<event type="login" name="LootLogin" event="script"><![CDATA[

function onLogin(cid)

registerCreatureEvent(cid, "MonsterAttack")

return true

end]]></event>

<event type="death" name="LootEventDeath" event="script"><![CDATA[

domodlib('Loot_func')

function onDeath(cid, corpse, deathList)

local killer,pos = deathList[1],getCreaturePosition(cid)

addEvent(corpseRetireItems,1,killer,pos)

return true

end]]></event>

<event type="combat" name="MonsterAttack" event="script"><![CDATA[

domodlib('Loot_func')

if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters,string.lower(getCreatureName(target))) then

registerCreatureEvent(target, "LootEventDeath")

end

return true]]></event>

<talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[

domodlib('Loot_func')

local t = string.explode(string.lower(param), ",")

if info.OnlyPremium == true and not isPremium(cid) then

doPlayerSendCancel(cid, "Você precisa ser VIP para utilizar este comando.") return true

elseif not t[1] then

ShowItemsTabble(cid) return true

elseif tonumber(t[1]) or tonumber(t[2]) then

doPlayerSendCancel(cid, "enter!autoloot add, name or !autoloot remove, name") return true

elseif isInArray({"add","remove"}, tostring(t[1])) then

local func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or false

local item = getItemIdByName(tostring(t[2]), false)

if not item then

doPlayerSendCancel(cid, "Esse item não existe.") return true

elseif check == true and isInArray(info.BlockItemsList, item) then

doPlayerSendCancel(cid, "Esse item não pode ser adicionado na lista!") return true

elseif isInTable(cid, item) == check then

doPlayerSendCancel(cid, "O item "..(check == true and "foi configurado com sucesso." or "não foi configurado").." na sua lista.") return true

end

func(cid, item)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "Você adicionou o item "..t[2].." na sua lista" or "Você removeu o item "..t[2].." da sua lista") return true

end

return true]]></talkaction>

</mod>

 

Preciso disso urgentemente, e aproveitando o tópico, também queria um script apenas para vip, que ao ele ficar no trainer recuperasse stamina... Tipo, ele pisa no sqm do trainer e começa a regenerar a metade da stamina que regenera quando se está off...

 

Thanks ^^

Link para o comentário
Compartilhar em outros sites

Up

 

Up

Usuarios, Upar topicos mesmo sendo duvidas é contra as regras do xtibia.com

Por favor siga elas rigidamente ou será punido!

 

Considere isso como um AVISO.

Atenciosamente, Stigal.

Link para o comentário
Compartilhar em outros sites

  • 5 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...