Ir para conteúdo

braianlomas

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    braianlomas deu reputação a L3K0T em Error em Client tfs 0.3.6   
    segue o tutorial
     
     
  2. Gostei
    braianlomas deu reputação a GamerGoiano em [OTX2 8.6] NTO BATTLE (NOVIDADE) ATUALIZADO   
    Esse servidor usa varios recursos aleatórios aqui do forum, módulo healthbar do gengo e varios outros 
    Só editou o visual do servidor
    Não recomendo usar como base pois pode ter comandos de dar GOD/GM e Items na source
    Mas parabéns pelo trabalho!
  3. Curtir
    braianlomas recebeu reputação de testotface em BASE PARA NARUTIBIA 2022   
    http://www.mediafire.com/file/clur37okpu61g1k/NTO_Ultra_War_Base.rar/file
  4. Obrigado
    braianlomas deu reputação a Witchmaker em [DOAÇÃO] Algumas sprites atualizadas para NTO   
    Olá galera do TK, tudo bem? Então, hoje venho trazer um Mini Pack de Sprites para a galera que mexe com derivado de Naruto. 
    Essas sprites estão circulando por ai há algum tempo e alguns mau caráteres estão aproveitando para vendê-las para desavisados (como de costume). 
    É isso, galera, em breve posto mais conteúdo.
     
    Scan:
    https://www.virustotal.com/gui/file/e53c83c236e32cdf5109b072de6cdb21997a193ab346910a4280b0671f402067
     
    Download:
    Outfits e Efeitos.rar
     
     
     
  5. Gostei
    braianlomas recebeu reputação de diarmaint em Pedido skill Critical System Tfs 0.3.6   
    @diarmaint 
    Silnik_DBKO_8.00_+_sources.rar
  6. Obrigado
    braianlomas deu reputação a ayato96 em Skill Fishing to Energy Defence Skill TFS 0.3.6   
    bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target, int32_t healthChange, MagicEffect_t hitEffect/* = MAGIC_EFFECT_UNKNOWN*/, TextColor_t hitColor/* = TEXTCOLOR_UNKNOWN*/, bool force/* = false*/) { const Position& targetPos = target->getPosition(); if(healthChange > 0) { if(!force && target->getHealth() <= 0) return false; bool deny = false; CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE); for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it) { if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHGAIN, combatType, healthChange)) deny = true; } if(deny) return false; target->gainHealth(attacker, healthChange); if(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE) && !target->isGhost() && (g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE_MONSTER) || !target->getMonster())) { char buffer[20]; sprintf(buffer, "+%d", healthChange); const SpectatorVec& list = getSpectators(targetPos); if(combatType != COMBAT_HEALING) addMagicEffect(list, targetPos, MAGIC_EFFECT_WRAPS_BLUE); addAnimatedText(list, targetPos, g_config.getNumber(ConfigManager::HEALTH_HEALING_COLOR), buffer); } } else { const SpectatorVec& list = getSpectators(targetPos); if(!target->isAttackable() || Combat::canDoCombat(attacker, target) != RET_NOERROR) { addMagicEffect(list, targetPos, MAGIC_EFFECT_POFF); return true; } int32_t damage = -healthChange; if(damage != 0) { if(!combatType == COMBAT_PHYSICALDAMAGE && target && target->getPlayer())             {                 double damageChange = 0;                 int32_t skillFish = target->getPlayer()->getSkill(SKILL_FISH, SKILL_LEVEL);                                  if(skillFish >= 10)                     damageChange = std::ceil(skillFish * 0.1 * damage / 100);                 if((int32_t)damageChange != 0)                 {                     damage -= (int32_t)damageChange;                      char buffer[150];                      sprintf(buffer, "%d hitpoint%s has been absorbed by your resistance.", (int32_t)damageChange, ((int32_t)damageChange == 1 ? "" : "s"));                      target->getPlayer()->addSkillAdvance(SKILL_FISH, 1, true);                     target->getPlayer()->sendTextMessage(MSG_EVENT_DEFAULT, buffer);                  }              } if(target->hasCondition(CONDITION_MANASHIELD) && combatType != COMBAT_UNDEFINEDDAMAGE) { int32_t manaDamage = std::min(target->getMana(), damage); damage = std::max((int32_t)0, damage - manaDamage); if(manaDamage != 0) { bool deny = false; CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE); for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it) { if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_MANALOSS, combatType, manaDamage)) deny = true; } if(deny) return false; target->drainMana(attacker, combatType, manaDamage); char buffer[20]; sprintf(buffer, "%d", manaDamage); addMagicEffect(list, targetPos, MAGIC_EFFECT_LOSE_ENERGY); addAnimatedText(list, targetPos, TEXTCOLOR_BLUE, buffer); } } damage = std::min(target->getHealth(), damage); if(damage > 0) { bool deny = false; CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE); for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it) { if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHLOSS, combatType, damage)) deny = true; } if(deny) return false; target->drainHealth(attacker, combatType, damage); addCreatureHealth(list, target); TextColor_t textColor = TEXTCOLOR_NONE; MagicEffect_t magicEffect = MAGIC_EFFECT_NONE; switch(combatType) { case COMBAT_PHYSICALDAMAGE: { Item* splash = NULL; switch(target->getRace()) { case RACE_VENOM: textColor = TEXTCOLOR_LIGHTGREEN; magicEffect = MAGIC_EFFECT_POISON; splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_GREEN); break; case RACE_BLOOD: textColor = TEXTCOLOR_RED; magicEffect = MAGIC_EFFECT_DRAW_BLOOD; splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_BLOOD); break; case RACE_UNDEAD: textColor = TEXTCOLOR_GREY; magicEffect = MAGIC_EFFECT_HIT_AREA; break; case RACE_FIRE: textColor = TEXTCOLOR_ORANGE; magicEffect = MAGIC_EFFECT_DRAW_BLOOD; break; case RACE_ENERGY: textColor = TEXTCOLOR_PURPLE; magicEffect = MAGIC_EFFECT_PURPLEENERGY; break; default: break; } if(splash) { internalAddItem(NULL, target->getTile(), splash, INDEX_WHEREEVER, FLAG_NOLIMIT); startDecay(splash); } break; } case COMBAT_ENERGYDAMAGE: { textColor = TEXTCOLOR_PURPLE; magicEffect = MAGIC_EFFECT_ENERGY_DAMAGE; break; } case COMBAT_EARTHDAMAGE: { textColor = TEXTCOLOR_LIGHTGREEN; magicEffect = MAGIC_EFFECT_POISON_RINGS; break; } case COMBAT_DROWNDAMAGE: { textColor = TEXTCOLOR_LIGHTBLUE; magicEffect = MAGIC_EFFECT_LOSE_ENERGY; break; } case COMBAT_FIREDAMAGE: { textColor = TEXTCOLOR_ORANGE; magicEffect = MAGIC_EFFECT_HITBY_FIRE; break; } case COMBAT_ICEDAMAGE: { textColor = TEXTCOLOR_TEAL; magicEffect = MAGIC_EFFECT_ICEATTACK; break; } case COMBAT_HOLYDAMAGE: { textColor = TEXTCOLOR_YELLOW; magicEffect = MAGIC_EFFECT_HOLYDAMAGE; break; } case COMBAT_DEATHDAMAGE: { textColor = TEXTCOLOR_DARKRED; magicEffect = MAGIC_EFFECT_SMALLCLOUDS; break; } case COMBAT_LIFEDRAIN: { textColor = TEXTCOLOR_RED; magicEffect = MAGIC_EFFECT_WRAPS_RED; break; } default: break; } if(hitEffect != MAGIC_EFFECT_UNKNOWN) magicEffect = hitEffect; if(hitColor != TEXTCOLOR_UNKNOWN) textColor = hitColor; if(textColor < TEXTCOLOR_NONE && magicEffect < MAGIC_EFFECT_NONE) { char buffer[20]; sprintf(buffer, "%d", damage); addMagicEffect(list, targetPos, magicEffect); addAnimatedText(list, targetPos, textColor, buffer); } } } } return true; } Try now 
     
    how it is ! means that for all types of damage except
  7. Curtir
    braianlomas deu reputação a ayato96 em Skill Fishing to Energy Defence Skill TFS 0.3.6   
    Try this

     
    const SpectatorVec& list = getSpectators(targetPos); if(!target->isAttackable() || Combat::canDoCombat(attacker, target) != RET_NOERROR) { addMagicEffect(list, targetPos, MAGIC_EFFECT_POFF); return true; } int32_t damage = -healthChange; if(damage != 0) { if(!combatType == COMBAT_PHYSICALDAMAGE && target && target->getPlayer()) { double damageChange = 0; int32_t skillFish = target->getPlayer()->getSkill(SKILL_FISH, SKILL_LEVEL); if(skillFish >= 10) damageChange = std::ceil(skillFish * 0.1 * damage / 100); if((int32_t)damageChange != 0) { damage -= (int32_t)damageChange; char buffer[150]; sprintf(buffer, "%d hitpoint%s has been absorbed by your resistance.", (int32_t)damageChange, ((int32_t)damageChange == 1 ? "" : "s")); target->getPlayer()->addSkillAdvance(SKILL_FISH, 1, true); target->getPlayer()->sendTextMessage(MSG_EVENT_DEFAULT, buffer); } }  
  8. Gostei
    braianlomas deu reputação a BrunoMaia em Old Tibia tirando limite de 255 efeitos   
    Foi testado no TheForgottenServer 0.3.6 no Tibia 8.54
     
    Como o client já está modificado, precisamos modificar a parte do servidor que envia os dados para o client.
    Vamos modificar dois métodos, addMagicEffect e sendMagicEffect.
    Entre na sua source 0.3.6
    Encontre o arquivo protocolgamer.cpp
    Você vai encontrar esse código
    void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint8_t type) { msg->AddByte(0x83); msg->AddPosition(pos); msg->AddByte(type + 1); } Percebeu esse parametro uint8_t type?
    Vamos modificar para uint16_t type.
    Mas isso não vai adiantar nada se o msg->AddByte(type + 1) continuar desse jeito...
    Modifique ele para msg->AddU16(type + 1).
    O código modificado deve ficar desse jeito
     
    void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint16_t type) { msg->AddByte(0x83); msg->AddPosition(pos); msg->AddU16(type + 1); } Você já deve ter pegado a lógica...
    Onde tiver um método addMagicEffect com o parametro uint8_t type, tem que trocar por uint16_t type, o mesmo serve para sendMagicEffect.
    Mas como sei que tem pessoas que não gostam de trabalhar um pouco, vamos continuar com os arquivos para modificar.
    No mesmo arquivo procure por esse código
    void ProtocolGame::sendMagicEffect(const Position& pos, uint8_t type) { if(type > MAGIC_EFFECT_LAST || !canSee(pos)) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); AddMagicEffect(msg, pos, type); } } Temos alguém conhecido nos parametros, o uint8_t type, já sabemos o que devemos fazer, modifique ele para uint16_t type,
    Código deve está desse jeito
    void ProtocolGame::sendMagicEffect(const Position& pos, uint16_t type) { if(type > MAGIC_EFFECT_LAST || !canSee(pos)) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); AddMagicEffect(msg, pos, type); } } As alterações desse arquivos terminaram, salva as alterações.
    Vamos para outro arquivo, o protocolgamer.h
    Procure por esse código
    void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint8_t type); Novamente troque o uint8_t type por uint16_t type
    Código devera ficar desse jeito
    void AddMagicEffect(NetworkMessage_ptr msg, const Position& pos, uint16_t type); Procure por esse código
     
    void sendMagicEffect(const Position& pos, uint8_t type); Troque o uint8_t type por uint16_t type
    Código devera ficar desse jeito
    void sendMagicEffect(const Position& pos, uint16_t type); Salve as alterações e vamos para o outro arquivo, está cançado de modificar os códigos? é assim mesmo, se quer alguma coisa tem que se esforçar por ela.
    Vamos para o arquivo game.cpp
    Procure por esses códigos
    void Game::addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode /* = false */) { if(ghostMode) return; const SpectatorVec& list = getSpectators(pos); addMagicEffect(list, pos, effect); } void Game::addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode/* = false*/) { if(ghostMode) return; Player* player = NULL; for(SpectatorVec::const_iterator it = list.begin(); it != list.end(); ++it) { if((player = (*it)->getPlayer())) player->sendMagicEffect(pos, effect); } } Troque os parametros uint8_t effect por uint16_t effect
    Dexando-os assim
    void Game::addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode /* = false */) { if(ghostMode) return; const SpectatorVec& list = getSpectators(pos); addMagicEffect(list, pos, effect); } void Game::addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode/* = false*/) { if(ghostMode) return; Player* player = NULL; for(SpectatorVec::const_iterator it = list.begin(); it != list.end(); ++it) { if((player = (*it)->getPlayer())) player->sendMagicEffect(pos, effect); } } Salve as alterações e vamos para o outro arquivo, game.h
    Procure por esse códigos, está ficando repetitivo, mas é assim mesmo
    void addMagicEffect(const Position& pos, uint8_t effect, bool ghostMode = false); void addMagicEffect(const SpectatorVec& list, const Position& pos, uint8_t effect, bool ghostMode = false); Troque o uint8_t effect por uint16_t effect
    Código tem que ficar desse jeito
    void addMagicEffect(const Position& pos, uint16_t effect, bool ghostMode = false); void addMagicEffect(const SpectatorVec& list, const Position& pos, uint16_t effect, bool ghostMode = false); Essa foi rápido, salve as alterações e vamos para o outro arquivo, player.h
    Procure por esse código
    void sendMagicEffect(const Position& pos, uint8_t type) const Troque por esse código
    void sendMagicEffect(const Position& pos, uint16_t type) const Salve as alterações, esse foi o último arquivo
    Agora compile!
    Uma coisa que você deve saber, se você tentar entrar com o client que não esteja esperando valores do tipo uint16 e algum efeito for executado, vai da um erro no client, não da para jogar...
    Vamos baixar o client modificado.
     
    Download cliente com as seguintes configurações.
    Port:      7171
    IP:         127.0.0.1
    Version: 8.54
    Clique aqui para baixar esse cliente
    Virus total desse client
     
    Download cliente com as seguintes configurações.
    Port:      7272
    IP:         127.0.0.1
    Version: 8.54
    Clique aqui para baixar esse cliente
    Virus total desse client
     
    Modificações dos clientes foram feitos por mim.
    Reporte qualquer bug que ocorrer.
    Esse tutorial ensina como tirar o limite de 255 efeitos do tibia, se você não tiver mais de 255 efeitos colocados em sua source, então coloque para testar, não precisa colocar agora, e se você quiser pode colocar depois e já deixar seu client preparado para suporta mais de 255 efeitos.
    Tutorial para adicionar efeitos na sua source.
     
    Não deixe de agradecer...
  9. Gostei
    braianlomas recebeu reputação de pokefelipe em (Resolvido)[LINUX] Quais as vantagens ?   
    Nao tem Virus. evita hackers. não vai cair o servidor, etc
  10. Gostei
    braianlomas deu reputação a lucasmacaca em [PEDIDO] Base   
    kpdo ,mais infelizmente nao tem source...
     
    http://www.tibiaking.com/forum/topic/47080-pokemon-kpdopokemon-kpdo-exaioros-by-cater/

Informação Importante

Confirmação de Termo