Jump to content

Recommended Posts

Posted

statement activeChar.getLevel() >= 1

 

>= biger or Equal

 

< Smaller

> Bigger

<= Smaler-equal

>= Bigger-equal

== Equal (two Equal Symbols)

Posted

/java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/newbiegift.java@2

/*
2	 * This program is free software: you can redistribute it and/or modify it under
3	 * the terms of the GNU General Public License as published by the Free Software
4	 * Foundation, either version 3 of the License, or (at your option) any later
5	 * version.
6	 *
7	 * This program is distributed in the hope that it will be useful, but WITHOUT
8	 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9	 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
10	 * details.
11	 *
12	 * You should have received a copy of the GNU General Public License along with
13	 * this program. If not, see <http://www.gnu.org/licenses/>.
14	 */
15	package net.sf.l2j.gameserver.handler.voicedcommandhandlers;
16	
17	import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
18	import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
19	import net.sf.l2j.util.Rnd;
20	
21	/**
22	+*
23	+* @author eko
24	+*/
25	public class newbiegift implements IVoicedCommandHandler
26	{
27	        private static final String[] VOICED_COMMANDS = { "newbiegift" };
28	           
29	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
30	{
31	        if (command.equalsIgnoreCase("newbiegift"))
32	        {
33	                if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
34	                {
35	                        activeChar.sendMessage("You are allready Used that Command.");
36	                        return true;
37	                }
38	                else if (activeChar.getInventory().getItemByItemId(3434).getCount() >= 1)
39	                {
40	                        activeChar.getInventory().destroyItemByItemId("newbiegift", 3434, 1, activeChar, activeChar.getTarget());
41	                        // {ItemID, Item Ammount}
42	                int[][] items = { {8557, 1}, {8184, 1}, { 8187, 1}, { 8552, 1}, { 8185, 1}, { 8563, 1}, { 8562, 1}, { 8561, 1}, { 8560, 1} };
43	            // How many Items Aviable on the List
44	                int[] ar = items[Rnd.get(9)];
45	                activeChar.addItem(command,  ar[0], ar[1], activeChar, true);
46	                        activeChar.sendMessage("You Recived a Newbiegift!");
47	            activeChar.broadcastUserInfo();
48	                }
49	                else
50	                {
51	                        activeChar.sendMessage("Missing Coke to Create your Gift.");
52	                        return true;
53	                }
54	        }
55	        return false;
56	}
57	public String[] getVoicedCommandList()
58	{
59	        return VOICED_COMMANDS;
60	}
61	}

this is ok now:/java/net/sf/l2j/Config.java


   public static int L2JMOD_WEDDING_DIVORCE_COSTS; 
884	884	 
	885	    //Newbie Gift Config 
	886	    public static boolean  NewbieGift           = true; 
	887	     
885	888	    // Packet information 
886	889	    /** Count the amount of packets per minute ? */ 
…	…	 
1860	1863	                L2JMOD_WEDDING_DIVORCE_COSTS            = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20")); 
1861	1864	 
	1865	                //Newbie gift 
	1866	                NewbieGift              = Boolean.parseBoolean(L2JModSettings.getProperty("NewbieGift ", "True")); 
	1867	                 
1862	1868	                if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) 
1863	1869	                { 

2nd part : java/net/sf/l2j/gameserver/GameServer.java

import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Wedding; 
200	200	import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stats; 
	201	import net.sf.l2j.gameserver.handler.voicedcommandhandlers.newbiegift; 
201	202	import net.sf.l2j.gameserver.idfactory.IdFactory; 
202	203	import net.sf.l2j.gameserver.instancemanager.AuctionManager; 
…	…	 
587	588	 
588	589	        _log.config("UserCommandHandler: Loaded " + _userCommandHandler.size() + " handlers."); 
589	 	 
	590	                 
	591	 
	592	                 
590	593	                _voicedCommandHandler = VoicedCommandHandler.getInstance(); 
591	594	                _voicedCommandHandler.registerVoicedCommandHandler(new stats()); 
592	595	 
	596	                if(Config.NewbieGift) 
	597	                        _voicedCommandHandler.registerVoicedCommandHandler(new newbiegift()); 
	598	                 
593	599	                if(Config.L2JMOD_ALLOW_WEDDING) 
594	600	                        _voicedCommandHandler.registerVoicedCommandHandler(new Wedding()); 
	601	 
595	602	 
596	603	                _log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers."); 

Final: /java/config/l2jmods.properties


94	94	#--------------------------------------------------------------- 
	95	# Newbie Gift                     - 
	96	#--------------------------------------------------------------- 
	97	 
	98	NewbieGift=True 
	99	 
	100	#--------------------------------------------------------------- 
95	101	# Team vs. Team Event Engine (by FBIagent)                     - 
96	102	#--------------------------------------------------------------- 

 

 

What about this? :P

Posted

hehe well i dont think you have to put everywhere a config for everything, its easy to change thats why i left it hardcoded

 

anyway make it as a patch and i put it in my topic

Posted

+1 karma from me.

and thanks i need smth like this.

thanks again :)

 

yay! Abusing comes 'n' goes.

Okay, let me see..

 

if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
+		{
+			activeChar.sendMessage("You are allready Used that Command.");
+			return true;
+		}

 

Since when that check defines whether the player has used the command before or not? It can be spammed soo fυcking hard and of course it won't work, since the check you have added is a non-sense level check (jeez, >= 1? A player can't be level 0 -.-) and a isNewbie() check, unrelated with how many times a user has used this command.

 

activeChar.sendMessage("Missing Coke to Create your Gift.");
+			return true;

 

Missing.. whaaa?

 

@FDB: The boolean's value has to be set on False by default. (Non retail shit, just matter of detailed configuration)

 


 

Pretty wrong-coded and kinda useless.

Anyway, keep it up, soon you may come up with something better.

Posted

yay! Abusing comes 'n' goes.

Okay, let me see..

 

if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
+		{
+			activeChar.sendMessage("You are allready Used that Command.");
+			return true;
+		}

 

Since when that check defines whether the player has used the command before or not? It can be spammed soo fυcking hard and of course it won't work, since the check you have added is a non-sense level check (jeez, >= 1? A player can't be level 0 -.-) and a isNewbie() check, unrelated with how many times a user has used this command.

 

activeChar.sendMessage("Missing Coke to Create your Gift.");
+			return true;

 

Missing.. whaaa?

 

@FDB: The boolean's value has to be set on False by default. (Non retail shit, just matter of detailed configuration)

 


 

Pretty wrong-coded and kinda useless.

Anyway, keep it up, soon you may come up with something better.

this statement activeChar.getLevel() >= 1 you should to be level 0 to use this command ?

statement activeChar.getLevel() >= 1

 

>= biger or Equal

 

< Smaller

> Bigger

<= Smaler-equal

>= Bigger-equal

== Equal (two Equal Symbols)

god bless, finally 1 guy

Posted

Ohh coyote you have right if i got it enabled so the config will not work :/ thnks i will correct it on my project

 

@ eKo i will upload patches later

 

 

Posted

Ohh coyote you have right if i got it enabled so the config will not work :/ thnks i will correct it on my project

 

The Config won't work? LoL

I just pointed out a tiny tiny detail, that just has to be fixed in order for the code configuration to meet 'retail criteria'.

Posted

 

if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
+		{
+			activeChar.sendMessage("You are allready Used that Command.");
+			return true;
+		}

 

Since when that check defines whether the player has used the command before or not? It can be spammed soo fυcking hard and of course it won't work, since the check you have added is a non-sense level check (jeez, >= 1? A player can't be level 0 -.-) and a isNewbie() check, unrelated with how many times a user has used this command.

 

that should be

if (activeChar.getLevel() < 1 || !activeChar.isNewbie())

that getLevel() could be to check if there is an error, its usuall to do things like

 

if (error)

activeChar.setLevel() = -1;

 

i could not find any, but maybe in the future some1 will need it

 

 

Of course the msg used is wrong

 

 

another thing that i wont to say is the use of the returns and else if, this is not too much important, but will make it a bit better. You can do

public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
        if (command.equalsIgnoreCase("newbiegift"))
        {
                if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
                {
                }
                [b]else[/b] if (activeChar.getInventory().getItemByItemId(3434).getCount() >= 1)
                {
                }
                else
                {
                }
                       [b]return true;[/b]
        }
        return false;
}

or

public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
        if (command.equalsIgnoreCase("newbiegift"))
        {
                if (activeChar.getLevel() >= 1 && activeChar.isNewbie())
                {
                       return true
                }// if the first if was true, it will execute return, so there is no need to use else
                if (activeChar.getInventory().getItemByItemId(3434).getCount() >= 1)
                {
                       return true;
                }
                { //just to see that here goes the last code segment
                       return true;
                }
        }
        return false;
}

i repeat that this is not very important, but, its better to use it this way

Posted

that should be

if (activeChar.getLevel() < 1 || !activeChar.isNewbie())

 

How teh heck could somebody be level 0 or lower?

We are not talking about Access Level, but Character's Level.

And also, the isNewbie is supposed to be "&&" and without the exclamation mark which makes it negative.

The code should actually be

 

if (activeChar.getLevel() == 1 && activeChar.isNewbie())

 

But yet again, the check would not be able to determine whether the command has be used or not.

 

Conclusion: If set like that, the code won't work, but even if you fix this small 'symbols' issue, it will be abused and won't operate normally. So, either way the code won't work as supposed.

Posted

How teh heck could somebody be level 0 or lower?

We are not talking about Access Level, but Character's Level.

And also, the isNewbie is supposed to be "&&" and without the exclamation mark which makes it negative.

The code should actually be

 

if (activeChar.getLevel() == 1 && activeChar.isNewbie())

 

But yet again, the check would not be able to determine whether the command has be used or not.

 

Conclusion: If set like that, the code won't work, but even if you fix this small 'symbols' issue, it will be abused and won't operate normally. So, either way the code won't work as supposed.

 

seems like you didnt even read the code properly.

adenaman is right i put a few errors in it, exclamation mark which makes it negative is right since it checks if the char is the first char or the second. and Normally only the first char is a Newbie.

 

second == dosent work on L2J or at least at my pack thats why <= check if its lvl 0 or lvl 1( or did i learn java wrong at school??).

 

third the code will work only when the player has the item coke

 

anyway gonna update the code,and thanks for those answers(coyote,adaman) it helps me i am not mad more happy since its helpfull to me to get more intro l2j and fix my mistakes so this wont happen again

Guest
This topic is now closed to further replies.



  • Posts

    • Wooowww!! Thank you so much bruv!! Really useful!! Thank you for smart solution, work and sharing!!
    • Generate your own. There are tools. 
    • Server Athena x45 C4 is running online since 11 January 2026 without wipe.
    • L2SPIRIT OF LORENA x3 INTERLUDE Discord: Discord SPIRIT OF LORENA < WEBSITE: L2 Spirit of Lorena x3 Interlude WEBSITE: L2-LORENA Network x30 x1200 x5000 PvP GRAND OPENING – 12 JUNE 2026 19:00 UTC+2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ LONG TERM PROJECT NO WIPE CLASSIC INTERLUDE OLD SCHOOL COMMUNITY REAL PROGRESSION ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ WHY L2SPIRIT OF LORENA? Are you tired of servers that die after a few weeks? L2Spirit of LORENA was created for players who miss the true Interlude feeling: Clan Wars Castle Sieges Epic Bosses Party Farming Real Economy Long Term Progression No shortcuts. No instant endgame. No seasonal wipes. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SERVER INFORMATION 🛡 Chronicle: Interlude Type: Classic Low Rate Server: Long Term International Community ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ RATES EXP/SP x3 Adena x3 Drop x3 Spoil x3 Raid Boss x3 Seal Stones x3 Quest x3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DYNAMIC EXP SYSTEM 1-20 = x3.0 20-40 = x2.7 40-52 = x2.4 52-61 = x2.1 61-70 = x1.8 70-76 = x1.5 76-77 = x1.2 77-78 = x1.1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FEATURES Auto Learn Skills Auto Farm Available 2 Windows Maximum Retail Olympiad Epic Bosses Daily Events Stable Dedicated Server Active Administration ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ WHAT MAKES US DIFFERENT? No Wipe Policy Stable Economy Competitive Olympiad Clan Focused Gameplay Retail Feeling Friendly Community ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ THE JOURNEY MATTERS Every level. Every raid. Every item. Every victory. This is the Interlude experience you remember. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ SERVER STATUS TOP L2JBRASIL:Top L2JBrasil de Servidores de Lineage2 - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ OPENING DAY 12 June 2026 19:00 UTC+2 Prepare your clan. Prepare for war. The adventure begins. SEE YOU IN SPIRIT OF LORENA!
    • PlayerPort: The Ultimate In-Game Web Engine for Lineage 2 Hello. For those who don't know me, I specialize in Lineage 2 interface and client/server development. PlayerPort is my ongoing project - an attempt to build a truly universal, modular, multi-server in-game web engine. The goal is to stop "pushing" players out of the game to forums, websites, or external messengers. Instead, I want to keep them engaged by providing a seamless, high-quality experience directly within the game client. What is PlayerPort? It is a client-side module that acts as a hybrid UI. It integrates a lightweight web engine directly into the Lineage 2 client, bridging the gap between the native engine (UnrealScript/XML) and a modern web layer (HTML/JS/CSS). The Architecture: JS (Layer 0): Handles structural skeletons, widgets, and basic styling. Flash (Layer 1): Manages graphical wrappers, physics/animations, and transitions. PortNatives (C++ API): A low-level engine for math, logging, Windows interaction, WebSockets, and heavy lifting. This "sandwich" architecture allows for smooth, interactive, and high-performance UI components that don't suffer from the limitations of the legacy webkit. Key Features & Modules PortUI Framework: My own lightweight UI framework based on standard Lineage 2 methodology. No heavy external libraries - just vanilla JS with GPU-accelerated rendering. It allows for complex transitions, particles, parallax, and procedural animations without bloating the system. Advanced Report System: Fully integrated ticket management. Players can submit reports directly from the game, including attachments. It supports simple copy-paste or screenshot capture. PortNatives optimizes images (even 4K/8K) in milliseconds, reducing file size by up to 50x without losing quality, ensuring near-instant loading. Radio Module: A streamlined radio service with a vast selection of stations. Features include a mini-player (PIP), high-quality streams with jitter-fix, and a smart system that pre-checks connection status to avoid timeouts. PortStream (Streaming): Full integration for streaming platforms. You can display custom streamer lists or popular feeds directly in-game. Features include status monitoring, live preview tiles, PiP (Picture-in-Picture) playback, and native volume control (up to 200%). Communication Hub: Inter-server forums and messaging that allow collaborating projects to share news, welcome messages, and support systems without leaving the game. Admin & Analytics: Real-time dashboards tracking server population, player behavior, trade analysis, and anti-RMT/botting tools. The system builds connection chains between characters to assist administrators. Why does this matter? The current ecosystem is fragmented. By centralizing everything - support tickets, social interaction, radio, and streaming - within the client, we improve the "Quality of Life" for players and reduce administrative overhead. Performance: All network activity is handled by an external process, isolating it from the l2.exe core. We utilize "lazy" updates (periodic POSTs) and "active" subscriptions, ensuring minimal impact on game performance. Compatibility: Works on everything from ancient clients (like Grand Crusade p110) to the latest Essence/Live versions. Availability: I am looking for enthusiasts and server projects interested in adopting this. Integrating the system is fast and simple. The core service is free. Future Outlook I am currently focusing on PortCanvas, a proxy layer that will allow developers to replace native UI windows with custom web-based components. This will effectively turn Lineage 2 into a shell for fully custom web applications, accessible to anyone with basic web development skills - no complex compilers or proprietary editors required. If you are interested in implementing this on your project, or if you have questions, feel free to reach out.     Gallery https://imgur.com/a/Dqrl4L9         Contact: https://t.me/TELEGABOY See you in the next update. 🐀
  • 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..