Jump to content
×
×
  • Create New...
  • 0

Transformar item


Question

Olá rapazeada do xtibia, estou tendo problemas em adaptar um script meu aqui para uma quest "sacrifice"

estou precisando que uma action tenha uma tabela onde eu possa colocar varios itens diferentes, por exemplo: 1000, 1010, 10022 e outros

preciso que a action verifique se há algum desses item em x Position, se algum desses item da tabela estiver na postion "x" então o item irá se transformar no item "2000"

Obs: todos os itens da tabela devem se transformar no item "2000", se puder colocar pra aparecer um effect quando o item for transformado será ótimo

o script precisa checar algum dos itens que existirá na tabela e se algum desses itens estiver la na position, então ele irá se transformar em "2000"

 

Eu estava tentando adaptar o script da shovel mais não tive muito êxito, alguém poderia me ajudar por favor

?

local holes = {468, 481, 483, 7932, 8579}
local sand = {231, 9059}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(isInArray(holes, itemEx.itemid)) then
        local newId = itemEx.itemid + 1
        if(itemEx.itemid == 8579) then
            newId = 8585
        end

        doTransformItem(itemEx.uid, newId)
        doDecayItem(itemEx.uid)
    elseif(isInArray(sand, itemEx.itemid)) then
        local rand = math.random(1, 100)
        if(itemEx.actionid  == 100 and rand <= 20) then
            doTransformItem(itemEx.uid, 489)
            doDecayItem(itemEx.uid)
        elseif(rand >= 1 and rand <= 5) then
            doCreateItem(2159, 1, toPosition)
        elseif(rand > 85) then
            doCreateMonster("Scarab", toPosition, false)
        end

        doSendMagicEffect(toPosition, CONST_ME_POFF)
    end

    return true
end

 

