Erze Script bitte um Hilfe

Hallo liebe Community,

ich suche wenn der mir helfen kann. Ich bin grad dabei das (Erze System) zu verbessern. Darum brauche ich eine kleine Abfrage (Script).

In der Datenbank habe ich schon 2 Spalten hinzugefügt (Mapid) und (Rate). Ich habe vor, dass die Core dauerhaft überprüft ob in der Spalte der Prozentwert noch stimmt.

Also wenn ich auf der Mapid 1 (zB GMInsel) 4 Erze gespawnt habe und eine (Rate von 50%) eingetragen habe, sollen zuerst mal beim Serverstart genau 50% von den ganzen Erzen gespawnt werden, also 2 Erze. Wenn ich eines davon abbaue soll irgendwo wieder eines spawnen.

Wäre echt nice wenn mir einer helfen kann.

lg

das ist doch gar kein Problem es gibt 2 verschiedene Methoden

WorldDatabase; ///< Accessor to the world database
CharacterDatabase; ///< Accessor to the character database
LoginDatabase; ///< Accessor to the realm/login database

beispie zum anbinden der World Datenbank

Methode 1.

SQLTransaction _trans = WorldDatabase.BeginTransaction();
QueryResult result = WorldDatabase.PQuery(“SELECT * FROM custom_tabele WHERE entry = ‘%u’”, entry);
WorldDatabase.CommitTransaction(_trans);
If(result)
{
Field* fields = result->Fetch();
uint32 entry = fields[0].GetUInt32();
}

Methode 2.

PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(custom_name);
stmt->setUInt32(0, GetGUIDLow());
PreparedQueryResult result = CharacterDatabase.Query(stmt);
if(result)
{
Field* fields = result->Fetch();
uint32 entry = fields[0].GetUInt32();
}
der ‘custom_name’ wird dan in ‘TrinityCoresrcserversharedDatabaseImplementationWorldDatabase.h’ hinterlegt.

der dazugehörige query und der Bezeichner den musst dann ‘TrinityCoresrcserversharedDatabaseImplementationWorldDatabase.cpp’

eintragen.

PrepareStatement(custom_name, "SELECT * FROM custom_tabele WHERE entry = ?", CONNECTION_ASYNC);

ich glaub ich habe dich flach verstanden

das was du vor hast wir wenn ich mich nicht ihre in ‘PoolMgr’ geregelt

schau dir mal dort die Funktion ‘LoadFromDB()’ an.

Genau wie Robox sagt. Ein solches System existiert bereits und macht genau das, was du dort vor hast. Erze, wie auch andere abbaubare Gegenstände sind in Pools aufgeteilt. Jede Map hat dabei einen Pool mit bestimmten Eigenschaften wie Anzahl gleichzeitiger Spawns und so weiter. Never change a running system ^^

Hallo,

ich will einen Prozentwert in der Datenbank hinterlegen und damit will ich die Spawns gerecht aufteilen. In abgefarmten Gegenden mehr % als in den anderen. Habt ihr da vl ne Idee wie man das lösen kann?

lg

Genau dafür ist der vorhandene Pool doch da. Wenn ich mich recht entsinne kann man dort auch respawnzeiten eintragen. Ist also ein Gebiet mal abgefarmt und die Respawnzeiten entsprechend hoch, müssen ja die übrigen, die im gleichen Pool sind, bedient werden.