Page 1 of 1

Respawn time for mobs

PostPosted: Sat Feb 04, 2017 6:18 pm
by Leorekk
There are mobs respawning extrem slow, for example the "Albion Invader" on mid startregion, he has on the DB a RespawnInterval of 0, what does 0 here mean? In which measure is this value in the DB - minutes, seconds, milliseconds?

There are alot of other mobs with a 0 too, as far i saw, is there a way to globally lower the respawn time?

BR
Leorekk

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 6:33 pm
by PlanarChaosRvrtwo
Respawn Interval 1800 means 3 minutes.
And RespawnInterval 0 means no spawn after death.
Replacevalue just mean if it spawn or not.

to fix that generally use this Heidisql command (save db before):

UPDATE mob
SET RespawnInterval = replace(field, '0', '2400')

that will set all mobs with no respawn timer to respawn time 4 minutes.

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 6:43 pm
by PlanarChaosRvrtwo
Im aware of that issue i gonna do a beta version of my db with that fixed but atm to ill to do it.

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 7:02 pm
by Leorekk
OK, if the logic is stay dead if its 0, it shouldnt be 0 for most of the mobs then right?

But if its in seconds, thats enough to know, i will patch it locally too - thanks!

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 7:05 pm
by PlanarChaosRvrtwo
It shouldtnt be 0 correct but couse i needed to mix very outdated dbs and such to have again an very useful db a few errors occured like that and i tried to fix all my own but now its at that point i wasnt able to find fails my own so i released and let players appeal so the next db will have this fixed.

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 8:05 pm
by Leorekk
I patch my DB now like this:

/*SELECT * FROM mob WHERE ClassType='DOL.GS.GameNPC' AND (RespawnInterval = 0 OR RespawnInterval = NULL)*/
UPDATE mob SET RespawnInterval = 60 WHERE ClassType='DOL.GS.GameNPC' AND (RespawnInterval = 0 OR RespawnInterval = NULL)

The GameNPC are the only once which would need it, i think... maybe there are others, but i need to investigate the logic of the table further.

Re: Respawn time for mobs

PostPosted: Sat Feb 04, 2017 11:17 pm
by PlanarChaosRvrtwo
that works too ofc^^

Re: Respawn time for mobs

PostPosted: Sun Feb 05, 2017 10:20 am
by Leodagan
RespawnInterval with 0 value doesn't mean that mob won't respawn !

0 value is treated like a default value and the server will randomize the Respawn Timer using Server Properties ( I think default Server Properties may be around 5 or 15 minutes :P )

To disable a mob Respawning (I don't remember if that's possible...) you may try to use a negative value like "-1", most database fields that are "signed" integer when only positive value make sense probably have special behavior for negative value... (but it's not consistent between negative meaning auto-config or negative meaning disable...)

Re: Respawn time for mobs

PostPosted: Sun Feb 05, 2017 11:02 am
by PlanarChaosRvrtwo
Nvm checked it was wrong i did an fail^^

Re: Respawn time for mobs

PostPosted: Sat Feb 11, 2017 10:26 pm
by PlanarChaosRvrtwo
I checked again -1 is script based respawn timer 0 means no respawn.

Re: Respawn time for mobs

PostPosted: Sun Feb 12, 2017 8:20 am
by Leodagan
I must insist that "0" is in not meaning "No Respawn"

Here is the RespawnInterval Property of a GameNPC
Code: Select all
/// <summary> /// The Respawn Interval of this mob in milliseconds /// </summary> public virtual int RespawnInterval { get { if ( m_respawnInterval > 0 || m_respawnInterval < 0 ) return m_respawnInterval; int minutes = Util.Random(ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL, ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL + 5); if (Name != Name.ToLower()) { minutes += 5; } if (Level <= 65 && Realm == 0) { return minutes * 60000; } else if (Realm != 0) { // 5 to 10 minutes for realm npc's return Util.Random(5 * 60000, 10 * 60000); } else { int add = (Level - 65) + ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL; return (minutes + add) * 60000; } } set { m_respawnInterval = value; } }
There is clearly Randomization of Respawn Time when the RespawnInterval is "0"

In GameNPC.StartRespawn we can see that any negative value will disable the Respawn Timer
Code: Select all
int respawnInt = RespawnInterval; if (respawnInt > 0) { lock (m_respawnTimerLock) { if (m_respawnTimer == null) { m_respawnTimer = new RegionTimer(this); m_respawnTimer.Callback = new RegionTimerCallback(RespawnTimerCallback); } else if (m_respawnTimer.IsAlive) { m_respawnTimer.Stop(); } // register Mob as "respawning" CurrentRegion.MobsRespawning.TryAdd(this, respawnInt); m_respawnTimer.Start(respawnInt); } }
There is even example in code on how to use this for Adventure Wing Instances :
Code: Select all
// Set respawn to false foreach(GameNPC mob in GetMobsInsideInstance(true)) { mob.RespawnInterval = -1; }

Re: Respawn time for mobs

PostPosted: Sun Feb 12, 2017 10:50 am
by PlanarChaosRvrtwo
gah worked to long yesterday and mixed up the current code and an very old code.