Jump to content

Recommended Posts

Posted

Hello guys. I made a clan manager for a guy. I decided to share it with you.


 


What that manager does? You can change your clan's level, your clan's reputation score and add clan skills.


 


Code is untested, I would be greatful if someone test it.


 


The code: http://pastebin.com/n4kY3kbJ


 


Thanks in advance. All credits are mine.


Posted (edited)
 




+       public int itemId = 57;
+       public int itemCountLevelUp = 10000;
+       public int itemCountReputationPoints = 100000;
+       public int itemCountClanSkills = 100000000;
+       public int clanLevel = 1;
+       public int clanReputationScore = 1000;
+       public int[] clanSkills = {
+       {
+               370,
+               371,


+               372,


+               373,
+               374,
+               375,
+               376,
+               377,
+               378,
+               379,
+               380,
+               381,
+               382,
+               383,
+               384,
+               385,
+               386,
+               387,
+               388,
+               389,
+               390,
+               391
+       


 

all these should be private static final

 




+                       if (player.getClan() != null)
+                       {
+                               player.sendMessage("You don't have a clan.");
+                               return;
+                       }



 

this is wrong



+                       for (int s : clanSkills)
+                       {
+                               L2Skill clanSkill = SkillTable.getInstance().getInfo(s, SkillTable.getInstance().getMaxLevel(s));
+                               player.getClan().addNewSkill(clanSkill);
+                               player.getClan().broadcastClanStatus();
+                               player.getInventory().destroyItemByItemId("Init.", itemId, itemCountClanSkills, player, player);
+                               player.sendMessage("Your clan has learned all clan skills.");
+                       }


 

this should be



+                       for (int s : clanSkills)
+                       {
+                               L2Skill clanSkill = SkillTable.getInstance().getInfo(s, SkillTable.getInstance().getMaxLevel(s));


+                               player.getClan().addNewSkill(clanSkill);
+                               //if clan already owns this skill; continue;

+                               if (!player.getInventory().destroyItemByItemId("ClanSkill", itemId, itemCountClanSkills, player, player))
+                               {
+                                       player.sendMessage("you dont have enough materials for this clan skill);
+                                       break;
+                               }
+                               player.sendMessage("Your clan has learned all clan skills.");
+                       }
+                      player.getClan().broadcastClanStatus();



Edited by xdem
Posted (edited)

Haha this one is the best :happyforever:  Surely you wanted to write == :P

    +                       if (player.getClan() != null)
    +                       {
    +                               player.sendMessage("You don't have a clan.");
    +                               return;
    +                       }
Edited by SweeTs
Posted

There's a lot of improvements to do :

* all commands use the same checks so you can reduce amount of produced code (using for example if (command.startsWith("clan"))

* the skills array is from 370 to 391 so you can use old school for loop to avoid to store anything (not needed to store stuff which can be easily guessed).

* as said SweeTs the clan check makes the whole code broken.

* as said xdem you should check if you can destroy the item before trying to "reward" for the given action, otherwise it's a big exploit. xdem code got also a problem btw.

Posted

There's a lot of improvements to do :

* all commands use the same checks so you can reduce amount of produced code (using for example if (command.startsWith("clan"))

* the skills array is from 370 to 391 so you can use old school for loop to avoid to store anything (not needed to store stuff which can be easily guessed).

* as said SweeTs the clan check makes the whole code broken.

* as said xdem you should check if you can destroy the item before trying to "reward" for the given action, otherwise it's a big exploit. xdem code got also a problem btw.

Yeah thanks for that suggestions. I was in hurry about posting the code so I didn't notice that kind of typos.

Posted

There's a lot of improvements to do :

* all commands use the same checks so you can reduce amount of produced code (using for example if (command.startsWith("clan"))

* the skills array is from 370 to 391 so you can use old school for loop to avoid to store anything (not needed to store stuff which can be easily guessed).

* as said SweeTs the clan check makes the whole code broken.

* as said xdem you should check if you can destroy the item before trying to "reward" for the given action, otherwise it's a big exploit. xdem code got also a problem btw.

 

yes, I made that mistake cause I used his code, I gave the skill and then I asked for the price, what a dumb

  • 2 months later...
Posted

327Rev>

 

not tested ( i just fix the build error about 

  1. -import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;

 

with that

  1. +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;

 

and that 

  1. -       public L2ClanManagerInstance(int objectId, L2NpcTemplate template)

 

with that

  1. +       public L2ClanManagerInstance(int objectId, NpcTemplate template)

 

 

/*
 * 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 net.sf.l2j.gameserver.model.actor.instance;
 
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
 
/**
 * @author Devlin
 *
 */
public class L2ClanManagerInstance extends L2NpcInstance
{
       public L2ClanManagerInstance(int objectId, NpcTemplate template)
       {
               super(objectId, template);
       }
      
    @Override
    public void showChatWindow(L2PcInstance player, int val)
    {
        player.sendPacket(ActionFailed.STATIC_PACKET);
        String filename = "data/html/mods/clanManager.htm";
        NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
        html.setFile(filename);
        html.replace("%objectId%", String.valueOf(getObjectId()));
        player.sendPacket(html);
    }
      
       public int itemId = 57;
       public int itemCountLevelUp = 15;
       public int itemCountReputationPoints = 15;
       public int itemCountClanSkills = 20;
       public int clanLevel = 8;
       public int clanReputationScore = 30000;
      
       public int[] clanSkills =
       {
               370,
               371,
               372,
               373,
               374,
               375,
               376,
               377,
               378,
               379,
               380,
               381,
               382,
               383,
               384,
               385,
               386,
               387,
               388,
               389,
               390,
               391
       };
      
       @Override
       public void onBypassFeedback(L2PcInstance player, String command)
       {
               if (command.equals("clanLevelUp"))
               {
                       if (player.getClan() != null)
                       {
                               player.sendMessage("You don't have a clan.");
                               return;
                       }
                      
                       if (!player.isClanLeader())
                       {
                               player.sendMessage("You aren't the leader of your clan.");
                               return;
                       }
                      
                       if (player.getInventory().getItemByItemId(itemId).getCount() > itemCountLevelUp)
                       {
                               player.sendMessage("You don't have enough items.");
                               return;
                       }
                      
                       player.getClan().changeLevel(player.getClan().getLevel() + clanLevel);
                       player.getClan().broadcastClanStatus();
                       player.getInventory().destroyItemByItemId("Init.", itemId, itemCountLevelUp, player, player);
                       player.sendMessage("Your clan's level has been changed to "+player.getClan().getLevel());
               }
              
               else if (command.equals("clanReputationPoints"))
               {
                       if (player.getClan() != null)
                       {
                               player.sendMessage("You don't have a clan.");
                               return;
                       }
                      
                       if (!player.isClanLeader())
                       {
                               player.sendMessage("You aren't the leader of your clan.");
                               return;
                       }
                      
                       if (player.getInventory().getItemByItemId(itemId).getCount() > itemCountReputationPoints)
                       {
                               player.sendMessage("You don't have enough items.");
                               return;
                       }
                      
                       player.getClan().addReputationScore(clanReputationScore);
                       player.getClan().broadcastClanStatus();
                       player.getInventory().destroyItemByItemId("Init.", itemId, itemCountReputationPoints, player, player);
                       player.sendMessage("Your clan's reputation score has been changed to "+player.getClan().getReputationScore());
               }
              
               else if (command.equals("clanSkills"))
               {
                       if (player.getClan() != null)
                       {
                               player.sendMessage("You don't have a clan.");
                               return;
                       }
                      
                       if (!player.isClanLeader())
                       {
                               player.sendMessage("You aren't the leader of your clan.");
                               return;
                       }
                      
                       if (player.getInventory().getItemByItemId(itemId).getCount() > itemCountClanSkills)
                       {
                               player.sendMessage("You don't have enough items.");
                               return;
                       }
                      
                       for (int s : clanSkills)
                       {
                               L2Skill clanSkill = SkillTable.getInstance().getInfo(s, SkillTable.getInstance().getMaxLevel(s));
                               player.getClan().addNewSkill(clanSkill);
                               player.getClan().broadcastClanStatus();
                               player.getInventory().destroyItemByItemId("Init.", itemId, itemCountClanSkills, player, player);
                               player.sendMessage("Your clan has learned all clan skills.");
                       }
               }
       }
}
Posted (edited)

 

Haha this one is the best :happyforever:  Surely you wanted to write == :P

    +                       if (player.getClan() != null)
    +                       {
    +                               player.sendMessage("You don't have a clan.");
    +                               return;
    +                       }

he want to say if clan is different than Nothing then you don't have a clan he is right <3 xD

Edited by WolfGiaS3na
Guest
This topic is now closed to further replies.


  • Posts

    • We are looking for partners and account suppliers for cooperation We are open to partnerships with reliable account suppliers for the following dating services: ➡ Tinder ➡ Badoo ➡ Bumble ➡ Hinge ➡ Happn ➡ Meetic ➡ VK Dating We are considering long-term cooperation, stable volumes, and mutually beneficial terms. If you have any offers, we will be glad to discuss the details. Contact us using the details below. ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • We are looking for partners and account suppliers for cooperation We are open to partnerships with reliable account suppliers for the following dating services: ➡ Tinder ➡ Badoo ➡ Bumble ➡ Hinge ➡ Happn ➡ Meetic ➡ VK Dating We are considering long-term cooperation, stable volumes, and mutually beneficial terms. If you have any offers, we will be glad to discuss the details. Contact us using the details below. ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • We are looking for partners and account suppliers for cooperation We are open to partnerships with reliable account suppliers for the following dating services: ➡ Tinder ➡ Badoo ➡ Bumble ➡ Hinge ➡ Happn ➡ Meetic ➡ VK Dating We are considering long-term cooperation, stable volumes, and mutually beneficial terms. If you have any offers, we will be glad to discuss the details. Contact us using the details below. ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • 我们正在寻找合作伙伴和账号供应商进行合作 我们愿意与以下约会服务的可靠账号供应商建立合作关系: ➡ Tinder ➡ Badoo ➡ Bumble ➡ Hinge ➡ Happn ➡ Meetic ➡ VK Dating 我们考虑长期合作、稳定的供应量以及互利共赢的合作条件。 如果您有任何合作提议,我们很乐意讨论具体细节。 请通过以下联系方式与我们联系。 ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • We are looking for partners and account suppliers for cooperation We are open to partnerships with reliable account suppliers for the following dating services: ➡ Tinder ➡ Badoo ➡ Bumble ➡ Hinge ➡ Happn ➡ Meetic ➡ VK Dating We are considering long-term cooperation, stable volumes, and mutually beneficial terms. If you have any offers, we will be glad to discuss the details. Contact us using the details below. ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock