Jump to content

[Share]Vote for jail npc.


Recommended Posts

Its simple,

Its an new instance,npc,there's box at its html and you write the name of char that you wish to vote for jail.

GM/Offline characters can not be voted by none.

At 50 votes,character get jail for 10min.

Here it is:

 

Made by www.i-code.us

 

Dp part:

### Eclipse Workspace Patch 1.0
#P vfs_dp
Index: datapack_development/sql/characters.sql
===================================================================
--- datapack_development/sql/characters.sql	(revision 6)
+++ datapack_development/sql/characters.sql	(working copy)
@@ -79,6 +79,8 @@
   clan_join_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
   clan_create_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
   death_penalty_level int(2) NOT NULL DEFAULT 0,
+  jailplayer varchar(35) default NULL,
+  jailvotes decimal(11,0) default NULL,
   PRIMARY KEY  (obj_Id),
   KEY `clanid` (`clanid`)
) ;
Index: datapack_development/data/html/jailmanager/65535.htm
===================================================================
--- datapack_development/data/html/jailmanager/65535.htm	(revision 0)
+++ datapack_development/data/html/jailmanager/65535.htm	(revision 0)
@@ -0,0 +1,11 @@
+<html>
+<title>Jail Manager Instance
+</title>
+<head>
+<tittle>
+<center>
+<br>
+CharName:<edit var="pname" width=50 height=20>
+<center><button value="Vote" action="bypass -h npc_%objectId%_voteJail $pname" width=204 height=20 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"></center>
+</body>
+</html>
\ No newline at end of file

 

Core part:


### Eclipse Workspace Patch 1.0
#P vfs
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 6)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -89,7 +89,6 @@
import net.sf.l2j.gameserver.model.L2Character;
import net.sf.l2j.gameserver.model.L2Clan;
import net.sf.l2j.gameserver.model.L2ClanMember;
-import net.sf.l2j.gameserver.model.L2DropData;
import net.sf.l2j.gameserver.model.L2Effect;
import net.sf.l2j.gameserver.model.L2Fishing;
import net.sf.l2j.gameserver.model.L2HennaInstance;
@@ -205,6 +204,30 @@
  */
public final class L2PcInstance extends L2PlayableInstance
{
+	// Jail system.
+	private String jailplayer = null;
+	private int jailvotes = 0;
+	
+	public String getJailPlayer()
+	{
+		return jailplayer;
+	}
+	
+	public void setJailPlayer(String jailplayer)
+	{
+		this.jailplayer = jailplayer;
+	}
+	
+	public int getJailVotes()
+	{
+		return jailvotes;
+	}
+	
+	public void setJailVotes(int jailvotes)
+	{
+		this.jailvotes = jailvotes;
+	}
+	
	private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE char_obj_id=? AND class_index=?";
	private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (char_obj_id,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)";
	private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND char_obj_id=? AND class_index=?";
@@ -215,8 +238,8 @@
	private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC";
	private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";

-    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE obj_id=?";
-    private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE obj_id=?";
+    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,jailplayer=?,jailvotes=? WHERE obj_id=?";
+    private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,jailplayer,jailvotes FROM characters WHERE obj_id=?";
     private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
     private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
     private static final String UPDATE_CHAR_SUBCLASS = "UPDATE character_subclasses SET exp=?,sp=?,level=?,class_id=? WHERE char_obj_id=? AND class_index =?";
@@ -5597,6 +5620,9 @@
				player.setOnlineTime(rset.getLong("onlinetime"));
				player.setNewbie(rset.getInt("newbie")==1);
				player.setNoble(rset.getInt("nobless")==1);
+				
+				player.setJailPlayer(rset.getString("jailplayer"));
+				player.setJailVotes(rset.getInt("jailvotes"));

				player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));
				if (player.getClanJoinExpiryTime() < System.currentTimeMillis())
@@ -6061,7 +6087,9 @@
			statement.setLong(54, getClanCreateExpiryTime());
			statement.setString(55, getName());
			statement.setLong(56, getDeathPenaltyBuffLevel());
-            statement.setInt(57, getObjectId());
+			statement.setString(57, getJailPlayer());
+			statement.setInt(58, getJailVotes());
+            statement.setInt(59, getObjectId());

			statement.execute();
			statement.close();
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2JailNpcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2JailNpcInstance.java	(revision 0)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2JailNpcInstance.java	(revision 0)
@@ -0,0 +1,147 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.model.actor.instance;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.StringTokenizer;
+
+
+
+import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.model.L2World;
+import net.sf.l2j.gameserver.templates.L2NpcTemplate;
+/**
+ *
+ * @author  www.i-code.us
+ */
+public class L2JailNpcInstance extends L2NpcInstance
+{
+	
+	public L2JailNpcInstance(int objectId, L2NpcTemplate template)
+	{
+		super(objectId, template);
+	}
+
+    @Override
+    public void onBypassFeedback(L2PcInstance player, String command)
+    {
+    	if (command.startsWith("voteJail"))
+    	{
+    		String val = command.substring(8);
+    		StringTokenizer st = new StringTokenizer(val);
+    		
+    		if (st.countTokens() > 1 || st.countTokens() < 1)
+    		{
+    			return;
+    		}
+    		
+    		if (player.getJailPlayer() != null)
+    		{
+    			player.sendMessage("You have already voted for a player, "+player.getJailPlayer()+".");
+    			return;
+    		}
+    		
+    		L2PcInstance target = L2World.getInstance().getPlayer(st.nextToken());
+    		
+    		if (target == null)
+    		{
+    			player.sendMessage("The player you requested to vote for does not exist or is not online.");
+    			return;
+    		}
+    		if (target.isInJail())
+    		{
+    			player.sendMessage("The player you requested to vote for is already in jail.");
+    			return;
+    		}
+    		
+    		if (target.getAccessLevel() > 99)
+    		{
+    			player.sendMessage("The player you requested to vote is GM/ADMIN you cant vote for them");
+    			return;
+    		}
+    		
+    		if (target.getPvpFlag() > 0)
+    		{
+    			player.sendMessage("The player you requested to vote is Pvping now,try later");
+    			return;
+    		}
+    		
+    		
+    		target.setJailVotes(target.getJailVotes()+1);
+    		player.sendMessage("You have successfully voted for "+target.getName()+".");
+    		target.sendMessage(player.getName()+" has voted for you to go in jail.");
+    		if (target.getJailVotes() == 50)
+    		{
+    			target.setInJail(true, 10);
+    			Announcements.getInstance().announceToAll(target.getName()+" has been jailed for 10 minutes, after reaching 50 jail votes.");
+    			target.setJailVotes(0);
+    			cleanDatabase(target.getName());
+    			target.sendMessage("You have been jailed for 10 minutes because you reached 50 jail votes.");
+    		}
+    	}
+    }
+    
+    private void cleanDatabase(String pname)
+    {
+    	Connection con = null;
+    	try
+    	{
+    		con = L2DatabaseFactory.getInstance().getConnection();
+    		PreparedStatement st = con.prepareStatement("UPDATE characters SET jailplayer=null WHERE jailplayer="+pname);
+    		st.execute();
+    		st.close();
+    	}
+    	catch (SQLException sqle)
+    	{
+    		for (L2PcInstance gm : L2World.getInstance().getAllGMs())
+    		{
+    			gm.sendMessage("There was a problem while updating database on jailplayer column. Please check it...");
+    		}
+    	}
+    	finally
+    	{
+    		try
+    		{
+    			con.close();
+    		}
+    		catch (SQLException sqle2)
+    		{ 
+    			
+    		}
+    	}
+    }
+    
+    @Override
+	public String getHtmlPath(int npcId, int val)
+    {
+        String pom = "";
+        if (val == 0)
+        {
+            pom = "" + npcId;
+        }
+        else
+        {
+            pom = npcId + "-" + val;
+        }
+
+        return "data/html/jailmanager/" + pom + ".htm";
+    }
+}
\ No newline at end of file

 

You can also find it here

Link to comment
Share on other sites

its kinda useless , what is the point of jailing character with out any reason

there will be hateness then....

I thought the same when someone suggest it to me.Then i thought,it wont be so useless e.g

if someone says noobserver or something or dunno,and gm is offline players can vote for jail xd

 

Link to comment
Share on other sites

I thought the same when someone suggest it to me.Then i thought,it wont be so useless e.g

if someone says noobserver or something or dunno,and gm is offline players can vote for jail xd

 

its online 10 minutes dude

Link to comment
Share on other sites

st.countTokens() > 1 || st.countTokens() <

st.countTokens() != 1 looks better

 

if (player.getJailPlayer() != null)

+     {

+     player.sendMessage("You have already voted for a player, "+player.getJailPlayer()+".");

+     return;

+     }

this is useless coz player.setJailPlayer isnt used anywhere and you would need to make it null in some moment so there wont be something like they can vote for jail only once forever

 

Anyway saving vote count is useless, if 1 guy would start making bots, sooner or later he would jail that player, better to make list which would contain votes just untill restart, same with jailplayer.

 

Also you can make restrictions for level etc

Also its possible to jail player that is on olympiad or such kind of shi ts

 

Also what if there is siege, whole clan is voting for enemy clan leader?

Or just hero is writing on hero chat to vote for some1 :)

 

Its not that stupid, just need to work on it a little bit :)

 

 

Edit: :S Fanky, i thought you can code something better and share it with us :)

Link to comment
Share on other sites

In one point you'r true,also as I said above

Ehm ><

Anyway,I know it may be useless but with some edits on it could be ok xd

anyway,thanks

.

and no,there's not any protection about IP.

But I'am thinking to add a protection,if a char didnt got 24 hours online he cant vote,or something like that.

Also yes vampir,some checks are missing.

 

 

 

Edit: :S Fanky, i thought you can code something better and share it with us :)

I think i can but,gimme one reason to do it.

Anyway,thanks.Also do you really think that peoples respect other peoples work here?

Ofc not,btw

 

EDIT: dont forget that,that's just a based idea.I think its funny xd.Anyway,its just a gift,a guy with decent knoweldge can edit this npc however he wants.A

 

Link to comment
Share on other sites

Ofc nobody respect other's ppl work here, nice share isnt counting for me...

You could share some things for same reason as i did, get some karma and get known, many ppl are pming me nowadays to create something for them so it wont be problem later for me to work for money :)

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
Reply to this topic...

×   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

    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt  
    • Server Rates: » Xp 500x. » Sp 500x. » Aden 500x. » Drop 1x. » PartyXp 2x. » PartySp 2x. » Starting character level -61. Enchant rates: » Safe enchant +4. » Blessed and simple scrolls max enchant (+16). » Crystal scrolls max enchant (+20). » Simple enchant scrolls chance – 65%. » Blessed enchant scrolls chance – 100%. » Crystal enchant scrolls chance – 50% Augmentations: » Mid life stone skill chance – 5%. » High life stone skill chance – 10%. » Top life stone skill chance – 20%. » Augments 1+1 Unique features: » Main town – Giran » Automatic-Manual Potions. » Working 2 castle sieges. (Giran-Aden) » SPS cancel lasts 10 seconds and than buffs come back. » Stackable scrolls, lifestones, book of giants. » Unique pvp zone » More then 11 active raid bosses. » Wedding system. » Unique farming areas. » Npc skill enchanter. » Full npc buffer with auto buff. » Max count of buffs – 55. » Max subclasses – 4. » Free and no quest class change. » Free and no quest sub class. » Raid boss drop nobless item. » No weight limit. » Unique protection anti-hwy armor for archers/daggers etc. » Ingame password change. » Top pvp/pk/online ranks NPC. » Unique monsters & NPC. » Interlude retail skills. » Server up-time [24/7] [99]%. » Perfect class balance (all class can kill all class depending on players skill and setup knowledge,gear,augmentations). » Announcements on double kills triple kills etc. » Announcements on Grand Boss death , with the name of the killer as well as clan name of the player. » Information Npc in game with all servers infromations. Custom server gear : 1). Titanium Armor Lv.1 2). Epic Armor Lv.2 3). Epic Weapons-Kamikaze-Black S grade (Same Stats) 4). Demonic-Angelic Wings-Baium Hair-Custom Accessories (SameStats) 5). Custom Fighter/Mage tattoo Lv1-Lv2-Lv3 6). Shirt (STR,CON,INT +1) 7). Custom Shields Server Commands: .tvtjoin .tvtleave – Join or leave tvt event. .ctfjoin .ctfleave – Join or leave ctf event. .dmjoin .dmleave – Join of leave dm event. .online – current online players count. .repair – repairs stuck character in world. .menu – opens online menu panel. .exit – PVP zone exit in case you are bullied. .changepassword - Opens online menu then u can change ur password in game. .farm - Enable/disable autofarm Event system: » TVT event » CTF event » DM event » Tournament Event » Party Zone » Unique event shop. Olympiad game: » Retail olympiad game. » Competition period [1] week. » Olympiad start time [18:00] end [00:00] GMT+2. » New Heroes every Sunday.
    • Tomorrow grand opening lests go 🙂 
  • Topics

×
×
  • Create New...