Postado Outubro 2, 2020 4 anos Gostaria de aumentar a distância que posso lurar as criaturas antes que elas desapareçam. Alguém sabe me dizer se tem como e aonde posso encontrar isso nas Sources? 0.4 8.60
Postado Outubro 2, 2020 4 anos 7 minutos atrás, diarmaint disse: Gostaria de aumentar a distância que posso lurar as criaturas antes que elas desapareçam. Alguém sabe me dizer se tem como e aonde posso encontrar isso nas Sources? 0.4 8.60 Após investigação, descobri que isso acontece porque o elseif no método de limpeza no arquivo spawn.cpp está "removendo" a criatura de sua zona de spawn se ela não estiver lá Citarei aqui algum código de spawn.cpp loadFromXml () tenta carregar o raio para cada spawn, se não for definido, então -1 é definido. Codigo C++ Spawn.cpp: int32_t radius; pugi::xml_attribute radiusAttribute = spawnNode.attribute("radius"); if (radiusAttribute) { radius = pugi::cast<int32_t>(radiusAttribute.value()); } else { radius = -1; } Durante spawnCheck(), cleanup() método é executado e se o monstro estiver vivo e saiu de seu spawner (o raio de spawn é importante, não antiLureRadius) e depois no mapa gerado the monster is detached from its spawn (now it is attached to spawn of id = 0) and server thinks that there is no monster spawned yet in this spawn (so it is going to be respawn soon). void Spawn::checkSpawn() { checkSpawnEvent = 0; cleanup(); // o resto do método checkSpawn[ ... ] } void Spawn::cleanup() { // [...] } else if (!isInSpawnZone(monster->getPosition()) && spawnId != 0) { spawnedMap.insert(spawned_pair(0, monster)); it = spawnedMap.erase(it); } // [...] } Uma coisa importante é que o método isInZone () pense que o monstro está em spawn se spawnRadius for definido como -1 bool Spawn::isInSpawnZone(const Position& pos) { return Spawns::isInZone(centerPos, radius, pos); } bool Spawns::isInZone(const Position& centerPos, int32_t radius, const Position& pos) { if (radius == -1) { return true; } return ((pos.getX() >= centerPos.getX() - radius) && (pos.getX() <= centerPos.getX() + radius) && (pos.getY() >= centerPos.getY() - radius) && (pos.getY() <= centerPos.getY() + radius)); Não tenho certeza de qual é a ideia por trás desse recurso, mas provavelmente removendo as seguintes linhas no método void Spawn :: cleanup () Veja spawn.cpp deve ajudar } else if (!isInSpawnZone(monster->getPosition()) && spawnId != 0) { spawnedMap.insert(spawned_pair(0, monster)); it = spawnedMap.erase(it); } Esteja ciente de que se o antilure estiver desligado por algum motivo e o monstro se afastar de seu spawn, ele não irá reaparecer até que alguém o mate
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.