Ir para conteúdo
  • Cadastre-se

Posts Recomendados

      Primeira Spell:

 

É uma spell de buff, que consiste em aumentar o HP (em 30%) e o MP (em 20%) no caster.

 

     Problema: Se a spell é utilizada novamente, o player perde o HP e MP se estiver full HP/MP.

 

Por exemplo: Um char com 100 de HPmax e 100 de MPmax usa essa spell, fica com 130 de HPmax e 120 de MPmax (Enquanto a vida e mana atuais, logo após usar a spell permanecem ambas em 100) Porém se esse jogador encher o HP e MP para 130 e 120 e reutilizar a spell, seu HP e MP atuais, voltam a 100, enquanto seus valores máximos continuam em 130 e 120.

 

Script: 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_RED)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 1800000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 130)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANAPERCENT, 120)

setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

      Segunda Spell:

É uma spell de regen e dispel, que recupera HP e MP por segundo além de tirar alguns efeitos negativos.

 

     Problema: São valores fixos que determinam a quantidade de HP e MP recuperados por segundo, e queria que esses valores fossem variáveis, baseados no magiclevel do caster.

 

Script:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_FIRE)

local combat_2 = createCombatObject()
setCombatParam(combat_2, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat_2, COMBAT_PARAM_DISPEL, CONDITION_POISON)

local combat_3 = createCombatObject()
setCombatParam(combat_3, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat_3, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

local combat_4 = createCombatObject()
setCombatParam(combat_4, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat_4, COMBAT_PARAM_DISPEL, CONDITION_ENERGY)

local combat_5 = createCombatObject()
setCombatParam(combat_5, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat_5, COMBAT_PARAM_DISPEL, CONDITION_CURSE)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 6000)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, 15)
setConditionParam(condition, CONDITION_PARAM_MANA, 1000)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 6000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 10)
setConditionParam(condition, CONDITION_PARAM_HEALTH, 1000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
doCombat(cid,combat_2,var)
doCombat(cid,combat_3,var)
doCombat(cid,combat_4,var)
doCombat(cid,combat_5,var)
return doCombat(cid,combat,var)
end

 

Editado por Hoad (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
           case STAT_MAXHITPOINTS:
                stats[i] = static_cast<int32_t>(player->getMaxHealth() * ((statsPercent[i] - 100) / 100.f));
                break;

            case STAT_MAXMANAPOINTS:
                stats[i] = static_cast<int32_t>(player->getMaxMana() * ((statsPercent[i] - 100) / 100.f));
                break;
    for (int32_t i = STAT_FIRST; i <= STAT_LAST; ++i) {
        if (stats[i]) {
            needUpdateStats = true;
            player->setVarStats((stats_t)i, stats[i]);
        }
    }

    if (needUpdateStats) {
        player->sendStats();
    }
        case STAT_MAXHITPOINTS: {
            if (getHealth() > getMaxHealth()) {
                Creature::changeHealth(getMaxHealth() - getHealth());
            } else {
                g_game.addCreatureHealth(this);
            }
            break;
        }

        case STAT_MAXMANAPOINTS: {
            if (getMana() > getMaxMana()) {
                Creature::changeMana(getMaxMana() - getMana());
            }
            break;
        }

O que acontece no seu script, em ordem cronológica, são esses códigos. Como pode ver em:

            if (getHealth() > getMaxHealth()) {
                Creature::changeHealth(getMaxHealth() - getHealth());
            }

Toda vez que você muda o max health, ele checa se seu health atualmente é maior que seu max health.

Por exemplo, você tem 100/100 de hp, usa a spell fica com 100/130.

Se você usar a spell de novo, agora 130/130, ele vai ver:

 

130 > 100?

Sim, muda health em (100 - 130); //-30

 

Então você volta a ter 100 de hp com 130 de max hp.

"Por que não sobrepõe um em cima do outro? Por exemplo, uso uma vez 100/130, e outra vez e fico 100/169."

Porquê esse buff é aplicado a seu max health real (100) e não seu max health aparente (130).

 

------------

Sobre sua segunda dúvida. Sim, dá para fazer isso. Pelo menos no TFS 1.0~1.1, basta você setar a condição dentro de onCastSpell.

 

Exemplo:

 

[..]
function onCastSpell(cid, var)
   [...]
    setConditionParam(condition, CONDITION_PARAM_MANAGAIN, getPlayerLevel(cid))
   setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, getPlayerLevel(cid))
   [...]
end

 

[...] representa todo seu código, excluindo as duas linhas que foram movidas para onCastSpell.

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

Elwyn, primeiramente muito obrigado por me responder e explicar.

 

Sobre a primeira resposta, tive dificuldade para entender os 3 primeiros códigos, porem entendi o quarto e pelo que foi dito, entendi que para que o buff nao funcione exponencialmente, tem que acontecer isso.

 

E sobre a segunda, eu fiz isso, e a skill resolveu não regenarar nada ASOSOAOSAK mas é pq meu tfs é mais antigo :x

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 ILex WilL
      Olá, Alguém poderia me ajudar com uns Scripts? nem que seja cobrando, dependendo eu pago para me ajudar...
    • Por Kill of sumoners
      Boa noite, estou com um erro ao atacar um player em meu sv eu nao pego pk, nem sai magia, aparece a mensagem "voce so pode usar isso em criaturas"
      obs: magia em area acerta e pega pk, apenas as targets ou hits de arma nao vao 
    • Por Jpminatel
      Estou com os seguintes erros ; e procuro quem poça ajudar ai a eliminar esses 3 erros , erro 1 e 2 acontece qnd um pokemon usa ps   e o erro 3 é nas potions 
      [Error - TalkAction Interface] 
      [30/01/2022 17:04:25] data/talkactions/scripts/move1.lua:onSay
      [30/01/2022 17:04:25] Description: 
      [30/01/2022 17:04:25] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 17:04:25] stack traceback:
      [30/01/2022 17:04:25]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      Erro 2 ;
      [30/01/2022 18:08:53] [Error - Spell Interface] 
      [30/01/2022 18:08:53] In a timer event called from: 
      [30/01/2022 18:08:53] data/spells/scripts/ps/Earthquake.lua:onCastSpell
      [30/01/2022 18:08:53] Description: 
      [30/01/2022 18:08:53] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 18:08:53] stack traceback:
      [30/01/2022 18:08:53]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      [30/01/2022 18:08:53]     data/lib/newStatusSyst.lua:844: in function 'doMoveInArea2'
      [30/01/2022 18:08:53]     data/lib/pokemon moves.lua:1355: in function <data/lib/pokemon moves.lua:1351>
      [30/01/2022 18:08:54] [Error - Spell Interface] 
      [30/01/2022 18:08:54] In a timer event called from: 
      [30/01/2022 18:08:54] data/spells/scripts/ps/Earthquake.lua:onCastSpell
      [30/01/2022 18:08:54] Description: 
      [30/01/2022 18:08:54] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 18:08:54] stack traceback:
      [30/01/2022 18:08:54]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      [30/01/2022 18:08:54]     data/lib/newStatusSyst.lua:844: in function 'doMoveInArea2'
      [30/01/2022 18:08:54]     data/lib/pokemon moves.lua:1355: in function <data/lib/pokemon moves.lua:1351>
      [30/01/2022 18:18:20] [Error - TalkAction Interface] 
      [30/01/2022 18:18:20] data/talkactions/scripts/move1.lua:onSay
      [30/01/2022 18:18:20] Description: 
      [30/01/2022 18:18:20] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 18:18:20] stack traceback:
      [30/01/2022 18:18:20]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      [30/01/2022 18:18:20]     data/lib/newStatusSyst.lua:1119: in function 'doMoveInAreaMulti'
      [30/01/2022 18:18:20]     data/lib/pokemon moves.lua:458: in function 'docastspell'
      [30/01/2022 18:18:20]     data/talkactions/scripts/move1.lua:173: in function <data/talkactions/scripts/move1.lua:20>
      Erro 3 ; 
      erro potion 
      [30/01/2022 18:48:35] [Error - Action Interface] 
      [30/01/2022 18:48:35] data/actions/scripts/potion.lua:onUse
      [30/01/2022 18:48:35] Description: 
      [30/01/2022 18:48:35] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 18:48:35] stack traceback:
      [30/01/2022 18:48:35]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      [30/01/2022 18:48:35]     data/actions/scripts/potion.lua:45: in function <data/actions/scripts/potion.lua:43>
      [30/01/2022 18:48:39] [Error - Action Interface] 
      [30/01/2022 18:48:39] data/actions/scripts/potion.lua:onUse
      [30/01/2022 18:48:39] Description: 
      [30/01/2022 18:48:39] data/lib/some functions.lua:338: attempt to call global 'hasTile' (a nil value)
      [30/01/2022 18:48:39] stack traceback:
      [30/01/2022 18:48:39]     data/lib/some functions.lua:338: in function 'getThingFromPosWithProtect'
      [30/01/2022 18:48:39]     data/actions/scripts/potion.lua:45: in function <data/actions/scripts/potion.lua:43>
       
    • Por Barca Furada
      Boa noite meus caros colegas!
      Preciso de um Help!
       
       
      Quando eu coloco meu itens editados no meu xml e otb, acontece isso com os teleportes, perde todas as propriedades:
       
      No lado direito é sem meu Itemxml
      No lado Esquerdo é com meu Itemxml
       
      Como vcs pode vem ele perde a propriedade de destino!
       
      O arquivo Check File Signatures está desativados!
       
      Quando eu entro no REM com meu Itemxml, ele da essas mensagem de erro:
       
       
       
      Antes de fazer tudo isso eu No item editor, todos itens estava com essa borda vermelha, eu tinha dado reload em todos itens para o cliente OTCv8 conseguir visualizar, no primeiro momento achei que era isso que tinha acontecido para bugar meus teleportes, então eu dei reload em todos itens um por um e deixei o teleport sem dar reload, para ver se era esses o bug! e deu na mesma , quando edito o mapa para colocar novas hunt e cidade ele buga todos teleportes!
       
       
       
       
      No itemxml o teleport está com mesmo id!
       
      alguma alma bondosa para ajudar um colega?
    • Por mishell147
      Então Pessoal o meu site ele da esse error  do video, quando clico em creater character mais se eu clicar no endereço da URL e apertar enter aí me redireciona para página, mais se eu atualizar com F5 não redireciona, E na Database tem certinho os char samples, e tanto que cria normalmente eles.
      20210303_213835.mp4
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo