Ir para conteúdo
  • 0

Vantagem e Desvantagem System (Spell - Tibia Normal)


Flaah

Pergunta

Bem sempre rezei a Deus por esse script, já tentei fazer e nada.. foi um fracasso total.. mellow.png

 

Agora estou aqui, humildemente tentando realizar um pequeno mais simbólico sonho, não só meu e sim de todos que querem fazer um belo RPG ou PokeTibia rules.gif

 

warn.gif Bem o script seria assim:

forward.png Seriam 3 Tabelas (Com o nome do elemento e em seguida o nome dos monstros e vocations que receberiam as seguintes alterações dependendo do damage da spell).

 

bookmark.png Dano Duplo (Dobra o dado da spell com X damage)

bookmark.png Metade do Dado (Corta o dado da spell com X damage pela metade)

bookmark.png Dano Nulo (Nula o dado da spell com X damage totalmente)

 

warn.gifExemplo de tabela:

 

[COMBAT_FIREDAMAGE] = {Bulbasaur, Ivysaur, Venusaur},

 

[COMBAT_ENERGYDAMAGE] = {Sorcerer, Druid, Paladin},

 

E assim por diante.

 

star.gif Esse é um pedido MUITO importante, tanto pra quem quer fazer um RPG normal ou um PokeTibia, até mesmo desenvolver um sistema de summon em cima desse script. Resumindo ajudaria MUITA, mais MUITA gente. wink.png

Bem é isso.. Obrigado pela atenção, boa noite hi.gif

Editado por Flaah
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Ops, esqueci de mencionar que o evento também deve ser registrado no arquivo .XML do monstro:

    <script>
        <event name="advantageSystem"/>
    </script>

Também fiz uma alteração no código. Se a cor do dano depender do elemento, use este código:

 local config = {
    combatTable = {
        --[elemento] = {
            --doubleDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},   --Vocações e monstros que tomarão o dobro do dano do elemento.
            --halfDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},       --Vocações e monstros que tomarão metade do dano do elemento.
            --nilDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},      --Vocações e monstros que tomarão dano nulo do elemento.
        --},
        [COMBAT_FIREDAMAGE] = {
            doubleDamage = {"Rat", "Morgaroth", 5},
            halfDamage = {"Orshabaal", 3},
            nilDamage = {},
        },
    },
    colors = {
        --[combat] = cor,
        [COMBAT_FIREDAMAGE] = COLOR_RED,
        --etc,
    },
}
function onStatsChange(cid, attacker, type, combat, value)
    local cTable = config.combatTable[combat]
    if cTable and type == STATSCHANGE_HEALTHLOSS then
        local d, h, n, check, newValue = cTable.doubleDamage, cTable.halfDamage, cTable.nilDamage, isPlayer(cid) and getPlayerVocation(cid) or getCreatureName(cid), 0
        if isInArray(d, check) then
            newValue = math.floor(value * 2)
        elseif isInArray(h, check) then
            newValue = math.floor(value / 2)
        elseif isInArray(n, check) then
            return false
        end
        if newValue ~= 0 then
            doCreatureAddHealth(cid, -newValue)
            doSendAnimatedText(getThingPos(cid), newValue, config.colors[combat] or 215)
            return false
        end
    end
    return true
end
function onLogin(cid)
    registerCreatureEvent(cid, "advantageSystem")
    return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Pô cara.. se alguém fizesse esse sistema.. MAAANO! blush.png

 

Seria incrível! Sério mesmo icon_lolsuper.gif

Se pá teria um lugar garantido no céu ange.gif

E tbm no meu coração love.gif

 

HEHE' Vamos ficar na torcida né angel.gif

Link para o comentário
Compartilhar em outros sites

  • 0


local combatTable = {
--[elemento] = {
--doubleDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão o dobro do dano do elemento.
--halfDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão metade do dano do elemento.
--nilDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão dano nulo do elemento.
--},
[COMBAT_FIREDAMAGE] = {
doubleDamage = {"Rat", "Morgaroth", 5},
halfDamage = {"Orshabaal", 3},
nilDamage = {},
},
}
function onStatsChange(cid, attacker, type, combat, value)
local cTable = combatTable[combat]
if cTable and type == STATSCHANGE_HEALTHLOSS then
local d, h, n, check, newValue = cTable.doubleDamage, cTable.halfDamage, cTable.nilDamage, isPlayer(cid) and getPlayerVocation(cid) or getCreatureName(cid), 0
if isInArray(d, check) then
newValue = math.floor(value * 2)
elseif isInArray(h, check) then
newValue = math.floor(value / 2)
return false
elseif isInArray(n, check) then
return false
end
if newValue ~= 0 then
doCreatureAddHealth(cid, -newValue)
doSendAnimatedText(getThingPos(cid), newValue, 215)
return false
end
end
return true
end
function onLogin(cid)
registerCreatureEvent(cid, "advantageSystem")
return true
end



