Ir para conteúdo

Yota

Membro
  • Registro em

  • Última visita

Tudo que Yota postou

  1. Existem vários no fórum, hei de procurar antes de pedir algo, rsrs Isso ocorre porque está faltando uma parte do talkactions e também por cocê não definir o evento. Creio eu que tu hei de não adicionar o sistema corretamente.
  2. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    Você possui a source do seu otserv? Deve ser em algum MOD ou em algum destes arquivos da source(configmanager)
  3. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    Muda o IP do seu cliente para 127.0.0.1. Isso ocorreu comigo. Meu pc entra pelo host local, enquanto outros players conseguiam logar pelo IP fixo. Caso não dê certo, hei de ir em C:\Windows\System32\drivers\etc e abra o arquivo HOST, apague tudo e use este.(Muitas vezes o antivírus, como o Kaspersky modifica.) Resumindo, hei de trocar o teu HOST, por este: # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. 127.0.0.1 localhost # ::1 localhost
  4. Isso é devido a sua source não aceitar uma versão diferente do otbm na qual ela foi programada.(Algo assim). Faz o seguinte, posta seu items.cpp para que eu te ajude. O arquivo fica localizado na sua source. Caso não possua as source já adianto, é impossível fazer funcionar com o item.otbm que hei de usar.
  5. Yota postou uma resposta no tópico em Códigos C++
    Configurou no xml de cada monstro?
  6. Yota postou uma resposta no tópico em Códigos C++
    Fez tudo certo? Porque eu utilizo este mesmo código no meu projeto, e está tudo normal.
  7. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    Você baixou a source? Ela tem tudo, e está só no jeito de compilar.
  8. Yota postou uma resposta no tópico em Códigos C++
    Obrigado grande vodk. O rep não caiu no meu saldo, rs.
  9. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    Aqui, está source contem os opcodes instalado. Ela é 854(TFS 0.3.6). pokemon source.7z
  10. Yota postou uma resposta no tópico em Códigos C++
    Aqui para 854, acabei de postar
  11. Yota postou uma resposta no tópico em Códigos C++
    Boa noite, venho compartilhar o código feito por @Oneshot/ @Garou, com adaptação para tfs 0.3.6 (854) por mim. Bem, ele postou para atfs 0.4 (860), dai eu só mexi em umas linhas parar funcionar no tfs 0.3.6(854), dai vou compartilhar com vocês. Com o monster level system, o monstro passa a ter level e ganha mais HP, dá mais dano, tem mais defesa, dependendo dele. monsters.h procure por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth; Substitua por: bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, hideLevel; Procure por: int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance; Substitua por: int32_t defense, armor, health, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance, levelMin, levelMax; monsters.cpp Procure por: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false; Substitua por: canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = hideLevel = false; Procure por: baseSpeed = 200; Logo abaixo, adicione: levelMin = levelMax = 1; Localize: if(readXMLInteger(p, "max", intValue)) mType->healthMax = intValue; else { SHOW_XML_ERROR("Missing health.max"); monsterLoad = false; } } abaixo adicione: 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; } procure por: if(readXMLString(tmpNode, "shield", strValue)) mType->partyShield = getPartyShield(strValue); logo baixo adicione: if(readXMLString(tmpNode, "hidelevel", strValue)) mType->hideLevel = booleanString(strValue); Monster.h Procure: virtual ~Monster(); std::string name, nameDescription; abaixo adicione: std::string name, nameDescription; int32_t level; double bonusAttack, bonusDefense; Procure: 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 + ".";} Substitua 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 + ".";} Monster.cpp Logo abaixo de: isIdle = true; Adicione: name = _mType->name; nameDescription = _mType->nameDescription; level = (int32_t)random_range(_mType->levelMin, _mType->levelMax, DISTRO_NORMAL); bonusAttack = 1.0; bonusDefense = 1.0; Procure por está função: Monster::onCreatureAppear Apague e coloque está função: 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((uint32_t)"1996", value); this->master->getStorage((uint32_t)"1996", 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)); } Substitua todos: g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) Por: g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) * bonusDefense Substitua todos: g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) Por: g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) * bonusAttack Map.cpp Procure por: #include "game.h" Adicione em baixo: #include "configmanager.h" Procure por: extern Game g_game; Adicione em baixo: extern ConfigManager g_config; Procure por está função: bool Map::placeCreature(const Position& centerPos, Creature* creature, bool extendedPos /*= false*/, bool forced /*= false*/) { Abaixo do " { " adicione: 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((uint32_t)"1996", value); monster->getMaster()->getStorage((uint32_t)"1996", 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) + "]"; } } configmanager.h Procure por: ADDONS_PREMIUM, e abaixo adicione logo em baixo: MONSTER_HAS_LEVEL, configmanager.cpp procure por: m_confBool[ADDONS_PREMIUM] = getGlobalBool("addonsOnlyPremium", true); e logo em baixo adicione: m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true); no Config.lua adicione: monsterHasLevel = true -- true para monstros nascerem com level, false para não nascerem com level São muitas modificações para fazer, mas o resultado é garantido e é uma funcionalidade a mais para seu servidor. Como está programado, a cada level, monstros ganham 10% de HP, 1% de dano e 0.5% de defesa. Para configurar level mínimo e máximo, é só adicionar no XML do monstro: <level min="1" max="10"/> -- level minimo, level maximo E alterar a seu gosto. Se você fizer certo irá ficar assim: Créditos: @Oneshot
  12. Yota postou uma resposta no tópico em Códigos C++
    Eu fiz uma versão 8.54. se quiser, posso postar.
  13. Yota postou uma resposta no tópico em Scripts tfs 0.4 (OLD)
    Me mostra no skype.
  14. O item está adicionado corretamente?
  15. Yota postou uma resposta no tópico em Scripts tfs 0.4 (OLD)
    Ta incompleto. E algumas essa funções so necessitam leves mudanças. Falta varias coisas tipo esta do protocolgame.cpp if(player->isTvWatching()){ if(recvbyte == 0x82 || recvbyte == 0x64 || recvbyte == 0x65 || recvbyte == 0x66 || recvbyte == 0x67 || recvbyte == 0x68 || recvbyte == 0x69 || recvbyte == 0x6A || recvbyte == 0x6B || recvbyte == 0x6C || recvbyte == 0x6D) // p´layer nao usar item em tv cam return; } /*if(player->isTvWatching() && recvbyte == 0x82){ switch(recvbyte) { case 0x32: // otclient extended opcode parseExtendedOpcode(msg); break; case 0x98: // open channel parseOpenChannel(msg); break; case 0x99: // close channel parseCloseChannel(msg); break; case 0x8C: // throw item parseLookAt(msg); break; case 0x96: // say something parseSay(msg); break; } }else */ Enfim, está incompleto rs
  16. Obrigado pelos créditos. Lembrando que, só funciona pra PDA.
  17. Mais ou menos. Era um backup. Só que eu decidi fazer usando a engine 1.2 do tfs, na versão 10.96. E estou pensando em disponibilar este servidor 0.3.6 (8.54), com as sources. vlw haha
  18. Isso acontece quando você erra em alguma função na lib, ou coloca uma virgula a mais. Faz com que a lib buge.
  19. Posta aqui o seu levelsystem.lua e goback.lua e me fala quando exatamente ocorre este erro ai.
  20. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    <action actionid="1353" event="script" value="earthstone.lua"/> Aqui você está usando actionid, no caso, tem que ir no mapa e colocar está actionID no item.. Mas, eu tenho certeza que você queria fazer assim: no action.xml troque sua linha por esta: <action itemid="1353" event="script" value="earthstone.lua"/>
  21. Seria mais fácil você apagar o char adm e cria outro, não?
  22. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    Sim.
  23. Yota postou uma resposta no tópico em Suporte Tibia OTServer
    function onSay(cid, words, param, channel) local group = 3 if not(getPlayerGroupId(cid) >= group) then return false end if (param == "") then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa informar o nome do jogador.") end local pid = getPlayerByNameWildcard(param) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player " .. param .. " nao está online.") end doAddIpBanishment(getPlayerIp(pid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " foi banido.") return true end
  24. veja as propriedades do seu arquivo.

Informação Importante

Confirmação de Termo