Ir para conteúdo

Featured Replies

Postado

TFS 0.4
combat.cpp

procure esta linha.

bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)

Basta substituir todo o código aqui.

bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
    int32_t change = 0;
    if (Combat2Var* var = (Combat2Var*)data)
    {
        change = var->change;
        if (!change)
            change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
    }

    if (g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor))
        return false;

    if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
        change = change / 2;

    
    std::string value;
    caster->getStorage("14335", value);
    int32_t plus = (int32_t)(atoi(value.c_str()));
    double resetpower = plus * 2.5;

    if (plus > 0 && params.combatType != COMBAT_HEALING) {
        double changeModifier = 1.0 + (resetpower / 100.0);
        change = (int32_t)std::ceil(change * changeModifier);
    }

    if (!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color))
        return false;

    CombatConditionFunc(caster, target, params, NULL);
    CombatDispelFunc(caster, target, params, NULL);
    return true;
}

mais uma vez procure essa linha.

bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)

Basta substituir todo o código aqui.

bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
    int32_t change = 0;
    if (Combat2Var* var = (Combat2Var*)data)
    {
        change = var->change;
        if (!change)
            change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
    }

    if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
        change = change / 2;

 
    std::string value;
    caster->getStorage("14335", value);
    int32_t plus = (int32_t)(atoi(value.c_str()));
    double resetpower = plus * 2.5;

    if (plus > 0 && params.combatType != COMBAT_HEALING) {
        double changeModifier = 1.0 + (resetpower / 100.0);
        change = (int32_t)std::ceil(change * changeModifier);
    }

    if (!g_game.combatChangeMana(caster, target, change))
        return false;

    CombatConditionFunc(caster, target, params, NULL);
    CombatDispelFunc(caster, target, params, NULL);
    return true;
}

Fiz também para TFS 0.4. Ambos têm códigos diferentes na source, mas estão funcionando normalmente.

Editado por GM Vortex (veja o histórico de edições)

  • 2 months later...
  • Respostas 25
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Mateus Robeerto
    Mateus Robeerto

    Tive que pesquisar um pouco e encontrei uma solução que deve funcionar para você, pois utiliza SQLite. Será necessário fazer algumas alterações em sua source e no SQLite. Depois, você pode adicionar o

  • Mateus Robeerto
    Mateus Robeerto

    Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples.

  • Mateus Robeerto
    Mateus Robeerto

    Há um bom tempo atrás, baixei este servidor Baiak. Peguei esses sistemas e adicionei o meu próprio mapa custom, que não é Baiak nem Global. Testei e estava funcionando bem. Depois, descobri que saiu a

Postado
  Em 07/09/2023 em 11:49, GM Vortex disse:

TFS 0.4
combat.cpp

procure esta linha.


bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)

Basta substituir todo o código aqui.


bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
    int32_t change = 0;
    if (Combat2Var* var = (Combat2Var*)data)
    {
        change = var->change;
        if (!change)
            change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
    }

    if (g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor))
        return false;

    if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
        change = change / 2;

    
    std::string value;
    caster->getStorage("14335", value);
    int32_t plus = (int32_t)(atoi(value.c_str()));
    double resetpower = plus * 2.5;

    if (plus > 0 && params.combatType != COMBAT_HEALING) {
        double changeModifier = 1.0 + (resetpower / 100.0);
        change = (int32_t)std::ceil(change * changeModifier);
    }

    if (!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color))
        return false;

    CombatConditionFunc(caster, target, params, NULL);
    CombatDispelFunc(caster, target, params, NULL);
    return true;
}

mais uma vez procure essa linha.


bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)

Basta substituir todo o código aqui.


bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
    int32_t change = 0;
    if (Combat2Var* var = (Combat2Var*)data)
    {
        change = var->change;
        if (!change)
            change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
    }

    if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
        change = change / 2;

 
    std::string value;
    caster->getStorage("14335", value);
    int32_t plus = (int32_t)(atoi(value.c_str()));
    double resetpower = plus * 2.5;

    if (plus > 0 && params.combatType != COMBAT_HEALING) {
        double changeModifier = 1.0 + (resetpower / 100.0);
        change = (int32_t)std::ceil(change * changeModifier);
    }

    if (!g_game.combatChangeMana(caster, target, change))
        return false;

    CombatConditionFunc(caster, target, params, NULL);
    CombatDispelFunc(caster, target, params, NULL);
    return true;
}

Fiz também para TFS 0.4. Ambos têm códigos diferentes na source, mas estão funcionando normalmente.

@GM Vortex obrigado pela contribuiçao.
Como faço pra aparecer no script do npc o tanto de damage o perssonagem tem ?

Postado
  Em 28/11/2023 em 16:23, Doidodepeda disse:

@GM Vortex obrigado pela contribuiçao.
Como faço pra aparecer no script do npc o tanto de damage o perssonagem tem ?

Você quer que o NPC exiba quanto de dano você tem por reset, correto?

  Em 29/11/2023 em 10:40, GM Vortex disse:

Você quer que o NPC exiba quanto de dano você tem por reset, correto?

entao, procura essa linha .

 

 elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
        talkState[talkUser] = 0
    end

e substitua tudo.

 elseif msgcontains(msg, 'quantity') then
        selfSay('Voce possui um total de ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    elseif msgcontains(msg, 'damage') then
        local resets = getPlayerStorageValue(cid, 14335) or 0
        local damage = resets * 2.5 -- Calcula o damage por reset

        selfSay('Seu damage por reset atual e: ' .. damage, cid) -- Exibe o damage por reset ao jogador
        talkState[talkUser] = 0
    end

experimentar...

Editado por GM Vortex (veja o histórico de edições)

Postado
  Em 29/11/2023 em 10:40, GM Vortex disse:

Você quer que o NPC exiba quanto de dano você tem por reset, correto?

entao, procura essa linha .

 


 elseif msgcontains(msg, 'quantity') then
        selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
        talkState[talkUser] = 0
    end

e substitua tudo.


 elseif msgcontains(msg, 'quantity') then
        selfSay('Voce possui um total de ' .. getResets(cid) .. ' reset(s).', cid)
        talkState[talkUser] = 0
    elseif msgcontains(msg, 'damage') then
        local resets = getPlayerStorageValue(cid, 14335) or 0
        local damage = resets * 2.5 -- Calcula o damage por reset

        selfSay('Seu damage por reset atual e: ' .. damage, cid) -- Exibe o damage por reset ao jogador
        talkState[talkUser] = 0
    end

experimentar...

Isso mesmo, muito obrigado. Funcionou !
caso eu queria usar esse codigo para ve quanto de damage ele tem em outro lugar é so essa parte ne ?
 

  Citar

elseif msgcontains(msg, 'damage') then
        local resets = getPlayerStorageValue(cid, 14335) or 0
        local damage = resets * 2.5 -- Calcula o damage por reset

        selfSay('Seu damage por reset atual e: ' .. damage, cid) -- Exibe o damage por reset ao jogador
        talkState[talkUser] = 0
    end

 

Postado
  Em 29/11/2023 em 16:40, Doidodepeda disse:

Isso mesmo, muito obrigado. Funcionou !
caso eu queria usar esse codigo para ve quanto de damage ele tem em outro lugar é so essa parte ne ?
 

 

pode sim

 

Você pode utilizar essa seção 'storage'

 local resets = getPlayerStorageValue(cid, 14335) or 0
 local damage = resets * 2.5 -- Calcula o damage por reset

Editado por GM Vortex (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo