Autor Tema: Adventurer Guide estilo GOD  (Leído 620 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CAI

  • Grado B
  • *
  • Topic Author
  • Mensajes: 257
  • cn
  • Agradecimientos: 93
  • Cronica: : Interludio
  • Revision: 342
  • S.O: Windows 10
  • Serverpack : aCis
Adventurer Guide estilo GOD
« en: Mayo 07, 2014, 08:20:46 pm »
gracias
Este post tiene 2 agradecimientos
  • Añade a tus favoritos
  • navegando por la web, pisteando como un campeon, vi un code que no podia no ponerlo aca, sobre todo xq su creador esta entre nosotros :O

    es un buffer onda newbie guide que te bufea con solo detectarte cerquita, por eso estilo GOD. [L2jServer]


    Código: [Seleccionar]
    /*
         * Copyright (C) 2004-2013 L2J DataPack
         *
         * This file is part of L2J DataPack.
         *
         * L2J DataPack is free software: you can redistribute it and/or modify
         * it under the terms of the GNU General Public License as published by
         * the Free Software Foundation, either version 3 of the License, or
         * (at your option) any later version.
         *
         * L2J DataPack is distributed in the hope that it will be useful,
         * but WITHOUT ANY WARRANTY; without even the implied warranty of
         * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
         * General Public License for more details.
         *
         * You should have received a copy of the GNU General Public License
         * along with this program. If not, see <http://www.gnu.org/licenses/>.
         */
        package custom.NpcBufferGod;
         
        /**
         * @autor: fissban
         */
         
        import java.util.Collection;
         
        import ai.npc.AbstractNpcAI;
         
        import com.l2jserver.gameserver.ThreadPoolManager;
        import com.l2jserver.gameserver.datatables.SkillTable;
        import com.l2jserver.gameserver.model.Location;
        import com.l2jserver.gameserver.model.actor.L2Npc;
        import com.l2jserver.gameserver.model.actor.L2Summon;
        import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
        import com.l2jserver.gameserver.model.base.ClassId;
        import com.l2jserver.gameserver.model.holders.SkillHolder;
        import com.l2jserver.gameserver.model.skills.L2Skill;
         
        public class NpcBufferGOD extends AbstractNpcAI
        {
            // NPC
            private static final int Newbie_Helper = 32327;
            // Spawn state
            private static boolean SPAWNED = false;
           
            static final Location[] SPAWNS =
            {
                // Sacado de la DB
                new Location(17136, 144896, -3008, 26624),
                new Location(43556, -47608, -792, 36864),
                new Location(82385, 53283, -1488, 16384),
                new Location(82879, 149380, -3469, 34120),
                new Location(87152, -141328, -1336, 49296),
                new Location(111168, 221008, -3544, 0),
                new Location(116935, 77258, -2688, 40960),
                new Location(147099, 25939, -2008, 49151),
                new Location(148077, -55367, -2728, 32768),
                new Location(-84081, 243227, -3728, 9000),
                new Location(115632, -177996, -896, 32768),
                new Location(-45032, -113598, -192, 32768),
                new Location(12111, 16686, -4584, 63240),
                new Location(45475, 48359, -3056, 49152),
                new Location(-119692, 44504, 360, 33324),
                new Location(-13920, 121977, -2984, 33000),
                new Location(-83123, 150868, -3120, 0),
            };
           
            protected NpcBufferGOD(String name, String descr)
            {
                super(name, descr);
               
                addStartNpc(Newbie_Helper);
                addSpawnId(Newbie_Helper);
                addTalkId(Newbie_Helper);
               
                if (!SPAWNED)
                {
                    for (Location spawn : SPAWNS)
                    {
                        addSpawn(Newbie_Helper, spawn, false, 0);
                    }
                    SPAWNED = true;
                }
            }
           
            @Override
            public String onSpawn(L2Npc npc)
            {
                ThreadPoolManager.getInstance().scheduleGeneral(new BufferAI(npc), 5000);
                return super.onSpawn(npc);
            }
           
            @Override
            public String onTalk(L2Npc npc, L2PcInstance player)
            {
                return "32327.htm";
            }
           
            protected class BufferAI implements Runnable
            {
                private final L2Npc _npc;
               
                // Skills
                private final SkillHolder HASTE_1 = new SkillHolder(4327, 1);
                private final SkillHolder HASTE_2 = new SkillHolder(5632, 1);
                private final SkillHolder CUBIC = new SkillHolder(4338, 1);
                private final SkillHolder[] FIGHTER_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                };
                private final SkillHolder[] MAGE_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
                private final SkillHolder[] SUMMON_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
               
                protected BufferAI(L2Npc caster)
                {
                    _npc = caster;
                }
               
                @Override
                public void run()
                {
                    if ((_npc == null) || !_npc.isVisible())
                    {
                        return;
                    }
                   
                    Collection<L2PcInstance> plrs = _npc.getKnownList().getKnownPlayers().values();
                    for (L2PcInstance player : plrs)
                    {
                        if ((player == null) || player.isInvul() || player.isDead() || (player.getLevel() > 75) || (player.getLevel() < 6) || player.isCursedWeaponEquipped() || (player.getKarma() != 0) || !_npc.isInsideRadius(player, 500, false, false))
                        {
                            continue;
                        }
                        // summons
                        if ((player.getSummon() != null) && player.getSummon().isServitor())
                        {
                            for (SkillHolder skills : SUMMON_BUFFS)
                            {
                                CastSummon(player.getSummon(), skills.getSkill());
                            }
                            if (player.getLevel() > 40)
                            {
                                CastSummon(player.getSummon(), HASTE_2.getSkill());
                            }
                            else
                            {
                                CastSummon(player.getSummon(), HASTE_1.getSkill());
                            }
                        }
                        // magos
                        if (player.isMageClass() && (player.getClassId() != ClassId.overlord) && (player.getClassId() != ClassId.warcryer))
                        {
                            for (SkillHolder skills : MAGE_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                        }
                        // warrios
                        else
                        {
                            for (SkillHolder skills : FIGHTER_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                            if (player.getLevel() > 40)
                            {
                                CastPlayer(player, HASTE_2.getSkill());
                            }
                            else
                            {
                                CastPlayer(player, HASTE_1.getSkill());
                            }
                        }
                        if ((player.getLevel() >= 16) && (player.getLevel() <= 34))
                        {
                            player.doSimultaneousCast(CUBIC.getSkill());
                        }
                    }
                    ThreadPoolManager.getInstance().scheduleGeneral(this, 3000);
                }
               
                // metodo para los players
                private boolean CastPlayer(L2PcInstance player, L2Skill skill)
                {
                    if (player.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, player);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(player, player);
                        return true;
                    }
                    return false;
                }
               
                // metodo para los summons
                private boolean CastSummon(L2Summon summon, L2Skill skill)
                {
                    if (summon.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, summon);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(summon, summon);
                        return true;
                    }
                    return false;
                }
            }
           
            public static void main(String[] args)
            {
                new NpcBufferGOD(NpcBufferGOD.class.getSimpleName(), "ai/npc");
            }
           
        }

    Creador: Fissban
    « Última modificación: Mayo 08, 2014, 12:02:05 am por CAI »
    Sin Dolor No Hay Ganancia


    Desconectado Zer0

    • Grado B
    • *
    • Mensajes: 255
    • 00
    • Agradecimientos: 32
      • asd.com
    • Cronica: : Interlude
    • Revision: Last
    • S.O: linux Debian
    • Serverpack : Jacis - jFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #1 en: Mayo 07, 2014, 08:25:04 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    es buenisimo. :)

    Desconectado Fissban

    • AdminSite
    • *
    • Mensajes: 5588
    • ar
    • Agradecimientos: 1644
      • Mis Proyectos
    • Cronica: : Scions of Destiny
    • Revision: Last
    • S.O: Windows 10
    • Serverpack : L2jAdmins
    Re:Adventurer Guide estilo GOD
    « Respuesta #2 en: Mayo 07, 2014, 11:32:52 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    me parece q tendre q cambiar mi nombre y ponerme Z en lugar de las S porq son varios los q me lo escriben mal xD

    Conectado ReynalDev

    • Administrator
    • *
    • Mensajes: 4746
    • mx
    • Agradecimientos: 1660
    • I took a pill in Ibiza
      • ReynalDev
    • Cronica: : Interlude, C4
    • Revision: 1132, FREE,582
    • S.O: Linux CentOS
    • Serverpack : Frozen,aCis,Lisvus
    Re:Adventurer Guide estilo GOD
    « Respuesta #3 en: Mayo 07, 2014, 11:34:01 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Dicen que todos tenemos un gemelo, ¿acaso es el tuyo?  ;)
    Hay dos caminos; aprender a hacer lo que quieres o pagar para que alguien más lo haga.
    WTS Servicios de desarrollo
    - Facebook: https://goo.gl/DCzNiG
    - Youtube: https://goo.gl/a7m6tc
    - Messenger: https://goo.gl/QzgEBe

    Desconectado CAI

    • Grado B
    • *
    • Topic Author
    • Mensajes: 257
    • cn
    • Agradecimientos: 93
    • Cronica: : Interludio
    • Revision: 342
    • S.O: Windows 10
    • Serverpack : aCis
    Re:Adventurer Guide estilo GOD
    « Respuesta #4 en: Mayo 08, 2014, 12:01:43 am »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    creo q es ams facil cambiar a una persona q cambiar lo que piensan muchisimas de ellas, cambiate el name fiZZ xD mentira, es chiste, ahi lo corrijo
    Sin Dolor No Hay Ganancia


    Desconectado tensador

    • No Grade
    • *
    • Mensajes: 10
    • Agradecimientos: 0
    • Cronica: : Interlude
    • Revision: 1004
    • S.O: Windows 7
    • Serverpack : L2JFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #5 en: Enero 19, 2019, 08:03:12 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Es Imposible adaptarlo a frozen ?

    Desconectado Fissban

    • AdminSite
    • *
    • Mensajes: 5588
    • ar
    • Agradecimientos: 1644
      • Mis Proyectos
    • Cronica: : Scions of Destiny
    • Revision: Last
    • S.O: Windows 10
    • Serverpack : L2jAdmins
    Re:Adventurer Guide estilo GOD
    « Respuesta #6 en: Enero 19, 2019, 08:57:18 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Es Imposible adaptarlo a frozen ?
    en realidad es bastante sencillo

    Desconectado tensador

    • No Grade
    • *
    • Mensajes: 10
    • Agradecimientos: 0
    • Cronica: : Interlude
    • Revision: 1004
    • S.O: Windows 7
    • Serverpack : L2JFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #7 en: Enero 19, 2019, 10:15:59 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    No tengo idea por dónde empezar siempre que lo intento siempre me dan errores

    Desconectado tensador

    • No Grade
    • *
    • Mensajes: 10
    • Agradecimientos: 0
    • Cronica: : Interlude
    • Revision: 1004
    • S.O: Windows 7
    • Serverpack : L2JFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #8 en: Enero 23, 2019, 11:42:45 am »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
  • hola trate de adaptarlo lo mas que pude y al compilar no da error pero no me funciona alguna idea de por que?

    Código: [Seleccionar]
        package com.l2jfrozen.gameserver.model.actor.instance;
         
        /**
         * @autor: fissban
         */
         
        import java.util.Collection;
         

         
        import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
        import com.l2jfrozen.gameserver.datatables.SkillTable;
        import com.l2jfrozen.gameserver.model.Location;
        import com.l2jfrozen.gameserver.model.L2Summon;
        import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
        import com.l2jfrozen.gameserver.model.base.ClassId;
        import com.l2jfrozen.gameserver.templates.L2NpcTemplate;
        import com.l2jfrozen.gameserver.skills.SkillHolder;
        import com.l2jfrozen.gameserver.model.L2Skill;
         
        public class L2BufferGODInstance extends L2NpcInstance
        {
            // Constructor
            public L2BufferGODInstance(int objectId, L2NpcTemplate template)
            {
                super(objectId, template);
            }
            // NPC
            private static final int Newbie_Helper = 32327;
            // Spawn state
            private static boolean SPAWNED = false;
           
            static final Location[] SPAWNS =
            {
                // Sacado de la DB
                new Location(17136, 144896, -3008, 26624),
                new Location(43556, -47608, -792, 36864),
                new Location(82385, 53283, -1488, 16384),
                new Location(82879, 149380, -3469, 34120),
                new Location(87152, -141328, -1336, 49296),
                new Location(83692, 148378, -3471, 0),
                new Location(116935, 77258, -2688, 40960),
                new Location(147099, 25939, -2008, 49151),
                new Location(148077, -55367, -2728, 32768),
                new Location(-84081, 243227, -3728, 9000),
                new Location(115632, -177996, -896, 32768),
                new Location(-45032, -113598, -192, 32768),
                new Location(12111, 16686, -4584, 63240),
                new Location(45475, 48359, -3056, 49152),
                new Location(-119692, 44504, 360, 33324),
                new Location(-13920, 121977, -2984, 33000),
                new Location(-83123, 150868, -3120, 0),
            };
           
            {
               
                addStartNpc(Newbie_Helper);
                addSpawnId(Newbie_Helper);
                addTalkId(Newbie_Helper);
               
                if (!SPAWNED)
                {
                    for (Location spawn : SPAWNS)
                    {
                        addSpawn(Newbie_Helper, spawn, false, 0);
                    }
                    SPAWNED = true;
                }
            }
           
            @Override
            public String onSpawn(L2NpcInstance npc)
            {
                ThreadPoolManager.getInstance().scheduleGeneral(new BufferAI(npc), 5000);
                return super.onSpawn(npc);
            }
           

            /**
    * @param newbieHelper
    */
    private void addStartNpc(int newbieHelper)
    {
    // TODO Auto-generated method stub

    }


    /**
    * @param newbieHelper
    */
    private void addSpawnId(int newbieHelper)
    {
    // TODO Auto-generated method stub

    }


    /**
    * @param newbieHelper
    */
    private void addTalkId(int newbieHelper)
    {
    // TODO Auto-generated method stub

    }


    /**
    * @param newbieHelper
    * @param spawn
    * @param b
    * @param i
    */
    private void addSpawn(int newbieHelper, Location spawn, boolean b, int i)
    {
    // TODO Auto-generated method stub

    }


    public String onTalk(L2NpcInstance npc, L2PcInstance player)
            {
                return "32327.htm";
            }
           
            protected class BufferAI implements Runnable
            {
                private final L2NpcInstance _npc;
               
                // Skills
                private final SkillHolder HASTE_1 = new SkillHolder(4327, 1);
                private final SkillHolder HASTE_2 = new SkillHolder(5632, 1);
                private final SkillHolder CUBIC = new SkillHolder(4338, 1);
                private final SkillHolder[] FIGHTER_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                };
                private final SkillHolder[] MAGE_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
                private final SkillHolder[] SUMMON_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
               
                protected BufferAI(L2NpcInstance caster)
                {
                    _npc = caster;
                }
               
                @Override
                public void run()
                {
                    if ((_npc == null) || !_npc.isVisible())
                    {
                        return;
                    }
                   
                    Collection<L2PcInstance> plrs = _npc.getKnownList().getKnownPlayers().values();
                    for (L2PcInstance player : plrs)
                    {
                        if ((player == null) || player.isInvul() || player.isDead() || (player.getLevel() > 75) || (player.getLevel() < 6) || player.isCursedWeaponEquipped() || (player.getKarma() != 0) || !_npc.isInsideRadius(player, 500, false, false))
                        {
                            continue;
                        }

                        // magos
                        if (player.isMageClass() && (player.getClassId() != ClassId.overlord) && (player.getClassId() != ClassId.warcryer))
                        {
                            for (SkillHolder skills : MAGE_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                        }
                        // warrios
                        else
                        {
                            for (SkillHolder skills : FIGHTER_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                            if (player.getLevel() > 40)
                            {
                                CastPlayer(player, HASTE_2.getSkill());
                            }
                            else
                            {
                                CastPlayer(player, HASTE_1.getSkill());
                            }
                        }
                        if ((player.getLevel() >= 16) && (player.getLevel() <= 34))
                        {
                            player.doSimultaneousCast(CUBIC.getSkill());
                        }
                    }
                    ThreadPoolManager.getInstance().scheduleGeneral(this, 3000);
                }
               
                // metodo para los players
                private boolean CastPlayer(L2PcInstance player, L2Skill skill)
                {
                    if (player.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, player);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(player, player);
                        return true;
                    }
                    return false;
                }
               
                // metodo para los summons
                private boolean CastSummon(L2Summon summon, L2Skill skill)
                {
                    if (summon.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, summon);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(summon, summon);
                        return true;
                    }
                    return false;
                }
            }
           
            public static void main(String[] args)
            {
               
            }
           
        }

    Desconectado MirandaCronox

    • No Grade
    • *
    • Mensajes: 1
    • Agradecimientos: 0
    • Revision: 374
    • S.O: 12
    • Serverpack : JaCis
    Re:Adventurer Guide estilo GOD
    « Respuesta #9 en: Enero 23, 2019, 02:47:23 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    una foto almenos

    Desconectado Fissban

    • AdminSite
    • *
    • Mensajes: 5588
    • ar
    • Agradecimientos: 1644
      • Mis Proyectos
    • Cronica: : Scions of Destiny
    • Revision: Last
    • S.O: Windows 10
    • Serverpack : L2jAdmins
    Re:Adventurer Guide estilo GOD
    « Respuesta #10 en: Enero 23, 2019, 03:14:00 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    el npc estaba creado para ser usado como una "quest" si tu lo pasas a ina isntancia de L2Npc tendras q hacerle varias adaptaciones de los metodos.

    Desconectado tensador

    • No Grade
    • *
    • Mensajes: 10
    • Agradecimientos: 0
    • Cronica: : Interlude
    • Revision: 1004
    • S.O: Windows 7
    • Serverpack : L2JFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #11 en: Enero 23, 2019, 03:55:32 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    hola gracias por responder y en ese caso lo deberia de poner aca com.l2jfrozen.gameserver.model.quest o en que lugar seria

    lo puse aca pero AbstractNpcAI en l2jfrozen no lo encuentro

    « Última modificación: Enero 23, 2019, 04:03:51 pm por tensador »

    Desconectado tensador

    • No Grade
    • *
    • Mensajes: 10
    • Agradecimientos: 0
    • Cronica: : Interlude
    • Revision: 1004
    • S.O: Windows 7
    • Serverpack : L2JFrozen
    Re:Adventurer Guide estilo GOD
    « Respuesta #12 en: Enero 23, 2019, 04:33:52 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
  • hola lo puse no me dio ningun error de compilacion pero no me funciono




    Código: [Seleccionar]
    /*
         * Copyright (C) 2004-2013 L2J DataPack
         *
         * This file is part of L2J DataPack.
         *
         * L2J DataPack is free software: you can redistribute it and/or modify
         * it under the terms of the GNU General Public License as published by
         * the Free Software Foundation, either version 3 of the License, or
         * (at your option) any later version.
         *
         * L2J DataPack is distributed in the hope that it will be useful,
         * but WITHOUT ANY WARRANTY; without even the implied warranty of
         * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
         * General Public License for more details.
         *
         * You should have received a copy of the GNU General Public License
         * along with this program. If not, see <http://www.gnu.org/licenses/>.
         */
        package com.l2jfrozen.custom;
         
        /**
         * @autor: fissban
         */
         
        import java.util.Collection;
         
        import com.l2jfrozen.gameserver.model.quest.Quest;
         
        import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
        import com.l2jfrozen.gameserver.datatables.SkillTable;
        import com.l2jfrozen.gameserver.model.L2Skill;
        import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
        import com.l2jfrozen.gameserver.model.L2Summon;
        import com.l2jfrozen.gameserver.model.Location;
        import com.l2jfrozen.gameserver.model.base.ClassId;
        import com.l2jfrozen.gameserver.skills.SkillHolder;
        import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
         
        public class NpcBufferGOD extends Quest
        {
            // NPC
            private static final int Newbie_Helper = 32327;
            // Spawn state
            private static boolean SPAWNED = false;
           
            static final Location[] SPAWNS =
            {
                // Sacado de la DB
                new Location(17136, 144896, -3008, 26624),
                new Location(43556, -47608, -792, 36864),
                new Location(82385, 53283, -1488, 16384),
                new Location(82879, 149380, -3469, 34120),
                new Location(87152, -141328, -1336, 49296),
                new Location(111168, 221008, -3544, 0),
                new Location(116935, 77258, -2688, 40960),
                new Location(147099, 25939, -2008, 49151),
                new Location(148077, -55367, -2728, 32768),
                new Location(-84081, 243227, -3728, 9000),
                new Location(115632, -177996, -896, 32768),
                new Location(-45032, -113598, -192, 32768),
                new Location(12111, 16686, -4584, 63240),
                new Location(45475, 48359, -3056, 49152),
                new Location(-119692, 44504, 360, 33324),
                new Location(-13920, 121977, -2984, 33000),
                new Location(-83123, 150868, -3120, 0),
            };
           
        public NpcBufferGOD(final int questId, final String name, final String descr)
        {
        super(questId, name, descr);
               
                addStartNpc(Newbie_Helper);
                addSpawnId(Newbie_Helper);
                addTalkId(Newbie_Helper);
               
                if (!SPAWNED)
                {
                    for (Location spawn : SPAWNS)
                    {
                        addSpawn(Newbie_Helper, spawn, false, 0);
                    }
                    SPAWNED = true;
                }
            }
           
            /**
    * @param newbieHelper
    * @param spawn
    * @param b
    * @param i
    */
    private void addSpawn(int newbieHelper, Location spawn, boolean b, int i)
    {
    // TODO Auto-generated method stub

    }

    @Override
            public String onSpawn(L2NpcInstance npc)
            {
                ThreadPoolManager.getInstance().scheduleGeneral(new BufferAI(npc), 5000);
                return super.onSpawn(npc);
            }
           
            @Override
            public String onTalk(L2NpcInstance npc, L2PcInstance player)
            {
                return "32327.htm";
            }
           
            protected class BufferAI implements Runnable
            {
                private final L2NpcInstance _npc;
               
                // Skills
                private final SkillHolder HASTE_1 = new SkillHolder(4327, 1);
                private final SkillHolder HASTE_2 = new SkillHolder(5632, 1);
                private final SkillHolder CUBIC = new SkillHolder(4338, 1);
                private final SkillHolder[] FIGHTER_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                };
                private final SkillHolder[] MAGE_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
                private final SkillHolder[] SUMMON_BUFFS =
                {
                    new SkillHolder(4322, 1), // Wind Walk
                    new SkillHolder(4323, 1), // Shield
                    new SkillHolder(5637, 1), // Magic Barrier
                    new SkillHolder(4324, 1), // Bless the Body
                    new SkillHolder(4325, 1), // Vampiric Rage
                    new SkillHolder(4326, 1), // Regeneration
                    new SkillHolder(4328, 1), // Bless the Soul
                    new SkillHolder(4329, 1), // Acumen
                    new SkillHolder(4330, 1), // Concentration
                    new SkillHolder(4331, 1), // Empower
                };
               
                protected BufferAI(L2NpcInstance caster)
                {
                    _npc = caster;
                }
               
                @Override
                public void run()
                {
                    if ((_npc == null) || !_npc.isVisible())
                    {
                        return;
                    }
                   
                    Collection<L2PcInstance> plrs = _npc.getKnownList().getKnownPlayers().values();
                    for (L2PcInstance player : plrs)
                    {
                        if ((player == null) || player.isInvul() || player.isDead() || (player.getLevel() > 75) || (player.getLevel() < 6) || player.isCursedWeaponEquipped() || (player.getKarma() != 0) || !_npc.isInsideRadius(player, 500, false, false))
                        {
                            continue;
                        }
                        // summons
                        if ((player.getSummon() != null) && player.getSummon().isServitor())
                        {
                            for (SkillHolder skills : SUMMON_BUFFS)
                            {
                                CastSummon(player.getSummon(), skills.getSkill());
                            }
                            if (player.getLevel() > 80)
                            {
                                CastSummon(player.getSummon(), HASTE_2.getSkill());
                            }
                            else
                            {
                                CastSummon(player.getSummon(), HASTE_1.getSkill());
                            }
                        }
                        // magos
                        if (player.isMageClass() && (player.getClassId() != ClassId.overlord) && (player.getClassId() != ClassId.warcryer))
                        {
                            for (SkillHolder skills : MAGE_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                        }
                        // warrios
                        else
                        {
                            for (SkillHolder skills : FIGHTER_BUFFS)
                            {
                                CastPlayer(player, skills.getSkill());
                            }
                            if (player.getLevel() > 80)
                            {
                                CastPlayer(player, HASTE_2.getSkill());
                            }
                            else
                            {
                                CastPlayer(player, HASTE_1.getSkill());
                            }
                        }
                        if ((player.getLevel() >= 80) && (player.getLevel() <= 80))
                        {
                            player.doSimultaneousCast(CUBIC.getSkill());
                        }
                    }
                    ThreadPoolManager.getInstance().scheduleGeneral(this, 3000);
                }
               
                // metodo para los players
                private boolean CastPlayer(L2PcInstance player, L2Skill skill)
                {
                    if (player.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, player);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(player, player);
                        return true;
                    }
                    return false;
                }
               
                // metodo para los summons
                private boolean CastSummon(L2Summon summon, L2Skill skill)
                {
                    if (summon.getFirstEffect(skill) == null)
                    {
                        skill.getEffects(_npc, summon);
                        SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()).getEffects(summon, summon);
                        return true;
                    }
                    return false;
                }
            }
           
            public static void main(String[] args)
            {
                new NpcBufferGOD(Newbie_Helper, NpcBufferGOD.class.getSimpleName(), "ai/npc");
            }
           
        }