Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá galera do TK,

 

Venho aqui lhes trazer uma spell nova e funcional !

Ela é uma spell simples, com lifesteal incorporado!  Ou seja, você causa dano X, e recebe 20% de vida..

 

1° PASSO :

 

Copie qualquer arquivo.lua e cole, e renomeie para 'lifesteal'.lua .

Apague tudo de dentro do arquivo e cole este script:

 

function onCastSpell(cid)
    local formula = getPlayerLevel(cid) * getPlayerMagLevel(cid)
    local target = getCreatureTarget(cid)
    
    if target < 1 then
        
        doPlayerSendCancel(cid, "You need a target.")
        return false
    end
    
    if isPlayer(target) then
        
        formula = formula / getPlayerLevel(target)
    else
        
        formula = formula / 15
    end
    
    local stealPercent = formula / 100 * 20
    
    doCreatureAddHealth(cid, stealPercent)
    doSendAnimatedText(getThingPos(cid), "+" .. stealPercent, 25)
    
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), 15)
    doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPos(target), 0, - formula, - formula * 0.5, CONST_ME_MAGIC_RED)
    return true
end

 

2° PASSO:

Cole esta linha no seu spells.xml

 

    <instant name="Lifesteal" words="exori drain" lvl="80" mana="230" prem="1" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="4000" maglv="20" needlearn="0" script="lifesteal.lua">
        <vocation id="3"/>
        <vocation id="7"/>
    </instant>

 

Explicando :

No caso a spell está configurada para curar 20%  --     local stealPercent = formula / 100 * 20  --

Esta formula é de acordo com o magiclevel, quando maior o número, menor o dano!  formula = formula / 15

 

Ela pode ser usada por paladinos maiores de level 80 .. CONFIGURAVEL !

 

 

Créditos:

 

75% Orochi Elf - Script

25% Eu - Idéia, fundamentos, tópico

 

Quaisquer dúvidas podem vir tirar aqui no tópico! Estou a disposição !

Gostou? REP+

 

 

 

 

Programador/Scripter/Mapper nível NOOB ?

 

Untitltasadasded-1.png.e24703844a8ee56fadbf0cdcf82cd9c7.png

Link para o post
Compartilhar em outros sites
  • 8 years later...

Mano, mas essa spell voce colocou uma formula que usa lvl do player...

Quero ver fazer uma que cure X% do dano causado....

20120329195100.jpg
Link para o post
Compartilhar em outros sites
22 horas atrás, fabious disse:

Mano, mas essa spell voce colocou uma formula que usa lvl do player...

Quero ver fazer uma que cure X% do dano causado....

eita, esse tópico é de 9 anos atrás kkkkk

o cara nem vai ver

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites
Em 16/09/2023 em 21:44, fabious disse:

Mano, mas essa spell voce colocou uma formula que usa lvl do player...

Quero ver fazer uma que cure X% do dano causado....

function onCastSpell(cid)
    local target = getCreatureTarget(cid)
    
    if target < 1 then
        doPlayerSendCancel(cid, "You need a target.")
        return false
    end
    
    local damage = 100 -- Defina aqui o valor do dano que você quer curar, por exemplo, 100 para curar 100% do dano causado.
    local healthToRestore = (damage / 100) * getCreatureDamage(cid, target)
    
    doCreatureAddHealth(cid, healthToRestore)
    doSendAnimatedText(getThingPos(cid), "+" .. healthToRestore, 25)
    
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), 15)
    doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPos(target), 0, -damage, -damage * 0.5, CONST_ME_MAGIC_RED)
    return true
end

nao sei se vai funcionar kkk!

Link para o post
Compartilhar em outros sites
1 hora atrás, GM Vortex disse:

function onCastSpell(cid)
    local target = getCreatureTarget(cid)
    
    if target < 1 then
        doPlayerSendCancel(cid, "You need a target.")
        return false
    end
    
    local damage = 100 -- Defina aqui o valor do dano que você quer curar, por exemplo, 100 para curar 100% do dano causado.
    local healthToRestore = (damage / 100) * getCreatureDamage(cid, target)
    
    doCreatureAddHealth(cid, healthToRestore)
    doSendAnimatedText(getThingPos(cid), "+" .. healthToRestore, 25)
    
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), 15)
    doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPos(target), 0, -damage, -damage * 0.5, CONST_ME_MAGIC_RED)
    return true
end

nao sei se vai funcionar kkk!

 

 

Mano, eu ja consegui, vou lhe enviar como ficou. Mas agora estou quebrando a cabeça pra tentar fazer essa magia em área, por exemplo, exevo gran mas leech, onde os afetados, tanto player como monstros tenham suas vidas roubadas. Porque nesse script só consigo no Target.... Voce tem alguma ideia?
 

Citar

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

function onCastSpell(cid, var)
    local target = getCreatureTarget(cid)
    local first = getCreatureHealth(target)
    if doCombat(cid, combat, var) then
        local second = getCreatureHealth(target)
        local damage = first - second
        if damage > 0 then
            local addhealth = damage * 0.5
            doCreatureAddHealth(cid, addhealth)
            --doSendAnimatedText(getPlayerPosition(cid), "+"..addhealth.."", TEXTCOLOR_GREEN)
            doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
            doSendDistanceShoot(getThingPos(target), getThingPos(cid), 40)
        end
        return true
    end
    return
end
 

 

20120329195100.jpg
Link para o post
Compartilhar em outros sites
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local pos = getCreaturePosition(cid) 
    local targets = getCreaturesInArea(pos, area)

    for _, target in ipairs(targets) do
        if isCreature(target) then
            if isPlayer(target) or isMonster(target) then
                local first = getCreatureHealth(target)
                doSetCreatureTarget(target, cid) 
                if doCombat(target, combat, var) then
                    local second = getCreatureHealth(target)
                    local damage = first - second
                    if damage > 0 then
                        local addhealth = damage * 0.5
                        doCreatureAddHealth(cid, addhealth)
					-- doSendAnimatedText(getPlayerPosition(target), "+"..addhealth.."", TEXTCOLOR_GREEN) -- Você pode enviar um texto animado para cada alvo, se desejar.
                        doSendMagicEffect(getThingPos(target), CONST_ME_MAGIC_GREEN)
                        doSendDistanceShoot(getThingPos(target), getThingPos(cid), 40)
                    end
                end
            end
        end
    end

    return true
end

 

Editado por GM Vortex (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 horas atrás, GM Vortex disse:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local pos = getCreaturePosition(cid) 
    local targets = getCreaturesInArea(pos, area)

    for _, target in ipairs(targets) do
        if isCreature(target) then
            if isPlayer(target) or isMonster(target) then
                local first = getCreatureHealth(target)
                doSetCreatureTarget(target, cid) 
                if doCombat(target, combat, var) then
                    local second = getCreatureHealth(target)
                    local damage = first - second
                    if damage > 0 then
                        local addhealth = damage * 0.5
                        doCreatureAddHealth(cid, addhealth)
					-- doSendAnimatedText(getPlayerPosition(target), "+"..addhealth.."", TEXTCOLOR_GREEN) -- Você pode enviar um texto animado para cada alvo, se desejar.
                        doSendMagicEffect(getThingPos(target), CONST_ME_MAGIC_GREEN)
                        doSendDistanceShoot(getThingPos(target), getThingPos(cid), 40)
                    end
                end
            end
        end
    end

    return true
end

 

[Error - Spell Interface] 

data/spells/scripts/attack/rage of the blood.lua:onCastSpell

Description: 

data/spells/scripts/attack/rage of the blood.lua:12: attempt to call global 'getCreaturesInArea' (a nil value)

stack traceback:

 data/spells/scripts/attack/rage of the blood.lua:12: in function 

              

20120329195100.jpg
Link para o post
Compartilhar em outros sites
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local target = getCreatureTarget(cid)
    if target and (isPlayer(target) or isMonster(target)) then
        local first = getCreatureHealth(target)
        doCreatureSay(cid, "Prepare to be drained!", TALKTYPE_MONSTER)
        doCreatureSay(target, "Uh-oh, I'm getting drained!", TALKTYPE_MONSTER)
        if doCombat(cid, combat, var) == LUA_NO_ERROR then
            local second = getCreatureHealth(target)
            local damage = first - second
            if damage > 0 then
                local addhealth = damage * 0.5
                doCreatureAddHealth(cid, addhealth)
                doSendAnimatedText(getCreaturePosition(target), "+" .. addhealth, TEXTCOLOR_GREEN)
                doSendMagicEffect(getCreaturePosition(target), CONST_ME_MAGIC_GREEN)
                doSendDistanceShoot(getCreaturePosition(target), getCreaturePosition(cid), 40)
            end
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
    end
    return true
end

tenta ai! deve funcionar

Link para o post
Compartilhar em outros sites
1 hora atrás, GM Vortex disse:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local target = getCreatureTarget(cid)
    if target and (isPlayer(target) or isMonster(target)) then
        local first = getCreatureHealth(target)
        doCreatureSay(cid, "Prepare to be drained!", TALKTYPE_MONSTER)
        doCreatureSay(target, "Uh-oh, I'm getting drained!", TALKTYPE_MONSTER)
        if doCombat(cid, combat, var) == LUA_NO_ERROR then
            local second = getCreatureHealth(target)
            local damage = first - second
            if damage > 0 then
                local addhealth = damage * 0.5
                doCreatureAddHealth(cid, addhealth)
                doSendAnimatedText(getCreaturePosition(target), "+" .. addhealth, TEXTCOLOR_GREEN)
                doSendMagicEffect(getCreaturePosition(target), CONST_ME_MAGIC_GREEN)
                doSendDistanceShoot(getCreaturePosition(target), getCreaturePosition(cid), 40)
            end
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
    end
    return true
end

tenta ai! deve funcionar

Funcionou, mas não dá maneira correta. Problemas:

1. Precisa ter target para usar a magia.

2. Suga a vida apenas do target, e não de todos os afetados.

 

O que preciso:

1. Soltar a magia sem a necessidade de estar atacando alguém (target).

2. Sugar a vida de todos atingidos por ela.

 

Será isso possível?

20120329195100.jpg
Link para o post
Compartilhar em outros sites

vamos tentar aqui:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local pos = getCreaturePosition(cid) 
    local creatures = {}  

    for _, target in ipairs(getSpectators(pos, -1, -1, false)) do
        if isCreature(target) and (isPlayer(target) or isMonster(target)) then
            table.insert(creatures, target)  
        end
    end

    if #creatures > 0 then
        doCreatureSay(cid, "Prepare to be drained!", TALKTYPE_MONSTER)
        for _, target in ipairs(creatures) do
            local first = getCreatureHealth(target)
            doCreatureSay(target, "Uh-oh, I'm getting drained!", TALKTYPE_MONSTER)
            if doCombat(cid, combat, var) == LUA_NO_ERROR then
                local second = getCreatureHealth(target)
                local damage = first - second
                if damage > 0 then
                    local addhealth = damage * 0.5
                    doCreatureAddHealth(cid, addhealth)
                    doSendAnimatedText(getCreaturePosition(target), "+" .. addhealth, TEXTCOLOR_GREEN)
                    doSendMagicEffect(getCreaturePosition(target), CONST_ME_MAGIC_GREEN)
                    doSendDistanceShoot(getCreaturePosition(target), pos, 40)
                end
            end
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
    end

    return true
end

 

Link para o post
Compartilhar em outros sites
1 hora atrás, GM Vortex disse:

vamos tentar aqui:


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local pos = getCreaturePosition(cid) 
    local creatures = {}  

    for _, target in ipairs(getSpectators(pos, -1, -1, false)) do
        if isCreature(target) and (isPlayer(target) or isMonster(target)) then
            table.insert(creatures, target)  
        end
    end

    if #creatures > 0 then
        doCreatureSay(cid, "Prepare to be drained!", TALKTYPE_MONSTER)
        for _, target in ipairs(creatures) do
            local first = getCreatureHealth(target)
            doCreatureSay(target, "Uh-oh, I'm getting drained!", TALKTYPE_MONSTER)
            if doCombat(cid, combat, var) == LUA_NO_ERROR then
                local second = getCreatureHealth(target)
                local damage = first - second
                if damage > 0 then
                    local addhealth = damage * 0.5
                    doCreatureAddHealth(cid, addhealth)
                    doSendAnimatedText(getCreaturePosition(target), "+" .. addhealth, TEXTCOLOR_GREEN)
                    doSendMagicEffect(getCreaturePosition(target), CONST_ME_MAGIC_GREEN)
                    doSendDistanceShoot(getCreaturePosition(target), pos, 40)
                end
            end
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
    end

    return true
end

 

 

[Error - Spell Interface] 
data/spells/scripts/attack/rage of the blood.lua:onCastSpell
Description: 
data/spells/scripts/attack/rage of the blood.lua:14: bad argument #1 to 'ipairs' (table expected, got nil)
stack traceback:
	[C]: in function 'ipairs'
	data/spells/scripts/attack/rage of the blood.lua:14: in function 

😪

20120329195100.jpg
Link para o post
Compartilhar em outros sites
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

local area = createCombatArea(AREA_CIRCLE3X3)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    local pos = getCreaturePosition(cid) 
    local creatures = getSpectators(pos, 3, 3, false) 

    if creatures then
        local validTargets = {}  

      
        for _, target in ipairs(creatures) do
            if isCreature(target) and (isPlayer(target) or isMonster(target)) then
                table.insert(validTargets, target)  
            end
        end

        if #validTargets > 0 then
            doCreatureSay(cid, "Prepare to be drained!", TALKTYPE_MONSTER)
            for _, target in ipairs(validTargets) do
                local first = getCreatureHealth(target)
                doCreatureSay(target, "Uh-oh, I'm getting drained!", TALKTYPE_MONSTER)
                if doCombat(cid, combat, var) == LUA_NO_ERROR then
                    local second = getCreatureHealth(target)
                    local damage = first - second
                    if damage > 0 then
                        local addhealth = damage * 0.5
                        doCreatureAddHealth(cid, addhealth)
                        doSendAnimatedText(getCreaturePosition(target), "+" .. addhealth, TEXTCOLOR_GREEN)
                        doSendMagicEffect(getCreaturePosition(target), CONST_ME_MAGIC_GREEN)
                        doSendDistanceShoot(getCreaturePosition(target), pos, 40)
                    end
                end
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nenhum alvo válido encontrado.")
    end

    return true
end

agora sim... Se você não gostou dessa mensagem, pode remover essa linha xD

 

Editado por GM Vortex (veja o histórico de edições)
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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Budrox
      ola! venho apresentar meu protejo e ouvir a opinião de
      vocês estou trabalhando a alguns meses nessas sprites,
      jogariam um protejo assim, penso em fazer o jogo em
      outras engines mas faria mais sentido se fosse um
      protejo online.

    • Por GamerGoiano
      Provavelmente funciona com os outros jogos do quilante, basta substituir a pasta data na pasta do servidor e substituir os arquivos do cliente na pasta otclient/data/things/860
      Eu não tenho créditos sobre o projeto, estou apenas postando aqui porque ja é de dominio público porém em todos os tópicos na internet o projeto está muito desatualizado
      Este aqui está configurado pra por online no pc.
       

      Download: (TFS 04 860 + OTCLIENT "Ultima versão x64", Htdocs "O site" e o Banco de dados Compativel.
      https://www.mediafire.com/file/bmponjci62txbxd/TIBIA+GTA+ARRUMADO.rar/file

      Scan:
      https://www.virustotal.com/gui/file/b6236579ad11201f3c01899a218f6ca8ef8e645cf3881f5de2af46a04837085d?nocache=1
    • Por TestAccount
      Bem vindos a SwampSoldiers, um ot alternativo único de sapos e minhocas! Achou estranho? Eu também, mas comecei a jogar e viciei ?

      Website
      SwampSoldier - Play to earn (https://www.swampsoldiers.com/index)

      Social Media
      Twitter: https://twitter.com/SoldiersSwamp
      Discord: Join the SwampSoldiers | ? Vs ? Discord Server! (https://discord.gg/qc9wfMQ8vK)
      Youtube: https://www.youtube.com/c/SwampSoldiers
      Facebook: SwampSoldier (https://www.facebook.com/profile.php?id=100087871800250)
      Instagram: Swamp Soldiers (@swampsoldiers) • Instagram photos and videos (https://www.instagram.com/swampsoldiers/)

      =================================================================================================
      SwampSoldiers é um jogo blockchain gratuito, onde você é o verdadeiro dono de seus ativos e pode vendê-los facilmente a outros jogadores por dinheiro real.

      Características:
      Músicas de fundo e efeitos de som; Mapa unico e original; 6 diferentes classes e 2 facções; NPCs animados; Spells unicos com som; Mercado p2p; Quests únicas; 0% de perda de exp até o lvl 5; Sistema de crafting; Sistema de casas e ilhas particulares; Sistema de pet e autoloot; World boss; Tower defense mini-game; Battle royale sendo desenvolvido;  

       

       

       

       

       

    • Por MatteusDeli
      Nesse tópico você irá aprender a diferença entre ItemID, ActionID e UniqueID na criação de scripts.
       
      Primeiramente vamos começar com o ItemID, imagine que você está criando um simples script que o player pode ter acesso a uma área VIP, só que para ele entrar, primeiro precisará passar por um tile especial que possui o ID 471, até aqui tudo bem, só que qualquer player do servidor irá ter acesso também, já que não possui nenhuma restrição.
       
      Como poderíamos resolver isso?
       
      É aqui que entra a função da ActionID, com ela podemos dizer que os tiles que tiverem o valor 1000 no atributo ActionID, serão os tiles referentes a área VIP. Agora temos uma maneira de diferenciar os tiles comuns dos que são VIPs, veja como ficaria:
       

      (tiles sem as ActionIDs no valor de 1000)
       
      Repare que os 3 tiles tem apenas o atributo ItemID: [471]. Todos os players poderiam passar sem problemas… Caso você use apenas esse tipo de tile para as suas áreas VIPs então não tem problema, agora se você usa esses mesmos tiles para outras finalidades, então você precisará recorrer a ActionID, para que assim consiga diferenciá-los.
       
      Vamos adicionar as ActionIDs então:
       

      (tiles com as ActionIDs adicionados no valor de 1000)
       
      Pronto, agora apenas esse tiles terão a função de controlar a entrada para a área VIP!
       
      Bom, então você deve estar se perguntando, aonde que o UniqueID entra nessa história?
       
      O UniqueID é parecido com a ActionID com apenas uma diferença. O valor que você define para ele deve ser único para o servidor inteiro, caso ele se repita aparecerá um aviso na sua distro, mais ou menos como este…
       

       
      Repare quantos UniqueIDs duplicados existem, isso é ruim porque quanto mais tiver mais tempo demorará para o servidor iniciar, entre outras coisas como conflitos de scripts.
       
      Concluindo…
       
      O ItemID é usado quando você quer que todos os itens com esse ID façam uma ação, por exemplo a fishing rod, qualquer player pode comprar uma no NPC e começar a pescar.
       
      A ActionID é usado geralmente quando você quer diferenciar os mesmos itens um dos outros. Eu tenho 2 crystal rings só que apenas um deles vai me curar 500 de vida quando usá-lo.
       
      O UniqueID é quando você quer definir um ID único para um determinado item e só terá apenas um dele no servidor, um exemplo seria uma estátua que vai dar ao player um determinado item e só existirá somente uma dela no jogo.
       
      Tentei ser o mais breve e direto sobre esse assunto, espero que tenha ficado claro… Agora é só praticar!
    • Por Cat
      Veja também: • Telhado Venore do Tibia Completo (81 peças)
       

       
      TIBIA - TELHADO CLÁSSICO
       
         Fiz esse pack e decidi compartilhar com a comunidade. Aproveitei e fiz um rework em algumas peças auxiliares como Arcos, Corrimãos. Acompanha também no pack bordas, chaminés e fumaças.
       
         ?
       
      https://discord.gg/Ewu2J3qWhe.
       
       
      CONTEÚDO DO PACK










       

      »telhados_academia_de_mapping.rarspan widgetspan widget
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo