Ir para conteúdo

rohfagundes

Membro
  • Registro em

  • Última visita

Tudo que rohfagundes postou

  1. n aparece nenhum erro? sobre o canal de npc q eu saiba n são todas as versoes q tem ele
  2. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    Ola =) estou fazendo um ot de avatar e vim aqui mostrar como esta ficando o client gostaria de saber tb o q vcs acham melhor em relação a janela lembrando q ainda tenho q mexer em algumas coisas
  3. opa vlw =) acho q vou deixar esse sistema msm no servidor q estou fazendo vlw msm
  4. Ola esse sistema consiste em colocar durabilidade em todos os itens equipaveis,chance de perde durabilidade ao levar atk(arm e shield) e chance de perde durabilidade ao atacar(armas) quando a durabilidade de um item chegar a 0 o player n ira se beneficiar do item queria a opnião de vcs sobre esse sistema hoje em dia vale apena usar isso em um ot? ja q o povo só quer facilidade
  5. Ola, estava querendo fazer o f1-f12 sempre usar o item q estiver no slot 1-10 ex: ao apertar f1 ele vai usar o item q estiver no slot 10 ao mudar o item do slot 10 o f1 vai passar a usar esse novo item alguem ai sabe um jeito de fazer isso? edit: resolvido.
  6. Vc fez algum script onLook? o arquivo no otclient q é responsavel por essa parte esta na pasta game_textmessage é o textmessage.lua
  7. rohfagundes postou uma resposta no tópico em Códigos C++
    quando eu coloquei a parte para aparecer o level acabou apagando uma outra parte '-' ja coloquei certo la agora se n funcionar eu n sei o q pode ser nunca usei linux
  8. rohfagundes postou uma resposta no tópico em Códigos C++
    q eu me lembre ele ja foi feito para funcionar nessa versao tb agora n tem como eu ver isso ja q meu pc estragou
  9. rohfagundes postou uma resposta no tópico em Códigos C++
    Eu tinha alterado uma coisa no Map.cpp por isso n ficava aparecendo o level no monstro ja coloquei no post
  10. rohfagundes postou uma resposta no tópico em Códigos C++
    deve funcionar
  11. rohfagundes postou uma resposta no tópico em Códigos C++
    pronto ja editei =)
  12. rohfagundes postou uma resposta no tópico em Códigos C++
    ola =) estava aqui mexendo nas sources q tenho aqui e achei um sistema de level nos monstros q tinha em um forum q agora esta morto(kkk) Source de Teste: otxserver2(FINAL) Baseada na versão: tfs 0.3.7 entao vamos la =) em configmanager.h embaixo de: MONSTER_SPAWN_WALKBACK, coloque: MONSTER_HAS_LEVEL, em configmanager.cpp embaixo de: m_confBool[MONSTER_SPAWN_WALKBACK] = getGlobalBool("monsterSpawnWalkback", true); coloque: m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true); em luascript.cpp embaixo de: setField(L, "guildEmblem", mType->guildEmblem); coloque: setField(L, "levelMin", mType->levelMin); setField(L, "levelMax", mType->levelMax); em map.cpp embaixo de: #include "game.h" coloque: #include "configmanager.h" troque inteiro: bool Map::placeCreature(const Position& centerPos, Creature* creature, bool extendedPos /*= false*/, bool forced /*= false*/) por: bool Map::placeCreature(const Position& centerPos, Creature* creature, bool extendedPos /*= false*/, bool forced /*= false*/) { Monster* monster = creature->getMonster(); if (monster && g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { uint8_t level; if (!monster->getMonsterType()->hideLevel) { if (monster->isSummon()) { std::string value; monster->getMaster()->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if (intValue || value == "0") level = intValue; else level = 1; } else level = monster->level; char buffer[10]; monster->name = monster->getName() + " [" + itoa(level, buffer, 10) + "]"; } } bool foundTile = false, placeInPz = false; Tile* tile = getTile(centerPos); if (tile && !extendedPos) { placeInPz = tile->hasFlag(TILESTATE_PROTECTIONZONE); uint32_t flags = FLAG_IGNOREBLOCKITEM; if (creature->isAccountManager()) flags |= FLAG_IGNOREBLOCKCREATURE; ReturnValue ret = tile->__queryAdd(0, creature, 1, flags); if (forced || ret == RET_NOERROR || ret == RET_PLAYERISNOTINVITED) foundTile = true; } size_t shufflePos = 0; PairVector relList; if (extendedPos) { shufflePos = 8; relList.push_back(PositionPair(-2, 0)); relList.push_back(PositionPair(0, -2)); relList.push_back(PositionPair(0, 2)); relList.push_back(PositionPair(2, 0)); std::random_shuffle(relList.begin(), relList.end()); } relList.push_back(PositionPair(-1, -1)); relList.push_back(PositionPair(-1, 0)); relList.push_back(PositionPair(-1, 1)); relList.push_back(PositionPair(0, -1)); relList.push_back(PositionPair(0, 1)); relList.push_back(PositionPair(1, -1)); relList.push_back(PositionPair(1, 0)); relList.push_back(PositionPair(1, 1)); std::random_shuffle(relList.begin() + shufflePos, relList.end()); uint32_t radius = 1; Position tryPos; for (uint32_t n = 1; n <= radius && !foundTile; ++n) { for (PairVector::iterator it = relList.begin(); it != relList.end() && !foundTile; ++it) { int32_t dx = it->first * n, dy = it->second * n; tryPos = centerPos; tryPos.x = tryPos.x + dx; tryPos.y = tryPos.y + dy; if (!(tile = getTile(tryPos)) || (placeInPz && !tile->hasFlag(TILESTATE_PROTECTIONZONE))) continue; if (tile->__queryAdd(0, creature, 1, 0) == RET_NOERROR) { if (!extendedPos) { foundTile = true; break; } if (isSightClear(centerPos, tryPos, false)) { foundTile = true; break; } } } } if (!foundTile) return false; int32_t index = 0; uint32_t flags = 0; Item* toItem = NULL; if (Cylinder* toCylinder = tile->__queryDestination(index, creature, &toItem, flags)) { toCylinder->__internalAddThing(creature); if (Tile* toTile = toCylinder->getTile()) toTile->qt_node->addCreature(creature); } return true; } em monster.h embaixo de: virtual ~Monster(); coloque: std::string name, nameDescription; int32_t level; double bonusAttack, bonusDefense; troque: virtual const std::string& getName() const {return mType->name;} virtual const std::string& getNameDescription() const {return mType->nameDescription;} virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} por: virtual const std::string& getName() const { return name; } virtual const std::string& getNameDescription() const { return nameDescription; } virtual std::string getDescription(int32_t) const { return nameDescription + "."; } em monster.cpp embaixo de: raid = NULL; coloque: name = _mType->name; nameDescription = _mType->nameDescription; level = (int32_t)random_range(_mType->levelMin, _mType->levelMax, DISTRO_NORMAL); bonusAttack = 1.0; bonusDefense = 1.0; troque inteiro: void Monster::onCreatureAppear(const Creature* creature) por: void Monster::onCreatureAppear(const Creature* creature) { Creature::onCreatureAppear(creature); if (creature == this) { //We just spawned lets look around to see who is there. if (isSummon()) { std::string value; this->master->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if (intValue || value == "0") level = intValue; else level = 1; isMasterInRange = canSee(master->getPosition()); } if (g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { this->healthMax = std::floor(this->getMaxHealth() * (1 + (0.1 * (level - 1)))); this->health = this->healthMax; this->bonusAttack += (0.01 * (level - 1)); this->bonusDefense += (0.005 * (level - 1)); } updateTargetList(); updateIdleStatus(); } else onCreatureEnter(const_cast<Creature*>(creature)); } em : void Monster::doAttacking(uint32_t interval) procure por: if(maxCombatValue > 0) //defense multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE); else //attack multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK); e troque por: if(maxCombatValue > 0) //defense multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) * bonusDefense; else //attack multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) * bonusAttack; em monsters.h troque: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, eliminable; por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, eliminable, hideLevel; troque: int32_t defense, armor, health, healthMin, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance; por: int32_t defense, armor, health, healthMin, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance, levelMin, levelMax; em monsters.cpp troque: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = eliminable = false; por: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = eliminable = hideLevel = false; embaixo de: baseSpeed = 200; coloque: levelMin = levelMax = 1; procure por: if(!xmlStrcmp(p->name, (const xmlChar*)"health")) { if(readXMLInteger(p, "min", intValue)) mType->healthMin = intValue; if(!readXMLInteger(p, "max", intValue)) { SHOW_XML_ERROR("Missing health.max"); monsterLoad = false; break; } mType->healthMax = intValue; if(!readXMLInteger(p, "now", intValue)) mType->health = mType->healthMax; else mType->health = intValue; } embaixo dele coloque: else if (!xmlStrcmp(p->name, (const xmlChar*)"level")) { if (!readXMLInteger(p, "max", intValue)) mType->levelMax = 1; else mType->levelMax = intValue; if (!readXMLInteger(p, "min", intValue)) mType->levelMin = mType->levelMax; else mType->levelMin = intValue; } agora nos arquivos dos monstros vc pode colocar <level min="1" max="6"/> min = level minimo q pode vir no monstro max = level maximo q pode vir no monstro obs: se vc colocar essa tag nos monstros sempre vai vir Monstro Level 1 obs²: getMonsterInfo(name) n funcionar para achar o nome do monstro pq ele pega o nome real q esta no arquivo do monstro q n vai ter o [1](q é o level) estou tentando arrumar isso mas ainda n consegui se alguem conseguir arrumar isso avisa ai =) acho q é so isso Creditos: 100% OneShot/Garou
  13. rohfagundes postou uma resposta no tópico em Suporte OTServer Derivados
    http://www.tibiaking.com/forum/topic/12228-simple-level-points/ so funciona por comando
  14. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    fiz =D
  15. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    1. n sei ainda como tirar esse fundo preto sem ficar aparecendo o quadrado vermelho da vida 2. n sei ainda quem sabe =) agora a imagem de como ficou a vida e mana no jogo
  16. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    é um sistema q peguei em um forum q conforme vc vai levando dano a barra vai ficando full quando estiver full seu proximo dano hita +(porem essa parte eu troquei pra soltar uma spell) sobre o apng eu sei mas ainda sim n consigo fazer tipo liquido teste sobre o quadrado em volta da vida se eu deixar ele transparente vai aparecer o quadrado vermelho da vida ainda n achei um jeito de arrumar isso =/
  17. curti msm transparencia vc poderia explicar como ativa? g_game.enableFeature(GameSpritesAlphaChannel)
  18. opa vlw =) fiz um edit no topico para mostrar a versao q usei
  19. vc add esse novo efeito no arquivo 000-constant.lua q fica na pasta lib do server se n vai nele e procure essa parte CONST_ANI_SPEAR = 0 CONST_ANI_BOLT = 1 CONST_ANI_ARROW = 2 CONST_ANI_FIRE = 3 CONST_ANI_ENERGY = 4 CONST_ANI_POISONARROW = 5 CONST_ANI_BURSTARROW = 6 CONST_ANI_THROWINGSTAR = 7 CONST_ANI_THROWINGKNIFE = 8 CONST_ANI_SMALLSTONE = 9 CONST_ANI_DEATH = 10 CONST_ANI_LARGEROCK = 11 CONST_ANI_SNOWBALL = 12 CONST_ANI_POWERBOLT = 13 CONST_ANI_POISON = 14 CONST_ANI_INFERNALBOLT = 15 CONST_ANI_HUNTINGSPEAR = 16 CONST_ANI_ENCHANTEDSPEAR = 17 CONST_ANI_REDSTAR = 18 CONST_ANI_GREENSTAR = 19 CONST_ANI_ROYALSPEAR = 20 CONST_ANI_SNIPERARROW = 21 CONST_ANI_ONYXARROW = 22 CONST_ANI_PIERCINGBOLT = 23 CONST_ANI_WHIRLWINDSWORD = 24 CONST_ANI_WHIRLWINDAXE = 25 CONST_ANI_WHIRLWINDCLUB = 26 CONST_ANI_ETHEREALSPEAR = 27 CONST_ANI_ICE = 28 CONST_ANI_EARTH = 29 CONST_ANI_HOLY = 30 CONST_ANI_SUDDENDEATH = 31 CONST_ANI_FLASHARROW = 32 CONST_ANI_FLAMMINGARROW = 33 CONST_ANI_SHIVERARROW = 34 CONST_ANI_ENERGYBALL = 35 CONST_ANI_SMALLICE = 36 CONST_ANI_SMALLHOLY = 37 CONST_ANI_SMALLEARTH = 38 CONST_ANI_EARTHARROW = 39 CONST_ANI_EXPLOSION = 40 CONST_ANI_CAKE = 41 CONST_ANI_WEAPONTYPE = 254 CONST_ANI_NONE = 255 CONST_ANI_LAST = CONST_ANI_CAKE e adiciona ai =)
  20. Ola, atualmente a variação de dano é enorme e não importa qual arma você usa e quanto de skill você tem, na formula o dano minimo é sempre 0. Então vou mostrar pra vocês onde pode ser editado para resolver esse problema • Versão - Otx 2(final) -- Baseado na Tfs 0.3.7 • Em weapons.ccp procure por: Nessa parte: int32_t damage = -random_range(0, (int32_t)maxDamage, DISTRO_NORMAL); Troque por: int32_t damage = -random_range((int32_t)maxDamage/2, (int32_t)maxDamage, DISTRO_NORMAL); Sendo assim o dano de fist tera uma variedade de danomaximo/2 a danomaximo • Agora para editar o dano de arma, procure: Nessa parte: return -random_range(0, ret, DISTRO_NORMAL); Troque por: return -random_range(ret/2, ret, DISTRO_NORMAL); Sendo assim o dano de (sword,axe e club) terá uma variedade de danomaximo/2 a danomaximo • Agora dano de arma elemental, procure: Nessa parte: return -random_range(0, ret, DISTRO_NORMAL); Troque por: return -random_range(ret/2, ret, DISTRO_NORMAL); Sendo assim o dano elemental de (sword,axe e club) terá uma variedade de danomaximo/2 a danomaximo • Agora distance, procure:
  21. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    eu quero fazer desse jeito mas ainda n sei como =X
  22. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    um ot pra brincar msm =) edit: barra de exp com a informaçao de quanto exp esta ganhando a cada hit e a barra ali na mana é do sistema de limitBreak edit: pequena alteração na parte do exp legenda Exp Per Hit: 0(exp por hit) +0(extraexp sistema de raridade)
  23. topico de 2012 =X mas respondendo sua pergunta vc so precisa mudar ai pro 11 q vai ficar certo
  24. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    pequena ediçao na janela skills e inventory(quando sem item)
  25. rohfagundes postou uma resposta no tópico em Suporte & Pedidos
    opa vlw =D slot ammo diferente

Informação Importante

Confirmação de Termo