Перейти к содержанию

Jigsaw

Пользователи
  • Публикаций

    86
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Сообщения, опубликованные Jigsaw


  1. Пацаны, эти темы вне времени. Поставил в 2020, успешно забыл, сейчас вернулся к ковырянию и всё работает. Потихоньку кастомизирую лично для себя, играю соло на своем сервере, даже геодату смог поставить )


  2. В 14.04.2021 в 23:17, Phoenix сказал:

    тогда вернее будет вырезать

                        if(count > 10)
                            pointsCount += count % 10 * 118;

    и будет за каждый итем CLAW давать по 1к репы

     

    В 15.04.2021 в 02:22, Rolo сказал:

    Ну не совсем по формуле ниже. :D
    Но насчет вырезать эти строки нафиг - полностью согласен. ))

    Увы, что-то по-прежнему не так

    CRP.png


  3. 23 часа назад, Rolo сказал:

    Судя по названию должно работать, Вы бы не могли выложить сам скрипт отдельно, чтобы не качать всю сборку? ) Возможно там напрямую указана цифра и заданная переменная в награде не используется. 

     

    _510_AClansReputation.java


  4. Привет. Что нужно изменить в квесте, что бы давало не 30, а 1000 репутации за коготь?

    private static final int CLAN_POINTS_REWARD = 1000  - не помогает.

    Я - ноль в джава, перечитывание тем с мануалами о создании и редактировании квестов не помогло.
    Господа говорят, что эта (тык) моя тема относится к ядру, поэтому помощь приветствуется.

    СБОРКА (тык)

    Спойлер

    package quests;

    import l2ft.gameserver.model.pledge.Clan;
    import l2ft.gameserver.model.Player;
    import l2ft.gameserver.model.instances.NpcInstance;
    import l2ft.gameserver.model.quest.Quest;
    import l2ft.gameserver.model.quest.QuestState;
    import l2ft.gameserver.network.l2.s2c.SystemMessage;
    import l2ft.gameserver.scripts.ScriptFile;

    public class _510_AClansReputation extends Quest implements ScriptFile
    {
        private static final int VALDIS = 31331;
        private static final int CLAW = 8767;
        private static final int CLAN_POINTS_REWARD = 1000;

        @Override
        public void onLoad()
        {
        }

        @Override
        public void onReload()
        {
        }

        @Override
        public void onShutdown()
        {
        }

        public _510_AClansReputation()
        {
            super(PARTY_ALL);

            addStartNpc(VALDIS);

            for(int npc = 22215; npc <= 22217; npc++)
                addKillId(npc);
        }

        @Override
        public String onEvent(String event, QuestState st, NpcInstance npc)
        {
            int cond = st.getCond();
            String htmltext = event;
            if(event.equals("31331-3.htm"))
            {
                if(cond == 0)
                {
                    st.setCond(1);
                    st.setState(STARTED);
                }
            }
            else if(event.equals("31331-6.htm"))
            {
                st.playSound(SOUND_FINISH);
                st.exitCurrentQuest(true);
            }
            return htmltext;
        }

        @Override
        public String onTalk(NpcInstance npc, QuestState st)
        {
            String htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>

     


  5.  

    Привет. Сборка First-Team H5 ( https://yadi.sk/d/4mPjaUKlFtCPk ).

    Куда ковырять, что бы зайти в соло камалоку без премиума любому игроку?

    Это не помогает:

    # Solo kamaloka only for premium
    KamalokaNightmaresPremiumOnly = False 

    Скрипт инста:

    Спойлер

    package instances;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.Future;

    import l2ft.commons.threading.RunnableImpl;
    import l2ft.gameserver.ThreadPoolManager;
    import l2ft.gameserver.data.xml.holder.NpcHolder;
    import l2ft.gameserver.idfactory.IdFactory;
    import l2ft.gameserver.model.GameObject;
    import l2ft.gameserver.model.GameObjectsStorage;
    import l2ft.gameserver.model.Player;
    import l2ft.gameserver.model.Spawner;
    import l2ft.gameserver.model.entity.Reflection;
    import l2ft.gameserver.network.l2.s2c.SystemMessage;
    import l2ft.gameserver.templates.InstantZone;
    import l2ft.gameserver.templates.StatsSet;
    import l2ft.gameserver.utils.Location;
    import npc.model.PathfinderInstance;

    public class KamalokaNightmare extends Reflection
    {
        private static final int PATHFINDER = 32485;

        private static final int RANK_1_MIN_POINTS = 500;
        private static final int RANK_2_MIN_POINTS = 2500;
        private static final int RANK_3_MIN_POINTS = 4500;
        private static final int RANK_4_MIN_POINTS = 5500;
        private static final int RANK_5_MIN_POINTS = 7000;
        private static final int RANK_6_MIN_POINTS = 9000;

        private final int _playerId;
        private Future<?> _expireTask;

        private int killedKanabions = 0;
        private int killedDoplers = 0;
        private int killedVoiders = 0;

        private int delay_after_spawn = 0;
        private boolean is_spawn_possible = true;

        public KamalokaNightmare(Player player)
        {
            _playerId = player.getObjectId();
        }

        @Override
        protected void onCreate()
        {
            super.onCreate();

            InstantZone iz = getInstancedZone();
            if(iz != null)
            {
                int time_limit = iz.getTimelimit() * 1000 * 60;
                delay_after_spawn = time_limit / 3;
                startPathfinderTimer(time_limit - delay_after_spawn); // спавн патчфиндера происходит через 2\3 прошедшего времени.
            }
        }
        
        @Override
        protected void onCollapse()
        {
            super.onCollapse();
            
            stopPathfinderTimer();
        }

        public void addKilledKanabion(int type)
        {
            switch(type)
            {
                case 1:
                    killedKanabions++;
                    break;
                case 2:
                    killedDoplers++;
                    break;
                case 3:
                    killedVoiders++;
                    break;
            }
        }

        public int getRank()
        {
            int total = killedKanabions * 10 + killedDoplers * 20 + killedVoiders * 50;
            if(total >= RANK_6_MIN_POINTS)
                return 6;
            else if(total >= RANK_5_MIN_POINTS)
                return 5;
            else if(total >= RANK_4_MIN_POINTS)
                return 4;
            else if(total >= RANK_3_MIN_POINTS)
                return 3;
            else if(total >= RANK_2_MIN_POINTS)
                return 2;
            else if(total >= RANK_1_MIN_POINTS)
                return 1;
            else
                return 0;
        }

        public void startPathfinderTimer(long timeInMillis)
        {
            if(_expireTask != null)
            {
                _expireTask.cancel(false);
                _expireTask = null;
            }

            _expireTask = ThreadPoolManager.getInstance().schedule(new RunnableImpl()
            {
                @Override
                public void runImpl()
                {
                    try
                    {
                        is_spawn_possible = false;
                        for(Spawner s : KamalokaNightmare.this.getSpawns().toArray(new Spawner[KamalokaNightmare.this.getSpawns().size()]))
                            s.deleteAll();

                        KamalokaNightmare.this.getSpawns().clear();

                        List<GameObject> delete = new ArrayList<GameObject>();
                        lock.lock();
                        try
                        {
                            for(GameObject o : _objects)
                                if(!o.isPlayable())
                                    delete.add(o);
                        }
                        finally
                        {
                            lock.unlock();
                        }

                        for(GameObject o : delete)
                            o.deleteMe();

                        Player p = (Player) GameObjectsStorage.findObject(getPlayerId());
                        if(p != null)
                        {
                            p.getPlayer().sendPacket(new SystemMessage(SystemMessage.THIS_DUNGEON_WILL_EXPIRE_IN_S1_MINUTES).addNumber(delay_after_spawn / 60000));

                            InstantZone iz = KamalokaNightmare.this.getInstancedZone();
                            if(iz != null)
                            {
                                String loc = iz.getAddParams().getString("pathfinder_loc", null);
                                if(loc != null)
                                {
                                    PathfinderInstance npc = new PathfinderInstance(IdFactory.getInstance().getNextId(), NpcHolder.getInstance().getTemplate(PATHFINDER));
                                    npc.setSpawnedLoc(Location.parseLoc(loc));
                                    npc.setReflection(KamalokaNightmare.this);
                                    npc.spawnMe(npc.getSpawnedLoc());
                                }
                            }
                        }
                        else
                            collapse();
                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            }, timeInMillis);
        }

        public void stopPathfinderTimer()
        {
            if(_expireTask != null)
            {
                _expireTask.cancel(false);
                _expireTask = null;
            }
        }

        public int getPlayerId()
        {
            return _playerId;
        }

        @Override
        public boolean canChampions()
        {
            return false;
        }

        public boolean isSpawnPossible()
        {
            return is_spawn_possible;
        }
    }

    Xml инста:

    Спойлер

    <!DOCTYPE list SYSTEM "instances.dtd">
    <list>
        <!-- Town of Schuttgart: NPC Pathfinder (Level 75) -->
        <instance id="56" name="Kamaloka, Hall of the Nightmares" maxChannels="10" collapseIfEmpty="10" timelimit="30" dispelBuffs="false">
            <collapse on-party-dismiss="true" timer="60"/>
            <level min="70" max="85"/>
            <party min="1" max="1"/>
            <return loc="42767 -48016 -800"/>
            <teleport loc="48137 -219716 -8752"/>
            <remove itemId="0" count="0" necessary="false"/>
            <give itemId="0" count="0"/>
            <quest id="0"/>
            <reuse resetReuse="30 6 * * *" setUponEntry="true" sharedReuseGroup="2"/>
            <add_parameters>
                <param name="pathfinder_loc" value="49052 -219762 -8752"/>
                <param name="reward_lvl_0" value="13002-8"/>
                <param name="reward_lvl_1" value="13002-8;10860-1"/>
                <param name="reward_lvl_2" value="13002-8;10861-1"/>
                <param name="reward_lvl_3" value="13002-8;10862-1"/>
                <param name="reward_lvl_4" value="13002-8;10863-1"/>
                <param name="reward_lvl_5" value="13002-8;10864-1"/>
                <param name="reward_lvl_6" value="13002-10;10865-1"/>
            </add_parameters>
            <spawns>
                <!-- Sword Kanabion -->
                <spawn mobId="22482" count="6" respawn="30" type="loc">
                    <coords loc="48152 -218792 -8752 -8752"/>
                    <coords loc="49896 -218792 -8752 -8752"/>
                    <coords loc="49896 -220696 -8752 -8752"/>
                    <coords loc="48152 -220696 -8752 -8752"/>
                </spawn>
            </spawns>
        </instance>
    </list>

    И еще херня. Есть конфиг:

    # Включить альтернативное ограничение по количеству чаров в группе для входа в инстанс
    # работает только на тех зонах где есть ограничения
    AllowInstancesPartyManual = true
    # Минимальное количество
    InstancesPartyMin = 2
    # Максимальное количество
    InstancesPartyMax = 9

    Так вот при попытке входа в инст в Delusion Chamber за минимальное количество игроков береться значение максимального. Как исправить? (Кроме  InstancesPartyMax = 2).


  6.  

    11 часов назад, night73 сказал:

    А можете плиз еще подсказать где находятся статы мобов из долины драконов и ЛОА в базе их ИДов нету. где их редактировать ?

    Нажимаешь на моба Shift+клик, смотришь его ID. Потом ищешь его здесь - D:\server\gameserver\data\xml\npc (путь может отличаться в зависимости от сборки)


  7. Привет. Сборка First-Team H5 ( https://yadi.sk/d/4mPjaUKlFtCPk ). Нашел и решил ковырнуть Improved Blessed Earring of Zaken, сделать из него что-нибудь соответствующее названию.

    Получилось всё, кроме надписи базового мдфа на серьге. По факту дает, 104 единицы, как исправить надпись?

    IBZ1.png


  8. Здравствуй, форум!

     

    Я знаю, что существует уйма гайдов по хмл параметрам и их разновидностям. Но, то ли у меня скилл гугла потух, я не смог найти:

     

    <set name="condition" val="32" /> - что это за условие, на что конкретно оно влияет?

     

    [l2emu Gracia Final rev 1950]


  9. Ответ номер 2:

    Смотри приведу тебе пример:

    У тебя есть файлик buff.htm ты хочешь сделать в нем кнопку для перехода на страничку с денсами, так это есть.

    Идем дальше, значит у тебя уже есть файл в котором оформлена страничка денсов, ты переименовываешь его в buff-1.htm, а в файлике buff.htm в байпассе пишешь <a action="bypass -h npc_%objectId%_Chat 1">Денсы</a><br> файлы должны быть в одной папке.

    Надеюсь ты понял меня )

     

    То что выделено зеленым, обрати внимание, эти файлы должны быть с одинаковыми названиями, отличие лишь в том, что ты ставишь номер диалога с нпсом, так можно провернуть бесконечно, соответственно ставишь Char 2 и buff-2.htm название файла не важно, главное что бы с главным диалогом они были одинаковые

    Спасибо, с азами коддинга хтмл я уже знаком ) В том-то и дело, что все как нужно выполнил, поэтому и вопию на форуме.

×
×
  • Создать...