Jump to content

Recommended Posts

Posted

Hello. With this script ( as the subject says ) your players can vote for the next auto event.

In the game you can use the .vote_tvt and .vote_ctf commands.

I made it for L2JFree pack.

 

/ gameserver.model.entity.events.EventVoteVariable.java /


/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
* 
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* 
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfree.gameserver.model.entity.events;


/**
* 
* @author Rizel
* 
*/

public class EventVoteVariable
{
public int								_voteCountCTF = 0;
public int								_voteCountTvT = 0;
private int								_voteCount = 0;

public int getVoteCount(String name)
{

	if (name == "tvt")
	{
		_voteCount = _voteCountTvT;
	}

	if (name == "ctf")
	{
		_voteCount = _voteCountCTF;
	}

	return  _voteCount;
}

public void increaseVoteCount(String name)
{
	if (name == "tvt")
	{
		_voteCountTvT = _voteCountTvT+1;
	}

	if (name == "ctf")
	{
		_voteCountCTF = _voteCountCTF+1;
	}

}



}


/ gameserver.handler.voicedcommandhandlers.EventVote.java /


/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfree.gameserver.handler.voicedcommandhandlers;


import com.l2jfree.Config;
import com.l2jfree.gameserver.handler.IVoicedCommandHandler;
import com.l2jfree.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfree.gameserver.model.entity.events.EventVoteVariable;
import java.util.StringTokenizer;
/**
*
* @author Rizel
*/
public class EventVote implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS = {"vote_tvt", "vote_ctf"};

/**
 * 
 * @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, net.sf.l2j.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
 */
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
	EventVoteVariable e = new EventVoteVariable();
	if(command.startsWith("vote_tvt"))
    {

			if (activeChar._voteEvent == false)
			{
				e.increaseVoteCount("tvt");
				activeChar._voteEvent = true;
				activeChar.sendMessage("You succesfully voted for the TvT event. TvT: " + e.getVoteCount("tvt") + " CTF: " + e.getVoteCount("ctf") + ".");
			}
			else
			{
				activeChar.sendMessage("You have already voted for an event.");	
			}
			return true;

    }


	if(command.startsWith("vote_ctf"))
    {
			if (activeChar._voteEvent == false)
			{
				e.increaseVoteCount("ctf");
				activeChar._voteEvent = true;
				activeChar.sendMessage("You succesfully voted for the CTF event. TvT: " + e.getVoteCount("tvt") + " CTF: " + e.getVoteCount("ctf") + ".");
			}

			else
			{
				activeChar.sendMessage("You have already voted for an event.");	
			}
			return true;
    }



	return false;
	}




/**
 * 
 * @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
 */
public String[] getVoicedCommandList()
{
	return VOICED_COMMANDS;
}
}


 

/ gameserver.model.entity.events.StartEvent.java /


/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
* 
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* 
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfree.gameserver.model.entity.events;


import com.l2jfree.tools.random.Rnd;
import com.l2jfree.gameserver.model.entity.events.TvT;
import com.l2jfree.gameserver.model.entity.events.CTF;
import com.l2jfree.gameserver.model.entity.events.EventVoteVariable;
/**
* 
* @author Rizel
* 
*/

public class StartEvent
{

public static void startEvent()
{
	EventVoteVariable e = new EventVoteVariable();


	if (e.getVoteCount("tvt") > e.getVoteCount("ctf"))
	{
	TvT.loadData();
	TvT.autoEvent();
	}

	if (e.getVoteCount("ctf") > e.getVoteCount("tvt"))
	{
	CTF.loadData();
	CTF.autoEvent();
	}

	if (e.getVoteCount("tvt") == e.getVoteCount("ctf"))
	{
		if (Rnd.get(1) == 1)
			{
			TvT.loadData();
			TvT.autoEvent();
			}
		else
			{
			CTF.loadData();
			CTF.autoEvent();
			}
	}


}


}

 

/ gameserver.handler.VoicedCommandHandler.java /


private VoicedCommandHandler()
{
	_datatable = new FastMap<String, IVoicedCommandHandler>();
	registerVoicedCommandHandler(new CastleDoors());
	registerVoicedCommandHandler(new Hellbound());
	registerVoicedCommandHandler(new Banking());
+		registerVoicedCommandHandler(new EventVote());


 

 

/ gameserver.model.entity.events.TvT.java /


public static void cleanTvT()
{
	_log.info("TvT : Cleaning players.");
	for (L2PcInstance player : _players)
	{
		if (player != null)
		{
			removePlayer(player);
			if (_savePlayers.contains(player.getName()))
				_savePlayers.remove(player.getName());
			player._inEventTvT = false;
+				player._voteEvent = false;
		}
	}

 

 

/ gameserver.model.entity.events.CTF.java /


public static void cleanCTF()
{
	_log.info("CTF : Cleaning players.");
	for (L2PcInstance player : _players)
	{
		if (player != null)
		{
			if (player._haveFlagCTF)
				removeFlagFromPlayer(player);
			else
				player.getInventory().destroyItemByItemId("", CTF._FLAG_IN_HAND_ITEM_ID, 1, player, null);
			player._haveFlagCTF = false;
			removePlayer(player);
			if (_savePlayers.contains(player.getName()))
				_savePlayers.remove(player.getName());
			player._inEventCTF = false;
+				player._voteEvent = false;
		}
	}

 

 

/ gameserver.model.actor.instance.L2PcInstance.java /


/** TvT Engine parameters */
public String							_teamNameTvT, _originalTitleTvT;
public int								_originalNameColorTvT, _countTvTkills, _countTvTdies, _originalKarmaTvT;
public boolean							_inEventTvT				= false;
+	public boolean							_voteEvent				= false;


 

 

/ (server files) gameserver/data/scripts/cron/nextevent.py /


import sys
from com.l2jfree.gameserver.model.entity.events import StartEvent
StartEvent.startEvent()


 

 

/ (server SQL) global_tasks /


4	jython	TYPE_FIXED_SHEDULED	   0	300000	3600000	nextevent.py

 

 

Credits to me. Please reply if you find any bugs / errors.

Posted

owo amazing work, I havent try it because I dont have made a server but it is perfect if works correctly. With this script the players can participate in the actions of the server and more specificly in the events, nC

Posted

I have error while compiling:

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\handler\voicedcommandhandlers\EventVote.java:[
41,18] cannot find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\handler\voicedcommandhandlers\EventVote.java:[
44,15] cannot find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\handler\voicedcommandhandlers\EventVote.java:[
58,18] cannot find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\handler\voicedcommandhandlers\EventVote.java:[
61,15] cannot find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\model\entity\events\TvT.java:[1545,10] cannot
find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

C:\Documents and Settings\Administrator\workspace\Copy of Core Version 1.2.9\src
\main\java\com\l2jfree\gameserver\model\entity\events\CTF.java:[2089,10] cannot
find symbol
symbol  : variable _voteEvent
location: class com.l2jfree.gameserver.model.actor.instance.L2PcInstance

Solved:

Add to your code:

gameserver.model.actor.instance.L2PcInstance:
/** CTF Engine parameters */
public String							_teamNameCTF, _teamNameHaveFlagCTF, _originalTitleCTF;
public int								_originalNameColorCTF, _originalKarmaCTF, _countCTFflags;
public boolean							_inEventCTF				= false, _haveFlagCTF = false;
public Future<?>						_posCheckerCTF			= null;
+	public boolean							_voteEvent				= false;

 

  • 3 weeks later...

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

    • Long story short, I love survivor-like games, so I made a standalone game in the style of Vampire Survivors. It's called Survivors of Lineage (because ofc it is). I think it's very fun even though I kinda suck at it, so give it a go and tell me what you think.   Video   Play online (mobile works too): https://sol.fermata.gg/ Download the desktop version (Windows & Mac): https://updates.fermata.gg/ It includes: 26 heroes, from Lineage 2 classes to raid bosses you can play as: Baium, Antharas, Valakas, Zaken, Queen Ant, Scarlet van Halisha and more. Each has its own signature skill, trait, and evolution. 42 weapons built on L2 skills (Hydro Blast, Aura Bolt, Might of Heaven, Sword Symphony, Wild Hog Cannon...), each with an empowered cast and an evolution. 8 maps, from the Coliseum and Cruma Tower to the Tower of Insolence, Antharas' Lair, Valakas' Lair and the Imperial Tomb, each with its zone's monsters and four raid bosses. Easy, Medium and Hard on every map, and an endless mode once you've won. The Armory: spend your Adena on permanent power-ups, unlock heroes, weapons and maps through feats, and dress your hero in armor and weapon looks that climb the grades. Leaderboards for every map, difficulty and hero, plus daily and weekly runs where everyone plays the same seed. Options to tone it down when the screen gets busy: fewer skill effects, damage numbers on crits only (or off), no screen flashes. It should take about 15-20 hours to max out the main power-ups and about 150 hours to finish everything (based on my simulations; I could be way off). Controller support is coming. It's completely free, with no ads and nothing to buy. Feedback is very welcome, especially on balance. No affiliation with Lineage 2 or NCSoft; I made it to keep myself busy while my agents do stuff, and I wanted to share it.  
    • Progressive Voting System for Lineage II       After spending some time developing and testing this system on my own server, I have decided to release it and share it with the community. It is specifically designed for Lineage II servers that want to encourage daily voting on server ranking websites in a clean, secure, and visually appealing way.     What Does This System Do?   Unlike traditional voting systems where users can see all voting buttons and click on any of them, this system uses a progressive unlocking sequence:   The player logs in using their in-game account. Only the [b]first voting site[/b] is initially available. After voting on the current site, the system polls for updates in real time and [b]automatically unlocks the next one[/b] without reloading the page. Once all voting sites in the list have been completed, the [b]claim reward[/b] button becomes available, allowing the player to receive the reward directly in their character's inventory.     Main Features     Lineage II-Style Interface: Completely redesigned UI featuring a gold, brown, and dark color palette inspired by the game's classic interface. Automatic Multilingual Support: Native support for English, Spanish, Portuguese, and Russian. The system detects the browser language automatically, and users can switch languages using the flag selector. Anti-Fraud System: Configurable reward limits per IP address (for example, a maximum of 7 rewards every 12 hours). Only actual rewards are counted, not voting clicks. Configurable Timers: Set the number of seconds users must wait between voting sites to prevent abuse. Global Monthly Counter: Displays the total number of votes received by the server during the current month, with a configurable automatic reset. Secure Item Delivery: Configure direct delivery through the database (Direct) or through GM commands via Telnet. Strong Security: CSRF protection, secure sessions, restricted subdirectories using .htaccess, external configuration through config.properties, and no external dependencies (Composer is not required).     How to Install   Installation is straightforward and designed to be accessible to anyone with basic technical knowledge:   Upload the files to your web hosting. Configure your database connection details in config.properties. Import install.sql into your database (this creates the l2votesystem_* tables). Configure a Cron Job to run every minute. That's it!   Requirements:   PHP 8.1+, MySQL, Apache (with mod_rewrite).     Screenshots                 Download and Source Code   The project is open source and available on GitLab, allowing everyone to review the code, use the system, or contribute improvements.   https://gitlab.com/L2JDevs/L2VoteSystem   If you find this project useful, please consider giving the repository a Star. It helps others discover the project and supports its continued development.[/i]   Feedback and Support   I have tried to keep the code as clean and maintainable as possible, but there is always room for new features, such as proper GTOP100 callbacks, a ranking system, Discord integration, and more.   If you have any suggestions, encounter a bug, or would like to contribute, feel free to reply to this thread or open an issue on GitLab.   I hope this system proves useful for your Lineage II servers!
    • Opening Closed BETA for discord members today!  Join us! https://discord.gg/bfnXPuEuD
  • 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..