Сервис BuyClanSkillService

Тема в разделе "Scripts / Работа со скриптами", создана пользователем Ms.Derailment, 8 май 2018.

  1. Ms.Derailment

    Ms.Derailment Капля-Доверия
    Админы не рекомендуют.

    Регистрация:
    12 апр 2018
    Сообщения:
    25
    Симпатии:
    2
    Код:
    package handler.bbs.custom.privateof.Servesaid.clan.buyClanSkill;
    import handler.bbs.abstracts.CommunityBoardService;
    import handler.bbs.custom.privateof.engine.enums.Servesaid;
    import org.mmocore.commons.converter.Converter;
    import org.mmocore.gameserver.configuration.config.community.CBasicConfig;
    import org.mmocore.gameserver.data.xml.holder.custom.community.CBuyClanSkillHolder;
    import org.mmocore.gameserver.model.entity.events.impl.SiegeEvent;
    import org.mmocore.gameserver.network.lineage.components.CustomMessage;
    import org.mmocore.gameserver.network.lineage.components.SystemMsg;
    import org.mmocore.gameserver.network.lineage.serverpackets.SystemMessage;
    import org.mmocore.gameserver.object.Player;
    import org.mmocore.gameserver.skills.SkillEntry;
    import org.mmocore.gameserver.tables.SkillTable;
    import org.mmocore.gameserver.templates.custom.community.BuyClanSkillTemplate;
    import org.mmocore.gameserver.utils.Log;
    
    import java.util.Collection;
    import java.util.List;
    import java.util.Optional;
    
    /**
     * @author Mangol
     * @since 05.03.2016
     * @ update Сrafty
     */
    public class BuyClanSkillService extends CommunityBoardService
    {
        private static final CBuyClanSkillHolder holder = CBuyClanSkillHolder.getInstance();
    
        @Override
        public Servesaid getService()
        {
            return Servesaid.buy_clan_skill;
        }
    
        @Override
        public void content(final Player player, final String bypass, final Object... params)
        {
            final String htm;
            if(bypass.contains("info"))
            {
                final String[] str = bypass.split(":");
                if(str.length < 7)
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.error"));
                    useSaveCommand(player);
                    return;
                }
                if(!player.isClanLeader())
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.noClanLeader"));
                    useSaveCommand(player);
                    return;
                }
                if(player.getClan().getLevel() < 5)
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.noClanFiveLevel"));
                    useSaveCommand(player);
                    return;
                }
                final int id = Converter.convert(Integer.class, str[5]);
                final int level = Converter.convert(Integer.class, str[6]);
                final Optional<BuyClanSkillTemplate> buyClanSkillTemplate = holder.getClanSkill(id, level);
                if(!buyClanSkillTemplate.isPresent())
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.error"));
                    useSaveCommand(player);
                    return;
                }
                if(buyClanSkillTemplate.get().getMinLevel() > player.getClan().getLevel())
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.clanSkillNotLevel"));
                    useSaveCommand(player);
                    return;
                }
                final Optional<SkillEntry> skillEntry = player.getClan().getSkills().stream().filter(s -> (s.getId() == buyClanSkillTemplate.get().getId())).findFirst();
                if(skillEntry.isPresent())
                {
                    final int entryLevel = skillEntry.get().getLevel();
                    if(!(entryLevel == buyClanSkillTemplate.get().getLevel() - 1))
                    {
                        player.sendPacket(new CustomMessage("bbs.service.clanSkill.skillNotCorrect"));
                        useSaveCommand(player);
                        return;
                    }
                }
                htm = getInformation(player, buyClanSkillTemplate.get());
            }
            else
            {
                final String[] str = bypass.split(":");
                if(str.length < 5)
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.error"));
                    useSaveCommand(player);
                    return;
                }
                final int page = Converter.convert(Integer.class, str[4]);
                htm = getContent(player, page);
            }
            separateAndSend(htm, player);
        }
    
        @Override
        public void request(final Player player, final String bypass, final Object... params)
        {
            final String[] str = bypass.split(":");
            if(str.length < 6)
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.error"));
                useSaveCommand(player);
                return;
            }
            if(!player.isClanLeader())
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.noClanLeader"));
                useSaveCommand(player);
                return;
            }
            if(player.getClan().getLevel() < 5)
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.noClanFiveLevel"));
                useSaveCommand(player);
                return;
            }
            if(player.getEvent(SiegeEvent.class) != null)
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.isEventSiege"));
                useSaveCommand(player);
                return;
            }
            if(!player.isInPeaceZone())
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.noIsInPeaceZone"));
                useSaveCommand(player);
                return;
            }
            final int id = convert(Integer.class, str[4]);
            final int level = convert(Integer.class, str[5]);
            final Optional<BuyClanSkillTemplate> buyClanSkillTemplate = holder.getClanSkill(id, level);
            if(!buyClanSkillTemplate.isPresent())
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.error"));
                useSaveCommand(player);
                return;
            }
            if(buyClanSkillTemplate.get().getMinLevel() > player.getClan().getLevel())
            {
                player.sendPacket(new CustomMessage("bbs.service.clanSkill.clanSkillNotLevel"));
                useSaveCommand(player);
                return;
            }
            final Optional<SkillEntry> skillEntry = player.getClan().getSkills().stream().filter(s -> (s.getId() == buyClanSkillTemplate.get().getId())).findFirst();
            if(skillEntry.isPresent())
            {
                final int entryLevel = skillEntry.get().getLevel();
                if(!(entryLevel == buyClanSkillTemplate.get().getLevel() - 1))
                {
                    player.sendPacket(new CustomMessage("bbs.service.clanSkill.skillNotCorrect"));
                    useSaveCommand(player);
                    return;
                }
            }
            if(!getCheckAndPick(player, buyClanSkillTemplate.get().getItemId(), buyClanSkillTemplate.get().getItemCount(), true))
            {
                useSaveCommand(player);
                return;
            }
            reply(player, buyClanSkillTemplate.get());
        }
    
        @Override
        public void reply(final Player player, final Object... params)
        {
            final BuyClanSkillTemplate template = (BuyClanSkillTemplate) params[0];
            final SkillEntry skillEntry = SkillTable.getInstance().getSkillEntry(template.getId(), template.getLevel());
            player.getClan().addSkill(skillEntry, true);
            player.getClan().broadcastToOnlineMembers(new SystemMessage(SystemMsg.THE_CLAN_SKILL_S1_HAS_BEEN_ADDED).addSkillName(skillEntry));
            useCommand(player, "_bbsservice:service:buy_clan_skill:content:1");
            player.sendPacket(new CustomMessage("bbs.service.successfully"));
            Log.service("BuyClanSkillService", player, "buy skill id;level - " + template.getId() + ";" + template.getLevel());
        }
    
        private String getInformation(final Player player, final BuyClanSkillTemplate param)
        {
            String htm = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/info/clan_skill_info.htm", player);
            htm = htm.replace("<?correct_clan_level?>", String.valueOf(player.getClan().getLevel()));
            htm = htm.replace("<?price?>", String.valueOf(param.getItemCount()));
            htm = htm.replace("<?icon?>", (param.getIcon()));
            htm = htm.replace("<?item_name?>", getItemName(player.getLanguage(), param.getItemId()));
            htm = htm.replace("<?skill_name?>", param.getName(player));
            htm = htm.replace("<?skill_level?>", String.valueOf(param.getLevel()));
            htm = htm.replace("<?skill_desc?>", String.valueOf(param.getDesc(player)));
            final String bypassRequest = "bypass _bbsservice:service:buy_clan_skill:request:" + param.getId() + ":" + param.getLevel();
            htm = htm.replace("<?buy_bypass?>", bypassRequest);
            return htm;
        }
    
        private String getContent(final Player player, final int page)
        {
            String htm = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/clan_skill.htm", player);
            if(player.isClanLeader())
            {
                final Collection<SkillEntry> clanSkills = player.getClan().getSkills();
                final List<BuyClanSkillTemplate> buyClanSkills = BuyClanSkillUtil.getAvaliableList(holder.getValuesClanSkills(), clanSkills, player.getClan().getLevel());
                if(buyClanSkills.isEmpty())
                {
                    final String emptySkill = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/tableEmptySkill.htm", player);
                    htm = htm.replace("<?next_back_table?>", "");
                    htm = htm.replace("<?tables?>", emptySkill);
                    htm = htm.replace("<?correct_clan_level?>", String.valueOf(player.getClan().getLevel()));
                }
                else
                {
                    final int countLine = 2;
                    final int countColumn = 4;
                    final int countColor = countColumn * countLine;
                    final int minPageSkill = (page * countColor) - countColor;
                    final int maxPageSkill = page * countColor;
                    String nextBackButton = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/next_back_button.htm", player);
                    String table = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/table.htm", player);
                    String button = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/button_info.htm", player);
                    int correctCount = minPageSkill;
                    int correctLine = 1;
                    final StringBuilder build = new StringBuilder();
                    begin:
                    for(; correctLine <= countLine; )
                    {
                        final StringBuilder buttons = new StringBuilder();
                        int correctColumnWrite = 1;
                        for(; correctCount <= maxPageSkill; )
                        {
                            if(correctCount > buyClanSkills.size() - 1)
                            {
                                if(correctColumnWrite > 1 && correctColumnWrite <= countColumn)
                                {
                                    String tableReplace = table;
                                    tableReplace = tableReplace.replace("<?buttons?>", buttons.toString());
                                    build.append(tableReplace);
                                }
                                break begin;
                            }
                            final BuyClanSkillTemplate buyClanSkillTemplate = buyClanSkills.get(correctCount);
                            if(buyClanSkillTemplate == null)
                            {
                                break begin;
                            }
                            String generateButton = button;
                            generateButton = generateButton.replace("<?icon?>", buyClanSkillTemplate.getIcon());
                            final String skillNames = buyClanSkillTemplate.getName(player).replace(" ", "<br1>");
                            generateButton = generateButton.replace("<?skill_name?>", skillNames);
                            generateButton = generateButton.replace("<?skill_level?>", String.valueOf(buyClanSkillTemplate.getLevel()));
                            generateButton = generateButton.replace("<?info_bypass?>", "bypass _bbsservice:service:buy_clan_skill:content:info:" + buyClanSkillTemplate.getId() + ":" + buyClanSkillTemplate.getLevel());
                            buttons.append(generateButton);
                            correctCount++;
                            // Находимся на последнем столбце, переходим на следующую строку.
                            // [Todo] Доработать обработку системы
                            if(correctColumnWrite == countColumn)
                            {
                                String tableReplace = table;
                                tableReplace = tableReplace.replace("<?buttons?>", buttons.toString());
                                build.append(tableReplace);
                                correctLine++;
                                continue begin;
                            }
                            correctColumnWrite++;
                        }
                    }
                    nextBackButton = nextBackButton.replace("<?page?>", String.valueOf(page));
                    nextBackButton = nextBackButton.replace("<?nextPage?>", buyClanSkills.size() > maxPageSkill ? String.valueOf(page + 1) : String.valueOf(page));
                    nextBackButton = nextBackButton.replace("<?backPage?>", String.valueOf(page > 1 ? page - 1 : page));
                    htm = htm.replace("<?next_back_table?>", nextBackButton);
                    htm = htm.replace("<?correct_clan_level?>", String.valueOf(player.getClan().getLevel()));
                    htm = htm.replace("<?tables?>", build.toString());
                }
            }
            else
            {
                final String emptySkill = getCache().getHtml(CBasicConfig.BBS_PATH + "/cabinet/service/clan/clanSkill/tableEmptySkill.htm", player);
                htm = htm.replace("<?correct_clan_level?>", new CustomMessage("bbs.service.clanSkill.noClan").toString(player));
                htm = htm.replace("<?next_back_table?>", "");
                htm = htm.replace("<?tables?>", emptySkill);
            }
            return htm;
        }
    
    }
    
    Подойдет для оверов.
    Этот сервис позволит вам покупать клановые скилы.
    условия только лидер клана может совершить данное действия.
     
  2. Agressif

    Agressif Участник

    Регистрация:
    9 май 2018
    Сообщения:
    13
    Симпатии:
    3
    Где то надыбали исходники jts? или компил приобрели?)
     
  3. Ms.Derailment

    Ms.Derailment Капля-Доверия
    Админы не рекомендуют.

    Регистрация:
    12 апр 2018
    Сообщения:
    25
    Симпатии:
    2
    у нас фул исход купленный у jts версия от роя а не монгола.
     
  4. Agressif

    Agressif Участник

    Регистрация:
    9 май 2018
    Сообщения:
    13
    Симпатии:
    3
    покажи папку data\scripts\handler\bbs\dao, либо скриншот покупки :) т.к. выложенный компил вами тупо компил шарных сурсов что расшарил GenCloud
     
  5. Ms.Derailment

    Ms.Derailment Капля-Доверия
    Админы не рекомендуют.

    Регистрация:
    12 апр 2018
    Сообщения:
    25
    Симпатии:
    2
    я не обязан вам уж всё это выкладывать, и у меня нету прав со стороны нашей команды, выкладывать данные проекта, без ведома.

    если уж на то пошло пишите нашему разработчику.
     
  6. 4ydo

    4ydo Head Admin Mmore.club
    Команда форума Manager l2-scripts.com Administrator

    Регистрация:
    12 ноя 2017
    Сообщения:
    409
    Симпатии:
    74
    Skype:
    Urchika
    Это не правда, особенно в слове "куплено"
     
  7. У меня вопрос, а что ты тут делаешь? Твой разработчик у Вас на форуме, я обратил внимание не скучнее чем ты тут=)
    Я вижу историю так: Вы берете чужие исходы, добавляете два, три полу рабочих сервиса, выдаете за l2j-Tenac.
    Вы веселые ребята. Тут сидят люди которые над собственными сборками по паре лет трудятся, и не объявляют себя командой разработчиков.
    Это до смешного просто, уже на Вашем собственном форуме вас ребята тролят, мне бы стало противно.
     
    DeadPool нравится это.
  8. Ms.Derailment

    Ms.Derailment Капля-Доверия
    Админы не рекомендуют.

    Регистрация:
    12 апр 2018
    Сообщения:
    25
    Симпатии:
    2
    тролят конкуренты, да и пусть, у наших клиентов ласт ревизия эмулятора, которой нету в шаре и уже много чего исправлено в эмуле.
     
  9. 4ydo

    4ydo Head Admin Mmore.club
    Команда форума Manager l2-scripts.com Administrator

    Регистрация:
    12 ноя 2017
    Сообщения:
    409
    Симпатии:
    74
    Skype:
    Urchika
    Так, а где список исправлений то ?
     
  10. Agressif

    Agressif Участник

    Регистрация:
    9 май 2018
    Сообщения:
    13
    Симпатии:
    3
    Когда же ты поймешь что с тебя все угарают, что конкурентов у тебя априори быть не может(акромя таких же «умников» как ты) на форуме твоих клиентов один, и заходил на форум он один раз, и как ни странно в то время когда ты был онлайн, чтобы полизать самому себе яйца.
    Он его еще не придумал
     
    #10 Agressif, 12 май 2018
    Последнее редактирование модератором: 12 май 2018
  11. Mordor

    Mordor Участник

    Регистрация:
    12 май 2018
    Сообщения:
    5
    Симпатии:
    0
    какие конкуренты? с кем вы конкурируете? вы никому нахрен не сдались...уже года 3-4 одно и тоже, как День Сурка.
     

Партнеры