Ir para conteúdo
  • Cadastre-se

(Resolvido)System DAMAGE


Ir para solução Resolvido por Mateus Robeerto,

Posts Recomendados

@GM Vortex Faz um tempo q tava atras de um script de damage para meu ot, publiquei aqui e em outros foruns, porem sem sucesso. Esses dias voce me ajudou com o script de reset, onde davaa bonus de damage ao resetar, e estava aq pensando. Da pra aproveitar uma parte do system de reset para faze um ''systema de damage''??
Como voce ja sabe como mecher e creio onde mecher sera que dava pra voce da essa força porfavor ?

Eu tava pensando aquo sea q da pa gente aproveitaria essa parte do script na sourcer e um script de action para da atributo do damage.

Script e esse aqui:
 

Citar

 


oq eu acho q dava pra aproveitar essa parte aqui:
 

Citar

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);
    }


Entao... jogar essa parte na soucer e fazer uma action onde o player clicar no item ele ganharia o bonus de damage !

Mano, da essa força pofavor ?
eu creio q voce pode fazer, pq vc ja tem as manhas !

Se puder ajudar.... ♥

 

Link para o post
Compartilhar em outros sites
local config = {
    effectonuse = 14,    
    levelsdamage = 100,    
    storagedamage = 14335 
}

function onUse(cid, item, frompos, item2, topos)
    local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0
    
    if currentDamage < config.levelsdamage then
        local newDamage = currentDamage + 1
        
        doRemoveItem(item.uid, 1)
        doSendMagicEffect(topos, config.effectonuse)
        
        setPlayerStorageValue(cid, config.storagedamage, newDamage)
        
       
        local message = string.format("Seu dano foi aumentado para [%d/100].", newDamage)
        doPlayerSendTextMessage(cid, 22, message)
    else
        
        doPlayerSendTextMessage(cid, 22, "Você já atingiu o nível máximo de dano.\nParabéns!!!!")
        return false
    end
    
    return true
end

Recomendo que você coloque o dano por reset na source com valor de 1.0 ou 1.5 no máximo. Se for 2.0 ou mais, o dano alto é muito exagerado. Por isso, recomendo um valor menor, entre 1.0 e 1.5. Seria legal ter o dano por cada reset ou item ao clicar, por exemplo, 1/100 de evolução.

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

local config = {
    effectonuse = 14,    
    levelsdamage = 100,    
    storagedamage = 14335 
}

function onUse(cid, item, frompos, item2, topos)
    local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0
    
    if currentDamage < config.levelsdamage then
        local newDamage = currentDamage + 1
        
        doRemoveItem(item.uid, 1)
        doSendMagicEffect(topos, config.effectonuse)
        
        setPlayerStorageValue(cid, config.storagedamage, newDamage)
        
       
        local message = string.format("Seu dano foi aumentado para [%d/100].", newDamage)
        doPlayerSendTextMessage(cid, 22, message)
    else
        
        doPlayerSendTextMessage(cid, 22, "Você já atingiu o nível máximo de dano.\nParabéns!!!!")
        return false
    end
    
    return true
end

Recomendo que você coloque o dano por reset na source com valor de 1.0 ou 1.5 no máximo. Se for 2.0 ou mais, o dano alto é muito exagerado. Por isso, recomendo um valor menor, entre 1.0 e 1.5. Seria legal ter o dano por cada reset ou item ao clicar, por exemplo, 1/100 de evolução.

esse código esta completo, ou tem que adicionar algo na Source?

Link para o post
Compartilhar em outros sites
3 horas atrás, leozincorsair disse:

esse código esta completo, ou tem que adicionar algo na Source?

Ele fez esse script baseado no systema de reset, q tem codigo adicionado na source!

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

Ele fez esse script baseado no systema de reset, q tem codigo adicionado na source!

poderia me passar os codigo na source mano, fiquei interesado 

Link para o post
Compartilhar em outros sites
58 minutos atrás, leozincorsair disse:

poderia me passar os codigo na source mano, fiquei interesado 

Citar

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;
}

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;
}

 

Link para o post
Compartilhar em outros sites
Em 30/11/2023 em 14:34, Doidodepeda disse:

@GM Vortex Faz um tempo q tava atras de um script de damage para meu ot, publiquei aqui e em outros foruns, porem sem sucesso. Esses dias voce me ajudou com o script de reset, onde davaa bonus de damage ao resetar, e estava aq pensando. Da pra aproveitar uma parte do system de reset para faze um ''systema de damage''??
Como voce ja sabe como mecher e creio onde mecher sera que dava pra voce da essa força porfavor ?

Eu tava pensando aquo sea q da pa gente aproveitaria essa parte do script na sourcer e um script de action para da atributo do damage.

Script e esse aqui:
 


oq eu acho q dava pra aproveitar essa parte aqui:
 


Entao... jogar essa parte na soucer e fazer uma action onde o player clicar no item ele ganharia o bonus de damage !

