Ir para conteúdo
  • Cadastre-se

Histórico de Edições

Please note that revisions older than 15 days are pruned and will no longer show here

Não há histórico de edição para mostrar, ou este comentário foi editado por um moderador.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por chateadoagr
      Bem-vindo ao Genesis Online Tibia (GOT), um mundo onde a civilização foi devastada por um apocalipse zumbi. Inspirado em referências como The Walking Dead e Resident Evil, o GOT desafia você a sobreviver em meio ao caos, enfrentando hordas de mortos-vivos, explorando ruínas perigosas e formando alianças estratégicas. Embarque nesta jornada épica de sobrevivência e descoberta, onde cada escolha molda seu destino em um cenário hostil repleto de desafios e perigos iminentes.
       
       
      Adentre o universo de Genesis Online Tibia (GOT), um jogo repleto de sistemas inovadores e emocionantes. Equipe-se com um vasto arsenal de armas para enfrentar as ameaças do apocalipse zumbi, enquanto o sistema autoloot simplifica suas conquistas. Desenvolva seu personagem através de um sistema de upgrade único, aprimorando habilidades e atributos para enfrentar desafios cada vez mais formidáveis.
       
      Explore um mundo imersivo onde o som desempenha um papel crucial, criando uma atmosfera envolvente e realista. Vasculhe cada canto em busca de recursos vitais, desvendando segredos e tesouros ocultos. Siga uma cativante história através de missões que expandem o enredo, revelando os mistérios por trás do apocalipse e oferecendo recompensas valiosas.
       
      Em Genesis Online Tibia, a jornada pela sobrevivência é repleta de ação, estratégia e emoção, convidando você a se aventurar em um mundo onde cada decisão molda seu destino e determina sua capacidade de enfrentar os desafios que aguardam.

      Em breve imagens do servidor!
       
       
    • Por MarcusCores
      Welcome to ShadeCores
      We are excited to finally present to you: ShadeCores!
      After a long time of development and testing, we're finally ready to launch this awesome game!
      Quick Info for laziness:
      Rates: Tibia 7.4 theme 1x Experience 1x Skills 1x Magic 1x Loot 1x Regen General info:
      Official launch: April 24, 17:00 CEST.
      Create characters: 1 hour before launch (16:00 CEST).
      Website: https://shadecores.com/?subtopic=news
      Authentic Damages Monster attacks Monsters carrying equipment & loot Monster Spawns & respawn depending on players online World light and watches Traps Line of sight system Floor saving system Exhaustion system Much more.. General Cannot multi-client REAL Proven & Verified Anti-Cheat system = No cheaters Many quests modified to add mystery to the game for everyone Much more..
      What is ShadeCores?
      ShadeCores is a game designed to mimic the oldschool version of Tibia.com, but in a slower pace.
      Our goal is to be a long lasting and functional game that doesn't run a course of being broken after a few years.
      Read more at: https://shadecores.com/?subtopic=about&view=about.

      World Map
      The map contains all places of Tibia 7.70.
      It also contains 100% spawns of Tibia 7.70.
      With exception of Ankrahmun and Port Hope that was removed for balancing purposes.

      Built authentically
      ShadeCores was built hand in hand with hacked Tibia files (7.70 version) and is very accurate to how Tibia was (with exception things that has been improved).
      If you played Tibia back in 7.4-7.70 and join ShadeCores, you will yourself notice how scary accurate every single spawn is.
      Read more at: https://shadecores.com/?subtopic=about&view=additional.

      Game health
      We have made many modifications to ensure a healthy economy and game.
      Read more at: https://shadecores.com/?subtopic=about&view=balance.

      Creature Behavior
      In ShadeCores, same as in CipSoft's, creatures that's fleeing for their life (low health) will not make any pauses no matter how close the player is.
      Creatures also doesn't have any exhaustion of their abilities such as attacks, healings and more.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=5-Features+-Creature+Behavior.

      Creature spawns
      ShadeCores has the very same spawn system that CipSoft's had back in the day.
      All creatures that spawns has a "home".
      And this "home" has a set amount of creatures that belongs to it, always same type of creature.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=3-Features+-Creature+spawns.

      Accurate creature loot & inventory
      ShadeCores have an accurate loot & inventory system for creatures, working identically as it did in CipSoft's back in the day.
      Which means that creatures with items that give light, will also light up the creature, or armors that will increase the armor of the creature, or that when a creature wear boots of haste, it will run noticeably faster!
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=1-Features+-Creatures+equipping+their+loot+%26amp%3B+loot+system.

      Authentic exhaustions
      Believe it or not, OT's have it completely wrong, OTs uses 1 or 2 kind of exhaustions depending on which version they're meant to reflect (healing + attacking spells).
      However, in CipSoft's, there were 3 different exhaustions in the old days, 4 if you include "using item on.." exhaustion which was 1 second.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=6-Features+-Exhaustion+system.

      Floor saving
      ShadeCores are running with a map-saving system that allow the map to save certain edits done by players.
      The edits can almost be anything from items added to certain places, to open doors, wall torches that's lit or not, items hiding in boxes, book cases or even unexpected containers invisible to the naked eye.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=12-Features+-Floor+saving+system.

      Game health balance
      To ensure that ShadeCores become as perfect as possible, a lot has to be considered and corrected.
      Our goal is to make a long lasting and functional game that doesn't run a course of being broken after a few years.
      In ShadeCores, you're not meant to get unlimited supplies, hunting dragons, dragon lords, demons or other demonic critters, we don't fancy the rushed pace much of Tibia has become along with the community.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=13-Features+-Game+Health+Balance+(creatures%2C+supplies%2C+gold).

      Keep valuables valuable
      In ShadeCores it's harder to obtain "good" equipment, which will turn lower level equipment into the new good equipment.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=14-Features+-Game+Health+Balance+(equipment).

      Line of sight system
      In ShadeCores we use the same line-of-sight system as in CipSoft's.
      You may notice when you're playing that sometimes you can throw things in a way you can't do in most OT's.
      And you' may also notice that sometimes, you cannot throw things in same way as in most OT's.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=8-Features+-Line+of+sight+system.

      Poison storm
      Almost every OT either has ticking poison damage from around 50 counting down until 0, while others have an instant damage followed by poison or some other mixtures.
      While in reality, damage of the poison storm is decided by level and magic level, from the first tick of damage, it decreases with a few % until it reaches 0.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=7-Features+-Poison+storm.

      Traps functionality
      Traps does a static amount of damage. 30 to be exact, it's always 30.
      However, traps cause a physical damage that listen to the creatures armor.
      It means that the damage can and will be reduced by any armor the creature may have.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=2-Features+-Traps+(item).

      World light & watches
      In ShadeCores, time and world light works exactly like it did in CipSoft's back in the day.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=9-Features+-World+lights+%26amp%3B+watches.

      Anti-Cheat system
      We have a very advanced and automatic anti-cheat system that detects all kind of cheats rather quickly, be it bot, macro, tasker or others.
      This system was first developed and proven to work very well in RetroCores world "Cleanera".
      It has since then been improved to be faster and detect a wider array of cheats that people could use.

      A lot of servers has basically lied about that they're anti-bot, most of players have been in "anti-bot" servers that's been exploding with cheats and nobody gets punished, which is why most with good reason wont trust whenever someone says they're "antibot".
      But through Cleanera@RetroCores, we've verified for a lot of people that we're not bullshitting you, we're legit, we have a system that works and a lot of people have tested it and found themselves shocked when their "secret cheat" got caught even though nobody was nearby them.

      Additionally to the anti-cheat, ShadeCores does not allow multi-clienting
      Multi-Clienting will be treated as a cheat and lead to a deletion.
      To make sure nobody accidentally use multi-client without knowing the rules, we've made so that it's not possible to start more than one instance of the client.
      If you try to start a new client while already having one open, you will face this little message.

      Other Game Features
      Ability to play for free. No level restrictions on items nor spells. Non-stackable runes/fluids. No Runes from NPCs. No item-hotkeys. No wands/rods. No protection zone on boats/carpets. Manual aiming Anti-lag system. Great and improved monster systems. Monsters can be lured anywhere. No stairjump exhaust. Possibility to make UH traps. Accurate 7.4 formulas. Classic premium system. Classic promotion system. Many and random raids with possibility to loot raid-rare items.
      If you're new to the community, you're welcome to join the ShadeCores Discord server to chat with other players and staff!
      plain link: https://discord.gg/BtZmNDNUz6


      ShadeCores will officially launch on April 24 at 17:00 CEST!
      You will be able to create characters starting at 16:00 CEST the same day!

      Sincerely,
      ShadeCores Staff
    • Por Kill of sumoners
      olá sou o takezo e estou caminhando para desenvolver um novo ot de naruto 100% com sprites 45°, ja contamos com mais de 25 vocations, cliente com layout reformulado, som ambiente e em ataques, porem a staff conta apenas comigo e mais um amigo, vim aqui procurar pessoas que possam querer integrar a staff, sejam elas devs, designers, mappers entre outros, para mais informações entre em contato privado comigo, desde ja muito obrigado!
       
      https://gyazo.com/745b10c56f4571464645fdea192cf350
    • Por L3K0T
      TUTORIAL BY L3K0T PT~EN
       
      Olá pessoal, trago a vocês uma atualização que fiz no sistema, contendo 3 novas funcionalidades de movimentação de itens e uma proteção contra Elf Bot. Estas adições foram cuidadosamente implementadas para aperfeiçoar a experiência de jogo e manter a integridade do seu servidor.
      As novas funcionalidades têm a função vital de impedir que jogadores deixem itens indesejados em locais inapropriados, como na entrada de sua casa, em cima de seus depósitos ou em teleportes. Agora, apenas proprietários, subproprietários e convidados têm permissão para manipular itens nesses locais.
      Este pacote de atualização foi meticulosamente revisado para evitar abusos por parte de jogadores mal-intencionados e garantir um ambiente de jogo justo e equilibrado para todos os usuários.
       
       
       
      Iniciando o Tutorial
      1Abra o arquivo "creatureevents.cpp" com o editor de sua preferência. Eu pessoalmente recomendo o Notepad++. 
       
       
      Em creatureevents.cpp:
      return "onPrepareDeath"; Adicione abaixo:
      case CREATURE_EVENT_MOVEITEM: return "onMoveItem"; case CREATURE_EVENT_MOVEITEM2: return "onMoveItem2";  
      Em:
      return "cid, deathList"; Adicione abaixo:
      case CREATURE_EVENT_MOVEITEM: return "moveItem, frompos, topos, cid"; case CREATURE_EVENT_MOVEITEM2: return "cid, item, count, toContainer, fromContainer, fromPos, toPos";  
      Em:
      m_type = CREATURE_EVENT_PREPAREDEATH; Adicione abaixo:
      else if(tmpStr == "moveitem") m_type = CREATURE_EVENT_MOVEITEM; else if(tmpStr == "moveitem2") m_type = CREATURE_EVENT_MOVEITEM2;  
      Procure por:
      bool CreatureEvents::playerLogout(Player* player, bool forceLogout) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGOUT && (*it)->isLoaded() && !(*it)->executeLogout(player, forceLogout) && result) result = false; } return result; } Adicione abaixo:
      uint32_t CreatureEvents::executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos) { // fire global event if is registered for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_MOVEITEM) { if(!(*it)->executeMoveItem(actor, item, frompos, pos)) return 0; } } return 1; }  
      Em:
      bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGIN && (*it)->isLoaded() && !(*it)->executeLogin(player) && result) result = false; } if (result) { for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { CreatureEvent* event = *it; if(event->isLoaded() && ( event->getRegister() == "player" || event->getRegister() == "all") ) player->registerCreatureEvent(event->getName()); } } return result; } Adicione Abaixo:
      uint32_t CreatureEvent::executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos) { //onMoveItem(moveItem, frompos, position, cid) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(pos); std::stringstream scriptstream; env->streamThing(scriptstream, "moveItem", item, env->addThing(item)); env->streamPosition(scriptstream, "position", frompos, 0); env->streamPosition(scriptstream, "position", pos, 0); scriptstream << "local cid = " << env->addThing(actor) << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(pos); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); LuaInterface::pushThing(L, item, env->addThing(item)); LuaInterface::pushPosition(L, frompos, 0); LuaInterface::pushPosition(L, pos, 0); lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(4); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } } uint32_t CreatureEvent::executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack) { //onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << "local count = " << count << std::endl; env->streamThing(scriptstream, "toContainer", toContainer, env->addThing(toContainer)); env->streamThing(scriptstream, "fromContainer", fromContainer, env->addThing(fromContainer)); env->streamPosition(scriptstream, "fromPos", fromPos, fstack); env->streamPosition(scriptstream, "toPos", toPos, 0); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[30]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaInterface::pushThing(L, item, env->addThing(item)); lua_pushnumber(L, count); LuaInterface::pushThing(L, toContainer, env->addThing(toContainer)); LuaInterface::pushThing(L, fromContainer, env->addThing(fromContainer)); LuaInterface::pushPosition(L, fromPos, fstack); LuaInterface::pushPosition(L, toPos, 0); //lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(7); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } }  
       
       
      Agora em em creatureevents.h:
      CREATURE_EVENT_PREPAREDEATH, Adicione abaixo:
      CREATURE_EVENT_MOVEITEM, CREATURE_EVENT_MOVEITEM2  
      Em:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione abaixo:
      uint32_t executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);  
      Em:
      bool playerLogout(Player* player, bool forceLogout); Abaixo adicone também
      uint32_t executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);  
       
      Agora em em game.cpp:
      if(!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if(ret == RET_NOERROR) return true; player->sendCancelMessage(ret); return false; } Altere para:
      if (!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } bool success = true; CreatureEventList moveitemEvents = player->getCreatureEvents(CREATURE_EVENT_MOVEITEM2); for (CreatureEventList::iterator it = moveitemEvents.begin(); it != moveitemEvents.end(); ++it) { Item* toContainer = toCylinder->getItem(); Item* fromContainer = fromCylinder->getItem(); if (!(*it)->executeMoveItem2(player, item, count, fromPos, toPos, (toContainer ? toContainer : 0), (fromContainer ? fromContainer : 0), fromStackpos) && success) success = false; } if (!success) return false; if (g_config.getBool(ConfigManager::ANTI_PUSH)) { std::string antiPushItems = g_config.getString(ConfigManager::ANTI_PUSH_ITEMS); IntegerVec tmpVec = vectorAtoi(explodeString(antiPushItems, ",")); if (tmpVec[0] != 0) { for (IntegerVec::iterator it = tmpVec.begin(); it != tmpVec.end(); ++it) { if (item->getID() == uint32_t(*it) && player->hasCondition(CONDITION_EXHAUST, 1)) { player->sendTextMessage(MSG_STATUS_SMALL, "Please wait a few seconds to move this item."); return false; } } } } int32_t delay = g_config.getNumber(ConfigManager::ANTI_PUSH_DELAY); if (Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, delay, 0, false, 1)) player->addCondition(condition); if (!g_creatureEvents->executeMoveItems(player, item, mapFromPos, mapToPos)) return false; ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if (ret != RET_NOERROR) { player->sendCancelMessage(ret); return false; } player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::ACTIONS_DELAY_INTERVAL) - 10); return true; }  
      Agora em configmanager.h
      ADMIN_ENCRYPTION_DATA Adicione abaixo:
      ANTI_PUSH_ITEMS,  
      em:
      STAMINA_DESTROY_LOOT, Adicione abaixo:
      ANTI_PUSH_DELAY,  
      em:
      ADDONS_PREMIUM, Adicione abaixo:
      ANTI_PUSH  
      Agora você pode compilar a Source.
       
       
      Configurando no servidor:
       
      Abra seu config.lua do servidor e adicione isso dentro qualquer lugar:
      -- Anti-Push useAntiPush = true antiPushItems = "2148,2152,2160,3976" antiPushDelay = 500  
       
      Navegue até o diretório 'creaturescripts' e localize o arquivo 'login.lua'.
      em resgistros de eventos adicione:
      login.lua
      registerCreatureEvent(cid, "MoveItem") registerCreatureEvent(cid, "MoveItem2")  
      Agora abra o aquivo creaturescript .xml
      <event type="moveitem" name="MoveItem" event="script" value="houseprotecao.lua"/> <event type="moveitem2" name="MoveItem2" event="script" value="moveitem2.lua"/>  
      Crie um novo arquivo lua em scripts com o nome houseprotecao.lua e adicione isso:
      function onMoveItem(moveItem, frompos, position, cid) if position.x == CONTAINER_POSITION then return true end local house = getHouseFromPos(frompos) or getHouseFromPos(position) --correção 100% if type(house) == "number" then local owner = getHouseOwner(house) if owner == 0 then return false, doPlayerSendCancel(cid, "Isso não é Possível.") end if owner ~= getPlayerGUID(cid) then local sub = getHouseAccessList(house, 0x101):explode("\n") local guest = getHouseAccessList(house, 0x100):explode("\n") local isInvited = false if (#sub > 0) and isInArray(sub, getCreatureName(cid)) then isInvited = true end if (#guest > 0) and isInArray(guest, getCreatureName(cid)) then isInvited = true end if not isInvited then return false, doPlayerSendCancel(cid, "Desculpe, você não está invitado.") end end end return true end  
      Crie um novo arquivo lua em scripts com o nome moveitem2.lua e adicione isso abaixo:
      local depottiles = {} --piso pra n jogar local depots = {2589} --id dos dps local group = 3 --id dos group 6 é todos. local function checkIfThrow(pos,topos) if topos.x == 0xffff then return false end local thing = getThingFromPos(pos) if isInArray(depottiles,thing.itemid) then if not isInArea(topos,{x=pos.x-1,y=pos.y-1,z=pos.z},{x=pos.x+1,y=pos.y+1, z=pos.z}) then return true end else for i = 1, #depots do if depots[i] == getTileItemById(topos,depots[i]).itemid or getTileInfo(topos).actionid == 7483 then return true end end end return false end function onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if isPlayer(cid) then local pos = getThingPos(cid) if getPlayerGroupId(cid) > group then return true end if checkIfThrow({x=pos.x,y=pos.y,z=pos.z,stackpos=0},toPos) then doPlayerSendCancel(cid,"Não jogue item ai!!") doSendMagicEffect(getThingPos(cid),CONST_ME_POFF) return false end end return true end  
      ajudei?? REP+
      CRÉDITOS:
      @L3K0T
      Fir3element
      Summ
      Wise
      GOD Wille
      Yan Lima
       
       
       
       
    • Por Doria Louro
      Olá senhores.
       
      Gostaria de uma ajuda com um script de summon que venho trabalhando no momento, gostaria que o summon andasse do lado do jogador, entretanto o mesmo sempre fica para trás ou a frente do jogador.
      Efetuei a alteração na source creature.cpp:
       
      void Creature::getPathSearchParams(const Creature* creature, FindPathParams& fpp) const { fpp.fullPathSearch = !hasFollowPath; fpp.clearSight = true; if(creature->isPlayerSummon()) { if(creature->getName() == "Summon Name") fpp.clearSight = false; } fpp.maxSearchDist = 12; fpp.minTargetDist = fpp.maxTargetDist = 1; }  
      fpp.maxTargetDist = 1;
      Porém ele sempre mantem 1 de distancia do jogador, alterando para zero o "Zero" summon nem segue o jogador.
      Resultado:

       
      Agradeço desde já.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo