Ficou bom hem, gostei muito. Parabéns pelo script e espero que venham muitos scripts legais ainda!
Além de ser um sistema diferente possibilita aos que pretendem ser scripts um bom aprendizado.
Rep+
Por Leoxtibia, 26 de jun. de 2012 em Actions e Talkactions
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

Ficou bom hem, gostei muito. Parabéns pelo script e espero que venham muitos scripts legais ainda!
Além de ser um sistema diferente possibilita aos que pretendem ser scripts um bom aprendizado.
Rep+
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

eu curti bastante o sistema, ta bacana, se eu fosse você colocaria chance para minerar os itens "bom"...
outra coisa, oq é essa parte no script:
>
Editado Junho 26 por Vodkart
Vlw pelos comments aí. E essa parada mto loka, é por causa da formatação do xtibia. Mas já consertei, vlw ^^
>
Quanto aos itens, é só editar nessa linha: local items = {2149, 2145, 2147}, colocando os ids dos items.
Editado Junho 26 por Leoxtibia
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

sim amg eu vi ali
estou falando para colocar chances em porcentagem
local items = {
{id = 2149, count = 1, chance = 10},
{id = 2145, count = 2, chance = 20},
{id = 2147, count = 10, chance = 40}
}
Editado Junho 26 por Vodkart
Ahh kk, tinha entendido outra coisa kk ... Agora tenho que sair, mas depois vou fazer isso sim, vlw pela ideia.
@edit
Como o Vodkart tinha dado a ideia, segue o script de "limpar" a pedra, com chance:
local items = {
{id = 2149, count = 5, chance = 10},
{id = 2145, count = 3, chance = 60},
{id = 2147, count = 6, chance = 20}
}
local stone = {x=216,y=434,z=7, stackpos=1} ---- onde o coal será adicionado
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 2007 and itemEx.itemid == 5469 then
doRemoveItem(item.uid)
local flask = doPlayerAddItem(cid, 7488)
doItemSetAttribute(flask, "description", "This flask contains mercury. It is great to use on minerals.")
doPlayerSendTextMessage(cid, 22, "You have gained a flask of mercury.")
elseif item.itemid == 7488 and itemEx.actionid == 3459 then
for i=1, #items do
quant = math.random(items[i].count)
percent = items[i].chance
if math.random(1, 100) <= percent then
doRemoveItem(itemEx.uid)
doPlayerAddItem(cid, items[i].id, quant)
doSendMagicEffect(stone,6)
doRemoveItem(item.uid)
else
doSendMagicEffect(stone,CONST_ME_POFF)
end
end
end
end
Editado Junho 26 por Leoxtibia
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

ficou show de bola, quando eu puder vou dar REP+
ótimo script xD
info
Grupo: Campones
Registrado: 22/07/12
Posts: 14
Reputação: 0

