Ffa service

Results 1 to 9 of 9
  1. #1
    Enthusiast veygan is offline
    MemberRank
    Nov 2013 Join Date
    42Posts

    Ffa service

    Hi is posible to enable ffa instance on AL core?


  2. #2
    Apprentice Horatio Doa is offline
    MemberRank
    Jul 2013 Join Date
    9Posts

    Re: Ffa service

    all is posible with the right files on my core i have a cinema

  3. #3
    Enthusiast veygan is offline
    MemberRank
    Nov 2013 Join Date
    42Posts

    Re: Ffa service

    Yes the only ffa is on nexgen available but is not for working propetly
    I manage to get it working but the messeges an the revive event on this ffa dosent work

  4. #4
    Enthusiast veygan is offline
    MemberRank
    Nov 2013 Join Date
    42Posts

    Re: Ffa service

    Cinema ? Is working on 4.0 client?

  5. #5
    Novice Shamino is offline
    MemberRank
    Jan 2014 Join Date
    4Posts

    Re: Ffa service

    Anyone can share a free FFA or anothers free PvP systems?

  6. #6
    Enthusiast veygan is offline
    MemberRank
    Nov 2013 Join Date
    42Posts

    wink Re: Ffa service

    ok here is my ffa service but is not complete functioning i have modified all to work but it need to be complied in to the main source to work

    Files in the main source to be change

    extract global zip to : aion emu\trunk\AL-Game\src\com\aionemu\gameserver\services
    extract l18n zip to : aion emu\trunk\AL-Game\src\com\aionemu\gameserver\utils


    goto trunk\AL-Game\src\com\aionemu\gameserver\services\player
    and change this in PlayerReviveService.java


    Code:
    public static final void revive(final Player player, int hpPercent, int mpPercent, boolean setSoulsickness, int resurrectionSkill) {
            player.getKnownList().doOnAllPlayers(new Visitor<Player>() {
    
                @Override
                public void visit(Player visitor) {
                    VisibleObject target = visitor.getTarget();
                    if (target != null && target.getObjectId() == player.getObjectId()) {
                        visitor.setTarget(null);
                        PacketSendUtility.sendPacket(visitor, new SM_TARGET_SELECTED(null));
                    }
                }
            
            });
            boolean isNoResurrectPenalty = player.getController().isNoResurrectPenaltyInEffect();
            player.getMoveController().stopFalling(player.getZ());
            player.setPlayerResActivate(false);
            player.getLifeStats().setCurrentHpPercent(isNoResurrectPenalty ? 100 : hpPercent);
            player.getLifeStats().setCurrentMpPercent(isNoResurrectPenalty ? 100 : mpPercent);
            if (player.getCommonData().getDp() > 0 && !isNoResurrectPenalty)
                player.getCommonData().setDp(0);
            if (player.getWorldId() == 300350000)
                player.getCommonData().setDp(4000);
            player.getLifeStats().triggerRestoreOnRevive();
            if ((!isNoResurrectPenalty) && (setSoulsickness)) {
                player.getController().updateSoulSickness(resurrectionSkill);
    goto trunk\AL-Game\src\com\aionemu\gameserver\model\gameobjects\player
    and change this in player.java

    Code:
    package com.aionemu.gameserver.model.gameobjects.player;
    
    import java.sql.Timestamp;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javolution.util.FastList;
    import javolution.util.FastMap;
    
    import com.aionemu.commons.database.dao.DAOManager;
    import com.aionemu.gameserver.configs.administration.AdminConfig;
    import com.aionemu.gameserver.configs.main.MembershipConfig;
    import com.aionemu.gameserver.configs.main.SecurityConfig;
    import com.aionemu.gameserver.controllers.FlyController;
    import com.aionemu.gameserver.controllers.PlayerController;
    import com.aionemu.gameserver.controllers.attack.AggroList;
    import com.aionemu.gameserver.controllers.attack.AttackStatus;
    import com.aionemu.gameserver.controllers.attack.PlayerAggroList;
    import com.aionemu.gameserver.controllers.effect.PlayerEffectController;
    import com.aionemu.gameserver.controllers.movement.PlayerMoveController;
    import com.aionemu.gameserver.controllers.observer.ActionObserver;
    import com.aionemu.gameserver.dao.PlayerVarsDAO;
    import com.aionemu.gameserver.dataholders.DataManager;
    import com.aionemu.gameserver.model.CreatureType;
    import com.aionemu.gameserver.model.Gender;
    import com.aionemu.gameserver.model.PlayerClass;
    import com.aionemu.gameserver.model.Race;
    import com.aionemu.gameserver.model.TribeClass;
    import com.aionemu.gameserver.model.account.Account;
    import com.aionemu.gameserver.model.actions.PlayerActions;
    import com.aionemu.gameserver.model.actions.PlayerMode;
    import com.aionemu.gameserver.model.gameobjects.Creature;
    import com.aionemu.gameserver.model.gameobjects.Item;
    import com.aionemu.gameserver.model.gameobjects.Kisk;
    import com.aionemu.gameserver.model.gameobjects.Npc;
    import com.aionemu.gameserver.model.gameobjects.PersistentState;
    import com.aionemu.gameserver.model.gameobjects.Pet;
    import com.aionemu.gameserver.model.gameobjects.Summon;
    import com.aionemu.gameserver.model.gameobjects.SummonedObject;
    import com.aionemu.gameserver.model.gameobjects.Trap;
    import com.aionemu.gameserver.model.gameobjects.player.AbyssRank.AbyssRankUpdateType;
    import com.aionemu.gameserver.model.gameobjects.player.FriendList.Status;
    import com.aionemu.gameserver.model.gameobjects.player.emotion.EmotionList;
    import com.aionemu.gameserver.model.gameobjects.player.motion.MotionList;
    import com.aionemu.gameserver.model.gameobjects.player.npcFaction.NpcFactions;
    import com.aionemu.gameserver.model.gameobjects.player.title.TitleList;
    import com.aionemu.gameserver.model.gameobjects.state.CreatureState;
    import com.aionemu.gameserver.model.gameobjects.state.CreatureVisualState;
    import com.aionemu.gameserver.model.house.House;
    import com.aionemu.gameserver.model.house.HouseRegistry;
    import com.aionemu.gameserver.model.house.HouseStatus;
    import com.aionemu.gameserver.model.ingameshop.InGameShop;
    import com.aionemu.gameserver.model.items.ItemCooldown;
    import com.aionemu.gameserver.model.items.storage.IStorage;
    import com.aionemu.gameserver.model.items.storage.LegionStorageProxy;
    import com.aionemu.gameserver.model.items.storage.Storage;
    import com.aionemu.gameserver.model.items.storage.StorageType;
    import com.aionemu.gameserver.model.skill.PlayerSkillList;
    import com.aionemu.gameserver.model.stats.container.PlayerGameStats;
    import com.aionemu.gameserver.model.stats.container.PlayerLifeStats;
    import com.aionemu.gameserver.model.team.legion.Legion;
    import com.aionemu.gameserver.model.team.legion.LegionMember;
    import com.aionemu.gameserver.model.team2.TeamMember;
    import com.aionemu.gameserver.model.team2.TemporaryPlayerTeam;
    import com.aionemu.gameserver.model.team2.alliance.PlayerAlliance;
    import com.aionemu.gameserver.model.team2.alliance.PlayerAllianceGroup;
    import com.aionemu.gameserver.model.team2.common.legacy.LootGroupRules;
    import com.aionemu.gameserver.model.team2.group.PlayerGroup;
    import com.aionemu.gameserver.model.templates.BoundRadius;
    import com.aionemu.gameserver.model.templates.flypath.FlyPathEntry;
    import com.aionemu.gameserver.model.templates.item.ItemAttackType;
    import com.aionemu.gameserver.model.templates.item.ItemTemplate;
    import com.aionemu.gameserver.model.templates.item.ItemUseLimits;
    import com.aionemu.gameserver.model.templates.ride.RideInfo;
    import com.aionemu.gameserver.model.templates.stats.PlayerStatsTemplate;
    import com.aionemu.gameserver.model.templates.windstreams.WindstreamPath;
    import com.aionemu.gameserver.model.templates.zone.ZoneType;
    import com.aionemu.gameserver.network.aion.AionConnection;
    import com.aionemu.gameserver.network.aion.serverpackets.SM_STATS_INFO;
    import com.aionemu.gameserver.questEngine.model.QuestState;
    import com.aionemu.gameserver.questEngine.model.QuestStatus;
    import com.aionemu.gameserver.services.HousingService;
    import com.aionemu.gameserver.services.global.FFAService;
    import com.aionemu.gameserver.services.serialkillers.SerialKiller;
    import com.aionemu.gameserver.skillengine.condition.ChainCondition;
    import com.aionemu.gameserver.skillengine.effect.AbnormalState;
    import com.aionemu.gameserver.skillengine.effect.EffectTemplate;
    import com.aionemu.gameserver.skillengine.effect.RebirthEffect;
    import com.aionemu.gameserver.skillengine.effect.ResurrectBaseEffect;
    import com.aionemu.gameserver.skillengine.model.ChainSkills;
    import com.aionemu.gameserver.skillengine.model.Effect;
    import com.aionemu.gameserver.skillengine.model.SkillTemplate;
    import com.aionemu.gameserver.skillengine.task.CraftingTask;
    import com.aionemu.gameserver.utils.PacketSendUtility;
    import com.aionemu.gameserver.utils.rates.Rates;
    import com.aionemu.gameserver.utils.rates.RegularRates;
    import com.aionemu.gameserver.world.World;
    import com.aionemu.gameserver.world.WorldPosition;
    import com.aionemu.gameserver.world.zone.ZoneInstance;
    
    /**
     * This class is representing Player object, it contains all needed data.
     * 
     * @author -Nemesiss-
     * @author SoulKeeper
     * @author alexa026
     * @author cura
     */
    public class Player extends Creature {
    
        public RideInfo ride;
        public InRoll inRoll;
        public InGameShop inGameShop;
        public WindstreamPath windstreamPath;
        private PlayerAppearance playerAppearance;
        private PlayerAppearance savedPlayerAppearance;
        private PlayerCommonData playerCommonData;
        private Account playerAccount;
        private LegionMember legionMember;
        private int specialKills;//External
        private boolean isInFFAPVP;
        private boolean isInCrazy;
        private int rndPoint = 0;
    
      public boolean isInFFAPVP(){
            return isInFFAPVP;
        }
     
        public void setInFFAPVP(boolean isInFFAPVP) {
            this.isInFFAPVP = isInFFAPVP;
        }
    
        public void setSpecialKills(int specialKills) {
            this.specialKills = specialKills;
        }
    
        public int getSpecialKills() {
            return specialKills;
        }
    
        private MacroList macroList;
        private PlayerSkillList skillList;
        private FriendList friendList;
        private BlockList blockList;
        private PetList toyPetList;
        private Mailbox mailbox;
        private PrivateStore store;
        private TitleList titleList;
        private QuestStateList questStateList;
        private RecipeList recipeList;
        private List<House> houses;
    and this:
    Code:
    /**
         * Player enemies:<br>
         * - different race<br>
         * - duel partner<br>
         * - in pvp zone
         * 
         * @param enemy
         * @return
         */
        @Override
        public boolean isEnemyFrom(Player player) {
            if (player.getWorldId() == FFAService.worldId && FFAService.getInstance().isEnemy(player, getController().getOwner()))
                return true;
            return player.getObjectId() != getObjectId()
                && (getAdminEnmity() > 1 || player.getAdminEnmity() > 1 || isPvP(player) || getController().isDueling(player) || (isInsideZoneType(ZoneType.PVP) && player.isInsideZoneType(ZoneType.PVP)
                    && !isInSameTeam(player) && player.getWorldId() != 30350000 && player.getWorldId() != 30350000));
        }
    
        public boolean isAggroIconTo(Player player) {
            if (getAdminEnmity() > 1 || player.getAdminEnmity() > 1)
                return true;
            return !player.getRace().equals(getRace());
        }
    
        private boolean isPvP(Player player) {
            int worldId = player.getWorldId();
            if (!player.getRace().equals(getRace())) {
                if (worldId == 30350000 || worldId == 30350000) {
                    return isInsideZoneType(ZoneType.PVP) && player.isInsideZoneType(ZoneType.PVP);
                }
                return true;
            }
            return false;
        }
    
        private boolean isInDisablePvPZone() {
            List<ZoneInstance> zones = this.getPosition().getMapRegion().getZones(this);
            for (ZoneInstance zone : zones) {
                if (!zone.isPvpAllowed()) {
                    return true;
                }
    goto : trunk\AL-Game\src\com\aionemu\gameserver\services\instance
    and change this in instanceService.java

    Code:
    package com.aionemu.gameserver.services.instance;
    
    import java.util.Iterator;
    
    import javolution.util.FastList;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.aionemu.gameserver.configs.main.AutoGroupConfig;
    import com.aionemu.gameserver.configs.main.CustomConfig;
    import com.aionemu.gameserver.configs.main.MembershipConfig;
    import com.aionemu.gameserver.dataholders.DataManager;
    import com.aionemu.gameserver.instance.InstanceEngine;
    import com.aionemu.gameserver.model.gameobjects.Item;
    import com.aionemu.gameserver.model.gameobjects.VisibleObject;
    import com.aionemu.gameserver.model.gameobjects.player.Player;
    import com.aionemu.gameserver.model.team2.alliance.PlayerAlliance;
    import com.aionemu.gameserver.model.team2.group.PlayerGroup;
    import com.aionemu.gameserver.model.team2.league.League;
    import com.aionemu.gameserver.model.templates.world.WorldMapTemplate;
    import com.aionemu.gameserver.network.aion.SystemMessageId;
    import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
    import com.aionemu.gameserver.services.AutoGroupService;
    import com.aionemu.gameserver.services.HousingService;
    import com.aionemu.gameserver.services.global.FFAStruct;
    import com.aionemu.gameserver.services.teleport.TeleportService2;
    import com.aionemu.gameserver.spawnengine.SpawnEngine;
    import com.aionemu.gameserver.spawnengine.WalkerFormator;
    import com.aionemu.gameserver.utils.PacketSendUtility;
    import com.aionemu.gameserver.utils.ThreadPoolManager;
    import com.aionemu.gameserver.world.World;
    import com.aionemu.gameserver.world.WorldMap;
    import com.aionemu.gameserver.world.WorldMap2DInstance;
    import com.aionemu.gameserver.world.WorldMapInstance;
    import com.aionemu.gameserver.world.WorldMapInstanceFactory;
    import com.aionemu.gameserver.world.WorldMapType;
    import com.aionemu.gameserver.world.zone.ZoneInstance;
    and this:
    Code:
    /**
         * @param worldId
         * @param ownerId
         *          - playerObjectId or Legion id in future
         * @return
         */
        public synchronized static WorldMapInstance getNextAvailableInstance(int worldId, int ownerId) {
            WorldMap map = World.getInstance().getWorldMap(worldId);
    
            if (!map.isInstanceType())
                throw new UnsupportedOperationException("Invalid call for next available instance  of " + worldId);
    
            int nextInstanceId = map.getNextInstanceId();
            WorldMapInstance worldMapInstance = WorldMapInstanceFactory.createWorldMapInstance(map, nextInstanceId, ownerId);
            if(worldMapInstance.isPersonal()){
          log.info("Calling Personal Instance " + worldId + " Owner:" + ownerId);
        } else {
          log.info("Calling Instance " + worldId + " Owner: " + ownerId);
        }
            map.addInstance(nextInstanceId, worldMapInstance);
            SpawnEngine.spawnInstance(worldId, worldMapInstance.getInstanceId(), 0, ownerId);
            InstanceEngine.getInstance().onInstanceCreate(worldMapInstance);
    
            if (map.isInstanceType() && worldId != FFAStruct.worldId) {
                startInstanceChecker(worldMapInstance);
            }
    
            return worldMapInstance;
        }
    and this :

    Code:
    private boolean canDestroySoloInstance() {
                return System.currentTimeMillis() > this.soloInstanceDestroyTime;
            }
    
            private void updateSoloInstanceDestroyTime() {
                this.soloInstanceDestroyTime = System.currentTimeMillis() + SOLO_INSTANCES_DESTROY_DELAY;
            }
    
            @Override
                    public void run() {
                int instanceId = worldMapInstance.getInstanceId();
                int worldId = worldMapInstance.getMapId();
                WorldMap map = World.getInstance().getWorldMap(worldId);
                PlayerGroup registeredGroup = worldMapInstance.getRegisteredGroup();
                if (registeredGroup == null && worldId != FFAStruct.worldId) {
                    if (worldMapInstance.playersCount() == 0) {
                        map.removeWorldMapInstance(instanceId);
                        InstanceService.destroyInstance(worldMapInstance);
                        return;
                    }
                    Iterator<Player> playerIterator = worldMapInstance.playerIterator();
                    int mapId = worldMapInstance.getMapId();
                    while (playerIterator.hasNext()) {
                        Player player = playerIterator.next();
                        if ((player.isOnline()) && (player.getWorldId() == mapId)) {
                            return;
                        }
                    }
                    map.removeWorldMapInstance(instanceId);
                    InstanceService.destroyInstance(worldMapInstance);
                }
                else if (registeredGroup.size() == 0) {
                    map.removeWorldMapInstance(instanceId);
                    InstanceService.destroyInstance(worldMapInstance);
                }
            }
    
        }
    
        public static void onLogOut(Player player) {
            player.getPosition().getWorldMapInstance().getInstanceHandler().onPlayerLogOut(player);
        }
    goto trunk\AL-Game\src\com\aionemu\gameserver\configs\main
    and change paste this in CustomConfig.java

    Code:
     @Property(key = "gameserver.reward.service.enable", defaultValue = "false")
        public static boolean ENABLE_REWARD_SERVICE;
        
        /**
         * FFA System
         */
        @Property(key = "gameserver.ffa.enable", defaultValue = "true")
        public static boolean FFA_ENABLED;
        
        
        /**
         * PvPGrind System
         */
        @Property(key = "gameserver.pvpgrind.update", defaultValue = "0 0 0 ? * *")
        public static String PVP_GRIND_UP_RULE;
        
        @Property(key = "gameserver.pvpgrind.enable", defaultValue = "true")
        public static boolean PVP_GRIND_ENABLE;
        /**
         * Limits Config
         */
        @Property(key = "gameserver.limits.enable", defaultValue = "true")
        public static boolean LIMITS_ENABLED;
    complie and build AL-Game and insert it on libs
    next we need to create the command

    goto Aion Lightning 4.0 - 1-Click by Dwarfpicker v2.5\AIONEmulator\game\config\main

    and in custom.properties insert this

    # ----------------------------
    # FFA System (FreeForAll)
    # ----------------------------
    # Enable FFA System
    # Default: false
    gameserver.ffa.enable = true

    # ----------------------------
    # PvP Grind System
    # ----------------------------
    # Enable PvP Grind System
    # Default: true
    gameserver.pvpgrind.enable = true

    # PvP Grind Update Rule (After Server Restart)
    # Default: 0 0 0 ? * *
    gameserver.pvpgrind.update = 0 0 0 ? * *



    and last extract the ffa command here: Aion Lightning 4.0 - 1-Click by Dwarfpicker v2.5\AIONEmulator\game\data\scripts\system\handlers\admincommands

    change the value in Aion Lightning 4.0 - 1-Click by Dwarfpicker v2.5\AIONEmulator\game\config\administration
    commands.properties

    add this

    fixpath = 3
    fsc = 3
    ffa = 0
    freefly = 3


    test it in game use .ffa enter to enter to the instance .ffa info to see how many players is in
    and .ffa leave to leave the instance

    for me is working everything exept the custom messeges in the instance beacuse is target the l18n/custommassegeid.java
    even if i put the language.xml in the AL-Game\data\scripts\system
    and into handlers the language folder.....
    and also the .ffa leave is not working propetly when you use it, it dosen't teleport you to your previous location..

    SO TEST it and let me know if anyone can fix those 2 things FFA will be perfect.
    Attached Files Attached Files
    Last edited by veygan; 05-03-14 at 05:50 PM.

  7. #7
    Member A7xatomic is offline
    MemberRank
    Oct 2013 Join Date
    54Posts

    Re: Ffa service

    you missing or forgetting the instance script for it, and you missing too more implementations on pvpservice too, a partner develop it on Nextgencore and you are missing too many things.

  8. #8
    Apprentice Michael Batrice is offline
    MemberRank
    Feb 2014 Join Date
    13Posts

    Re: Ffa service

    Its work on aion 4.5 ?

  9. #9
    Novice step1988 is offline
    MemberRank
    Aug 2013 Join Date
    3Posts

    Re: Ffa service

    Good day, did all that is written here, the server has started a bit like all is well. But the comands for players no .FFA does not work. So the problem is that after someone dies in FFA location can not rise immediately, and resurrected on the registered place.
    Please help, what am I doing wrong?



Advertisement