Projekt

Allgemein

Profil

Fehler #10244

Von erimioa vor fast 10 Jahren aktualisiert

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: 
 <pre> 
 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"); 
 } 
 </pre> 

 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.

Zurück