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

    • Hey MaxCheaters! 👋 Introducing L2Soon.com — a free international platform for Lineage 2 server announcements.   Why L2Soon? No more searching through dozens of forums and Discord servers. All new L2 server openings are in one place — updated daily, with real player online counts so you always know where people actually play.   Features: 🔔 Telegram Bot (@l2Soon_bot) — alerts 24h & 1h before server launch 📅 Accurate launch times — in your local timezone ⚔️ All chronicles — Interlude, High Five, GoD, Classic, Essence, Grand Crusade and more 🎯 Filters — by chronicle, rates (x1–x1000+) and server type (PvP, RvR, GvE, Craft, Low Rate...) ⭐ VIP servers — verified projects pinned at the top 🌍 Multi-language — EN, UK, RU, PT   Listing is completely FREE. 🔗 https://l2soon.com/en Feedback welcome — drop a comment or contact us via Telegram @l2Soon_bot
    • Download Lobby u need island for lobby Download Crow Island  
    • Website: https://l2elixir.org/ Discord: https://discord.gg/5ydPHvhbxs    
    • L2-LORENA x100 MID RATE   Interlude Nostalgia Meets Modern Gameplay   OFFICIAL OPENING:  April 4 (Saturday)  19:00 UTC+1 ⸻  MAIN INFORMATION  Adena: x5  Drop: x10  Spoil: x10  Raid Boss: x10  Seal Stones: x2  Quests: x10 ⸻  FEATURES  GM Shop up to B-Grade  Full Buffer  Premium System (x2 bonuses)  AutoFarm – FREE for everyone ⸻  SERVER CONCEPT  Classic Interlude nostalgia  Enhanced with modern interface & mechanics  Balanced PvP & PvE gameplay  Active development & custom features ⸻  WHY JOIN L2-LORENA?  No Pay-to-Win  Smooth gameplay & stable server  Competitive PvP environment  Friendly & active community ⸻  JOIN US NOW L2-LORENA 100X <<< LINK Discord: https://discord.gg/TYZ88Tgx4b  Facebook: https://www.facebook.com/share/18kwbkaYZY/?mibextid=wwXIfr   L2-LORENA Link << Discord: https://discord.gg/TYZ88Tgx4b  Facebook: https://www.facebook.com/share/18kwbkaYZY/?mibextid=wwXIfr
  • 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..