Ir para conteúdo
  • Cadastre-se

(Resolvido)Sistema Simples de Forja


Ir para solução Resolvido por tataboy67,

Posts Recomendados

Olá pessoal,

 

Peguei este script para forja, fiz umas modificações para tentar colocar no tfs 1.3 porem não estou conseguindo.

Alguem pode ajudar? Acredito que para funcionar é so colocar uma action em algum item e verificar as coordenadas dos itens conforme abaixo.

 

 

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    
    local config = {
    ["fire sword"] = {t1 = 5901, t2 = 5880, t3 = 2392, qnt1 = 10, qnt2 = 1}, -- t1 = ID do ITEM 1 |---| t2 = ID do ITEM 2 |---| t3 = ID do ITEM a ser FORJADO --
    ["fire axe"] = {t1 = 2489, t2 = 2487, t3= 2432, qnt1 = 100, qnt2 = 1}
    }
    
    
    local r1 = position{1816,305,3, stackpos = 2} -- Posição 1 ( NÃO MEXA NO stackpos= 2 )
    local r2 = position{1817,305,3, stackpos= 2} -- Posição 2 ( NÃO MEXA NO stackpos= 2 )
    local r3 = position{1818,305,3} -- Posição do Item a Ser Criado

    local q1 = position:getTile(r1)
    local q2 = position:getTile(r2)
    
    for i, x in pairs(config) do
        if q1.itemid == x.t1 and q2.itemid == x.t2 then
                q1:remove()
                qnt1:remove()
                q2:remove()
                qnt2:remove()
                addEvent(Game.createItem, 1000, x.t3, 1, r3)
                doSendMagicEffect(r3, 47)
                addEvent(doSendMagicEffect, 900, r3, 39)
                player:say("Parabéns, Você Forjou Um " .. i .. ".")
                break
        elseif q1.itemid == x.t2 and q2.itemid == x.t1 then
                remove(q1.uid, x.qnt2)
                remove(q2.uid, x.qnt1)
                addEvent(doCreateItem, 1000, x.t3, 1, r3)
                doSendMagicEffect(r3, 47)
                addEvent(doSendMagicEffect, 900, r3, 39)
                player:say("Parabéns, Você Forjou Um " .. i .. ".")
                break
                end
            end
return true    
        
        
        
        
    end

Editado por lazarus321 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@lazarus321 
O que o sistema faz?
Dei 1 passada rápida aqui e vi que o: player:say() está errado.
Use assim:

player:say(TALKTYPE_MONSTER_SAY, "Parabéns, Você Forjou Um " .. i .. ".")
-- TALKTYPE_MONSTER_SAY = é o tipo de mensagem

 

Percebi também que você pode passar a função sendMagicEffect() para TFS 1.3 também ... 

positionEffect:sendMagicEffect(Number_Effect) 
-- positionEffect = deve setar a posição que deseja que o efeito apareça
-- Number_Effect = coloque um numero para dar o effect
Link para o post
Compartilhar em outros sites

Olá tataboy67,

 

Então... o script era para criar uma espada de fogo usando 2 materiais (madeira e ferro) conforme la nos ids, porem nao esta funcionando.

Eu fiz as alterações que falou mais também não deu em nada.

 

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    
    local config = {
    ["fire sword"] = {t1 = 5901, t2 = 5880, t3 = 2392, qnt1 = 10, qnt2 = 1} -- t1 = ID do ITEM 1 |---| t2 = ID do ITEM 2 |---| t3 = ID do ITEM a ser FORJADO --
    -- ["fire axe"] = {t1 = 2489, t2 = 2487, t3= 2432, qnt1 = 100, qnt2 = 1}
    }
    
    
    local r1 = position{1816,305,3, stackpos = 2} -- Posição 1 ( NÃO MEXA NO stackpos= 2 )
    local r2 = position{1817,305,3, stackpos= 2} -- Posição 2 ( NÃO MEXA NO stackpos= 2 )
    local r3 = position{1818,305,3} -- Posição do Item a Ser Criado

    local q1 = position:getTile(r1)
    local q2 = position:getTile(r2)
    
    for i, x in pairs(config) do
        if q1.itemid == x.t1 and q2.itemid == x.t2 then
                q1:remove()
                qnt1:remove()
                q2:remove()
                qnt2:remove()
                addEvent(Game.createItem, 1000, x.t3, 1, r3)
                SendMagicEffect(r3, 47)
                -- addEvent(player:SendMagicEffect, 900, r3, 39)
                positionEffect:sendMagicEffect(39) 
                player:say(TALKTYPE_MONSTER_SAY, "Parabéns, Você Forjou Um " .. i .. ".")
                break
        elseif q1.itemid == x.t2 and q2.itemid == x.t1 then
                q1:remove()
                qnt2:remove()
                q2:remove()
                qnt1:remove()               
                addEvent(Game.createItem, 1000, x.t3, 1, r3)
                SendMagicEffect(r3, 47)
                -- addEvent(player:SendMagicEffect, 900, r3, 39)
                positionEffect:sendMagicEffect(39) 
                player:say(TALKTYPE_MONSTER_SAY, "Parabéns, Você Forjou Um " .. i .. ".")
                break
                end
            end
return true    

    end

 

 

A versão original da fonte deste script esta em 

 

 

 

Editado por lazarus321 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Você está utilizando ele como?
@lazarus321 

Actions ou Npc's?

Link para o post
Compartilhar em outros sites

Quer que funcione clicando em 1 item e verificando apenas se o player tem os itens necessários?

Link para o post
Compartilhar em outros sites

Já já eu faço então, deixa eu terminar de arrumar minhas coisas ...

Link para o post
Compartilhar em outros sites

Muito obrigado pela ajuda e dedicação,

Acredito que vai ajudar muita gente tbm.

Eu gostaria de aprender mais sobre script para poder ajudar mais a galera. Mais so consigo ir editando scripts já prontos. Tenso rs.

 

Editado por lazarus321 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@lazarus321 
SCRIPT:


local craft = {
    level = 1, -- nivel necessario
    items = { -- itens necessários para que os players entrem.
        [1] = {item = 2160, count = 10},
        [2] = {item = 2159, count = 10},
        -- [3] = {item = ItemID, count = Quantidade}
    },
    craftedItem = {2493, 1}, -- item craftado, quantidade
}

function onUse(player, item, fromPosition, itemEx, toPosition)
    
    if player:getLevel() < craft.level then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce nao possui nivel necessario.")
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end
               
    for k, v in pairs(craft.items) do
        if player:getItemCount(v.item) < v.count then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce nao possui os items necessarios.")
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
        end
    end

    for k, v in pairs(craft.items) do
        player:removeItem(v.item, v.count)
    end

    player:addItem(craft.craftedItem[1], craft.craftedItem[2])
    player:removeItem(item.itemid, 1)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Parabens, voce craftou: "..craft.craftedItem[2].."x "..ItemType(craft.craftedItem[1]):getName()..".")
    player:getPosition():sendMagicEffect(50)
    
    return true
end

TAG:

    <action itemid="27058" script="Item_Troca.lua" />

Aqui está funcionando perfeitamente ! ? 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo