Jump to content

Recommended Posts

Posted (edited)

L2Fandc, latest source with facebook share, twitch, phantom.

 

DOWNLOAD

 

Enjoy it guys!!

 

P.D.: If is something missing, just drop you question here, I might have it because when I got this pack, it was missing a lot stuff and I have been fixing it a lot.

also this pack is not ready to go for a live server. Use this pack to take the Addons and Codes for you personal pack.

 

P.D.2: I have never understand why FandC (Claw) customers never complain and report him in this forum. Seriously this pack its a really piece of Sh.....t.

 

Some html missing:

 

Location: \html-en\mods\Vote\

 

Index.htm

Spoiler

<html>
   <body>
      <title>Welcome</title>
      <center>
      <img src="L2UI.SquareWhite" width=300 height=1>
      1. Open https://irsdev.com<br>
      2. Click Banner Hopzone Vote us !<br>
      3. Click Banner Topzone Vote us !<br>
      4. Click Banner L2Network Vote us !<br>
      5. Claim The reward in Game on npc VoteSystem<br>
      <img src="L2UI.SquareWhite" width=300 height=1>
      <table width=300 height=10 bgcolor=000000>
         <tr>
            <td fixwidth=230 height=15 align=center>
               Vote Manager
            </td>
            <td fixwidth=3></td>
         </tr>
      </table>
      <img src="L2UI.SquareWhite" width="300" height="1">
      <br>
      <br>
      <img src="L2UI.SquareWhite" width="220" height="1">
      <br>
      <table width=300 height=10 bgcolor=000000>
          <tr>
             <td width=270 align="center">
                <button value="Topzone" action="bypass -h npc_%objectId%_Topzone vote" width=100 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
             </td>
          </tr>
          <tr>
              <td width=270 align="center">
                <button value="Hopzone" action="bypass -h npc_%objectId%_Hopzone vote" width=100 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
             </td>
           </tr>
           <tr>
              <td width=270 align="center">
                <button value="Network" action="bypass -h npc_%objectId%_Network vote" width=100 height=30 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
             </td>
          </tr>
           
          
      </table>
      <br><br>
      <br1>
      <img src="L2UI.SquareWhite" width=300 height=1>
      <table width=300 height=10 bgcolor=000000>
         <tr>
            <td fixwidth=230 height=15 align=center>
               <font color="0978f2">Website: http://irsdev.com/</font><br>
                For use Mouse Coin please Alt+B -> Vote & Fa Store
            </td>
            <td fixwidth=3></td>
         </tr>
      </table>
      
          
         
           
          
      
      <img src="L2UI.SquareWhite" width="300" height="1">
    </center>      
   </body>
</html>

 

Reward.htm

Spoiler

<html>
   <body>
      <title>Welcome</title>
      <center>
      <img src="L2UI.SquareWhite" width=300 height=1>
      <img src="bgimage.bgimage" height=110 width=300></td>
      <img src="L2UI.SquareWhite" width=300 height=1>
      <table width=300 height=10 bgcolor=000000>
         <tr>
            <td fixwidth=230 height=15 align=center>
               Vote Manager
               </font>
            </td>
            <td fixwidth=3></td>
         </tr>
      </table>
      <img src="L2UI.SquareWhite" width="300" height="1">
      <br>
      <br>
      <img src="L2UI.SquareWhite" width="220" height="1">
      <br>
      <table width=300 height=10 bgcolor=000000>
          <tr>
             <td width=270 align="center">
                <button value="Receive Reward" action="bypass -h npc_%objectId%_%site% reward" width=120 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
             </td>
          </tr>
      </table>
      <br><br>
      <br1>
      <img src="L2UI.SquareWhite" width=300 height=1>
      <table width=300 height=10 bgcolor=000000>
         <tr>
            <td fixwidth=230 height=15 align=center>
               <font color="0978f2">Website: http://irsdev.com/</font>
               </font>
            </td>
            <td fixwidth=3></td>
         </tr>
      </table>
      <img src="L2UI.SquareWhite" width="300" height="1">    
      </center>
   </body>
</html>

 

 

Edited by Akar0
Updated html missing
  • Like 4
  • Thanks 4
  • Upvote 1
Posted (edited)

hi...nice share...when i go to open this pack give this error:

Exception in thread "main" java.lang.Error: Failed to Load ./config/masterio/RankPvpSystemConfig.properties File.
        at masteriopack.rankpvpsystem.RPSConfig.load(RPSConfig.java:684)
        at l2f.gameserver.GameServer.<init>(GameServer.java:325)
        at l2f.gameserver.GameServer.main(GameServer.java:617)

 

can u help with this? when run GameServer.bat

Edited by roukounas123
Posted
22 minutes ago, roukounas123 said:

hi...nice share...when i go to open this pack give this error:

Exception in thread "main" java.lang.Error: Failed to Load ./config/masterio/RankPvpSystemConfig.properties File.
        at masteriopack.rankpvpsystem.RPSConfig.load(RPSConfig.java:684)
        at l2f.gameserver.GameServer.<init>(GameServer.java:325)
        at l2f.gameserver.GameServer.main(GameServer.java:617)

 

can u help with this? when run GameServer.bat

Because you are missing the config file.

 

Put this file inside of "/config/masterio/" folder:

Spoiler

#------------------------------------------------------------------------------------------#
#---------------------------< Config v3.8.9 for l2jserver Hi5 >----------------------------#
#------------------------------------------------------------------------------------------#
# Rank Points and PvP Exp use the same rules for rising.
# PvP Exp can decrease (if enabled). 
# Ranks base on PvP Exp.
#------------------------------------------------------------------------------------------#
# 			  							Rank PvP System			   					 	   #
#------------------------------------------------------------------------------------------#
# Enable Rank PvP System, or disable it totaly if False (no database updates, no commands, no community tables, etc.).
RankPvpSystemEnabled = True

# Enable PvP counter in Alt+T window in game. It's mean all PvP kills will be counted by RPS rules.
PvpCounterForAltTEnabled = True
# If True only Legal Kills will be counted. If False all PvP Kills will be counted.
PvpCounterForAltTLegalKillsOnly = True

# Minimum player level for count legal kills.
LegalKillMinLvl = 80

# If enabled, kill PK player (player with red nick) will rise the Legal Kills for the Killer. Default True. 
LegalKillForPkKillerEnabled = True

# If enabled, kill not flagged player will rise the Legal Kills for the Killer (karma is ignored). Default False. 
LegalKillForInnocentKillEnabled = False

# Set time interval between kills the same victim (in minutes)(0 - Disabled).
# Option is used for Legal Kills & RPC & Rank Points.
# Default: 60
ProtectionTimeReset = 60

# If the same player kill victim many times, then after X times the Legal Kills will not increase (0 - Disabled).
# If LegalKillProtection = 3, then it not rise Legal Kills for kill 4 times the same player.
# INFO: Option used for RPC and Rank Points.
LegalKillProtection = 0

# If the same player kill victim many times, then after X times the Legal Kills will not increase (0 - Disabled).
# X is reset every day.
# IMPORTANT: LegalKillProtection MUST BE = 0.
# INFO: Option used for RPC and Rank Points.
DailyLegalKillProtection = 0

# If True, then GM characters will be ignored by RPS.
# Option is used when colored nick and titles too.
# Info: If GM characters are saved in RPS, you should remove them manually from rank_pvp_system tables.
# SQL example: 
# 	DELETE FROM rank_pvp_system WHERE killer_id IN(SELECT charId FROM characters WHERE accesslevel <> USER_ACCESSLEVEL); 
# *USER_ACCESSLEVEL is a access level for users.
# Default: True
GMIgnoreEnabled = False

#------------------------------------------------------------------------------------------#
# 			  	  						Reward options			   						   #
#------------------------------------------------------------------------------------------#
# It gives reward(RPC) for any legal PvP.
# INFO: ProtectionTimeReset is used if enabled.
# Enable PvP Reward System (RPC Reward & Reward)
# REQUIRE: RankPvpSystemEnabled = True

# RPC Reward allows earn and exchange RPC points for selected rewards, this RPC reward are awarded for each PvP.
RpcRewardEnabled = True
# INFO: RPC - is a special currency, player can exchange it for items.
# RPC Reward amount, awarded for each PvP.
RpcRewardAmmount = 1
# Minimum player level to obtain reward.
RpcRewardMinLvl = 80

# PvP Reward awarded for each PvP.
PvpRewardEnabled = False
# Reward item id.
PvpRewardId = 6673
# PvP Reward amount, awarded for each PvP.
PvpRewardAmount = 1
# Minimum player level to obtain reward.
PvpRewardMinLvl = 80

# If enabled, gives reward for kill PK player (player with red nick). 
# This option is used for all 4 reward types (PvP Reward, Rank PvP Reward, RPC, RP).
RewardForPkKillerEnabled = True
# If enabled, kill unflaged player will be rewarded (otherwise PK mode).
# This option is used for all 4 reward types (PvP Reward, Rank PvP Reward, RPC, RP).
# Default: False.
RewardForInnocentKillEnabled = False

# If enabled, gives rewards for kill player by rank. Reward list for each rank defined in database table: rank_pvp_system_rank_reward, is_pvp = true.
# REQUIRE: RanksEnabled = True
RankPvpRewardEnabled = True
# Minimum player level to obtain reward.
RankPvpRewardMinLvl = 1

# If enabled, gives rewards for reach new Rank by player. Reward list for each rank defined in database table: rank_pvp_system_rank_reward, is_level = true.
# REQUIRE: RanksEnabled = True
RankLevelRewardEnabled = True

# If enabled, add skills for reach new Rank by player. Reward list for each rank defined in database table: rank_pvp_system_rank_skill.
# REQUIRE: RanksEnabled = True
# Minimum rank_id must be > 1, because each player have rank with id = 1 as dafault.
RankSkillRewardEnabled = True

# If enabled, RP, RPC, PvP Reward and Rank PvP Reward will check Legal Kill conditions.
RewardLegalKillEnabled = True

#------------------------------------------------------------------------------------------#
# 				 					  	 	Ranks 							 		 	   #		
#------------------------------------------------------------------------------------------#
# INFO: RankNames, 
# 		RankMinPoints, 
# 		RankPointsForKill, 
# 		RankRewardIds, 
# 		RankRewardAmounts 
# 		must have same size and cannot be empty.
# REQUIRE: RankPvpSystemEnabled = True
RanksEnabled = True

# Minimum player level for obtain Rank Points / PvP Exp.
RankPointsMinLvl = 1

# Rank names (first element is the higher rank):
# Format: name1,name2,name3
# Example: RankNames = Five Star General,General [Grade 3],General [Grade 2],General, ... ,Apprentice,Recruit
RankNames = Five Star General,General [Grade 3],General [Grade 2],General,Brigadier General,Brigadier [Grade 3],Brigadier [Grade2],Brigadier,Force Colonel,Colonel [Grade 3],Colonel [Grade 2],Colonel,Strike Commander,Commander [Grade 3],Commander [Grade 2],Commander,Field Major,Major [Grade 3],Major [Grade 2],Major,Staff Captain,Captain [Grade 3],Captain [Grade 2],Captain,First Lieutenant,Lieutenant [Grade 3],Lieutenant [Grade 2],Lieutenant,Master Sergeant,Gunnery Sergeant [Grade 3],Gunnery Sergeant [Grade 2],Gunnery Sergeant,Sergeant [Grade 3],Sergeant [Grade 2],Sergeant,Corporal [Grade 2],Corporal,Private [Grade 2],Private,Apprentice [Grade 2],Apprentice,Recruit

# INFO: Be careful with points. MySql database allow BIGINT(18) total rank points.

# Rank require points (first element is points count for obtain 1st rank title, in example: Five Star General):
# Format: count1,count2,count3
# count1 > count2 > count3 > ... >= 0, minimum points for first (lowest) rank must be 0!
# Foramt: RankMinPoints = 10000,1000,400,0
# IMPORTANT: property elements count must be same like in RankNames.
# Example: if player have current points BETWEEN 2,000,000 AND 1,000,000 it gives rank: General [Grade 3].
RankMinPoints = 2000000,1000000,750000,600000,400000,250000,190000,150000,120000,100000,82000,65000,50000,38000,28000,20000,14000,10000,7000,5000,3000,2000,1500,1000,880,760,680,580,500,450,400,360,320,280,240,190,150,120,70,30,10,0

# Example: For Five Star General kills reward is 50 points.
# Format: count1,count2,count3
# All values MUST be greater than 0.
# IMPORTANT: properties count must be same like in RankNames.
RankPointsForKill = 50,48,46,44,42,40,38,36,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1
# Cut off points, earned for kill high rank victims ['rank points for kill']. (should reduce farm of RP on high level victims)
# Example: Killer RP reward is 20, victim RP reward is 50, if killer kill the victim he will obtain 20 points, not 50 points.
RankPointsCutEnabled = True

# If enabled RPC points will be awarded for kill Victim with specified rank.
RankRpcEnabled = True
# INFO: RPC - is a special currency, player can exchange it for items.
# RPC amounts for kill player with defined ranks.
# IMPORTANT: properties count must be same like in RankNames.
RankRpcAmount = 42,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1
# Cut off RPC, earned for kill high rank victims ['rank points for kill']. (should reduce farm of RPC on high level victims)
# Example: Killer RPC reward is 20, victim RPC reward is 50, if killer kill the victim he will obtain 20 points, not 50 points.
RankRpcCutEnabled = True

# Enable alternative points counting for players.
# If enabled then RankPointsForKill is ignored.
# Example: RankPointsDownAmounts = 100,50,10,1,0
# For first kill awards 100, 2nd kill give 50, ... , 0.
# It can be manipuleted by LegalKillProtection and DailyLegalKillProtection.
# IMPORTANT: Protection X value cannot be less than size of RankPointsDownAmounts. Example: min value for example data is 5.
RankPointsDownCountEnabled = False
RankPointsDownAmounts = 100,50,10,1,0

# Shout current Points info for killer & victim.
RankShoutInfoOnKillEnabled = True

# Shout Bonus Points informations for killer.
# Require: RankShoutInfoOnKillEnabled = True
RankShoutBonusInfoOnKillEnabled = True

# If enabled shows informations about Total Kills on Victim, otherwise show informations about Legal Kills on Victim.
TotalKillsInShoutEnabled = True

# Nick and Title colors for each rank.
# INFO: Do not put RED, PURPLE, or LIGHT RED Nick Colors. This colors are used in game!
# Colors must have HTML format (6 letters (hex)).
# Format: ABCDEF,0103FF, ... ,ABCDEF
# Minimum: 000000, Maximum: FFFFFF.
# IMPORTANT: properties count must be same like in RankNames.
# First color on left is for the highest rank, [5 Star General].
NickColorEnabled = False
NickColors = FF8000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00

TitleColorEnabled = False
TitleColors = FF8000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00,0000FF,FF0000,00FF00,FF0000,00FF00

# PvP experience lose options.
# If enabled the Victim will lose PvP Exp.
PvpExpDecreaseEnabled = False
# Methods:
# 1 - FULL		<- if killer earn 100 RankPoints(PvpExp) + 20 bonus points, the Victim will lose: 120.
# 2 - BASIC		<- if killer earn 100 RankPoints(PvpExp) [bonus points ignored], the Victim will lose: 100.
# 3 - CONSTANT	<- the constant value defined in PvpExpDecreaseConstant option.
# 4 - FRACTION	<- if killer earn 100 RankPoints(PvpExp) + 20 bonus points, the Victim will lose: PvpExpDecreaseFraction * 120. Value is defined in PvpExpDecreaseFraction option.
#
# * the bonus points players earn for: area, war, combo.
PvpExpDecreaseMethod = 1
# Option is used only for CONSTANT method. Integer number [1, 2, 3, ...].
PvpExpDecreaseConstant = 5
# Option is used only for FRACTION method. Float number [0.1, ... , 1.0].
PvpExpDecreaseFraction = 0.5

# If True decrease Pvp Exp on legal kill ONLY, if False Pvp Exp will decrease on every kill.
PvpExpDecreaseOnLegalKillEnabled = True

#------------------------------------------------------------------------------------------#
# 								 	  	 War Kills 						     			   #
#------------------------------------------------------------------------------------------#
# Enable war kills counter
WarKillsEnabled = True

# Ratio for Rank Points when killed a player from War Clan. 
# Add to standard rank points for kill difference between ((points * ratio) - points).
# 2.0 mean 2 times more points for kill a player from war. 
# Ratio must be > 1.0, if <= 1.0 points will be not multiplied.
WarRankPointsRatio = 1.2

#------------------------------------------------------------------------------------------#
# 								 		 Combo Kills						     	 	   #
#------------------------------------------------------------------------------------------#
# Combo system allow get combo for killing the victims. 
# Combo will be reseted if character will die, relog, join to event or olympiad.
# Combo system disabled on events and olympiad (option inherited from Rank PvP System).

# Enable combo kill system.
ComboKillEnabled = True

# Shout messages for players, if killer kill more victims.
# Format: combo_kills,message; ... ;combo_kills,message
# List must be ORDERED from lowest to highest by combo_kills. <-- IMPORTANT!!!
#
# Message can contain special tags: 
#	 %killer% - it will be replaced with killer name.
#	 %victim% - it will be replaced with victim name.
#	 %combo_level% - it will be replaced with combo level.
#
# Local - shout message to visible players by killer.
# Global - shout message to all players online.
# Info: one of these lists can be empty, and combo_kills can be random numbers, but ordered (example: 1,msg;2,msg;3,msg;6,msg;7,msg;8,msg;10,msg;55,msg;100,msg).
# It can start from 3,msg;6,msg;7, ... then killers with combo level 1 and 2 will be not shouted.
# Checking priority: if combo_kills will be founded on local list, then global list is not checked.
ComboKillLocalAreaMessages = 2,%killer% is a good killer!;3,%killer% is a perfect killer!;4,%killer% have no mercy!;5,%killer% is in killing spree!;6,%killer% assassinate every target!;7,%killer% is killing master!;8,%killer% is a Uber killer!;9,%killer% own the battlefield!
ComboKillGlobalAreaMessages = 10,%killer% is Unstopable!!!

# Alternate combo message method, is not require for each combo level defining the message.
# Just one message for any combo level.
# If enabled shows combo size, example: Player have 5 Combo kills! or Player have 99 Combo kills!
#
# Message can contain special tags: 
#	 %killer% - it will be replaced with killer name.
#	 %victim% - it will be replaced with victim name.
#	 %combo_level% - it will be replaced with combo level.
#
# If ComboKillAltGlobalMessageMinLvl = 10 then if player get combo level >= 10 it will be shout on global chat, otherwise on local chat. 
# If ComboKillAltGlobalMessageMinLvl = 0 it shouts all messages on local chat.
ComboKillAltMessagesEnabled = True
ComboKillAltMessage = %killer% have %combo_level% Combo kills!
ComboKillAltGlobalMessageMinLvl = 10

# If enabled shout messeage about defeated combo killer, if victim combo is greater than selected level.
ComboKillDefeatMessageEnabled = True
# Minimum combo level for show the defeat message. It not mess chat window with player's low combo level.
# Require: ComboKillDefeatMessageEnabled = True
ComboKillDefeatMessageMinComboLvl = 3

# Message can contain special tags: 
#	 %killer% - it will be replaced with killer name.
#	 %combo_level% - it will be replaced with combo level.
#
# ComboKillDefeatMessage = %killer% is defeated! or:
ComboKillDefeatMessage = %killer% is defeated with %combo_level% combo lvl!!!

# Enable protection with Legal Kills, combo will rise if it's legal kill.
ComboKillProtectionWithLegalKillEnabled = True

# Enable protection with No Repeat for kill, combo will rise if victim is not on current combo list.
ComboKillProtectionNoRepeatEnabled = True

# If kill time between previous victim and next victim will be greater than ComboKillReseter, combo will be reseted (time in seconds).
# 0 - disabled.
# Default: 300
ComboKillReseter = 300

# List contains combo kills and rank points ratio added to rank points for kill.
# Format: combo_kills,ratio; ... ;combo_kills,ratio
# List must be ordered from lowest to highest by combo_kills.
# Ratio must be greater than 1.0, otherwise will be ignored.
ComboKillRankPointsRatioEnabled = True
ComboKillRankPointsRatio = 5,1.1;6,1.2;7,1.3;8,1.4;9,1.5;10,1.6

#------------------------------------------------------------------------------------------#
# 			  .pvpinfo command, PvP Status window, Death Status, RPC options 	    	   #
#------------------------------------------------------------------------------------------#
# If enabled allow use .pvpinfo command on targeted player.
PvpInfoCommandEnabled = True

# If enabled change .pvpinfo for /pvpinfo command. (/pvpinfo is recommended)
# IMPORTANT: Is require Client modification file: LineageII/system/commandname-e.dat
# Information how to apply it in: ClientModInfo.txt
PvpInfoUserCommandEnabled = False
# ID of command, it is same id what is in commandname-e.dat.
PvpInfoUserCommandId = 1004

# If enabled shows .pvpinfo window about killer for victim.
PvpInfoCommandShowOnDeathEnabled = True

# Show additional button in PvPStatus window after death. 
# Button allow see more details about killer. HP/MP/CP, equipment (enchant) if enabled. 
# It shows killer status only for KILL MOMENT.
# Option requires PvpInfoCommandShowOnDeathEnabled and PvpInfoCommandEnabled set on True.
DeathManagerDetailsEnabled = True
# Show killer equipment and items enchant level.
DeathManagerShowItemsEnabled = True

# Enable RPC Exchange for items.
# Items list defined in database table: rank_pvp_system_rpc_reward.
# If enabled, button "RPC Exchange" appear in PvP Status Window. 
RpcExchangeEnabled = True

# Additional protection for RPC Get button.
RpcExchangeConfirmBoxEnabled = True

# If enabled shows player's level in PvP Status window (.pvpinfo)
ShowPlayerLevelInPvpInfoEnabled = True

# If enabled shows information about Total Kills and Total Kills Legal in PvP Status window (.pvpinfo)
# If disabled shows only Total Legal Kills.
TotalKillsInPvpInfoEnabled = True

# If enabled shows information about Total Kills and Total Kills Legal On Me in PvP Status window (.pvpinfo)
# If disabled shows only Total Legal Kills On Me.
TotalKillsOnMeInPvpInfoEnabled = True

#------------------------------------------------------------------------------------------#
# 					 	 PvP / Rank / Reward / DM zone option's 						   #
#------------------------------------------------------------------------------------------#
# Zone id's (for H5 server):
# 	ZONE_PVP = 0;
# 	ZONE_PEACE = 1;
# 	ZONE_SIEGE = 2;
# 	ZONE_MOTHERTREE = 3;
# 	ZONE_CLANHALL = 4;
# 	ZONE_LANDING = 5;
# 	ZONE_NOLANDING = 6;
# 	ZONE_WATER = 7;
# 	ZONE_JAIL = 8;
# 	ZONE_MONSTERTRACK = 9;
# 	ZONE_CASTLE = 10;
# 	ZONE_SWAMP = 11;
# 	ZONE_NOSUMMONFRIEND = 12;
# 	ZONE_FORT = 13;
# 	ZONE_NOSTORE = 14;
# 	ZONE_TOWN = 15;
# 	ZONE_SCRIPT = 16;
# 	ZONE_HQ = 17;
# 	ZONE_DANGERAREA = 18;
# 	ZONE_ALTERED = 19;
# 	ZONE_NOBOOKMARK = 20;
# 	ZONE_NOITEMDROP = 21;
# 	ZONE_NORESTART = 22;
#
#	*CUSTOM PVP ZONE should be with id = 0 (ZONE_PVP).
# Rank PvP System Anti-Farm options (zones id):

# Allowed zones id's. 
# Format: zoneId,zoneId, ... ,zoneId,zoneId
# Info: If empty, the system works in all zones, otherwise system works in Allowed Zones only (defining restricted zones not required then).
# Example: AllowedZonesIds = 1,7,12 , then system works ONLY in zone with ID = 1 and 7 and 12.
AllowedZonesIds =

# Restricted zones id's (used if AllowedZonesIds = (empty)). 
# Format: zoneId,zoneId, ... ,zoneId,zoneId
# Info: System NOT working in Restricted Zones.
# Default: RestrictedZonesIds = 1,8,9
# Example: RestrictedZonesIds = 1,8,9 , then system NOT works in zones with ID'S = 1,8,9.
RestrictedZonesIds = 1,8,9

# INFO: AllowedZonesIds = 1,3,5,9 and RestrictedZonesIds = 1,8,9 
# then system will works only in 1 and 3 and 5 and 9.
# Remember, if you define AllowedZonesIds then system not checking RestrictedZonesIds.

# Death Manager is disabled in this zones.
DeathManagerRestrictedZonesIds = 1,8,9

# Rank Points Bonus Ratio zones id's.
# Add to standard rank points for kill difference between ((points * ratio) - points).
# Ratio must be > 1, if <= 1 points will be not multiplied.
# Format: zoneId,ratio; ... ;zoneId,ratio
# Example: 2,1.5;13,1.2
# It will multiply rank points for Killer by 1.5 in area 2 , if Killer is inside this area.
RankPointsBonusZonesIds =

#------------------------------------------------------------------------------------------#
# 			    						 Anti-Farm 	         					     	   #
#------------------------------------------------------------------------------------------#
# INFO: Options to check farming players 
# (dualbox farming, party farming, clan farming).
# If True protection is activated.
AntiFarmClanAllyEnabled = True
AntiFarmPartyEnabled = True
AntiFarmIpEnabled = True

#------------------------------------------------------------------------------------------#
# 			  						  Community Board        				   	   		   #
#------------------------------------------------------------------------------------------#
# Enable statistics system for community TOP LIST, data like top killers, top RP gatherers will be showed.
# Default: True
TopListEnabled = True

# Set a Time Limit (in days) for system counter. Option is used for update Top Table.
# If some player not killed anybody from X days, he will be ignored on Top List.
# When ignored player kills somebody again he will returns to counting pool in next update of Top Table.
# Disabled: 0
# Default: 7
TopListIgnoreTimeLimit = 7

#------------------------------------------------------------------------------------------#
# 			    						  Database 						            	   #
#------------------------------------------------------------------------------------------#
#----------------- DO NOT CHANGE IT IF YOU DON'T KNOW WHAT ARE YOU DOING! -----------------#

# Interval between PvpTable dump into database (in minutes).
# Value must be greater than 1 or will be overrided for 1.
# Default: 5
PvpTableUpdateInterval = 5

# If enabled, then if RPC System is disabled the players RPC Points will be updated anyway (executed with PvpTableUpdate).
# Default: True
RpcTableForceUpdate = True

# Top Table update time.
# Option is enabled if TopListEnabled = True.
# IMPORTANT: for online 500+ can do lag for few seconds [0s - 3s] when updating.
# Example: TopTableUpdateTimes = 0:00,3:00,6:00,9:00,12:00,15:00,18:00,21:00
# Default: TopTableUpdateTimes = 3:00
TopTableUpdateTimes = 3:00

# If enabled, system will remove permanenlty not active players from PvP Table on server startup.
# Default: False
DatabaseCleanerEnabled = False
# If player not logged into game from X days, his data will be removed from PvP Table PERMANENTLY!
# Option will be useful for big online servers.
# Value must be greater than 0, otherwise DatabaseCleanerEnabled will be changed on False.
# Default: 60
DatabaseCleanerRepeatTime = 60

#------------------------------------------------------------------------------------------#
# 			    						Images & Styles	 						       	   #
#------------------------------------------------------------------------------------------#
# If True, then images will be sended from server to client (increase internet trafic), (require copy the 'images' folder into '../gameserver/data' folder).
# If False, then client will load images from local directory (require copy the 'RPS_byMasterio.utx' into '../Lineage II/SysTextures' folder).
ServerSideImagesEnabled = True

# Additional image prefix, for reload all images on RPS by Client.
# Used when ImagesFromServerEnabled = True.
# If you want reload all RPS images just add 1 to previous value.
# Example: If I have this value on 1, then when I run Client and load some images for RPS they will be buffered by Client.
# If I edit images and I want reset this images by Client, I must rise the value by 1.
# Max prefix value is 500 000. (It gives 500 000 possible reloads)
ImagePrefix = 6

# Buttons style in PvP Status Window and Top List. (static button in Htm file require manual changes)
# Leave empty ButtonFore, ButtonBack for default values of IL chronicle.
ButtonFore = Button_DF_Calculator
ButtonBack = Button_DF_Calculator_Down
ButtonWidth = 65
ButtonHeight = 20
ButtonBigWidth = 100
ButtonBigHeight = 20
#==========================================================================================#

 

And save it as : RankPvpSystemConfig.properties

 

cheers

  • Like 2
  • Upvote 1
Posted (edited)

because this is my source, and i'm adapt some feature to this patch -_-, where you get this files ? XD its old but still can be shared haha

 

and if i'm not wrong , i forget fix on sql. if you using for live server 2-3 minutes your  cpu working will blow up :troll: and there have Forum system and no SQL (I'm Forget for copy to source that sql) but this is Uncompleted Source. 

PS : HWID System i'm Disabled because i'm using Game Guard ,, if this pack using live server the negatif you can't use the HWID System

 

Edited by VelroseGame
Posted (edited)

Dunno if above is true, but ALWAYS when someone share some files, author/dev of those files say that it's missing something and not intended to be used for live server :laughing:

Yet, their servers were using them.

Edited by SweeTs
  • Haha 1
Posted
10 hours ago, SweeTs said:

Dunno if above is true, but ALWAYS when someone share some files, author/dev of those files say that it's missing something and not intended to be used for live server :laughing:

Yet, their servers were using them.

 

 

its true, because i'm bought some files and implement to this file
1. Npc Lineage 2 Ultimate barrel ( i bought this from Strain D )

2. New Agathion i bought this files from Asuki Tex

3. Vote System from Kara

4. Streaming Twitch from Kara

5. Fixing Tournament System using command .tournaments fixed by Me

6. Forum SQL (SMF with Modification) fixed by Me

7. ETC



More feature i'm Implement it and the Fact is,,,

 

Some of work i didnt save it on Source Files that why this files lot of missing Code/Html/XML etc..

 

that it :forever_alone_like_a_boss: but i have the Originality From Fandc (DUMA) <<< i can share it, and that why i have 1 Point Negatif from CLAWWWWW :troll:

Posted

That for Complete this source :

1. Mods Files + RPS Here

2. Forum Files using SMF Community alt + b : Here

3. Pages Files Community Board for Complete the Action : Here

4. And more you can PM me for it if you want using this source for Live Server :troll:

 

and this gameserverjar Here

 

Woalaaa no missing html / event / etc for this source ..

:forever_alone_like_a_boss:

  • Like 2
  • Upvote 3
Posted
On 3/12/2020 at 1:41 PM, SweeTs said:

Dunno if above is true, but ALWAYS when someone share some files, author/dev of those files say that it's missing something and not intended to be used for live server :laughing:

Yet, their servers were using them.

And every single shared revision is bugged they say. Even if the files are only a few days old, the ninja reply still appears. Lul

Posted
On 3/26/2020 at 1:05 AM, roukounas123 said:

hi all..i have this error..Any can help? thnx!!

[20:07:04]  WARN Port 7777 is allready binded. Please free it and restart server.

https://www83.zippyshare.com/v/kqQ1MZBa/file.html

use this for your trouble that will already fix your problem if you are using my gameserver.jar

  • Thanks 1
Posted
On 3/23/2020 at 5:24 AM, malahie said:

Hello,

Anyone has a backup file with all tables included?

Its missing some tables.

Thanks in advance.


here you have the rank pvp save it in sql file and insert it:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `rank_pvp_system_options`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_options`;
CREATE TABLE `rank_pvp_system_options` (
  `option_id` int(11) NOT NULL AUTO_INCREMENT,
  `option_name` varchar(30) DEFAULT NULL,
  `option_value_long` bigint(20) DEFAULT NULL,
  `option_value_string` varchar(100) DEFAULT NULL,
  `option_description` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`option_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_options
-- ----------------------------
INSERT INTO `rank_pvp_system_options` VALUES ('1', 'top_update_time', '0', null, 'If option_value_long = 0 then on server start top list will be updated.');

-- ----------------------------
-- Table structure for `rank_pvp_system_pvp`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_pvp`;
CREATE TABLE `rank_pvp_system_pvp` (
  `killer_id` int(10) NOT NULL,
  `victim_id` int(10) NOT NULL,
  `kills` int(10) NOT NULL DEFAULT '0',
  `kills_today` int(10) NOT NULL DEFAULT '0',
  `kills_legal` int(10) NOT NULL DEFAULT '0',
  `kills_today_legal` int(10) NOT NULL DEFAULT '0',
  `rank_points` bigint(18) NOT NULL DEFAULT '0',
  `rank_points_today` bigint(18) NOT NULL DEFAULT '0',
  `kill_time` bigint(18) NOT NULL DEFAULT '0',
  `kill_day` bigint(18) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_pvp
-- ----------------------------

-- ----------------------------
-- Table structure for `rank_pvp_system_pvp_summary`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_pvp_summary`;
CREATE TABLE `rank_pvp_system_pvp_summary` (
  `killer_id` int(10) NOT NULL,
  `pvp_exp` bigint(20) NOT NULL DEFAULT '0',
  `max_rank_id` int(10) NOT NULL DEFAULT '0',
  `total_war_kills` int(10) NOT NULL DEFAULT '0',
  `total_war_kills_legal` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`killer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_pvp_summary
-- ----------------------------

-- ----------------------------
-- Table structure for `rank_pvp_system_rank_reward`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_rank_reward`;
CREATE TABLE `rank_pvp_system_rank_reward` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `item_id` int(10) NOT NULL,
  `item_amount` int(10) NOT NULL,
  `rank_id` int(4) NOT NULL,
  `is_pvp` varchar(5) NOT NULL DEFAULT 'false' COMMENT 'true or false',
  `is_level` varchar(5) NOT NULL DEFAULT 'true' COMMENT 'true or false',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_rank_reward
-- ----------------------------
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('1', '57', '1000', '1', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('2', '57', '2000', '2', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('3', '57', '3000', '3', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('4', '57', '4000', '4', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('5', '57', '5000', '5', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('6', '57', '6000', '6', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('7', '57', '7000', '7', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('8', '57', '8000', '8', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('9', '57', '9000', '9', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('10', '57', '10000', '10', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('11', '57', '11000', '11', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('12', '57', '12000', '12', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('13', '57', '13000', '13', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('14', '57', '14000', '14', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('15', '57', '15000', '15', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('16', '57', '16000', '16', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('17', '57', '17000', '17', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('18', '57', '18000', '18', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('19', '57', '19000', '19', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('20', '57', '20000', '20', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('21', '57', '21000', '21', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('22', '57', '22000', '22', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('23', '57', '23000', '23', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('24', '57', '24000', '24', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('25', '57', '25000', '25', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('26', '57', '26000', '26', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('27', '57', '27000', '27', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('28', '57', '28000', '28', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('29', '57', '29000', '29', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('30', '57', '30000', '30', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('31', '57', '31000', '31', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('32', '57', '32000', '32', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('33', '57', '33000', '33', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('34', '57', '34000', '34', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('35', '57', '35000', '35', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('36', '57', '36000', '36', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('37', '57', '37000', '37', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('38', '57', '38000', '38', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('39', '57', '39000', '39', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('40', '57', '40000', '40', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('41', '57', '41000', '41', 'true', 'true');
INSERT INTO `rank_pvp_system_rank_reward` VALUES ('42', '57', '42000', '42', 'true', 'true');

-- ----------------------------
-- Table structure for `rank_pvp_system_rank_skill`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_rank_skill`;
CREATE TABLE `rank_pvp_system_rank_skill` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `skill_id` int(10) NOT NULL,
  `skill_level` int(10) NOT NULL,
  `rank_id` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_rank_skill
-- ----------------------------
INSERT INTO `rank_pvp_system_rank_skill` VALUES ('1', '1323', '1', '2');

-- ----------------------------
-- Table structure for `rank_pvp_system_rpc`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_rpc`;
CREATE TABLE `rank_pvp_system_rpc` (
  `player_id` int(10) NOT NULL,
  `rpc_total` bigint(20) NOT NULL DEFAULT '0',
  `rpc_current` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`player_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for `rank_pvp_system_rpc_reward`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_rpc_reward`;
CREATE TABLE `rank_pvp_system_rpc_reward` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `item_id` int(10) NOT NULL,
  `item_amount` int(10) NOT NULL,
  `rpc` bigint(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_rpc_reward
-- ----------------------------
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('1', '57', '1000000', '10');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('2', '57', '10000000', '100');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('3', '57', '100000000', '1000');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('4', '6622', '1', '10');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('5', '5592', '100', '10');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('6', '1538', '100', '10');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('7', '6577', '1', '50');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('8', '6578', '1', '25');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('9', '6569', '1', '30');
INSERT INTO `rank_pvp_system_rpc_reward` VALUES ('10', '6570', '1', '15');

-- ----------------------------
-- Table structure for `rank_pvp_system_top_table`
-- ----------------------------
DROP TABLE IF EXISTS `rank_pvp_system_top_table`;
CREATE TABLE `rank_pvp_system_top_table` (
  `table_id` int(2) NOT NULL DEFAULT '0',
  `position` int(6) NOT NULL,
  `player_id` int(10) NOT NULL,
  `value` bigint(20) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of rank_pvp_system_top_table
-- ----------------------------

 

anyone have the tournament.ini? goes inside config / mod

thanks and sorry my english: D

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

    • [Release] Solo PvP Zone System 🔹 Compatible with: aCis 401+ 📜 Features: ✅ Automatic Exit on Restart: Players are removed from the zone if a restart occurs or logout. ✅ Custom Exit Command: Players can exit the Solo Zone with the voice command .exit. ✅ Teleport NPC Command: new bypass solopvp for gatekeeper. ✅ Random Name Generator: Generates random names. ✅ PvP Flag: The players are flagged within this zone.   xml preview & java code backup code -> https://pastebin.com/974V2p2p   SoloZone.xml <?xml version="1.0" encoding="UTF-8"?> <list> <zone shape="NPoly" minZ="-5200" maxZ="-4680"><!-- Frintezza Solo Zone --> <stat name="name" val="Solo PvP Zone" /> <stat name="locs" val="174244,-89089,-5112;174260,-86881,-5112;173184,-88090,-5112;175309,-88018,-5112;174231,-88019,-5112;175136,-88828,-5104;174962,-87025,-5104;173149,-87142,-5104;173470,-88908,-5112" /> <stat name="restrictedClasses" val="15,16,97" /> <node x="172031" y="-90127"/> <node x="176428" y="-90089"/> <node x="176428" y="-74051"/> <node x="172057" y="-74108"/> </zone> </list> SoloZone Code: diff --git a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java b/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java @@ -0,0 +1,98 @@ +package net.sf.l2j.gameserver.taskmanager; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.logging.Logger; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.gameserver.data.manager.ZoneManager; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.SoloZone; + + +/** + * @author MarGaZeaS + */ +public class SoloZoneTaskManager implements Runnable { + + private static final Location EXIT_LOCATION = VoiceExitSoloZone.getExitLocation(); // Λαμβάνουμε την έξοδο από το VoiceExitSoloZone + + @Override + public void run() + { + // Διασχίζουμε όλους τους παίκτες του κόσμου + for (Player player : World.getInstance().getPlayers()) + { + // Ελέγχουμε αν ο παίκτης είναι στο SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Μεταφέρουμε τον παίκτη στην έξοδο + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + player.sendMessage("The server is restarting, you have been moved out of the Solo Zone."); + } + } + } + + private int _id; + + private static final Logger _log = Logger.getLogger(SoloZoneTaskManager.class.getName()); + private static final ArrayList<String> _rndNames = new ArrayList<>(); + private static final int RANDOM_NAMES = 500; + private static final String CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private int _playersInSoloZone = 0; + + public int getPlayersInside() { + return _playersInSoloZone; + } + + public void setPlayersInside(int val) { + _playersInSoloZone = val; + } + + public SoloZoneTaskManager() { + _log.info("Solo Zone System: Loading..."); + for (int i = 0; i < RANDOM_NAMES; i++) { + String name = generateName(); + _rndNames.add(name); + _log.info("Generated name: " + name); + } + _log.info("Solo Zone System: Loaded " + _rndNames.size() + " names."); + } + + public String getAName() { + if (_rndNames.isEmpty()) { + _log.warning("SoloZoneManager: No random names available."); + return "Unknown"; + } + return _rndNames.get(Rnd.get(5, RANDOM_NAMES - 5)); + } + + private static String generateName() { + SecureRandom rnd = new SecureRandom(); + StringBuilder sb = new StringBuilder(15); + for (int i = 0; i < 15; i++) { + sb.append(CHARS.charAt(rnd.nextInt(CHARS.length()))); + } + return sb.toString(); + } + + public int getZoneId() + { + return _id; + } + + public final static SoloZone getCurrentZone() { + return ZoneManager.getInstance().getAllZones(SoloZone.class) + .stream() + .findFirst() // Επιστρέφει την πρώτη SoloZone (αν υπάρχει μόνο μία) + .orElse(null); + } + + public static SoloZoneTaskManager getInstance() { + return SingletonHolder._instance; + } + + private static class SingletonHolder { + private static final SoloZoneTaskManager _instance = new SoloZoneTaskManager(); + } +} diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java b/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java index a707ce5..d247e2e 100644 --- a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java final Player player = entry.getKey(); final long timeLeft = entry.getValue(); + if(player.isInsideZone(ZoneId.SOLO)) + continue; if(player.isInsideZone(ZoneId.BOSS)) continue; // Time is running out, clear PvP flag and remove from list. if (currentTime > timeLeft) diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java index a707ce5..d247e2e 100644 +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + if (Config.ENABLE_STARTUP) + StartupManager.getInstance(); diff --git a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java b/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java if (!st.hasMoreTokens()) { sendHtmlForm(player); return; } try { switch (st.nextToken()) { case "shutdown": + SoloZoneTaskManager exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), false); break; case "restart": + exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), true); break; case "abort": Shutdown.getInstance().abort(player); break; diff --git a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java b/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java +package net.sf.l2j.gameserver.handler.voicecommandhandlers; + +import net.sf.l2j.commons.pool.ThreadPool; + +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.IVoiceCommandHandler; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; + +/** + * Handles the voice command for exiting the Solo Zone with delay and effects. + * + * @author MarGaZeaS + */ +public class VoiceExitSoloZone implements IVoiceCommandHandler +{ + private static final String[] VOICE_COMMANDS = + { + "exit" + }; + + // Default location to teleport players when exiting the Solo Zone + private static final Location EXIT_LOCATION = new Location(81318, 148064, -3464); // Replace with your desired coordinates + + // Προσθήκη της μεθόδου για να πάρουμε την τοποθεσία εξόδου + public static Location getExitLocation() { + return EXIT_LOCATION; + } + + @Override + public void useVoiceCommand(Player player, String command) + { + if (command.equalsIgnoreCase("exit")) + { + if (!player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You are not inside the Solo Zone."); + return; + } + + // Notify the player about the delay + player.sendMessage("You will be teleported out of the Solo Zone in 2 seconds."); + + // Cast skill effect (Skill ID: 2100, Level: 1) + player.broadcastPacket(new MagicSkillUse(player, player, 2100, 1, 2000, 0)); + + // Schedule the teleportation after a 2-second delay + ThreadPool.schedule(() -> { + // Teleport the player to the designated exit location + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + + // Inform the player + player.sendMessage("You have exited the Solo Zone."); + }, 2000); // Delay in milliseconds (2000ms = 2 seconds) + } + } + + @Override + public String[] getVoiceCommandList() + { + return VOICE_COMMANDS; + } +} diff --git a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java b/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java public class VoiceCommandHandler { private final Map<String, IVoiceCommandHandler> _entries = new HashMap<>(); protected VoiceCommandHandler() { ............ ............ + registerHandler(new VoiceExitSoloZone()); } public void registerHandler(IVoiceCommandHandler handler) { for (String command : handler.getVoiceCommandList()) _entries.put(command, handler); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Npc.java b/java/net/sf/l2j/gameserver/model/actor/Npc.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Npc.java else if (command.startsWith("Chat")) { int val = 0; try { val = Integer.parseInt(command.substring(5)); } catch (final IndexOutOfBoundsException ioobe) { } catch (final NumberFormatException nfe) { } showChatWindow(player, val); + ) + else if (command.startsWith("solopvp")) + { + SoloZoneTaskManager.getInstance(); + player.teleportTo(SoloZoneTaskManager.getCurrentZone().getLoc(), 25); + } else if (command.startsWith("Link")) { final String path = command.substring(5).trim(); if (path.indexOf("..") != -1) return; final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/" + path); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java // Fixed. - else if (_requestType == 4) - { - if (!player.isGM() && !player.isFestivalParticipant()) - return; - - loc = player.getPosition(); - } + if (_requestType == 4) + { + // Έλεγχος αν ο παίκτης δεν είναι GM, δεν είναι μέρος του φεστιβάλ και δεν είναι στην Solo Zone + if (!player.isGM() && !player.isFestivalParticipant() && !player.isInsideZone(ZoneId.SOLO)) + { + return; + } + + SoloZoneTaskManager.getInstance(); + SoloZone currentZone = SoloZoneTaskManager.getCurrentZone(); + if (currentZone != null && currentZone.getLoc() != null) + { + // Αν υπάρχει ζώνη και οι τοποθεσίες δεν είναι κενές, χρησιμοποιούμε τυχαία τοποθεσία από την ζώνη + loc = currentZone.getLoc(); + } else + { + // Διαφορετικά, κάνουμε respawn στην τρέχουσα θέση του παίκτη + loc = player.getPosition(); + } + } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java if (player.isFestivalParticipant() && FestivalOfDarknessManager.getInstance().isFestivalInitialized()) { player.sendPacket(SystemMessageId.NO_RESTART_HERE); sendPacket(RestartResponse.valueOf(false)); return; } + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + sendPacket(RestartResponse.valueOf(false)); + return; + } player.removeFromBossZone(); diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java b/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java player.removeFromBossZone(); player.logout(true); } } + + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot logout or restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + player.removeFromBossZone(); player.logout(true); } } diff --git a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java b/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java +package net.sf.l2j.gameserver.model.zone.type; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.enums.MessageType; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Creature; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.subtype.ZoneType; +import net.sf.l2j.gameserver.network.SystemMessageId; +import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate; +import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager; +import net.sf.l2j.gameserver.taskmanager.SoloZoneTaskManager; + +/** + * @author MarGaZeaS + * + */ +public class SoloZone extends ZoneType +{ + private String _name; + private List<Location> _locations = new ArrayList<>(); + + public SoloZone(int id) + { + super(id); + } + + @Override + public void setParameter(String name, String value) + { + if (name.equals("name")) + _name = value; + else if (name.equals("locs")) + { + for (String locs : value.split(";")) + { + String[] coordinates = locs.split(","); + if (coordinates.length == 3) + { + int x = Integer.parseInt(coordinates[0]); + int y = Integer.parseInt(coordinates[1]); + int z = Integer.parseInt(coordinates[2]); + _locations.add(new Location(x, y, z)); + } + else + { + LOGGER.warn("Invalid location format: " + locs); + } + } + } + } + + + @Override + protected void onEnter(Creature character) + { + if (character instanceof Player) + { + final Player player = (Player) character; + + if ((player.getClassId().getId() == 15 || player.getClassId().getId() == 16 || player.getClassId().getId() == 97)) + { + Location respawnLocation = VoiceExitSoloZone.getExitLocation(); + player.instantTeleportTo(respawnLocation, 20); + player.sendMessage("Your class is not allowed in this zone."); + return; + } + + String randomName = SoloZoneTaskManager.getInstance().getAName(); + if (randomName == null || randomName.isEmpty() || !isValidName(randomName)) + { + randomName = generateRandomName(); + } + if (isNameAlreadyTaken(randomName)) + { + randomName = generateRandomName(); + } + player.setFakeName(randomName); + player.sendMessage("Welcome to the Solo Zone, your random name is: " + randomName); + player.sendPacket(SystemMessageId.ENTERED_COMBAT_ZONE); + character.setInsideZone(ZoneId.SOLO, true); + character.setInsideZone(ZoneId.NO_STORE, true); + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true); + + if (player.getParty() != null) + { + player.getParty().removePartyMember(player, MessageType.DISCONNECTED); + } + + if (player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().remove(player, true); + + player.updatePvPStatus(); + player.broadcastUserInfo(); + } + } + + private static boolean isValidName(String name) { + return name.matches("[a-zA-Z0-9_]+"); + } + + private static String generateRandomName() { + Random rand = new Random(); + int nameLength = rand.nextInt(12) + 4; + StringBuilder nameBuilder = new StringBuilder(); + + for (int i = 0; i < nameLength; i++) { + char randomChar = (char) (rand.nextInt(26) + 'a'); + nameBuilder.append(randomChar); + } + + return nameBuilder.toString(); + } + + private static boolean isNameAlreadyTaken(String name) { + return World.getInstance().getPlayers().stream().anyMatch(player -> player.getFakeName().equals(name)); + } + + @Override + protected void onExit(Creature character) + { + character.setInsideZone(ZoneId.SOLO, false); // Solo zone + character.setInsideZone(ZoneId.NO_STORE, false); // Allow making a store + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false); // Allow summon + + if (character instanceof Player) + { + final Player player = (Player) character; + + if (player.getFakeName() != null) + { + player.setFakeName(null); + } + + player.sendPacket(SystemMessageId.LEFT_COMBAT_ZONE); + { + if(!player.isInObserverMode() && player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().add(player, Config.PVP_NORMAL_TIME); + + player.sendPacket(new EtcStatusUpdate(player)); + player.broadcastUserInfo(); + } + } + } + + public String getName() + { + return _name; + } + + public Location getLoc() + { + if (_locations.isEmpty()) + { + return null; // Αν η λίστα είναι κενή, επιστρέφουμε null + } + return _locations.get(Rnd.get(0, _locations.size() - 1)); // Επιλέγουμε τυχαία τοποθεσία + } +} diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/GameServer.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + StringUtil.printSection("Custom Features"); + SoloZoneTaskManager.getInstance(); StringUtil.printSection("Handlers"); LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size()); diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/Shutdown.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/Shutdown.java // disconnect players try { disconnectAllPlayers(); LOGGER.info("All players have been disconnected."); } catch (Exception e) { // Silent catch. } + // Restore real names for players in SoloZone + restoreRealNamesInSoloZone(); // stop all threadpolls ThreadPool.shutdown(); try { LoginServerThread.getInstance().interrupt(); } catch (Exception e) { // Silent catch. } // avoids new players from logging in if (_secondsShut <= 60 && LoginServerThread.getInstance().getServerType() != ServerType.DOWN) LoginServerThread.getInstance().setServerType(ServerType.DOWN); _secondsShut--; Thread.sleep(1000); } } catch (InterruptedException e) { } } + // This method restores the real names of players in SoloZone + private static void restoreRealNamesInSoloZone() + { + for (Player player : World.getInstance().getPlayers()) + { + // Check if player is inside the SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Restore the real name by removing the fake name + if (player.getFakeName() != null) + { + player.setFakeName(null); // Restore the real name + LOGGER.info("Player {}'s fake name has been removed and real name restored.", player.getName()); + } + } + } + } private static void sendServerQuit(int seconds) { World.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_SERVER_WILL_BE_COMING_DOWN_IN_S1_SECONDS).addNumber(seconds)); } diff --git a/java/net/sf/l2j/gameserver/enums/ZoneId.java b/java/net/sf/l2j/gameserver/enums/ZoneId.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/enums/ZoneId.java public enum ZoneId { PVP(0), PEACE(1), SIEGE(2), MOTHER_TREE(3), CLAN_HALL(4), NO_LANDING(5), WATER(6), JAIL(7), MONSTER_TRACK(8), CASTLE(9), SWAMP(10), NO_SUMMON_FRIEND(11), NO_STORE(12), TOWN(13), HQ(14), DANGER_AREA(15), CAST_ON_ARTIFACT(16), NO_RESTART(17), SCRIPT(18), - BOSS(19), + BOSS(19), + SOLO(20); private final int _id; private ZoneId(int id) { _id = id; } diff --git a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java b/java/net/sf/l2j/gameserver/network/serverpackets/Die.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java if (creature instanceof Player) { Player player = (Player) creature; - _allowFixedRes = player.getAccessLevel().allowFixedRes(); + _allowFixedRes = player.getAccessLevel().allowFixedRes() || player.isInsideZone(ZoneId.SOLO); _clan = player.getClan(); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver//model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java // Attacker or spectator logging into a siege zone will be ported at town. if (player.isInsideZone(ZoneId.SIEGE) && player.getSiegeState() < 2) player.teleportTo(TeleportType.TOWN); + if (player.isInsideZone(ZoneId.SOLO)) + { + ThreadPool.schedule(() -> { + Location exitLocation = VoiceExitSoloZone.getExitLocation(); + + if (exitLocation != null) + { + player.teleportTo(exitLocation.getX(), exitLocation.getY(), exitLocation.getZ(), 0); + player.sendMessage("You have been moved to the exit of the SoloZone."); + } + }, 5000); // 5000 milliseconds (5sec) + } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver/model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Player.java @Override public void doRevive() { super.doRevive(); stopEffects(EffectType.CHARM_OF_COURAGE); sendPacket(new EtcStatusUpdate(this)); getStatus().setCpHpMp(getStatus().getMaxCp(), getStatus().getMaxHp(), getStatus().getMaxMp()); _reviveRequested = 0; _revivePower = 0; if (isMounted()) startFeed(_mountNpcId); + if (isInsideZone(ZoneId.SOLO)) + { + // Give Nobless (1323 ID) + L2Skill no = SkillTable.getInstance().getInfo(1323, 1); + no.getEffects(this, this); + sendMessage("You have received the Nobless status in the Solo Zone."); + } + }   If anyone thinks the code is wrong, please make an update and upload it here so I can update the post. A part was edited with chatgpt
    • Always remember, when you buy files, just compare with my files that I publish for free. and you will know that you are being ripped off. Greetings to all community!!! 🙂
    • Thank you for sharing. You are a capable and skilled person. Thank you again for your selfless dedication, Guytis🫡
    • he kept his promise! i think it's a good idea to unban his old account. he shares files with the community and could help both new and veteran l2off users! good job, Guytis!
  • Topics

×
×
  • Create New...