Jump to content

Recommended Posts

  • 3 weeks later...
Posted

just a few tip

 

When you do something like that you dont need to use runnable.

Since you made it for epilogue you can place the whole thing into the DP.

Using so many social actions is bad you can just one 1 of them.

Instead of textbuilder you can use StringBuilder.

When you declare something like that: int unstuckTimer = (1*1000 ); you dont need to multiple it with 1 unless its not configurable.

 

Overall better than your previous shares now you just need to learn some coding.

Posted

Instead of textbuilder you can use StringBuilder.

" This class represents an Appendable text whose capacity expands gently without incurring expensive resize/copy operations ever.

 

This class is not intended for large documents manipulations which should be performed with the Text class directly (O(Log(n)) insertion and deletion capabilities).

 

This implementation is not synchronized."

 

TextBuilder is by far a better option then a string builder.

Posted

Good idea ty for sharing, but where is the NPC or how i can add one for this .java script???? I don't see any NPC ID in your script... If you can tell me how...?  Ty

Posted

Good idea ty for sharing, but where is the NPC or how i can add one for this .java script???? I don't see any NPC ID in your script... If you can tell me how...?  Ty

 

Because its NPC Instance (like L2Npc, L2Buffer, L2Gatekeeper, L2Merchant etc)

 

So u have to create new NPC with type L2CasinoInstance.

  • 4 weeks later...
Posted

Link is dead ;)

 

For interlude reworked

 

package com.src.gameserver.model.actor.instance;

import javolution.text.TextBuilder;

import com.src.gameserver.GameTimeController;
import com.src.gameserver.ai.CtrlIntention;
import com.src.gameserver.network.serverpackets.ExShowScreenMessage;
import com.src.gameserver.network.serverpackets.MagicSkillUser;
import com.src.gameserver.network.serverpackets.NpcHtmlMessage;
import com.src.gameserver.network.serverpackets.SetupGauge;
import com.src.gameserver.network.serverpackets.SocialAction;
import com.src.gameserver.templates.L2NpcTemplate;
import com.src.gameserver.thread.ThreadPoolManager;
import com.src.gameserver.util.Broadcast;
import com.src.util.random.Rnd;

public class L2CasinoInstance extends L2NpcInstance
{
   public String filename;

   public L2CasinoInstance(int objectId, L2NpcTemplate template)
   {
       super(objectId, template);
   }

   @Override
   public void onBypassFeedback(L2PcInstance player, String command)
   {
       if(player == null || player.getLastFolkNPC() == null || player.getLastFolkNPC().getObjectId() != this.getObjectId())
       {
           return;
       }

       if(command.startsWith("play1"))
       {
           Casino1(player);
       }

       if(command.startsWith("play2"))
       {
           Casino2(player);
       }

       if(command.startsWith("play3"))
       {
           Casino3(player);
       }

       if(command.startsWith("play4"))
       {
           Casino4(player);
       }
   }

   public static void displayCongrats(L2PcInstance player)
   {
       player.broadcastPacket(new SocialAction(player.getObjectId(), 3));
       MagicSkillUser  MSU = new MagicSkillUser(player, player, 2024, 1, 1, 0);
       player.broadcastPacket(MSU);
       ExShowScreenMessage screen = new ExShowScreenMessage("Congratulations "+player.getName()+"! You won!", 15000);
       player.sendPacket(screen);
   }

   public static void displayCongrats2(L2PcInstance player)
   {
       ExShowScreenMessage screen = new ExShowScreenMessage(""+player.getName()+"! You lost!", 15000);
       player.sendPacket(screen);
   }

   @Override
   public void showChatWindow(L2PcInstance player, int val)
   {
       filename = (getHtmlPath(getNpcId(), val));
       NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
       msg.setHtml(casinoWindow(player));
       msg.replace("%objectId%", String.valueOf(this.getObjectId()));
       player.sendPacket(msg);
   }

   private String casinoWindow(L2PcInstance player)
   {
       TextBuilder tb = new TextBuilder();
       tb.append("<html><title>Casino Manager</title><body>");
       tb.append("<center>");
       tb.append("<br>");
       tb.append("<font color=\"999999\">Chance to win : 50%</font><br>");
       tb.append("<img src=\"L2UI.SquareGray\" width=\"200\" height=\"1\"><br>");
       tb.append("Welcome "+player.getName()+"<br>");
       tb.append("<tr><td>Double or Nothing ?</td></tr><br>");
       tb.append("<img src=\"L2UI.SquareGray\" width=\"280\" height=\"1\"></center><br>");
       tb.append("<center>");
       tb.append("Place your bets");
       tb.append("</center>");
       tb.append("<img src=\"L2UI.SquareGray\" width=\"280\" height=\"1\"></center><br>");
       tb.append("<br>");
       tb.append("<center>");
       tb.append("<tr>");
       tb.append("<td><button value= 100KK action=\"bypass -h npc_%objectId%_play1\" width=130 height=25 back= L2UI_ct1.button_df fore = L2UI_ct1.button_df></td>");
       tb.append("<td><button value= 300KK action=\"bypass -h npc_%objectId%_play2\" width=130 height=25 back= L2UI_ct1.button_df fore = L2UI_ct1.button_df></td>");
       tb.append("</tr>");
       tb.append("<tr>");
       tb.append("<td><button value= 500KK action=\"bypass -h npc_%objectId%_play3\" width=130 height=25 back= L2UI_ct1.button_df fore = L2UI_ct1.button_df></td>");
       tb.append("<td><button value= 1KKK action=\"bypass -h npc_%objectId%_play4\" width=130 height=25 back= L2UI_ct1.button_df fore = L2UI_ct1.button_df></td>");
       tb.append("</tr>");
       tb.append("</center>");

       tb.append("<center><img src=\"L2UI.SquareGray\" width=\"280\" height=\"1\">");
       tb.append("</body></html>");
       return tb.toString();
   }

   public static void Casino1(L2PcInstance player)
   {
       int unstuckTimer = (1*1000 );
       player.setTarget(player);
       player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
       player.disableAllSkills();
       MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
       Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
       SetupGauge sg = new SetupGauge(0, unstuckTimer);
       player.sendPacket(sg);

       Casino1 ef = new Casino1(player);
       player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
       player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
   }

   static class Casino1 implements Runnable
   {
       private L2PcInstance _player;
       Casino1(L2PcInstance player)
       {
           _player = player;
       }
       public void run()
       {
           if(_player.isDead())
           {
               return;
           }

           _player.setIsIn7sDungeon(false);
           _player.enableAllSkills();
           int chance = Rnd.get(2);

           if(_player.isNoble() && _player.getInventory().getInventoryItemCount(57, 0) >= 100000000)
           {
               if(chance == 0)
               {
                   displayCongrats(_player);
                   _player.getInventory().addItem("Adena", 57, 100000000, _player, null);
               }

               if(chance == 1)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 100000000, _player, null);
               }
           }
           else
           {
               _player.sendMessage("You do not have eneough items.");
           }
       }
   }

   public static void Casino2(L2PcInstance player)
   {
       int unstuckTimer = (1*1000 );
       player.setTarget(player);
       player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
       player.disableAllSkills();
       MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
       Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
       SetupGauge sg = new SetupGauge(0, unstuckTimer);
       player.sendPacket(sg);

       Casino2 ef = new Casino2(player);
       player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
       player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
   }

   static class Casino2 implements Runnable
   {
       private L2PcInstance _player;
       Casino2(L2PcInstance player)
       {
           _player = player;
       }
       public void run()
       {
           if(_player.isDead())
           {
               return;
           }

           _player.setIsIn7sDungeon(false);
           _player.enableAllSkills();
           int chance = Rnd.get(3);

           if(_player.isNoble() && _player.getInventory().getInventoryItemCount(57, 0) >= 300000000)
           {
               if(chance == 0)
               {
                   displayCongrats(_player);
                   _player.getInventory().addItem("Adena", 57, 300000000, _player, null);
               }

               if(chance == 1)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 300000000, _player, null);
               }

               if(chance == 2)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 300000000, _player, null);
               }
           }
           else
           {
               _player.sendMessage("You do not have eneough items.");
           }
       }
   }

   public static void Casino3(L2PcInstance player)
   {
       int unstuckTimer = (1*1000 );
       player.setTarget(player);
       player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
       player.disableAllSkills();
       MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
       Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
       SetupGauge sg = new SetupGauge(0, unstuckTimer);
       player.sendPacket(sg);

       Casino3 ef = new Casino3(player);
       player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
       player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
   }

   static class Casino3 implements Runnable
   {
       private L2PcInstance _player;
       Casino3(L2PcInstance player)
       {
           _player = player;
       }
       public void run()
       {
           if(_player.isDead())
           {
               return;
           }

           _player.setIsIn7sDungeon(false);
           _player.enableAllSkills();
           int chance = Rnd.get(3);

           if(_player.isNoble() && _player.getInventory().getInventoryItemCount(57, 0) >= 500000000)
           {
               if(chance == 0)
               {
                   displayCongrats(_player);
                   _player.getInventory().addItem("Adena", 57, 500000000, _player, null);
               }

               if(chance == 1)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 500000000, _player, null);
               }

               if(chance == 2)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 500000000, _player, null);
               }
           }
           else
           {
               _player.sendMessage("You do not have eneough items.");
           }
       }
   }

   public static void Casino4(L2PcInstance player)
   {
       int unstuckTimer = (1*1000 );
       player.setTarget(player);
       player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
       player.disableAllSkills();
       MagicSkillUser msk = new MagicSkillUser(player, 361, 1, unstuckTimer, 0);
       Broadcast.toSelfAndKnownPlayersInRadius(player, msk, 810000);
       SetupGauge sg = new SetupGauge(0, unstuckTimer);
       player.sendPacket(sg);

       Casino4 ef = new Casino4(player);
       player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, unstuckTimer));
       player.setSkillCastEndTime(10+GameTimeController.getGameTicks()+unstuckTimer/GameTimeController.MILLIS_IN_TICK);
   }

   static class Casino4 implements Runnable
   {
       private L2PcInstance _player;
       Casino4(L2PcInstance player)
       {
           _player = player;
       }
       public void run()
       {
           if(_player.isDead())
           {
               return;
           }

           _player.setIsIn7sDungeon(false);
           _player.enableAllSkills();
           int chance = Rnd.get(3);

           if(_player.isNoble() && _player.getInventory().getInventoryItemCount(57, 0) >= 1000000000)
           {
               if(chance == 0)
               {
                   displayCongrats(_player);
                   _player.getInventory().addItem("Adena", 57, 1000000000, _player, null);
               }

               if(chance == 1)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 1000000000, _player, null);
               }

               if(chance == 2)
               {
                   displayCongrats2(_player);
                   _player.getInventory().destroyItemByItemId("Adena", 57, 1000000000, _player, null);
               }
           }
           else
           {
               _player.sendMessage("You do not have eneough items.");
           }
       }
   }
}

 

No problem ;p

Guest
This topic is now closed to further replies.


  • Posts

    • do u have the full source code for it  coz the one i have does not have code to read ukx files
    • 🎨 Design & edit without limits: Canva Pro & CapCut Pro subscriptions restocked and active with instant automated delivery!     FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently!  BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! ‍ Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
    • VAELOR Lineage II Interlude · L2OFF · x12   OPEN BETA 9 October 2026 · 17:00 UTC   GRAND OPENING 23 October 2026 · 17:00 UTC   Website: https://l2vaelor.com/ Discord: https://discord.gg/qMgPxH2fd4   ━━━━━━━━━━━━━━━━━━━━━━   WHAT VAELOR AIMS TO BE   Vaelor is an international L2OFF Interlude x12 server built to preserve the original Interlude experience. Combat, classes, crafting, sieges, Olympiad and progression remain close to retail. The changes are limited to the pace and convenience features that make sense on an x12 server.   RATES   EXP and SP: x12 Party EXP and SP: x13.2 Adena: x10 Drop: x5 Spoil: x9 Quest EXP and SP: x3 Quest Adena: x3 Raid Boss Drop: x3   SERVER INFORMATION   Server location: France Main language: English Level cap: 80 Safe enchant: +3, or +4 for full body armor Maximum enchant: +16 Enchant through +15: 70% physical weapons, 40% magic weapons, 66% armor Final step to +16: 35% physical weapons, 20% magic weapons, 66% armor Buff slots: 20 First and second class changes: free Third class change: original quest Game windows: 3   GAMEPLAY   No auto-farm or custom equipment. Level-scaled buffer with presets, custom schemes and support for both players and pets. The available buffs are gradually reduced as the character levels, helping early progression without replacing support classes later in the game. The Global Gatekeeper only connects towns and villages. Travel is free below level 40, then uses level-based Adena fees, with half-price travel between 18:00 and 06:00 UTC. There are no direct teleports to farming zones. The Alt+B Market is a centralized convenience shop containing only consumables and utility items already sold without limits by regular town merchants. Its prices are deliberately higher, so visiting the original NPC merchants remains the economical choice. It does not sell equipment, crafting materials, enchant scrolls or Life Stones. Drop Search finds either an item or a monster and shows where items drop or can be spoiled, including the server rates and the viewing character's level penalty. Player Shop Search and Offline Shop make it easier to find and trade with actual player-run stores while keeping the economy in players' hands. Offline shops remain active for up to 48 hours. Rankings and live Raid Boss and Grand Boss status are available through Alt+B. Character PIN and Computer Lock provide additional account and character protection. Restored and corrected Interlude content includes the Frozen Labyrinth and Ice Queen quest chain, Primeval Isle and Sailren, Wild Beast Reserve, Rainbow Springs Hall, Pagan Temple, and quests around Pavel Ruins and the Plunderous Plains. Auto learn and auto loot are enabled. Castle sieges every two weeks Olympiad daily from 18:00 to 00:00 UTC   PREMIUM AND STORE   Premium grants +15% EXP and SP, +5% Adena, Drop and Spoil, one additional game window and convenience features. The store is limited to Premium, cosmetic accessories and character services. Equipment, enchants, combat stats and access to content are not sold.   ━━━━━━━━━━━━━━━━━━━━━━   If you know Interlude well, come test the server and tell us honestly what feels wrong.   Create account: https://l2vaelor.com/register Download: https://l2vaelor.com/#download Discord: https://discord.gg/qMgPxH2fd4
    • 💎 Unlock Gemini Pro workspace integrations and full 5TB Drive storage today. Verified authentic links delivered instantly!   FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently!  BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! ‍ Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..