Let me put this in a simpler way.
In short, i used your code the way u coded it (i didn't add anything else or edit it). ALL maps doesn't respawn after mobs die. Lagness on the mobs map untill all mobs are kill. (Maps that had their mobs killed became lag-free).
I specify that I am currently using VEDB-9, Rev 592. THE LATEST POSSIBLE.
This is what I did:
In Mobs.cpp under code:
PHP Code:
void Mobs::dieMob(Player *player, Mob* mob) {
if (mob == NULL) return;
MobsPacket::dieMob(player, Maps::info[player->getMap()].Players, mob, mob->getID());
// Account for Holy Symbol
int hsrate = 0;
if (player->skills->getActiveSkillLevel(2311003)>0) {
hsrate = Skills::skills[2311003][player->skills->getActiveSkillLevel(2311003)].x;
}
else if (player->skills->getActiveSkillLevel(5101002) > 0) {
hsrate = Skills::skills[5101002][player->skills->getActiveSkillLevel(5101002)].x;
}
Levels::giveEXP(player, (mobinfo[mob->getMobID()].exp + ((mobinfo[mob->getMobID()].exp*hsrate)/100)) * ChannelServer::Instance()->getExprate());
Drops::dropMob(player, mob);
// Spawn mob(s) the mob is supposed to spawn when it dies
for (unsigned int i = 0; i < mobinfo[mob->getMobID()].summon.size(); i++) {
spawnMobPos(player->getMap(), mobinfo[mob->getMobID()].summon[i], mob->getPosX(), mob->getPosY()-1);
}
if (mob->getMapID() > -1) // Add spawn point to respawns queue if mob was spawned by a spawn point.
respawns[player->getMap()].push(mob->getMapID());
player->quests->updateQuestMob(mob->getMobID());
mobs[player->getMap()].erase(mob->getID());
delete mob;
}
I overwrite this ENTIRE code with yours.
PHP Code:
void Mobs::dieMob(Player *player, Mob* mob) {
int map = player->getMap();
//mob != NULL &&
if (map > -1 ){
MobsPacket::dieMob(player, Maps::info[player->getMap()].Players, mob, mob->getID());
// Account for Holy Symbol
int hsrate = 0;
if (player->skills->getActiveSkillLevel(2311003)>0) {
hsrate = Skills::skills[2311003][player->skills->getActiveSkillLevel(2311003)].x;
}
else if (player->skills->getActiveSkillLevel(5101002)>0) {
hsrate = Skills::skills[5101002][player->skills->getActiveSkillLevel(5101002)].x;
}
Levels::giveEXP(player, (mobinfo[mob->getMobID()].exp + ((mobinfo[mob->getMobID()].exp*hsrate)/100)) * ChannelServer::Instance()->getExprate());
//Mobs::
//mobinfo[mob->getPosX()] mobinfo[mob->getPosY()]
Drops::dropMob(player, mob);
// Spawn mob(s) the mob is supposed to spawn when it dies
for (unsigned int i = 0; i < mobinfo[mob->getMobID()].summon.size(); i++) {
spawnMobPos(player->getMap(), mobinfo[mob->getMobID()].summon[i], mob->getPosX(), mob->getPosY()-1);
}
player->quests->updateQuestMob(mob->getMobID());
if(mob->getHP() <= 0){
mobs[player->getMap()].erase(mob->getID());
delete mob;
}
else
return;
//mobs.erase
}
Any solutions?