Comando .menu (Pack)

Iniciado por Swarlog, Jun 25, 2025, 09:42 PM

Tema anterior - Siguiente tema

Swarlog

### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java    (working copy)
@@ -156,7 +156,8 @@
 
         // Pet uses the power of spirit.
         activeOwner.sendPacket(new SystemMessage(SystemMessageId.PET_USE_THE_POWER_OF_SPIRIT));
-        Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, 2033, 1, 0, 0), 360000/*600*/);
+        if (!activeOwner.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, 2033, 1, 0, 0), 360000/*600*/);
 
         activeOwner = null;
         activePet = null;
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java    (working copy)
@@ -92,7 +92,8 @@
         //activeChar.sendPacket(new SystemMessage(SystemMessage.ENABLED_SPIRITSHOT));
 
         MagicSkillUser MSU = new MagicSkillUser(activeChar, SKILL_IDS[grade], 1, 0, 0);
-        Broadcast.toSelfAndKnownPlayers(activeChar, MSU);
+        if (!activeChar.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayers(activeChar, MSU);
         MSU = null;
         activeChar.setTarget(oldTarget);
 
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
@@ -20222,4 +20222,60 @@
         }
         sendSkillList();
     }
+   
+    private boolean _cantGainXP = false;
+    private boolean _isPartyInvProt = false;
+    private boolean _isInTradeProt = false;
+    private boolean _isSSDisabled = false;
+    private boolean _isInRefusal = false;
+   
+    public boolean isInTradeProt()
+    {
+        return _isInTradeProt;
+    }
+   
+    public void setIsInTradeProt(boolean value)
+    {
+        _isInTradeProt = value;
+    }
+   
+    public boolean isSSDisabled()
+    {
+        return _isSSDisabled;
+    }
+   
+    public void setIsSSDisabled(boolean value)
+    {
+        _isSSDisabled = value;
+    }
+   
+    public boolean isPartyInvProt()
+    {
+        return _isPartyInvProt;
+    }
+   
+    public void setIsPartyInvProt(boolean value)
+    {
+        _isPartyInvProt = value;
+    }
+   
+    public void cantGainXP(boolean b)
+    {
+        _cantGainXP = b;
+    }
+   
+    public boolean cantGainXP()
+    {
+        return _cantGainXP;
+    }
+   
+    public void setInRefusalMode(boolean b)
+    {
+        _isInRefusal = b;
+    }
+   
+    public boolean isInRefusalMode()
+    {
+        return _isInRefusal;
+    }
 }
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java    (working copy)
@@ -78,6 +78,12 @@
             return;
         }
        
+        if (target.isPartyInvProt())
+        {
+            requestor.sendMessage("You can't invite that player because he is in party protection.");
+            return;
+        }
+       
         if (target.isInParty())
         {
             SystemMessage msg = new SystemMessage(SystemMessageId.S1_IS_ALREADY_IN_PARTY);
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java    (working copy)
@@ -137,7 +137,8 @@
 
         // Send message to client
         activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SPIRITSHOT));
-        Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+        if (!activeChar.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
 
         activeChar = null;
         weaponInst = null;
Index: head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java    (working copy)
import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Wedding;
+import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Menu;


+registerVoicedCommandHandler( new Menu());

if (Config.BANKING_SYSTEM_ENABLED)
Index: head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java    (revision 0)
+++ head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java    (revision 0)
@@ -0,0 +1,173 @@
/*
 * This program 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.
 *
 * This program 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.gameserver.handler.voicedcommandhandlers;

import javolution.text.TextBuilder;

import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;

public class Menu implements IVoicedCommandHandler
{
                   private final String[] _voicedCommands =
                   {
                           "menu"
                   };
     
       @Override
       public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
       {
               mainHtml(activeChar);
               return true;
       }
     
       public static void mainHtml(L2PcInstance activeChar)
       {
               NpcHtmlMessage nhm = new NpcHtmlMessage(5);
               TextBuilder tb = new TextBuilder("");
             
               tb.append("<html><head><title>Personal Menu</title></head><body>");
               tb.append("<center>");
               tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
               tb.append("<td valign=\"top\">Players online <font color=\"FF6600\"> "+L2World.getInstance().getAllPlayers().size()+"</font>"); 
               tb.append("<br1><font color=\"00FF00\">"+activeChar.getName()+"</font>, use this menu for everything related to your gameplay.<br1></td>");
               tb.append("</tr>");
               tb.append("</table>");
               tb.append("</center>");
               tb.append("<center>");
               tb.append("<table border=\"1\" width=\"100\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td width=\"52\">ON</td>");
               tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
               tb.append("</tr>");
               tb.append("<tr>");
               tb.append("<td width=\"52\">OFF</td>");
               tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
               tb.append("</tr>");
               tb.append("</table><br>");
               tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td align=\"center\" width=\"52\">Buff Protection</td>");
               if(activeChar.isBuffProtected())
               tb.append("<td width=\"16\"><button action=\"bypass -h buffprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               if(!activeChar.isBuffProtected())
               tb.append("<td width=\"16\"><button action=\"bypass -h buffprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("</tr>");
               tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY buff from another character.</font></td></tr>");
               tb.append("</table>");
                              tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
                              tb.append("<tr>");
                              tb.append("<td align=\"center\" width=\"52\">Personal Message Refusal</td>");
                              if(activeChar.getMessageRefusal())
                              tb.append("<td width=\"16\"><button action=\"bypass -h pmref\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
                              if(!activeChar.getMessageRefusal())
                              tb.append("<td width=\"16\"><button action=\"bypass -h pmref\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
                              tb.append("</tr>");
                              tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY pm from another character.</font></td></tr>");
                              tb.append("</table>");
                              tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
                              tb.append("<tr>");
               tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td align=\"center\" width=\"52\">Trade Request Protection</td>");
               if(activeChar.isInTradeProt())
               tb.append("<td width=\"16\"><button action=\"bypass -h tradeprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               if(!activeChar.isInTradeProt())
               tb.append("<td width=\"16\"><button action=\"bypass -h tradeprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("</tr>");
               tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY trade request from another character.</font></td></tr>");
               tb.append("</table>");
               tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td align=\"center\" width=\"52\">Soulshot/Spiritshot Effect</td>");
               if(activeChar.isSSDisabled())
               tb.append("<td width=\"16\"><button action=\"bypass -h ssprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               if(!activeChar.isSSDisabled())
               tb.append("<td width=\"16\"><button action=\"bypass -h ssprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("</tr>");
               tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you will enchance your pc's performance by disabling your ss effects.</font></td><td align=\"center\" valign=\"middle\"><button action=\"bypass -h page2\" width=16 height=16 back=\"L2UI_CH3.next1\" fore=\"L2UI_CH3.next1\"></td></tr>");
               tb.append("</table>");
             
               tb.append("</center>");
               tb.append("</body></html>");
             
               nhm.setHtml(tb.toString());
               activeChar.sendPacket(nhm);
       }
     
       public static void mainHtml2(L2PcInstance activeChar)
       {
               NpcHtmlMessage nhm = new NpcHtmlMessage(5);
               TextBuilder tb = new TextBuilder("");
             
               tb.append("<html><head><title>Personal Menu</title></head><body>");
               tb.append("<center>");
               tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
               tb.append("<td valign=\"top\">Players online <font color=\"FF6600\"> "+L2World.getInstance().getAllPlayers().size()+"</font>");
               tb.append("<br1><font color=\"00FF00\">"+activeChar.getName()+"</font>, use this menu for everything related to your gameplay.<br1></td>");
               tb.append("</tr>");
               tb.append("</table>");
               tb.append("</center>");
               tb.append("<center>");
               tb.append("<table border=\"1\" width=\"100\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td width=\"52\">ON</td>");
               tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
               tb.append("</tr>");
               tb.append("<tr>");
               tb.append("<td width=\"52\">OFF</td>");
               tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
               tb.append("</tr>");
               tb.append("</table><br>");
               tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td align=\"center\" width=\"52\">Party Invite Protection</td>");
               if(activeChar.isPartyInvProt())
               tb.append("<td width=\"16\"><button action=\"bypass -h partyin\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               if(!activeChar.isPartyInvProt())
               tb.append("<td width=\"16\"><button action=\"bypass -h partyin\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("</tr>");
               tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY party invite from another character.</font></td></tr>");
               tb.append("</table>");
               tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
               tb.append("<tr>");
               tb.append("<td align=\"center\" width=\"52\">Exp Gain Protection</td>");
               if(activeChar.cantGainXP())
               tb.append("<td width=\"16\"><button action=\"bypass -h xpnot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
               if(!activeChar.cantGainXP())
               tb.append("<td width=\"16\"><button action=\"bypass -h xpnot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
               tb.append("</tr>");
               tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve expirience from killing monsters.</font></td><td align=\"center\" valign=\"middle\"><button action=\"bypass -h page1\" width=16 height=16 back=\"L2UI_CH3.back1\" fore=\"L2UI_CH3.next1\"></td></tr>");
               tb.append("</table>");
               tb.append("</center>");
               tb.append("</body></html>");
             
               nhm.setHtml(tb.toString());
               activeChar.sendPacket(nhm);
       }
     
       @Override
       public String[] getVoicedCommandList()
       {
               return _voicedCommands;
       }
}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java    (working copy)
@@ -128,7 +128,8 @@
 
         // Send message to client
         activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SPIRITSHOT));
-        Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+        if (!activeChar.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
 
         activeChar = null;
     }
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java    (working copy)
@@ -202,7 +202,13 @@
             player.sendPacket(new SystemMessage(SystemMessageId.TARGET_TOO_FAR));
             return;
         }
-
+       
+        if (partner.isInTradeProt())
+        {
+            player.sendMessage(partner.getName() + " is in Trade Protection Mode");
+            return;
+        }
+       
         // Alt game - Karma punishment
         if(!Config.ALT_GAME_KARMA_PLAYER_CAN_TRADE && (player.getKarma() > 0 || partner.getKarma() > 0))
         {
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java    (working copy)
@@ -142,7 +142,8 @@
 
         // Send message to client
         activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SOULSHOT));
-        Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+        if (!activeChar.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
 
         activeChar = null;
     }
Index: head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java    (working copy)
@@ -58,6 +58,9 @@
         //Player is Gm and access level is below or equal to canGainExp and is in party, don't give Xp
         if(!getActiveChar().getAccessLevel().canGainExp() && getActiveChar().isInParty())
             return false;
+       
+        if (activeChar.cantGainXP())
+            return false;
 
         if(!super.addExp(value))
             return false;
@@ -111,6 +114,9 @@
         L2PcInstance activeChar = getActiveChar();
         if(!activeChar.getAccessLevel().canGainExp() && activeChar.isInParty())
             return false;
+       
+        if (activeChar.cantGainXP())
+            return false;
 
         // if this player has a pet that takes from the owner's Exp, give the pet Exp now
 
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java    (working copy)
@@ -28,6 +28,7 @@
 import com.l2jfrozen.gameserver.handler.AdminCommandHandler;
 import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
 import com.l2jfrozen.gameserver.handler.custom.CustomBypassHandler;
+import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Menu;
 import com.l2jfrozen.gameserver.model.L2Object;
 import com.l2jfrozen.gameserver.model.L2World;
 import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance;
@@ -41,8 +42,10 @@
 import com.l2jfrozen.gameserver.model.entity.event.TvT;
 import com.l2jfrozen.gameserver.model.entity.event.VIP;
 import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
 import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
 import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
 import com.l2jfrozen.gameserver.util.GMAudit;
 
 public final class RequestBypassToServer extends L2GameClientPacket
@@ -308,7 +311,90 @@
                     player.processQuestEvent(p.substring(0, idx), p.substring(idx).trim());
                 }
             }
-
                    +     else if (_command.startsWith("page1"))
                    +            Menu.mainHtml(activeChar);
                    +        else if (_command.startsWith("buffprot"))
                    +        {
                    +            if (activeChar.isBuffProtected())
                    +            {
                    +                +activeChar.setIsBuffProtected(false);
                    +                +activeChar.sendMessage("Buff protection is disabled.");
                    +                +Menu.mainHtml(activeChar);
                    +            }
                    +            else
                    +            {
                    +                activeChar.setIsBuffProtected(true);
                    +                activeChar.sendMessage("Buff protection is enabled.");
                    +                Menu.mainHtml(activeChar);
                    +            }
                    +        }
                    +        else if (_command.startsWith("tradeprot"))
                    +        {
                    +            if (activeChar.isInTradeProt())
                    +            {
                    +                +activeChar.setIsInTradeProt(false);
                    +                +activeChar.sendMessage("Trade acceptance mode is enabled.");
                    +                +Menu.mainHtml(activeChar);
                    +            }
                    +            else
                    +            {
                    +                activeChar.setIsInTradeProt(true);
                    +                activeChar.sendMessage("Trade refusal mode is enabled.");
                    +                Menu.mainHtml(activeChar);
                    +            }
                    +        }
                    +        else if (_command.startsWith("ssprot"))
                    +        {
                    +            if (activeChar.isSSDisabled())
                    +            {
                    +                activeChar.setIsSSDisabled(false);
                    +                activeChar.sendMessage("Soulshots effects are enabled.");
                    +                Menu.mainHtml(activeChar);
                    +            }
                    +            else
                    +            {
                    +                activeChar.setIsSSDisabled(true);
                    +                activeChar.sendMessage("Soulshots effects are disabled.");
                    +                Menu.mainHtml(activeChar);
                    +            }
                    +        }
                    +        else if (_command.startsWith("xpnot"))
                    +        {
                    +            if (activeChar.cantGainXP())
                    +            {
                    +                activeChar.cantGainXP(false);
                    +                activeChar.sendMessage("Enable Xp");
                    +                Menu.mainHtml2(activeChar);
                    +            }
                    +            else
                    +            {
                    +                activeChar.cantGainXP(true);
                    +                activeChar.sendMessage("Disable Xp");
                    +                Menu.mainHtml2(activeChar);
                    +            }
                    +        }
                    +        else if (_command.startsWith("pmref"))
        +    {
        +                        if (activeChar.getMessageRefusal())   
        +                        {
        +        activeChar.setMessageRefusal(false);
        +        activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_ACCEPTANCE_MODE));
        +        Menu.mainHtml(activeChar);
        +    }
        +    else
        +    {
        +        activeChar.setMessageRefusal(true);
        +        activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_REFUSAL_MODE));
        +        Menu.mainHtml(activeChar);
        +    }
        +    }
        +                    else if (_command.startsWith("partyin"))
        +                    {
        +                        if (activeChar.isPartyInvProt())
        +                        {
        +                            activeChar.setIsPartyInvProt(false);
        +                            activeChar.sendMessage("Party acceptance mode is enabled.");
        +                            Menu.mainHtml2(activeChar);
        +                        }
        +                        else
        +                        {
        +                            activeChar.setIsPartyInvProt(true);
        +                            activeChar.sendMessage("Party refusal mode is enabled.");
        +                            Menu.mainHtml2(activeChar);
        +                        }
        +                    }
        +                    else if (_command.startsWith("page2"))
        +                        Menu.mainHtml2(activeChar);
             // Jstar's Custom Bypass Caller!
             else if(_command.startsWith("custom_"))
             {
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java    (working copy)
@@ -169,7 +169,8 @@
 
         // Pet uses the power of spirit.
         activeOwner.sendPacket(new SystemMessage(SystemMessageId.PET_USE_THE_POWER_OF_SPIRIT));
-        Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, isBlessed ? 2009 : 2008, 1, 0, 0), 360000/*600*/);
+        if (!activeOwner.isSSDisabled())
+            Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, isBlessed ? 2009 : 2008, 1, 0, 0), 360000/*600*/);
 
         activeOwner = null;
         activePet = null;
Index: head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java    (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java    (working copy)
@@ -143,7 +143,16 @@
                     || skill.getSkillType() == L2Skill.SkillType.MANAHEAL_PERCENT
                     || skill.getSkillType() == L2Skill.SkillType.COMBATPOINTHEAL
                     || skill.getSkillType() == L2Skill.SkillType.REFLECT))
-                    continue;
+                continue;
+           
+            if (activeChar instanceof L2PcInstance && target != activeChar && target.isBuffProtected() && !skill.isHeroSkill()
+                && (skill.getSkillType() == L2Skill.SkillType.BUFF
+                || skill.getSkillType() == L2Skill.SkillType.HEAL_PERCENT
+                || skill.getSkillType() == L2Skill.SkillType.FORCE_BUFF
+                || skill.getSkillType() == L2Skill.SkillType.MANAHEAL_PERCENT
+                || skill.getSkillType() == L2Skill.SkillType.COMBATPOINTHEAL
+                || skill.getSkillType() == L2Skill.SkillType.REFLECT))
+                continue;
            
             // Player holding a cursed weapon can't be buffed and can't buff
             if(skill.getSkillType() == L2Skill.SkillType.BUFF)
^-^