Event Medals Эвент Медали Бехтеля Chronicle c4

wioso

Пляшущий с бубном
Участник
Сообщения
144
Розыгрыши
0
Репутация
22
Реакции
126
Баллы
208
Хроники
  1. Scions of Destiny
Исходники
Присутствуют
Сборка
Buld team ( Lisvus) шараш монтаж
Всем привет, есть эвент который активируется или как бы активируется в конфигах ( Эвент Медали Бехтеля)
Суть вопроса, идет запрос через НПС на то или иное действие <a action="bypass -h npc_%objectId%_event 1">Покажи что я могу получить.</a>
Куда ссылается эвент, выдача, или что там ( при нажатие тебя переводит в лог окно выбора предмета( ГМ может обменять медали, просто персонаж не может обменять медали( не чего не происходит вообще ( не ошибки, нечего ) Не дает предмет)
npc_%objectId%_event 1 куда идет запрос ? Все квесты перешарил, весь билд просмотрел, куда он ссылается ( чтоб получить уровень от 1-4 и выдать предметы у другого кота ) Откуда то он берет запрос ведь, где он лежит ? Кто подскажет ( трудно сказать чья сборка) Хроники 4 , есть еще классификация тех же НПС запросов но под другим ИД (HTML) Запрос <a action="bypass -h npc_%objectId%_Chat 3">"I want to trade medals for prizes."</a><br>
Идем в этот диалог под номером 3 там <a action="bypass -h menu_select?ask=-303&reply=501">"I want to trade a medal for a prize."</a> Куда, что , почему ?:)
Самое интересное , если в этих котов прикрутить запрос на мультисел, предметы видно, получить обычному игроку нельзя ))
 
Смотри какой класс типа нпс прописан у эвентовых нпс, найди его и там и будут скорее всего обработки байпассов вида "_event"

Ну а байпассы вида menu_select обычно обрабатываются в AI, в методе вида onEvtMenuSelected или похожем.
Притом с ask равным -303 скорее всего где-то в базовых аи, т.к. это значение по оффу как раз в основном обрабатывает запросы мультиселов, чей ид указывается в reply.
 
Смотри какой класс типа нпс прописан у эвентовых нпс, найди его и там и будут скорее всего обработки байпассов вида "_event"

Ну а байпассы вида menu_select обычно обрабатываются в AI, в методе вида onEvtMenuSelected или похожем.
Притом с ask равным -303 скорее всего где-то в базовых аи, т.к. это значение по оффу как раз в основном обрабатывает запросы мультиселов, чей ид указывается в reply.
отдельно по классу не ищет в разных .java находит конкретно папку в java\net\sf\l2j\gameserver\events там лежит прям отдельно обработчик под названием EventMedals.java , при билде данная папка с events не создается, и не добавляется , существующая папка в самом сервере имеет единственное относящиеся к квестам это gameserver\data\scripts\custom есть также и Ai но там в основном квестовые босы ( баюм антарас валакас и тд,) все они подпапки, папки как в древние времена заносятся в __init__.py конкретной папки с квестами, но в основном они добавлены в отдельный файл который обрабатывает gameserver при старте это gameserver\data\scripts.cfg
1. JavaBuild\java\net\sf\l2j\gameserver (commons,loginserver папки) там также в этой деректории l2j лежат файлы Config.java,Server.java
упоменание в них про eventmedal внутри нету, может сам билд не прописан на эти файлы при компиляции сборки ? Как это поправить ?

Самое интересное упоминание любой зацепки в существующем компиле сервера НЕТ , но выполнить условие с 1-4 дает и присваивает соответсвующий предмет для просмотра содержимого в магазине выдачи предметов за медали, но обычным персонажем взять нельзя, а ГМ может и то и другое. что за бред ....
Код:
/*
package net.sf.l2j.gameserver.events;

import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.idfactory.IdFactory;
import net.sf.l2j.gameserver.instancemanager.EventsDropManager;
import net.sf.l2j.gameserver.instancemanager.EventsDropManager.ruleType;
import net.sf.l2j.gameserver.lib.Rnd;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Multisell;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.serverpackets.ItemList;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;

public class EventMedals
{
    private static final Logger _log = Logger.getLogger(EventMedals.class.getName());
    
    private static int[] BAGES =
    {
        6399,
        6400,
        6401,
        6402
    };
    
    private static int[][] LOC1 =
    {
        {
            80807,
            149140,
            -3469
        },
        {
            148045,
            25684,
            -2013
        },
        {
            81976,
            53912,
            -1496
        },
        {
            18018,
            145348,
            -3058
        },
        {
            110561,
            219833,
            -3672
        },
        {
            -14731,
            122721,
            -3117
        },
        {
            147343,
            -56668,
            -2781
        },
        {
            86947,
            -141731,
            -1342
        },
        {
            42936,
            -47430,
            -801
        }
    };
    
    private static int[][] LOC2 =
    {
        {
            80807,
            149066,
            -3469
        },
        {
            148122,
            25684,
            -2013
        },
        {
            81967,
            53842,
            -1496
        },
        {
            18073,
            145284,
            -3058
        },
        {
            110561,
            219769,
            -3672
        },
        {
            -14731,
            122786,
            -3117
        },
        {
            147310,
            -56732,
            -2781
        },
        {
            86918,
            -141668,
            -1342
        },
        {
            42943,
            -47525,
            -801
        }
    };
    
    private static int[][] LOCL =
    {
        {
            78249,
            149122,
            -3597
        },
        {
            147296,
            29411,
            -2269
        },
        {
            79243,
            55847,
            -1564
        },
        {
            19857,
            144991,
            -3108
        },
        {
            110357,
            221201,
            -3543
        },
        {
            -15940,
            125109,
            -3133
        },
        {
            144446,
            -55333,
            -2981
        },
        {
            84064,
            -143408,
            -1542
        },
        {
            45757,
            -48676,
            -798
        }
    };
    
    public static void addDrop()
    {
        int item[] =
        {
            6392,
            6393
        };
        
        int cnt[] =
        {
            1,
            1
        };
        
        int chance[] =
        {
            Config.MEDAL_CHANCE1,
            Config.MEDAL_CHANCE2
        };
        
        EventsDropManager.getInstance().addRule("Medals", ruleType.ALL_NPC, item, cnt, chance, true);
    }
    
    public static void spawnEventManagers()
    {
        L2NpcTemplate template1;
        L2NpcTemplate template2;
        template1 = NpcTable.getInstance().getTemplate(31228);
        template2 = NpcTable.getInstance().getTemplate(31229);
        
        for (int i = 0; i < 9; i++)
        {
            L2NpcInstance medalNpc1 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template1);
            medalNpc1.spawnMe(LOC1[i][0], LOC1[i][1], LOC1[i][2]);
            L2NpcInstance medalNpc2 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template2);
            medalNpc2.spawnMe(LOC2[i][0], LOC2[i][1], LOC2[i][2]);
        }
        
        L2NpcInstance medalRandomNpc = new L2NpcInstance(IdFactory.getInstance().getNextId(), template2);
        int i = Rnd.get(9);
        medalRandomNpc.spawnMe(LOCL[i][0], LOCL[i][1], LOCL[i][2]);
        L2NpcTemplate template;
        template = NpcTable.getInstance().getTemplate(32130);
        L2NpcInstance EvManager1 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        L2NpcInstance EvManager2 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        L2NpcInstance EvManager3 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        L2NpcInstance EvManager4 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        L2NpcInstance EvManager5 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        L2NpcInstance EvManager6 = new L2NpcInstance(IdFactory.getInstance().getNextId(), template);
        EvManager1.spawnMe(148482, 27861, -2266);// aden
        EvManager2.spawnMe(82207, 148602, -3460);// giran
        EvManager3.spawnMe(80688, 55629, -1550);// oren
        EvManager4.spawnMe(16175, 142756, -2700);// dion
        EvManager5.spawnMe(-14734, 122689, -3110);// gludio
        EvManager6.spawnMe(-82660, 151678, -3123);// gludin
    }
    
    public static void startEvent()
    {
        boolean started = false;
        
        if (Config.MEDAL_DROP)
        {
            addDrop();
            started = true;
        }
        
        if (Config.MEDAL_SPAWN)
        {
            spawnEventManagers();
            started = true;
        }
        
        if (started)
        {
            _log.info("[Medals]: On.");
        }
        else
        {
            _log.info("[Medals]: Off.");
        }
    }
    
    private static void sendHtml(L2PcInstance player, String val)
    {
        NpcHtmlMessage html = new NpcHtmlMessage(1);
        html.setFile("data/html/default/" + val + ".htm");
        player.sendPacket(html);
    }
    
    public static void exchangeItem(L2PcInstance player, int val)
    {
        if (val == 1)
        {
            if (player.getInventory().getItemByItemId(BAGES[0]) != null)
            {
                L2Multisell.getInstance().createMultiSell(31228002, player, false, null);
            }
            else if (player.getInventory().getItemByItemId(BAGES[1]) != null)
            {
                L2Multisell.getInstance().createMultiSell(31228003, player, false, null);
            }
            else if (player.getInventory().getItemByItemId(BAGES[2]) != null)
            {
                L2Multisell.getInstance().createMultiSell(31228004, player, false, null);
            }
            else if (player.getInventory().getItemByItemId(BAGES[3]) != null)
            {
                L2Multisell.getInstance().createMultiSell(31228005, player, false, null);
            }
            else
            {
                L2Multisell.getInstance().createMultiSell(31228001, player, false, null);
            }
            
            return;
        }
        else if (val == 2)
        {
            if (player.getInventory().getItemByItemId(6393) == null)
            {
                sendHtml(player, "31229-4");
                return;
            }
            
            L2ItemInstance item1 = player.getInventory().getItemByItemId(BAGES[0]);
            L2ItemInstance item2 = player.getInventory().getItemByItemId(BAGES[1]);
            L2ItemInstance item3 = player.getInventory().getItemByItemId(BAGES[2]);
            L2ItemInstance item4 = player.getInventory().getItemByItemId(BAGES[3]);
            if ((item1 == null) && (item2 == null) && (item3 == null) && (item4 == null))
            {
                if (player.getInventory().getItemByItemId(6393).getCount() >= 5)
                {
                    if (Rnd.get(100) < 33)
                    {
                        player.destroyItemByItemId("Quest", 6393, 5, player, true);
                        L2ItemInstance item = player.getInventory().addItem("Quest", BAGES[0], 1, player, player.getTarget());
                        SystemMessage smsg = new SystemMessage(SystemMessage.EARNED_ITEM);
                        smsg.addItemName(item.getItemId());
                        player.sendPacket(smsg);
                        player.sendPacket(new ItemList(player, false));
                        sendHtml(player, "31229-7");
                        return;
                    }
                    
                    player.destroyItemByItemId("Quest", 6393, 5, player, true);
                    sendHtml(player, "31229-5");
                    return;
                }
                
                sendHtml(player, "31229-4");
                return;
            }
            else if (item1 != null)
            {
                if (player.getInventory().getItemByItemId(6393).getCount() >= 10)
                {
                    if (Rnd.get(100) < 33)
                    {
                        player.destroyItemByItemId("Quest", 6393, 10, player, true);
                        player.destroyItemByItemId("Quest", BAGES[0], 1, player, true);
                        L2ItemInstance item = player.getInventory().addItem("Quest", BAGES[1], 1, player, player.getTarget());
                        SystemMessage smsg = new SystemMessage(SystemMessage.EARNED_ITEM);
                        smsg.addItemName(item.getItemId());
                        player.sendPacket(smsg);
                        player.sendPacket(new ItemList(player, false));
                        sendHtml(player, "31229-7");
                        return;
                    }
                    
                    player.destroyItemByItemId("Quest", 6393, 10, player, true);
                    sendHtml(player, "31229-5");
                    return;
                }
                
                sendHtml(player, "31229-4");
                return;
            }
            else if (item2 != null)
            {
                if (player.getInventory().getItemByItemId(6393).getCount() >= 20)
                {
                    if (Rnd.get(100) < 33)
                    {
                        player.destroyItemByItemId("Quest", 6393, 20, player, true);
                        player.destroyItemByItemId("Quest", BAGES[1], 1, player, true);
                        L2ItemInstance item = player.getInventory().addItem("Quest", BAGES[2], 1, player, player.getTarget());
                        SystemMessage smsg = new SystemMessage(SystemMessage.EARNED_ITEM);
                        smsg.addItemName(item.getItemId());
                        player.sendPacket(smsg);
                        player.sendPacket(new ItemList(player, false));
                        sendHtml(player, "31229-7");
                        return;
                    }
                    
                    player.destroyItemByItemId("Quest", 6393, 20, player, true);
                    sendHtml(player, "31229-5");
                    return;
                }
                
                sendHtml(player, "31229-4");
                return;
            }
            else if (item3 != null)
            {
                if (player.getInventory().getItemByItemId(6393).getCount() >= 40)
                {
                    if (Rnd.get(100) < 33)
                    {
                        player.destroyItemByItemId("Quest", 6393, 40, player, true);
                        player.destroyItemByItemId("Quest", BAGES[2], 1, player, true);
                        L2ItemInstance item = player.getInventory().addItem("Quest", BAGES[3], 1, player, player.getTarget());
                        SystemMessage smsg = new SystemMessage(SystemMessage.EARNED_ITEM);
                        smsg.addItemName(item.getItemId());
                        player.sendPacket(smsg);
                        player.sendPacket(new ItemList(player, false));
                        sendHtml(player, "31229-7");
                        return;
                    }
                    
                    player.destroyItemByItemId("Quest", 6393, 40, player, true);
                    sendHtml(player, "31229-5");
                    return;
                }
                
                sendHtml(player, "31229-4");
                return;
            }
            else if (item4 != null)
            {
                sendHtml(player, "31229-6");
                return;
            }
        }
        else if (val == 3)
        {
            L2Multisell.getInstance().createMultiSell(31230001, player, false, null);
        }
        else if (val == 4)
        {
            L2ItemInstance item1 = player.getInventory().getItemByItemId(BAGES[0]);
            L2ItemInstance item2 = player.getInventory().getItemByItemId(BAGES[1]);
            L2ItemInstance item3 = player.getInventory().getItemByItemId(BAGES[2]);
            L2ItemInstance item4 = player.getInventory().getItemByItemId(BAGES[3]);
            L2NpcInstance npc = (L2NpcInstance) player.getTarget();
            NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
            html.setFile("data/html/default/31229-3.htm");
            html.replace("%objectId%", String.valueOf(npc.getObjectId()));
            
            if (item1 != null)
            {
                html.replace("%count%", "10");
                html.replace("%no%", "");
                html.replace("%Level%", "Rabbit");
            }
            else if (item2 != null)
            {
                html.replace("%count%", "20");
                html.replace("%no%", "");
                html.replace("%Level%", "Hyena");
            }
            else if (item3 != null)
            {
                html.replace("%count%", "40");
                html.replace("%no%", "");
                html.replace("%Level%", "Fox");
            }
            if (item4 != null)
            {
                html.replace("%count%", "40");
                html.replace("%no%", "");
                html.replace("%Level%", "Wolf");
            }
            else
            {
                html.replace("%count%", "5");
                html.replace("%no%", "не ");
                html.replace("%Level%", "каким-либо");
            }
            player.sendPacket(html);
        }
    }
}
 
Назад
Сверху Снизу