Seção errada.
A correta seria aqui:
http://www.xtibia.com/forum/forum/86-pedidos-e-duvidas-scripting/
Reportado para moverem.
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

Seção errada.
A correta seria aqui:
http://www.xtibia.com/forum/forum/86-pedidos-e-duvidas-scripting/
Reportado para moverem.
info
Grupo: Marquês
Registrado: 06/11/11
Posts: 1.1k
Reputação: +109
Char no Tibia: Stroked

Lol e onde eu to?
Em data/actions/scripts crie um arquivo.lua e cole isto dentro:
local t = {
essence = 2160, -- id da demonic essence
count = 300, -- quantidade minima
level = 50, -- level necessário
inicio = { -- posição inicial dos players
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1}
},
fim = { -- posição para onde os players irão
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1},
{x = 1, y = 1, z = 1}
}}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local test = {}
for _, k in ipairs(t.inicio) do
local x = getTopCreature(k).uid
if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.level or getPlayerItemCount(x, t.essence) < t.count) then
doPlayerSendCancel(cid, "Não tem 8 players ou alguém não tem level "..t.level.." ou alguém não tem "..t.count.." demonic essences.")
return true
end
table.insert(test, x)
end
for i, pid in ipairs(test) do
doSendMagicEffect(t.inicio[i], 2)
doPlayerRemoveItem(pid, t.essence, t.count)
doTeleportThing(pid, t.fim[i], false)
doSendMagicEffect(t.fim[i], 10)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end
Configure o script de acordo com suas posições, id da demonic essence e quantidade. Depois, é só colocar a tag em actions.xml:
<action actionid="ACTION_ID_DA_ALAVANCA" script="NOMEDOSEUARQUIVO.lua"/>
Editado Setembro 12 por Leoxtibia
info
Grupo: Marquês
Registrado: 06/11/11
Posts: 1.1k
Reputação: +109
Char no Tibia: Stroked

Muito bom, vlw!! REP++
E ainda colocou level... VLWW MSMMMMMM!!
Ah, tava fazendo aqui e já responderam...
bom, mesmo assim vou deixar aqui a script que fiz:
local positions = {
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
{from = {x = 1, y = 1, z = 1}, to = {x = 1, y = 1, z = 1}}, -- from é aonde checa, to é pra onde teleporta
}
local removeItemId = 2160 -- id do item a ser removido
local removeItemCount = 300 -- quantidade do item a ser removido
function onUse(cid, item, frompos, item2, topos)
local playersWithoutItem, readyToGo, missing = {}, true, false
for _, pos in pairs (positions) do
local creature = getTopCreature(pos.from).uid
if not isCreature(creature) or not isPlayer(creature) then
doSendMagicEffect(pos.from, CONST_ME_POFF)
missing = true
readyToGo = false
elseif getPlayerItemCount(creature, removeItemId) < removeItemCount then
table.insert(playersWithoutItem, creature)
doSendMagicEffect(pos.from, CONST_ME_POFF)
readyToGo = false
else
doSendMagicEffect(pos.from, 13)
end
end
if not readyToGo then
local str = ""
if missing then
str = "São necessários "..#positions.." jogadores para puxar a alavanca."
elseif #playersWithoutItem > 0 then
local s = #playersWithoutItem == 1 and "" or "s"
local es = #playersWithoutItem == 1 and "" or "es"
local don = #playersWithoutItem == 1 and "doesn't" or "don't"
local e = #playersWithoutItem == 1 and "e" or "ê"
str = "O"..s.." jogador"..es.." a seguir não t"..e.."m os itens necessários:\n\n"
for _, id in pairs (playersWithoutItem) do
str = str .. getCreatureName(id) .. "\n"
end
end
doPlayerPopupFYI(cid, str)
return true
else
for _, pos in pairs (positions) do
local creature = getTopCreature(pos.from).uid
doPlayerRemoveItem(creature, removeItemId, removeItemCount)
doSendMagicEffect(pos.from, CONST_ME_TELEPORT)
doTeleportThing(creature, pos.to, false)
addEvent(doSendMagicEffect, 50, pos.to, CONST_ME_TELEPORT)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
end
return true
end
Não tem checagem de level já que você não pediu.
O script do Leoxtibia não está removendo os itens eu acho.
Editado Setembro 12 por brun123
Ele tinha falado para ver se cada player tinha 300, se tivesse teleportava. Achei estranho, já que no título do tópico tem "e Tira Item", qualquer coisa, só dizer =P
info
Grupo: Marquês
Registrado: 06/11/11
Posts: 1.1k
Reputação: +109
Char no Tibia: Stroked

Leo, não testei o script ainda, mas se puder fazer essa mudança, colocando pra remover os itens, Brun123 vlww tbm kra!
Ok, já editei.
info
Grupo: Marquês
Registrado: 06/11/11
Posts: 1.1k
Reputação: +109
Char no Tibia: Stroked
Bom, gostaria de pedir um script, de uma alavanca:
Precisaria de 8 pessoas em cima dos tiles pra poder puxar a alavanca (apenas uma alavanca óbvio).
Ao puxar a alavanca, todos os 8 players, cada um teria que ter 300 demonic essence. Caso eles não tenha, o player que puxo a alavanca recebe uma mensagem dizendo que um deles não possuem os itens necessários.
Ao puxar a alavanca, cada um dos 8 players ia ser teleportado para uma posição configuravel por exemplo, player 1 pra pos 1, player 2 pra pos 2, player 3 pra pos 3, e assim em diante.
Bom, creio q n é um script mto dificil. Mas não tenho capacidade pra isso, quem ajudar +REP! Vlw