Projekt

Allgemein

Profil

Aktionen

Fehler #10244

offen

[Sonstiges] Spawns der Kräuter und Erze in ein Pool System verpacken

Von erimioa vor fast 10 Jahren hinzugefügt. Vor 5 Monaten aktualisiert.

Status:
Bestätigt
Priorität:
Niedrig
Zugewiesen an:
-
Kategorie:
Sonstiges
Zielversion:
-
Beginn:
27.07.2014

Beschreibung

Derzeitiger Zustand:
Alle Kräuter und Erze eines Typs (z.B. alle Friedensblumen oder alle Eisenvorkommen) sind in einem Pool ein getragen und mit einem sehr hohen max. spawn versehen. Als beispiel thorium 550 positionen von denen 500 spawns gleichzeitig maximal da sind.

Daran ist Buggy:
Kräuter und Erze sollten (je für sich (also nicht kräuter zusammen mit erzen, sondern alle Erze in einen pool und alle kräuter in ein anderen Pool)) mit allen anderne kräutern bzw. Erzen innerhalb eines Gebietes gepoolt sein. Dabei sollte die maximal gleichzeitigen Spawns deutlich geringer sein.

Was mein Fix ist:
Mein Fix packt alle Kräuter pro gebiet und alle Erze pro gebiet in einen Pool. Die alten und fehlerhaften Pools werden gelöscht und durch die neuen ersetzt. Die maximalen Spawns pro gebiet (und für erze und kräuter getrennt) sind im derzeitigen Zustand an die Erfahrung von TrinityCore angepasst, welches jede 3,5. Position mit einem Spawn belegt.

Was mein Fix nicht ist:
Absolute blizzlike ist dies dann immer noch nicht. Ich habe kein weiteren Spawn hinzugefügt oder entfernt, obwohl einige falsch sind und viele fehlen. Außerdem müsste viel intensiever ein spawnpunkt als Position gesehen werden, während derzeit es vor allem ein gespawntes GO ist.

was noch zu tun ist:
Es muss noch entgültig entschieden werden, wie viele spawns pro gebiet vorhanden sein müssen. Derzeit ist der max spawn durch einen dividenten von 3,5 entstanden, wobei auf die nächste natürliche Zahl gerundet wurde.
Viel wichtiger sind die respawnzeiten. Meine empfehlungen sind, dass alle erze und Kräuter zwischen 10 - 15 Minuten eingestellt werden sollten. Höchstens ganz spezielle Vorkommen, wie Khorium etwas höher. Aber wenn der derzeitige Zustand beibehalten werden würde mit der respawnzeit, aber dennoch nur ein 3,5 divident, würde das farmen erheblichst erschwert werden.

Siehe auch http://paste2.org/hxEP0hCZ

Was zu testen ist:
natürlich sollte in so vielen wie nur möglich gebieten rein geschaut werden, ob die richtigen kräuter oder Erze da sind und auch die Anzahl ungefähr stimmt. Pro gebiet kann dies natürlich noch erhöht oder erniedrigt werden.

Wie bin ich auf meine Gebiete gekommen:
Ich habe in einem Core in dem Startup folgendes mit durchlaufen lassen:

void World::LoadGoContent()
{
    TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loading Go Data");

        QueryResult result = CharacterDatabase.Query("SELECT guid, map, position_x, position_y, position_z FROM mangos_dev_mangos.gameobject WHERE id IN (183043,176640,176586,3730,1622,2042,183046 ,142143,181166,176588,3726,1619,2866,181276,1618, 3724,142144,2046,176638,176583,1628,142145,176637, 2043,1624,2041,142140,3727,1620,181281,181279, 176587,176641,3725,1617,176636,142142,181277,183044,181270, 176639,176584,183045,181271,181272,3729,1621,1623,2044,2045,181275,176589, 181280,142141,176642)");
    if (!result)
    {
        TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Nooooooooooooooooooooooooooooooooo");
        return;
    }

    // uint32 zoneId = sMapMgr->GetZoneId(MapId, x, y, z);
    do
    {
        Field* fields = result->Fetch();
        uint64 guid = fields[0].GetUInt64();
        uint32 map = fields[1].GetUInt32();
        float mx = fields[2].GetFloat();
        float my = fields[3].GetFloat();
        float mz = fields[4].GetFloat();

        if (guid != 16780
            && guid != 4004
            && guid != 86047)
            if (uint32 zoneId = sMapMgr->GetZoneId(map, mx, my, mz))
                TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "(%d, %d, 0, 'herb - '),", zoneId, guid);

    } while (result->NextRow());

    TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, "Loaded");
}

bzw mit den IDs
(
123309, 2047, 150081, 3764, 1732, 103711,
2054, 1734, 73941, 150080, 181557, 181570,
181556, 181569, 165658, 1735, 1733, 73940,
324, 123848, 150082, 176643, 175404, 177388,
181555, 176645, 2040, 123310, 150079, 1731,
103713, 3763, 2055
)

Dies gibt dann im startfenster entsprechend die GUIds+ ZonenIDs. Diese Ausgabe wurde dann noch von hand bearbeitet, in dem alle Treffer aus einer Zone raus getragen wurde und diese in ein Pool gesetzt. Die Zonenzuordnung hat man aus der worldmaparea.dbc erhalnte.


Dateien

b2b_pool_ore_and_herb.sql (775 KB) b2b_pool_ore_and_herb.sql Fix vom Pool erimioa, 27.07.2014 20:04
Screenshot_3.png (1,76 MB) Screenshot_3.png b2b-jose87, 28.12.2023 17:33
Screenshot_4.png (225 KB) Screenshot_4.png b2b-jose87, 28.12.2023 18:21
Vorkommen Schattenmondtal.png (4,21 MB) Vorkommen Schattenmondtal.png b2b-jose87, 28.12.2023 18:22

Zugehörige Tickets

Beziehung mit B2B Live TBC 2.4.3 - Fehler #21364: [Kräuterkunde/Bergbau]Eventuelle fehlende Kräuter (Erze?)Recherche11.11.2016Aktionen
Beziehung mit B2B Live TBC 2.4.3 - Fehler #12077: [Sonstiges] Spawnpunkte Goldener Sansam in Sümpfe des ElendesBestätigt30.12.2014Aktionen
Beziehung mit B2B Live TBC 2.4.3 - Fehler #9209: [Sontiges] zu viele Zinnvorkommen in Westfall ("Der Jangoschacht")Bestätigt10.04.2014Aktionen
Aktionen

Auch abrufbar als: Atom PDF