Tags:

<event type="login" name="advantageLogin" event="script" value="nome_do_arquivo.lua"/>
<event type="statschange" name="advantageSystem" event="script" value="nome_do_arquivo.lua"/>

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Eu havia deixado um exemplo no código:

   [COMBAT_FIREDAMAGE] = {
        doubleDamage = {"Rat", "Morgaroth", 5},
        halfDamage = {"Orshabaal", 3},
        nilDamage = {},
    },
Esses "Rat", "Morgaroth" e "Orshabaal" seriam o "nome_do_monstro". Já 5 e 3, vocation_id. A ordem em que os elementos são colocados não afeta em nada na funcionalidade do sistema.
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Nenhum erro, só troquei o nome do Rat para Treino. Coloquei o script no creature (Correto?) e registrei no meu login.lua (Mais depois vi que ja vem registrado no próprio script, então retirei o registro no meu login.lua, mesmo assim n pegou) :c

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade se tem que adaptar essa funçao dentro do seu exp.lua., e outra se se usa servidor de pokemon sei la mais e mais básico pegar os parâmetros de defesa attack do pokemon etc...

Link para o comentário
Compartilhar em outros sites

  • 0

Como disse esse pedido de sistema é pra otserver de tibia comum ou poketibia começado do zero, sem nenhuma base ou derivado (PDA ou PD).

Editado por Flaah
Link para o comentário
Compartilhar em outros sites

  • 0

Quase perfeito, só que o sistema não hita o monstro. worriedsmiley.gif

 

A script só faz:

button_ok.png Aparece a cor do HIT

button_ok.png Dobrar o hit da spell, cortar pela metade o hit da spell e nula o hit da spell.

 

PS: Já registrei no .xml do monstro. positive.gif

Editado por Flaah
Link para o comentário
Compartilhar em outros sites

  • 0

Estranho, aqui funcionou perfeitamente o.O

Mas enfim, fiz uma edição em ambos os códigos que enviei anteriormente para tentar corrigir seu erro. Peço que teste o que mais lhe agrada e informe o resultado.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... sem palavras!
VC É S-E-N-S-A-C-I-O-N-A-L! button_ok.png LIKE button_ok.png

Sabe o que eu disse antes sobre um local especial no céu?! Meus parabéns vc ganhou kkk' angel.gif

buddy_christ.jpg

Obrigado por tudo cara, vc é 10! cry.gif
Muuuito obrigado mesmo, TE AMO wub.png

Obs Básico: Sabe aonde coloca o numero da vocation? Edita lá porq aqui pegou com " " entre os números positive.gif

Vlw amigo e pessoal do XTibia, bjks e podem finalizar o tópico smile_positivo.gif

Editado por Flaah
Link para o comentário
Compartilhar em outros sites

  • 0

 

local combatTable = {
    --[elemento] = {
        --doubleDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},   --Vocações e monstros que tomarão o dobro do dano do elemento.
        --halfDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},       --Vocações e monstros que tomarão metade do dano do elemento.
        --nilDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc},      --Vocações e monstros que tomarão dano nulo do elemento.
    --},
    [COMBAT_FIREDAMAGE] = {
        doubleDamage = {"Rat", "Morgaroth", 5},
        halfDamage = {"Orshabaal", 3},
        nilDamage = {},
    },
}
function onStatsChange(cid, attacker, type, combat, value)
    local cTable = combatTable[combat]
    if cTable and type == STATSCHANGE_HEALTHLOSS then
        local d, h, n, check, newValue = cTable.doubleDamage, cTable.halfDamage, cTable.nilDamage, isPlayer(cid) and getPlayerVocation(cid) or getCreatureName(cid), 0
        if isInArray(d, check) then
            newValue = math.floor(value * 2)
        elseif isInArray(h, check) then
            newValue = math.floor(value / 2)
            return false
        elseif isInArray(n, check) then
            return false
        end
        if newValue ~= 0 then
            doCreatureAddHealth(cid, -newValue)
            doSendAnimatedText(getThingPos(cid), newValue, 215)
            return false
        end
    end
    return true
end
function onLogin(cid)
    registerCreatureEvent(cid, "advantageSystem")
    return true
end
Tags:
<event type="login" name="advantageLogin" event="script" value="nome_do_arquivo.lua"/>
<event type="statschange" name="advantageSystem" event="script" value="nome_do_arquivo.lua"/>

 

amigo, seria muito dificil converter esse script pra tfs 1.2 ? achei bem interessante, gostaria de fazer uns testes :D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...