Jump to content
  • 0

making the services by items


HorrorSlyer

Question

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	}

 

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0
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
Link to comment
Share on other sites

  • 0

@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	                        }

 

Link to comment
Share on other sites

  • 0
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
Link to comment
Share on other sites

  • 0
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
Link to comment
Share on other sites

  • 0

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"); 
		}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • rename the l2.bin into l2.exe
    • L2LIVE.PRO- Dynamic Mid-rates Essence Seven Signs GRAND OPENING - July 5, 20:00 GMT+3 (EEST) TEST SERVER IS OPEN - COME AND CHECK IT OUT TODAY! Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu   Server description * EXP/SP: Dynamic (x1- x100 based on your level, *before* Sayha and EXP buffs * Adena: x50 / Item Drop: x10 / Fishing EXP increased / Attribute EXP increased * Simplified gameplay to stay in the loop while not spending hours and hours farming * Starter Pack containing very useful items for beginners * MP replenishing potions with auto-consumption * No overpowered donations L2LIVE shop * All spellbook coupons, pet spellbook coupons and master books are sold via Game Assistant * Additionally you can buy SP pouches, enchanted talismans, pet training guides and various other consumables for Adena and L-Coin * More items such as cloaks, more talismans, agathions, belts, pendants, enchantment scrolls of various grades, evolution stones, etc will be added! Shop server as a shortcut, and all retail-like ways of earning items are still here! L-Coins * Drops with small change and in random amounts from Lv60+ monsters  * All raidbosses drop random amount of L-Coin Pouches generating up to 420 Lcoin per unit. **Grand Olympiad and Events** * Grand Olympiad is held week day * Format is 1v1, unlimited weekly fights  * Heroes are declared weekly at Sunday * There are three automated events - TvT, CTF and Deathmatch, running at evenings * Orc Fortress, Battle with Balok, Keber Hunter, Archievements Box, Daily Gift Calendar provisional events are active too Custom user commands * .offlineplay command, your character will keep playing till death or server restart * .offlineshop command, keeps your shop sitting until all items are purchased * .apon / .apoff - enable/disable HP/MP autoconsume And lots of other small improvements are waiting for you!   Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu
  • Topics

×
×
  • Create New...