Esse é o script da shovel se caso puder ajudar, agradeço desde ja! ❤️ 

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By R e d
      Boa noite a todos, eu procurei por essa script pois achei ter visto em algum lugar mas não encontrei, ela funciona assim:

      O jogador coloca 1 item em um altar, proximo dali tem uma alavanca, ao gira-la o altar vai consumir o item (se possível o altar seria bloqueado por um tempo, tipo uma coal basin que vai pegar fogo depois de ativado), assim que o item for sacrificado será criado um item em determinada parte do mapa que vai sumir depois de um tempo (ele some assim que a coal basin voltar ao normal).

      Espero que nao seja algo mt complicado >.< Obrigada a todos desde já ❤️ 
    • By jenison06
      Alguem consegue adaptar sistema de contagem, o meu nao esta contando apenas no abra e msmo assim so conta 1 ball.
       
      Action ( Catch.lua)
       
      Lib (catch system.lua)
      Checatch (Talkaction)
      function onSay(cid, words, param, channel) if param == "" then return true end getBrokesIn(cid, param) return true end  
    • By klbkevinklb
      Fala gente, tudo bem...bom eu to sumido aqui do portal, porém hoje estou de volta com uma coisa para disponibilizar. Muitos ja devem saber, alguns não...a pxg tem um sistema que voce pode pescar de andares mais altos, eu procurei muito pra descobrir e bom encontrei e hjee vou ensinar a voces:
       
      abra o arquivo: actions.cpp/ procure por isso:
       

       ReturnValue Actions::canUseFar(const Creature* creature, const Position& toPos, bool checkLineOfSight)
       
      Ela vai estar assim:
       

      ReturnValue Actions::canUseFar(const Creature* creature, const Position& toPos, bool checkLineOfSight) {     if(toPos.x == 0xFFFF)         return RET_NOERROR;     const Position& creaturePos = creature->getPosition();     if(creaturePos.z > toPos.z)         return RET_FIRSTGOUPSTAIRS;     if(creaturePos.z < toPos.z)         return RET_FIRSTGODOWNSTAIRS;     if(!Position::areInRange<7,5,0>(toPos, creaturePos))         return RET_TOOFARAWAY;     if(checkLineOfSight && !g_game.canThrowObjectTo(creaturePos, toPos))         return RET_CANNOTTHROW;     return RET_NOERROR; }
       
      Troque por essa abaixo:
       
      Apague a função toda e coloque isso:
       

      ReturnValue Actions::canUseFar(const Creature* creature, const Position& toPos, bool checkLineOfSight) {     if(toPos.x == 0xFFFF)         return RET_NOERROR;     const Position& creaturePos = creature->getPosition();     if(creaturePos.z > toPos.z)         return RET_FIRSTGOUPSTAIRS; //    if(creaturePos.z < toPos.z) //        return RET_FIRSTGODOWNSTAIRS;     if(!Position::areInRange<7,5,3>(toPos, creaturePos))         return RET_TOOFARAWAY; //    if(checkLineOfSight && !g_game.canThrowObjectTo(creaturePos, toPos)) //        return RET_CANNOTTHROW;     return RET_NOERROR; }
       
       
      Feito tudo certo, voce conseguira pescar de cima de montanhas. Obrigado e boa noite a todos.
    • By erichwenz
      Pessoal eu gostaria de um script para meu ot que fizesse a seguinte função:
      O player fale um comando tipo: !Buylife
      Que custe 10kk.
      E que aumentasse 10000 Mil de life.
      então exemplo um ek que tem 1000 de life, e comprar com o comando, ele ficaria com 11000.
      Se alguém tem esse script, manda ai please.
    • By Sphynx
      Olá, eu vim trazer um script que eu produzi para absolutamente nada além de treino, eu estou postando pois talvez seja útil para alguém em algum momento do espaçotempo. E também vou ceder todos os créditos ao @Woox, afinal eu não ia conseguir sem ele, então meu muito obrigado.
       
      local configuration = { positionParedinso1 = {x=1067, y=1071, z=7, stackpos=1}, -- Posição do objeto que ira sumir time = 1*15*1000, -- tempo para o objeto voltar para o seu lugar devido monstrosTime = 1*10*1000, -- tempo até os monstros despertarem guardioes = { [1] = {name = "Hellfire Fighter", pos = {x = 1065, y = 1071, z = 7}}, -- Todas posições onde os monstros seram criados [2] = {name = "Massive Fire Elemental", pos = {x = 1061, y = 1069, z = 7}}, -- Bem como seus nomes e quantidade [3] = {name = "Fury", pos = {x = 1069, y = 1074, z = 7}}, [4] = {name = "Demon", pos = {x = 1069, y = 1071, z = 7}}, [5] = {name = "Diabolic Imp", pos = {x = 1066, y = 1074, z = 7}}, [6] = {name = "Fire Devil", pos = {x = 1064, y = 1075, z = 7}}, [7] = {name = "Fire Elemental", pos = {x = 1062, y = 1069, z = 7}}, [8] = {name = "Massive Fire Elemental", pos = {x = 1067, y = 1068, z = 7}} } } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then -- alavanca doTransformItem(item.uid, 1946) positionParedinso = getThingFromPos(configuration.positionParedinso1) if positionParedinso.itemid ~= 0 then doRemoveItem(positionParedinso.uid, 1) doCreatureSay(cid, "Um som terrível de engrenagens antigas se movendo pode ser ouvido imediatamente após você puxar a alavanca. \z Estrondos, chamas e vozes demoniacas estão vindo na sua direção, são ouvidos cada vez mais altos, corra por sua vida, \z você acaba fezer um mal antigo despertar.", TALKTYPE_ORANGE_1) -- Mensagem que será exibida após você puxar a alavanca addEvent(function() for k, v in pairs(configuration.guardioes) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) addEvent(doCreateItem, configuration.time, 12794, configuration.positionParedinso1) -- "12794" é o ID da parede que você quer criar após puxar a alavanca end else doTransformItem(item.uid, 1945) end end