Postado Setembro 7, 2023 1 ano 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 Setembro 7, 2023 1 ano por GM Vortex (veja o histórico de edições)
Postado Novembro 28, 2023 1 ano 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 Novembro 29, 2023 1 ano 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 Novembro 29, 2023 1 ano por GM Vortex (veja o histórico de edições)
Postado Novembro 29, 2023 1 ano 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 Novembro 29, 2023 1 ano 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 Novembro 29, 2023 1 ano 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.