Jump to content
  • 0

making the services by items


Question

Posted

hello guys how i can make this script working by coins and not free

package l2f.gameserver.model.instances;
2	
3	import java.sql.Connection;
4	import java.sql.PreparedStatement;
5	
6	import l2f.commons.dbutils.DbUtils;
7	import l2f.gameserver.database.DatabaseFactory;
8	import l2f.gameserver.model.Player;
9	import l2f.gameserver.model.entity.olympiad.Olympiad;
10	import l2f.gameserver.network.serverpackets.L2GameServerPacket;
11	import l2f.gameserver.network.serverpackets.PledgeShowInfoUpdate;
12	import l2f.gameserver.network.serverpackets.SkillList;
13	import l2f.gameserver.network.serverpackets.UserInfo;
14	import l2f.gameserver.tables.SkillTable;
15	import l2f.gameserver.templates.npc.NpcTemplate;
16	import l2f.gameserver.utils.Log;
17	
18	public final class BetaNPCInstance extends NpcInstance
19	{
20	        /**
21	         * 
22	         */
23	        private static final long serialVersionUID = 5938813598479742068L;
24	
25	        public BetaNPCInstance(int objectId, NpcTemplate template)
26	        {
27	                super(objectId, template);
28	        }
29	       
30	        @Override
31	        public void onBypassFeedback(Player player, String command)
32	        {
33	                if (!canBypassCheck(player, this))
34	                {
35	                        return;
36	                }
37	                if (command.equalsIgnoreCase("change_sex"))
38	                {
39	                        Connection con = null;
40	                        PreparedStatement offline = null;
41	                        try
42	                        {
43	                                con = DatabaseFactory.getInstance().getConnection();
44	                                offline = con.prepareStatement("UPDATE characters SET sex = ? WHERE obj_Id = ?");
45	                                offline.setInt(1, player.getSex() == 1 ? 0 : 1);
46	                                offline.setInt(2, player.getObjectId());
47	                                offline.executeUpdate();
48	                        }
49	                        catch (Exception e)
50	                        {
51	                                e.printStackTrace();
52	                                return;
53	                        }
54	                finally
55	                        {
56	                                DbUtils.closeQuietly(con, offline);
57	                        }
58	                       
59	                        player.changeSex();
60	                        player.sendMessage("Your gender has been changed !!");
61	                        Log.add(new StringBuilder().append("Character ").append(player).append("  changed sex to ").append(player.getSex() == 1 ? "male" : "female").toString(), "renames");
62	                }
63	                else if (command.equalsIgnoreCase("add_clan_reputation"))
64	                {
65	                        if (player.getClan() != null)
66	                        {
67	                                player.getClan().incReputation(10000, false, "BetaNpc");
68	                                player.getClan().broadcastToOnlineMembers(new L2GameServerPacket[]
69	                                {
70	                                        new PledgeShowInfoUpdate(player.getClan())
71	                                });
72	                                player.sendMessage("Your clan received 10 000 clan reputation!");
73	                        }
74	                        else
75	                        {
76	                                player.sendMessage("You don't have clan to use this feature!");
77	                        }
78	                }
79	                else if (command.equalsIgnoreCase("add_exp_sp"))
80	                {
81	                        player.addExpAndSp(999999999L, 999999999L);
82	                        player.addExpAndSp(999999999L, 999999999L);
83	                        player.addExpAndSp(999999999L, 999999999L);
84	                        player.addExpAndSp(999999999L, 999999999L);
85	                        player.addExpAndSp(999999999L, 999999999L);
86	                        player.addExpAndSp(999999999L, 999999999L);
87	                        player.addExpAndSp(999999999L, 999999999L);
88	                        player.addExpAndSp(999999999L, 999999999L);
89	                }
90	                else if (command.equalsIgnoreCase("add_fame"))
91	                {
92	                        player.setFame(player.getFame() + 10000, "BetaNpc");
93	                        player.sendPacket(new UserInfo(player));
94	                        player.sendMessage("You received 10.000 fame points !");
95	                }
96	                else if (command.equalsIgnoreCase("give_noblesse"))
97	                {
98	                        if (!player.isNoble())
99	                        {
100	                                Olympiad.addNoble(player.getPlayer());
101	                                player.getPlayer().setNoble(true);
102	                                player.getPlayer().updatePledgeClass();
103	                                player.getPlayer().updateNobleSkills();
104	                                player.getPlayer().sendPacket(new SkillList(player.getPlayer()));
105	                                player.getPlayer().broadcastUserInfo(true);
106	                                player.getInventory().addItem(7694, 1L, "nobleTiara");
107	                                player.sendMessage("Congratulations! You gained noblesse rank.");
108	                                player.broadcastUserInfo(true);
109	                        }
110	                        else if (player.isNoble())
111	                        {
112	                                player.sendMessage("You already have noblesse rank !");
113	                        }
114	                }
115	                else if (command.equalsIgnoreCase("give_hero"))
116	                {
117	                        if (!player.isHero())
118	                        {
119	                                player.setHero(true);
120	                                player.updatePledgeClass();
121	                                player.addSkill(SkillTable.getInstance().getInfo(395, 1));
122	                                player.addSkill(SkillTable.getInstance().getInfo(396, 1));
123	                                player.addSkill(SkillTable.getInstance().getInfo(1374, 1));
124	                                player.addSkill(SkillTable.getInstance().getInfo(1375, 1));
125	                                player.addSkill(SkillTable.getInstance().getInfo(1376, 1));
126	                                player.sendPacket(new SkillList(player));
127	                                player.getPlayer().broadcastUserInfo(true);
128	                                player.sendMessage("Congratulations! You gained hero rank.");
129	                                player.broadcastUserInfo(true);
130	                        }
131	                        else if (player.isNoble())
132	                        {
133	                                player.sendMessage("You already have hero rank !");
134	                        }
135	                }
136	                else
137	                {
138	                        super.onBypassFeedback(player, command);
139	                }
140	        }
141	       
142	        @Override
143	        public boolean isNpc()
144	        {
145	                return true;
146	        }
147	       
148	}

 

5 answers to this question

Recommended Posts

  • 0
Posted (edited)
3 hours ago, HorrorSlyer said:

if (command.equalsIgnoreCase("change_sex"))

{

.

.

.

}

 

example
 

if (command.equalsIgnoreCase("change_sex"))
{
	if (activeChar.getInventory().getCountOf(Config.getChangeSexPriceId()) >= Config.getChangeSexPriceCount())
	{
		activeChar.getInventory().destroyItemByItemId(Config.getChangeSexPriceId(), Config.getChangeSexPriceCount(), "SexChange");
.
.
.
Your Code Here
.
.
.
	}
	else
		activeChar.sendMessage("Error: You don't have items to pay.");
}

 

Edited by L2 TokTil
Quote
  • 0
Posted

@Nightwolf    

if (!player.isNoble())
99	                        {
100	                                Olympiad.addNoble(player.getPlayer());
101	                                player.getPlayer().setNoble(true);
102	                                player.getPlayer().updatePledgeClass();
103	                                player.getPlayer().updateNobleSkills();
104	                                player.getPlayer().sendPacket(new SkillList(player.getPlayer()));
105	                                player.getPlayer().broadcastUserInfo(true);
106	                                player.getInventory().addItem(7694, 1L, "nobleTiara");
107	                                player.sendMessage("Congratulations! You gained noblesse rank.");
108	                                player.broadcastUserInfo(true);
109	                        }
110	                        else if (player.isNoble())
111	                        {
112	                                player.sendMessage("You already have noblesse rank !");
113	                        }

 

  • 0
Posted (edited)
4 hours ago, L2 TokTil said:

 

example
 


if (command.equalsIgnoreCase("change_sex"))
{
	if (activeChar.getInventory().getCountOf(Config.getChangeSexPriceId()) >= Config.getChangeSexPriceCount())
	{
		activeChar.getInventory().destroyItemByItemId(Config.getChangeSexPriceId(), Config.getChangeSexPriceCount(), "SexChange");
.
.
.
Your Code Here
.
.
.
	}
	else
		activeChar.sendMessage("Error: You don't have items to pay.");
}

 

 

destroyItemByItemId its a boolean method. True if all item count destroyed ,false if not. So item count check is useless

Edited by Creamy G Colin
  • 0
Posted (edited)
24 minutes ago, Creamy G Colin said:

 

destroyItemByItemId its a boolean method. True if all item count destroyed ,false if not. So item count check is useless

 

If you use Player#destroyItemByItemId you are right, even the error message is included if the boolean is set to true.

 

In case you use getInventory() version, it isn't. It's generally used for "custom" message, eg. Lotto tickets / pet item with integrated level.

 

So that will simply be, error message included 

 

if (playerInstance.destroyItemByIt...)
{
    // code here
}

 

Edited by Tryskell
  • 0
Posted

thank's for the support guys example for gendre change service 

 

		if (command.equalsIgnoreCase("change_sex"))
		{
			if (player.getRace() == Race.kamael)
			{
				player.sendMessage("Not available for Kamael.");
				return;
			}
			if (Functions.getItemCount(player, Config.DONATOR_NPC_ITEM) < Config.DONATOR_NPC_COUNT_SEX)
			{
				player.sendMessage("You don't have enough " + Config.DONATOR_NPC_ITEM_NAME +"." );
				return;
			}

			Connection con = null;
			PreparedStatement offline = null;
			try
			{
				con = DatabaseFactory.getInstance().getConnection();
				offline = con.prepareStatement("UPDATE characters SET sex = ? WHERE obj_Id = ?");
				offline.setInt(1, player.getSex() == 1 ? 0 : 1);
				offline.setInt(2, player.getObjectId());
				offline.executeUpdate();
			}
			catch(Exception e)
			{
				e.printStackTrace();
				return;
			}
			finally
			{
				DbUtils.closeQuietly(con, offline);
			}

			Functions.removeItem(player, Config.DONATOR_NPC_ITEM, Config.DONATOR_NPC_COUNT_SEX, "Removed");
			player.changeSex();
			player.setTransformation(251);
			player.sendMessage("Your gender has been changed!");
			player.broadcastUserInfo(true);
			player.setTransformation(0);
			System.out.println("Character " + player + "  changed sex via donation"); 
		}

 

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


  • Posts

    • TELEGRAM SEO TRAINING (Bot Ranking in Search) I teach a complete system for ranking Telegram bots at the top of search results by keywords and countries. The method works for services, shops, crypto projects, and any type of Telegram bot. You can also direct the traffic to your groups, channels, websites, or sales funnels. ⸻  Countries I work with USA, Israel, Russia, India, Turkey, China, Ukraine, Uzbekistan. If you need another country — message me, we’ll find a solution. ⸻ ️ Results First search results appear in 2–3 days. ⸻  What’s included in the training • how the Telegram search algorithm works and key ranking factors • keyword research for your country and niche • bot optimization: description, settings, greeting text • fixing and maintaining positions • specific promotion nuances for different countries ⸻  What you will receive • a complete system for ranking bots in search • understanding how to work with keywords, traffic, and positions • a skill you can use to promote your own projects or earn from clients ⸻  Who this training is for • beginners with zero experience — I explain everything from scratch • those who don’t have a bot — I provide a ready one for practice • anyone who wants to learn promotion and earn from this service ⸻  Why learn from me • doing Telegram SEO since 2021 • over 1000 successful orders • my own panel SMMTG.PRO and private databases • experience working with markets of Russia, Uzbekistan, Ukraine, Israel, USA, Turkey, China, India, Vietnam, Europe, and more ⸻  For pricing — message me t.me/smmtg_link
    • Hey everyone, I was wondering if anyone knows where the client loads all the .dat files. Is there some kind of manifest or list you can specify which dat files the client loads?
    • 🔥 Welcome to Lineage 2 Haruna x3 – True Classic Interlude Experience 🔥 At Haruna x3, we’re bringing back the true essence of Interlude – slow, meaningful progression where every level matters, every item has value, and PvP is real. We’re not about fast servers, pay-to-win advantages, or fake populations. Our goal is simple: create a fair, stable, and long-term server where players can enjoy real competition, strategic clan warfare, and the thrill of open-world PvP. 💎 What Makes Haruna x3 Special? x3 Rates – Perfect for steady, rewarding progression Classic Interlude Mechanics – Relive the nostalgia of Interlude Stable & Lag-Free Gameplay – Optimized for thousands of players online Fair & Balanced – No pay-to-win, every victory is earned PvP & Clan Warfare Focused – Every battle counts 🌟 Quality of Life Features to Enhance Your Experience We keep the classic feel while adding features that make the game more convenient and enjoyable, including: Shift + Click to view monster droplists Free item mail and buy/sell via Adena Daily login rewards & Stream Rewards ALT+K Skill Panel & Alt+Click buffs removal Offline shop system Captcha for security Donate Coins currency (cannot be traded, dropped, or destroyed) Classic P110 client – no custom interface 🏰 Our Philosophy We believe Lineage 2 is about the journey, not just the destination. Haruna x3 is designed for months and years of growth, not weeks. We provide a community-driven environment where honest gameplay, fair competition, and strategic teamwork are at the forefront. 🌍 Join Our Community Whether you’re a veteran of Interlude or a returning player seeking a true classic experience, Haruna x3 offers a place to fight, trade, and grow alongside dedicated players. Step into the world of Haruna x3 – where every decision matters, every fight counts, and every victory is yours to earn. Discord: https://discord.gg/7DDC9Dsxnh Website : www.l2haruna.com
    • No, the real purpose is cheating and custom  development for games.  I'm building a custom AI moderator specially for checking illegal activity and flag current topica.
  • 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