Mano, da essa força pofavor ?
eu creio q voce pode fazer, pq vc ja tem as manhas !

Se puder ajudar.... ♥

 

@leozincorsairTem um link aqui. Basta clicar e abrirá em outro navegador. Há dois tipos: OTX ou TFS. Não sei qual você usa como base, então dê uma olhada aqui :)

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

@leozincorsairTem um link aqui. Basta clicar e abrirá em outro navegador. Há dois tipos: OTX ou TFS. Não sei qual você usa como base, então dê uma olhada aqui :)

nao to achando amigo, poderia me enviar por favor!

Link para o post
Compartilhar em outros sites
Em 30/11/2023 em 15:45, GM Vortex disse:

local config = {
    effectonuse = 14,    
    levelsdamage = 100,    
    storagedamage = 14335 
}

function onUse(cid, item, frompos, item2, topos)
    local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0
    
    if currentDamage < config.levelsdamage then
        local newDamage = currentDamage + 1
        
        doRemoveItem(item.uid, 1)
        doSendMagicEffect(topos, config.effectonuse)
        
        setPlayerStorageValue(cid, config.storagedamage, newDamage)
        
       
        local message = string.format("Seu dano foi aumentado para [%d/100].", newDamage)
        doPlayerSendTextMessage(cid, 22, message)
    else
        
        doPlayerSendTextMessage(cid, 22, "Você já atingiu o nível máximo de dano.\nParabéns!!!!")
        return false
    end
    
    return true
end

Recomendo que você coloque o dano por reset na source com valor de 1.0 ou 1.5 no máximo. Se for 2.0 ou mais, o dano alto é muito exagerado. Por isso, recomendo um valor menor, entre 1.0 e 1.5. Seria legal ter o dano por cada reset ou item ao clicar, por exemplo, 1/100 de evolução.

Show, funcionouuu.
poderia essa essa parte aqui para aparecer no script pf. Para aparecer quanto de damage o player tem ao usar cada pedra.

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 atual e: ' .. damage, cid) -- Exibe o damage por reset ao jogador
        talkState[talkUser] = 0
    end

 

Link para o post
Compartilhar em outros sites
  • Solução
local config = {
    effectonuse = 14,
    levelsdamage = 100,
    storagedamage = 14335
}

function onUse(cid, item, frompos, item2, topos)
    local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0
    
    if currentDamage < config.levelsdamage then
        local newDamage = currentDamage + 1
        
        doRemoveItem(item.uid, 1)
        doSendMagicEffect(topos, config.effectonuse)
        
        setPlayerStorageValue(cid, config.storagedamage, newDamage)
        
        local message = string.format("Seu damage foi aumentado para [%d/100].", newDamage)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, message)
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já atingiu o nível máximo de damage.\nParabéns!!!!")
        return false
    end
   
    local damage = getPlayerStorageValue(cid, config.storagedamage) or 0
    local calculatedDamage = damage * 2.5 -- Fórmula para calcular o damage baseado no valor storage.

    local finalMessage = string.format('Seu damage atual é: %d', calculatedDamage)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, finalMessage)
    
    return true
end

Se o tópico estiver resolvido, por favor, marque como resolvido e crie outro tópico para suas dúvidas/ajuda, etc. Isso ajuda a evitar scams, já que muitos usuários estão procurando pelo sistema necessário. Pode ficar confuso aqui. É melhor marcar como resolvido e criar outro tópico apenas para suas dúvidas.

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


local config = {
    effectonuse = 14,
    levelsdamage = 100,
    storagedamage = 14335
}

function onUse(cid, item, frompos, item2, topos)
    local currentDamage = getPlayerStorageValue(cid, config.storagedamage) or 0
    
    if currentDamage < config.levelsdamage then
        local newDamage = currentDamage + 1
        
        doRemoveItem(item.uid, 1)
        doSendMagicEffect(topos, config.effectonuse)
        
        setPlayerStorageValue(cid, config.storagedamage, newDamage)
        
        local message = string.format("Seu damage foi aumentado para [%d/100].", newDamage)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, message)
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já atingiu o nível máximo de damage.\nParabéns!!!!")
        return false
    end
   
    local damage = getPlayerStorageValue(cid, config.storagedamage) or 0
    local calculatedDamage = damage * 2.5 -- Fórmula para calcular o damage baseado no valor storage.

    local finalMessage = string.format('Seu damage atual é: %d', calculatedDamage)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, finalMessage)
    
    return true
end

Se o tópico estiver resolvido, por favor, marque como resolvido e crie outro tópico para suas dúvidas/ajuda, etc. Isso ajuda a evitar scams, já que muitos usuários estão procurando pelo sistema necessário. Pode ficar confuso aqui. É melhor marcar como resolvido e criar outro tópico apenas para suas dúvidas.

Ah, ta certo !
Obrigado pela informação e pela ajuda !

Editado por Doidodepeda (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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo