Jump to content
Sign in to follow this  
System

Прем бафф

Recommended Posts

Сборка l2code такая хрень у меня

Вот байпас на  прем бафф 

bypass -h Quest 50000_Buffer Buff 4554

вот в бд 

INSERT INTO `custom_npcbuffer` VALUES ('50000', '4554', '4', '6673', '1', '4554');

 

вот сам скрипт баффера 

package custom.core;

import java.util.Map;

import org.apache.log4j.Logger;

import ru.catssoftware.Config;
import ru.catssoftware.gameserver.cache.HtmCache;
import ru.catssoftware.gameserver.datatables.NpcBufferTable;
import ru.catssoftware.gameserver.datatables.SkillTable;
import ru.catssoftware.gameserver.model.L2Character;
import ru.catssoftware.gameserver.model.L2ItemInstance;
import ru.catssoftware.gameserver.model.L2Skill;
import ru.catssoftware.gameserver.model.L2World;
//import ru.catssoftware.gameserver.model.actor.instance.L2MonsterInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance.BuffProfile;
import ru.catssoftware.gameserver.model.olympiad.Olympiad;
import ru.catssoftware.gameserver.model.quest.Quest;
import ru.catssoftware.gameserver.model.quest.QuestState;
import ru.catssoftware.gameserver.model.zone.L2Zone;
import ru.catssoftware.gameserver.network.SystemMessageId;
import ru.catssoftware.gameserver.network.serverpackets.MagicSkillLaunched;
import ru.catssoftware.gameserver.network.serverpackets.MagicSkillUse;
import ru.catssoftware.gameserver.network.serverpackets.SystemMessage;
import ru.catssoftware.gameserver.util.L2Utils;

import javolution.util.FastMap;

public class Buffer extends Quest {

    private static int BuffVipCard = 6673;

    private static Logger _log = Logger.getLogger(Buffer.class);
    public static String qn = "50000_Buffer";
    private static String htmlBase = "data/html/CommunityBoard/buffer/Buffer";
    //private static String htmlBaseEn = "data/html/CommunityBoard/buffer/en/Buffer";
    private static String htmlBaseEn = "data/html_en/CommunityBoard/buffer/Buffer";
    private Map<Integer, String> _lastPage;
    private Map<Integer, Boolean> _isPetTarget = new FastMap<Integer, Boolean>();
    private String _err = "";
    private Map<Integer, Long> _restoreDelays = new FastMap<Integer, Long>();

    public Buffer() {
        super(-1, qn, "custom");
        NpcBufferTable.getInstance();
        _lastPage = new FastMap<Integer, String>();
    }

    @Override
    public String onFirstTalk(L2NpcInstance npc, L2PcInstance player) {
        return onTalk(npc, player);
    }

    @Override
    public String onTalk(L2NpcInstance npc, L2PcInstance talker) {
        if (talker.getQuestState(qn) == null) {
            newQuestState(talker);
        }
        _lastPage.put(talker.getObjectId(), getMainHtml(talker.getChatLanguage()) + ".htm");
        _isPetTarget.put(talker.getObjectId(), false);
        return fillHtml(talker, HtmCache.getInstance().getHtm(getMainHtml(talker.getChatLanguage()) + ".htm", talker));
    }

    private String ShowLastPage(int playerId) {
        if (_lastPage.containsKey(playerId)) {
            String html = HtmCache.getInstance().getHtm(_lastPage.get(playerId), L2World.getInstance().getPlayer(playerId));
            return fillHtml(L2World.getInstance().getPlayer(playerId), html);
        }
        return null;
    }

    private boolean isValidTalker(L2PcInstance player, boolean isFromBBS) {
        if (Olympiad.getInstance().isRegistered(player)) {
            return false;
        }
        if ((player.getTarget() != null && player.getTarget() instanceof L2NpcInstance)
                || (isFromBBS && L2Utils.checkMagicCondition(player))) {
            return true;
        }

        return false;
    }

    @Override
    public String onEvent(String event, QuestState qs) {
        return onEvent(event, qs, false);
    }

    private boolean checkMagicCondition(L2PcInstance player) {
        boolean ok = true;
        if ((player._event != null && player._event.isRunning()) && Config.BUFFER_RESTRICTION.contains("EVENT")) {
            ok = false;
            //System.out.println("1");
        }
        if (player.isInJail() && Config.BUFFER_RESTRICTION.contains("JAIL")) {
            ok = false;
            //System.out.println("2");
        }
        if (player.getOlympiadGameId() >= 0 && Config.BUFFER_RESTRICTION.contains("OLY")) {
            ok = false;
            //System.out.println("3");
        }
        if (player.isInCombat() && Config.BUFFER_RESTRICTION.contains("COMBAT")) {
            ok = false;
            //System.out.println("4");
        }
        if (player.getKarma() > 0 && Config.BUFFER_RESTRICTION.contains("KARMA")) {
            ok = false;
            //System.out.println("5");
        }
        if (player.getPvpFlag() > 0 && Config.BUFFER_RESTRICTION.contains("PVP")) {
            ok = false;
            //System.out.println("6");
        }
        if (player.isInsideZone(L2Zone.FLAG_SIEGE) && Config.BUFFER_RESTRICTION.contains("SIEGE")) {
            ok = false;
            //System.out.println("7");
        }
        if (player.isInsideZone(L2Zone.FLAG_NOSUMMON) && Config.BUFFER_RESTRICTION.contains("RB")) {
            ok = false;
            //System.out.println("8");
        }
        if (player.isInsideZone(L2Zone.FLAG_PVP) && Config.BUFFER_RESTRICTION.contains("ARENA")) {
            ok = false;
            //System.out.println("9");
        }
        if(!player.isInsideZone(L2Zone.FLAG_PEACE) && Config.BBS_RESTRICTIONS.contains("NOPEACEBUFF")) {
            ok = false;
        }
        return ok;
    }

    public boolean restoreCheck(L2PcInstance player) {
        Long lastRestore = _restoreDelays.get(player.getObjectId());
        if (Config.BUFFER_RESTORE_DELAY <= 0) {
            return true;
        }
        if (lastRestore == null) {
            _restoreDelays.put(player.getObjectId(), System.currentTimeMillis());
            return true;
        }
        if (System.currentTimeMillis() + (Config.BUFFER_RESTORE_DELAY * 1000) < lastRestore) {
            _restoreDelays.put(player.getObjectId(), System.currentTimeMillis());
            return true;
        }
        return true;
    }

    @Override
    public String onEvent(String event, QuestState qs, boolean isFromBBS) {
        try {
            L2PcInstance player = qs.getPlayer();
            if (player == null) {
                return null;
            }
            if ((player.isAlikeDead() || player.isAfraid() || player.isImmobilized()) && !event.startsWith("Chat")) {
                return null;
            }
            if (player.isCastingNow() || player.isAttackingNow() && !event.startsWith("Chat")) {
                return "Разговор запрещен во время каста.";
            }
            if (!checkMagicCondition(player)) {
                return HtmCache.getInstance().getHtm(getMainHtml(player.getChatLanguage()) + "-not.htm", player);
            }
            L2NpcInstance npc = null;
            if (!isFromBBS && player.getTarget() != null && player.getTarget() instanceof L2NpcInstance) {
                npc = (L2NpcInstance) player.getTarget();
            }
            L2Character target = player;
            if (_isPetTarget.get(player.getObjectId()) && player.getPet() != null) {
                target = player.getPet();
            }

            if (event.startsWith("Chat")) {
                String chatId = "";
                String htm = getMainHtml(player.getChatLanguage()) + ".htm";
                if (event.indexOf(" ") != -1) {
                    chatId = event.substring(event.indexOf(" ") + 1);
                }
                if (!chatId.equals("0")) {
                    chatId = "-" + chatId;
                    if (_isPetTarget.get(player.getObjectId())) {
                        if (HtmCache.getInstance().pathExists(getMainHtml(player.getChatLanguage()) + "-pet" + chatId + ".htm")) {
                            htm = getMainHtml(player.getChatLanguage()) + "-pet" + chatId + ".htm";
                        } else {
                            htm = getMainHtml(player.getChatLanguage()) + chatId + ".htm";
                        }
                    } else {
                        htm = getMainHtml(player.getChatLanguage()) + chatId + ".htm";
                    }
                }
                _lastPage.put(player.getObjectId(), htm);
                String html = HtmCache.getInstance().getHtm(htm, player);
                return fillHtml(player, html);
            } else if (event.startsWith("SelectProfile")) {
                String[] args = event.split(" ");
                player.getCharacterData().set("BuffProfile", args[1]);
                String html = HtmCache.getInstance().getHtm(getMainHtml(player.getChatLanguage()) + "-p2.htm", player);
                _lastPage.put(player.getObjectId(), getMainHtml(player.getChatLanguage()) + "-p2.htm");
                html = fillHtml(player, html);
                return html;
            } else if (event.startsWith("Profile")) {

                String html = HtmCache.getInstance().getHtm(getMainHtml(player.getChatLanguage()) + "-p1.htm", player);
                _lastPage.put(player.getObjectId(), getMainHtml(player.getChatLanguage()) + "-p1.htm");
                return fillHtml(player, html);
            } else if (event.startsWith("ClearProfile")) {
                String[] args = event.split(" ");
                if (args.length < 2)
                {
                    return onEvent("Profile", qs, isFromBBS);
                }
                
                BuffProfile profile = getActiveProfile(player,args[1]);
                profile._buffs.clear();
                return onEvent("Profile", qs, isFromBBS);
            }/* else if (event.startsWith("DeleteProfile")) {
                Map<String, BuffProfile> _profiles = player.getBuffProfiles();
                if (getActiveProfile(player) != null) {
                    _profiles.remove(getActiveProfileName(player));
                }
                player.getCharacterData().set("BuffProfile", (String) null);
                return onEvent("Profile", qs, isFromBBS);
            }*/ else if (event.startsWith("CreateProfile")) {
                //Map<String, BuffProfile> _profiles = player.getBuffProfiles();
                String[] args = event.split(" ");
                if (args.length > 2) {
                    if (player.getChatLanguage() == 1) {
                        _err = "Имя профиля не должно содержать пробелы";
                    } else {
                        _err = "Please use: a-z, 0-9";
                    }
                    return onEvent("Profile", qs, isFromBBS);
                }
                /*if (_profiles.containsKey(args[1])) {
                    if (player.getChatLanguage() == 1) {
                        _err = "Профиль с таким именем уже сущевствует";
                    } else {
                        _err = "Profile name is already exists.";
                    }
                    return onEvent("Profile", qs, isFromBBS);
                }*/
                //player.putBuffProfile(args[1]);
                player.putBuffProfileSkills(args[1]);
                //player.getCharacterData().set("BuffProfile", args[1]);
                //player.getCharacterData().set(args[1], args[1]);
                //player.store();
                return onEvent("Profile", qs, isFromBBS);
            }  else if (event.startsWith("UseProfile")) {
                String[] args = event.split(" ");
                 if (args.length < 2)
                 {
                     return onEvent("Profile", qs, isFromBBS);
                 }
                BuffProfile profile = getActiveProfile(player,args[1]);

                if (profile != null) {
                    for (int buff : profile._buffs) {
                        int[] group = NpcBufferTable.getInstance().getSkillInfo(npc == null ? 50000 : npc.getNpcId(), buff);
                        useBuff(npc, buff, group, player, target);

                    }
                }
            } else if (event.startsWith("RemBuff")) {
                if (target.isInsideZone(L2Zone.FLAG_PEACE) && isValidTalker(player, isFromBBS) && player.destroyItemByItemId("GM Buffer", Config.GMSHOP_BUFF_ITEM, Config.GMSHOP_BUFF_REMOVE, player, true)) {
                    target.stopAllEffects();
                }
            }  else if (event.startsWith("RemDeBuff")) {
                if (target.isInsideZone(L2Zone.FLAG_PEACE) && isValidTalker(player, isFromBBS) && player.destroyItemByItemId("GM Buffer", Config.GMSHOP_BUFF_ITEM, Config.GMSHOP_BUFF_REMOVE, player, true)) {
                    target.stopAllDebuffs();
                }
            } else if (event.startsWith("recHp")) {
                if (target.isInsideZone(L2Zone.FLAG_PEACE) && restoreCheck(player) && isValidTalker(player, isFromBBS) && player.destroyItemByItemId("GM Buffer", Config.GMSHOP_BUFF_ITEM, Config.GMSHOP_BUFF_HP, player, true)) {
                    target.getStatus().setCurrentHp(target.getMaxHp());
                    target.getStatus().setCurrentMp(target.getMaxMp());
                    target.getStatus().setCurrentCp(target.getMaxCp());
                }
            } else if (event.startsWith("recCp")) {
                if (target.isInsideZone(L2Zone.FLAG_PEACE) && restoreCheck(player) && isValidTalker(player, isFromBBS) && player.destroyItemByItemId("GM Buffer", Config.GMSHOP_BUFF_ITEM, Config.GMSHOP_BUFF_CP, player, true)) {
                    target.getStatus().setCurrentCp(target.getMaxCp());
                }
            } else if (event.startsWith("recMp")) {
                if (target.isInsideZone(L2Zone.FLAG_PEACE) && restoreCheck(player) && isValidTalker(player, isFromBBS) && player.destroyItemByItemId("GM Buffer", Config.GMSHOP_BUFF_ITEM, Config.GMSHOP_BUFF_MP, player, true)) {
                    target.getStatus().setCurrentMp(target.getMaxMp());
                }
            } else if (event.startsWith("Target")) {
                _isPetTarget.put(player.getObjectId(), !_isPetTarget.get(player.getObjectId()));
            } else if (event.startsWith("Buff")) {
                if (!isValidTalker(player, isFromBBS)) {
                    return ShowLastPage(player.getObjectId());
                }

                String[] buffGroupArray;
                if (event.startsWith("BuffPet")) {
                    buffGroupArray = event.substring(8).split(" ");
                } else {
                    buffGroupArray = event.substring(5).split(" ");
                }

                for (String buffGroupList : buffGroupArray) {
                    if (buffGroupList == null) {
                        _log.warn("NPC Buffer Warning: buffer has no buffGroup set in the bypass for the buff selected.");
                        return ShowLastPage(player.getObjectId());
                    }

                    int buffGroup = Integer.parseInt(buffGroupList);
                    int[] npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npc == null ? 50000 : npc.getNpcId(), buffGroup);

                    if (npcBuffGroupInfo == null) {
                        //_log.warn("NPC Buffer Warning: Player: " + player.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!");
                        return ShowLastPage(player.getObjectId());
                    }
                    useBuff(npc, buffGroup, npcBuffGroupInfo, player, target);
//
                }
            } else if (event.startsWith("lang")) {
                try {
                    player.setChatLanguage(Integer.parseInt(event.substring(5)));
                }
                catch (Exception e) {
                }
                _lastPage.put(player.getObjectId(), getMainHtml(player.getChatLanguage()) + ".htm");
                //return fillHtml(talker, HtmCache.getInstance().getHtm(getMainHtml(talker.getChatLanguage()) + ".htm", talker));
            }
            return ShowLastPage(player.getObjectId());
        } catch (Exception e) {
            return htmlBase + ".htm";
        }

    }
/*
    private String getActiveProfileName(L2PcInstance player) {
        try {
            return player.getCharacterData().getString("BuffProfile");
        } catch (IllegalArgumentException e) {
            return "Нет";
        }

    }

    private BuffProfile getActiveProfile(L2PcInstance player) {
        String profileName = null;
        try {
            profileName = player.getCharacterData().getString("BuffProfile");
        } catch (IllegalArgumentException e) {
            return null;
        }
        Map<String, BuffProfile> _profiles = player.getBuffProfiles();
        if (profileName != null && _profiles != null) {
            return _profiles.get(profileName);
        }
        return null;

    }
*/
    /*private String getActiveProfileName(L2PcInstance player, String str) {
        try {
            //return player.getCharacterData().getString("BuffProfile");
            //return player.getCharacterData().getString(str);
            return str;
        } catch (IllegalArgumentException e) {
            return "Нет";
        }

    }*/

    private BuffProfile getActiveProfile(L2PcInstance player, String str) {
        String profileName = null;
        try {
            //profileName = player.getCharacterData().getString("BuffProfile");
            //profileName = player.getCharacterData().getString(str);
            profileName = str;
        } catch (IllegalArgumentException e) {
            return null;
        }
        Map<String, BuffProfile> _profiles = player.getBuffProfiles();
        if (profileName != null && _profiles != null) {
            return _profiles.get(profileName);
        }
        return null;

    }

    private synchronized String fillHtml(L2PcInstance player, String html) {
        try {

            if (player.getChatLanguage() == 1) {
                html = html.replace("%target%", _isPetTarget.get(player.getObjectId()) ? "Pet" : "Player");
            } else {
                html = html.replace("%target%", _isPetTarget.get(player.getObjectId()) ? "Питомец" : "Персонаж");
            }
            
            if (player.getChatLanguage() == 1) {
                html = html.replace("%target2%", _isPetTarget.get(player.getObjectId()) ? "Player" : "Pet");
            } else {
                html = html.replace("%target2%", _isPetTarget.get(player.getObjectId()) ? "Персонажа" : "Питомца");
            }

            if (player.getChatLanguage() == 1) {
                html = html.replace("%language%", "<button value=\"Русский\" action=\"bypass -h Quest 50000_Buffer lang 0\" width=75 height=21 back=\"pw_pack.Bt_normalDisable\" fore=\"pw_pack.Bt_normalDisable\">");
            } else {
                html = html.replace("%language%", "<button value=\"English\" action=\"bypass -h Quest 50000_Buffer lang 1\" width=75 height=21 back=\"pw_pack.Bt_normalDisable\" fore=\"pw_pack.Bt_normalDisable\">");
            }

           // html = html.replace("%profile%", getActiveProfileName(player));
            html = html.replace("%err%", _err);
            _err = "";
            String profiles = "";
            try {
                Map<String, BuffProfile> _profiles = player.getBuffProfiles();
                if (_profiles != null) {
                    for (String profileName : _profiles.keySet()) {
                        profiles += "<tr><td><center><a action=\"bypass -h Quest 50000_Buffer SelectProfile " + profileName + "\">" + profileName + "</a></center></td></tr>";
                    }
                }
                if (profiles.length() == 0) {
                    if (player.getChatLanguage() == 1) {
                        profiles = "<tr><td><center>Empty</center></td></tr>";
                    } else {
                        profiles = "<tr><td><center>Отсутствуют</center></td></tr>";
                    }
                }
/*
                html = html.replace("%profilelist%", profiles);
                BuffProfile profile = getActiveProfile(player);
                if (profile != null && profile._buffs != null && profile._buffs.size() > 0) {
                    if (player.getChatLanguage() == 1) {
                        html = html.replace("%useprofile%", "<button action=\"bypass -h Quest 50000_Buffer UseProfile\" value=\"Use profile\" width=100 height=21 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
                    } else {
                        html = html.replace("%useprofile%", "<button action=\"bypass -h Quest 50000_Buffer UseProfile\" value=\"Исп. профиль\" width=100 height=21 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
                    }
                    String buffs = "";
                    int npcid = 50000;
                    for (Integer buff : profile._buffs) {
                        if (player.getTarget() != null && (player.getTarget() instanceof L2NpcInstance && !(player.getTarget() instanceof L2MonsterInstance))) {
                            npcid = ((L2NpcInstance) player.getTarget()).getNpcId();
                        }
                        int[] group = NpcBufferTable.getInstance().getSkillInfo(npcid, buff);
                        buffs += "<tr><td><center>" + SkillTable.getInstance().getSkillName(group[0]) + "</center></td></tr>";
                    }
                    html = html.replace("%buflist%", buffs);
                } else {
                    html = html.replace("%useprofile%", "");
                }
*/                
            } catch (Exception e) {
                html = html.replace("%useprofile%", "");
                player.clearBuffProfiles();
                _log.error("Error getting profiles for " + player.getName() + ", cleaning");
            }
            return html;
        } catch (Exception e) {
            if (player.getChatLanguage() == 1) {
                return "<html><body><br><center>Error, try later.</center></body></html>

 

не могу зделать чтобы баффал мне бафф который мне нада за предмет или доступ к разделу к баффу 

 

id монеты 6673   все уже перепробывал не получаеться 

 

меня ид что в бд так и в скрипте 

 

Он баффает мне бесплатно той бафф 

Share this post


Link to post
Share on other sites
7 часов назад, System сказал:

Сборка l2code такая хрень у меня:D а че ты хотел то?

 

 

Share this post


Link to post
Share on other sites

Розобралься как то 

Ну есть небольшая проблема когда нет монетки и ти жмеш на любой прем бафф то ничего не происходит в чате не пишет даже что нет монетки и так далее 

Если есть монетка баффы идут 

Share this post


Link to post
Share on other sites

в скрипте сделай проверку на монету , тогда будет в чате писать

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...