O cara , aqui não funciono ... eu uso o item ( 4874 ) ele diz " Você colocou a pedra no vagão, use a alavanca para movê-lo " aí eu clico na alavanca aparece... " O Vagão ainda não está carregado " ele aparece até um " efeito " como sê fosse enxer o vagão mais não fica... tipo assim , digamos que não carrega o trêm a pedra não vai . só da um efeitozinho . podem me ajudar ?
info
Grupo: Visconde
Registrado: 22/06/08
Posts: 489
Reputação: +137
Gênero: Masculino
Bem, estava sem nada para fazer, e resolvi criar esse sistema de mineração. Ele é simples, porém é diferente ^^. Diante mão, obrigado a jhon992 por me tirar algumas dúvidas e me ajudar.
Explicando o script: O player precisa "carregar" o vagão que está vazio, usando um item na pedra. Depois, ao puxar a alavanca, o vagão se move e quando chega no final, assim que o player pisar num certo tile, o vagão voltará a posição inicial e uma pedra surgirá emcima de um local. Então, é só o player usar a garrafa (id 2007) em um destilador (id 5469) que se transformará em um vial de mercury. Ao usar o vial na pedra, poderá ganhar itens que são aleatórios. O vídeo abaixo explica como instalar e também mostra o script em funcionamento. Então, vamos ao script:
Primeiramente, em data/actions/scripts crie um arquivo.lua chamado mineracao.lua e cole isto dentro:
local pedras = {8751, 8749, 8748, 8750} --- PEDRAS QUE PODERAO SER MINERADAS local vagon = {x=210,y=434,z=7,stackpos=2} --- local inicial do vagão function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray (pedras, itemEx.itemid) == TRUE and itemEx.actionid == 3478 then if getTileItemById(vagon, 7131).uid > 0 and doPlayerSendTextMessage(cid, 22, "Você colocou a pedra no vagão, use a alavanca para movê-lo") then doTransformItem(getThingfromPos(vagon).uid,10037) doSendMagicEffect(toPosition, 3) doSendMagicEffect(vagon, 38) else doPlayerSendCancel(cid, "O vagão está em uso. Espere ele voltar.") end end endComo no próprio script já tem, nessa linha local pedras = {8751, 8749, 8748, 8750} você deve colocar os ids das pedras que poderão ser mineradas. Depois, é preciso que você, pelo map editor, coloque o actionid 3478 nas pedras.
E em actions.xml adicionar a tag: <action itemid="4874" script="mineracao.lua"/>. Nesse caso, o item que será usado para minerar vai ser o dwarven pickaxe, caso prefira outro, é só mudar onde tem 4874, com o id do seu item.
Ainda em data/actions/scripts, crie outro arquivo.lua e renomeie para vagonlever.lua e cole isto dentro:
local positions = { {x=210,y=434,z=7, stackpos=1}, ---- posição inicial do vagao {x=211,y=434,z=7, stackpos=1}, --[ {x=212,y=434,z=7, stackpos=1}, ------------Posição onde o vagão irá andar {x=213,y=434,z=7, stackpos=1}, ------------ || {x=214,y=434,z=7, stackpos=1}, --] {x=215,y=434,z=7, stackpos=1} ---- ultima posição do vagão } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.actionid == 6666 and getTileItemById(positions[1], 10037).uid > 0 then moveVagon() else doPlayerSendCancel(cid, "O vagão ainda não está carregado") end end function moveVagon() for i=1, #positions do vagon_uid = getTileItemById(positions[i], 10037).uid if vagon_uid > 0 then if #positions ~= i and doRemoveItem(vagon_uid,1) then doCreateItem(10037,1, positions[i+1]) addEvent(moveVagon, 500) break end end end endO script é autoexplicativo, você só vai precisar adicionar desde a posição inicial do vagão até o último. Com o seu map editor, adicione o aid 6666 na alavanca. Em actions.xml adicione a tag: <action actionid="6666" event="script" value="vagonlever.lua"/>.
Em data/actions/scripts, novamente, crie outro arquivo e renomeie para cleanstone.lua, e cole isto dentro:
local items = {2149, 2145, 2147} ----- items que vão aparecer local stone = {x=216,y=434,z=7, stackpos=1} ---- onde o coal será adicionado function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 2007 and itemEx.itemid == 5469 then doRemoveItem(item.uid) local flask = doPlayerAddItem(cid, 7488) doItemSetAttribute(flask, "description", "This flask contains mercury. It is great to use on minerals.") doPlayerSendTextMessage(cid, 22, "You have gained a flask of mercury.") elseif item.itemid == 7488 and itemEx.actionid == 3459 then local randomChance = math.random(1, #items) doTransformItem(itemEx.uid,items[randomChance]) doSendMagicEffect(stone,6) doRemoveItem(item.uid) end endA tag: <action itemid="2007;7488" event="script" value="cleanstone.lua"/>
Nessa parte, você vai editar nessa linha: local items = {2149, 2145, 2147} os items que aparecerão ao "limpar" a pedra com o vial de mercury. No meu caso, coloquei small diamond, small ruby e small emerald. E na outra linha abaixo, o local onde a pedra será adicionada. Perceba que o script já faz com que o vial de mercúrio só possa ser usado nas pedras de action 3459 (você não precisa adicionar nada de action aqui), para evitar que pudessem ser usadas nas outras pedras espalhadas pelo mapa.
E por último, em movements/scripts crie um arquivo.lua e renomeie para coal.lua:
local final = {x=215,y=434,z=7, stackpos=2} ------ posição onde o vagão cheio chegará local stone = {x=216,y=434,z=7} ------ local onde aparecerá a pedra local vagon = {x=210,y=434,z=7, stackpos=1} ------ local inicial do vagão function onStepIn(cid, item, position, fromPosition) if getTileItemById(final, 10037).uid > 0 then doRemoveItem(getThingfromPos(final).uid,1) local mina = doCreateItem(8751, 1, stone) doItemSetAttribute(mina, "aid", 3459) doSendMagicEffect(stone, 34) doSendMagicEffect(final, 2) doCreateItem(7131, 1, vagon) doSendMagicEffect(vagon, 10) end return true endE a tag em movements.xml: <movevent type="StepIn" actionid="16540" event="script" value="coal.lua"/>
Depois, é só colocar o actionid 16540 no chão na frente de onde será adicionada a pedra (veja vídeo). E ao player pisar, tcharam! a pedra vai aparecer.
Bom, é isso aí, ainda estou começando em scripting mas espero ter ajudado alguém, esse script também pode servir como exemplos de tutoriais e talz ^^. Vlw, abraço.
Editado Julho 9 por Leoxtibia