Search the Community

Showing results for tags 'l2j'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Lineage II Development [L2J]
    • Sources
    • Addons & Mods
    • Tools
  • Lineage II Development [L2OFF]
    • Package Files
    • Mods & Extenders
    • Tools
  • Lineage II Client Development
    • Equipments
    • Npcs
    • Maps
    • Tools
  • Lineage II Bots & Tools
    • Bot Systems
    • Bot Scripts
    • Tools
  • Website Templates
  • DenArt Designs's Demo Updater

Forums

  • General Zone
    • Announcements and News
    • Newbies Introduce Urself
    • Maxcheaters Competitions & Events
    • Votes/Polls Area
    • Report Section
    • Downloads Section
  • Lineage II General Section
    • General Discussion [English]
    • Request Support [English]
  • Lineage II Hacks,Cheats and Bots
    • Hacks & Cheats [English]
    • Request Hacks & Cheats [English]
    • Botting [English]
    • Request Botting [English]
  • Lineage II Private Servers
    • L2 EXCELSIS - OPEN BETA 29/11 - GRAND OPENING 13/12
    • Private Servers
    • MMOWAY.COM - CLASSIC 1.5 SERVER (L2OFF)
    • [Previews] L2 Private Servers
    • Clans and Alliances
  • Lineage II Marketplace
    • Marketplace [Items & Chars]
    • Marketplace [L2Packs & Files]
    • Marketplace [Powerlvl & Support]
  • Lineage II OFF Server Development
    • Server Development Discussion [L2OFF]
    • Request Server Development Help [L2OFF]
    • Server Shares & Files [L2OFF]
  • Lineage II Java Server Development
    • Server Development Discussion [L2J]
    • Request Server Development Help [L2J]
    • Server Shares & Files [L2J]
    • Private Projects [L2J]
  • Lineage II Client Development
    • Client Development Discussion
  • MMO Games
    • League of Legends
    • World Of Warcraft Area
    • Other Multiplayer Games
  • General Section
  • Graphics/GFX Zone
  • VIP/SVIP/Donators Zone
  • MaxCheaters Corner
  • TEST's Topics
  • L2Classic Club's Just trying this thing out
  • Lineage 2 Revolution Club's Discussions
  • Lineage 2 Revolution Club's Tutorials
  • Lineage 2 Revolution Club's Request Help
  • DenArt Designs's Hello and welcome to my club!
  • DenArt Designs's News
  • `Kara for staff's Topics
  • `Kara for staff's Kara`

Product Groups

  • Advertisements
  • Special Groups

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 394 results

  1. Hello, i want to share this tool for L2J servers Not my work, It was made by tReXpert It's a tool for make multisell. You can: - drag and drop items - choose how many items needed for - save and more.. Some screens: Virus Total: Virus Total Link: [Hidden Content]
  2. Hello everyone, I have the mod to see the items and etc, but mine does not show the amount, can anyone help me? I want it to be as it is below https://imgur.com/XxhcRpO
  3. Hello MxC community, After a long time of work, i decided to share some work of mine with you. It' s a Chronicle 4 (Scions of Destiny) pack based on L2JServer, which can be considered as the most stable free version so far. If you take a look, 240+ commits have been done, but i have been working on the files long before i created the svn. I missed the nostalgic old times so much that i decided to create a pack for free and bring C4 to life. I have been working alone so far, but everybody interested in helping is welcome. I won' t mind if somebody copies the project, too. Some people may ruin C4 just like they did with Interlude, but i' ll take the risk. If, by any chance, you get any errors, i' m here to provide support, so as to keep the pack clean and stable with all my strength. For further support, you may visit forum. Useful links: Forum SVN Repository (old) GIT Repository Total Commits: 693 Last Updated: 01-12-2019 Check forum for compiled versions: Link 1 Link 2 Enjoy. ^^
  4. The New START: 26th January ❗❗❗ ⚠️ LifeDrain World - Interlude [x100] ❗❗❗ EVENTS + BONUS START. BIGGEST UPDATES and FIXES like never before. The Newest updates here: Changelog #115 https://forum.lifedrain.net/index.php?board=2.0 [#] Poster EVENT (Win 60 Donate COINS): https://forum.lifedrain.net/index.php?topic=467.0#top [#] Clan EVENT (Win 100 Donate COINS): https://forum.lifedrain.net/index.php?topic=264.0#top Announcement (More info about START): https://forum.lifedrain.net/index.php?topic=1129.0#top Website: https://www.lifedrain.net Forum: https://www.forum.lifedrain.net Server info (Newest): https://www.lifedrain.net/info
  5. So my question is how can i edit an instance lets say Kamaloka and make it a solo instance with custom mobs with my own npc etc. I've seen this before on some packs and i want to put it on my local project i am working on. Chronicle: H5 Pack: L2j Sunrise ( the shared one ) ver.979 Thanks in advance
  6. Webpage: www.l2jmaster.com Contact: www.facebook.com/L2JMaster or Skype: L2JMaster Team Chronicle: High Five Part 5. Base: High Five. Java: 8. Gradle: 3.5 Rev: V-012 Stable. Pack: Source + Geodata Premium + Textures + System Access: FREE SUPPORT FOR LIFETIME & UPDATES. PERFECT TO ALL RATE SERVERS. Custom: Premium Account System. Subclass Between Elves Castle Manager Cloak. Champions / Super Champions with Aura. Community Board (Auction, Rebirth System, GM Shop, Gk, Services, Rules, Rankings, RB/GB, Online, etc). Announce Hero Login. Announce Castle Lord Login. Announce Boss Kill & Boss Spawn. Blue Spoil Class Switcher. Class Cloak With Stats. Cancel Return. Clan Leader Name & Title Color. MultiFunctionZone / Custom PvP. PvP / PK Nick & Title Color. System PvP / PK Reward. Support PvP / Pk System. Stack Subclass. Quake System. Auto Restart Game Server. Chat Limit per Level. Master Transformation. Newbie Guide. Dead Player Chat Disabled. Custom Start Title on Newbie Characters. LeaderBoards (Arena, Craft, Fisherman, TvT). Custom Clan Halls. Recipe Elegia System. Vote Reward. Wedding System. Welcome Message. Fantasy Isle Parade. Auto CP Pots Shift + Click. Commands: DressMe Command + Races, Online / Offline. (New design, Armors & Configs) Epic. Online. Go To CL. Go To Mob. Teleport (.Giran. .Aden, etc). SellBuff Online/Offline + Enchant Skills. Repair. Combine Talisman. Hellbound. Change Password. Divorce. Engage. Bank. Premium. Events: Achievement System. Casino. The Avatar Element. Questions Event. Event Engine (TvT, CtF, DM, SV). Pc Bang Points. Squash Event. Monsters. Legion Squad. Traesure. Classic Events: Gift of Vitality. Character Birthday. Heavy Medal. Christmas Is Here. Hallowed You. The Valentine Event. Freya Celebration. Love Your Gatekeeper. Master of Enchanting. Elpies. Rabits. Race. April Fool's Catch A Tiger Npc's: Augment Manager Bug Report. Deluxe Gatekeeper. Scheme Buffer. Premium Scheme Buffer. Delevel. Uplevel. Vote shop. Donate Merchant. Forgotten Scrolls. Medal Shop. Services. Top PvP / PK. Safe Enchant. Protections: Antibot. Npc AntiBot Over Enchant. Enchant Near Warehouse. Class Item Protection. Instances & Quests: Crystal Caverns (Baylor). Seed of Infinity: Attack and Defence (Sufferng, Erosion, Infinity Ekimus). Zaken (Easy, Hard, Night). Freya (Easy & Hard). Tower of Naia (Epidos & Beleth). Pailaka Injured Dragon. Seven Signs (All 12 Quest). Seer Ugoros. Fixed / IMP: Lucky Pig. Blood Altars. Nevit's Blessing System All Working (Hunting Bonus, Nevit's Voice, Bonus Time, Nevit Hourglass). Nevit Herald. Treasure Chest (Retail Location and Drop). Valakas Family. Missing Html's. Skills. Custom Items: Premium Item for Status. Donate Coins. Vote Coins. Rune Spoil / Adena Cowboy Outfit + Hat. Archer Red Armor + Hat. White Royal Suit + Hat. Green Wizard + Hat. Dark Assassin + Hat. White Assassin + Hat. School Uniform. Santa's Outfit Class Cloaks. Castle Cloaks. and More... Contact: www.facebook.com/L2JMaster or Skype: L2JMaster Team
  7. +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestRecipeShopListSet.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -62,6 +63,12 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendMessage("You cannot craft while inside Multifunction zone."); + return; + } + if (!player.isInsideZone(ZoneId.NO_STORE)) { player.sendPacket(SystemMessageId.NO_PRIVATE_WORKSHOP_HERE); +++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -56,6 +57,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.logout_zone) + { + player.sendMessage("You cannot Logout while inside a Multifunction zone."); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.NO_LOGOUT_HERE); +++java/net/sf/l2j/gameserver/model/zone/ZoneId.java DANGER_AREA(15), CAST_ON_ARTIFACT(16), NO_RESTART(17), - SCRIPT(18); + SCRIPT(18), + MULTI_FUNCTION(19); private final int _id; +++java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListBuy.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -83,6 +84,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendPacket(new PrivateStoreManageListBuy(player)); + player.sendMessage("You cannot start store while inside Multifunction zone."); + return; + } + if (!player.isInsideZone(ZoneId.NO_STORE)) { player.sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE); +++java/net/sf/l2j/gameserver/network/clientpackets/SetPrivateStoreListSell.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -71,6 +72,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.store_zone) + { + player.sendPacket(new PrivateStoreManageListSell(player, _packageSale)); + player.sendMessage("You cannot start store while inside Multifunction zone."); + return; + } + if (!player.getAccessLevel().allowTransaction()) { player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); +++java/net/sf/l2j/gameserver/network/serverpackets/Die.java. +import net.sf.l2j.gameserver.model.zone.ZoneId; +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; public class Die extends L2GameServerPacket { private final int _charObjId; private final boolean _fake; private boolean _sweepable; + private boolean _canTeleport; private L2AccessLevel _access = AccessLevels._userAccessLevel; @@ -47,6 +50,7 @@ Player player = (Player) cha; _access = player.getAccessLevel(); _clan = player.getClan(); + _canTeleport = !(player.isInsideZone(ZoneId.MULTI_FUNCTION) && L2MultiFunctionZone.revive); @@ -86,7 +90,7 @@ } else { - writeD(0x01); // to nearest village + writeD(_canTeleport ? 0x01 : 0); // to nearest village @@ -96,7 +100,7 @@ - if (_clan != null) + if (_canTeleport && _clan != null) { ++++java/net/sf/l2j/gameserver/model/actor/instance/Player.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -4384,6 +4385,8 @@ // Add PvP point to attacker. setPvpKills(getPvpKills() + 1); + L2MultiFunctionZone.givereward(this); + // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); } ++++java/net/sf/l2j/gameserver/model/itemcontainer/ItemContainer.java { protected static final Logger _log = Logger.getLogger(ItemContainer.class.getName()); - protected final List<ItemInstance> _items; + public final List<ItemInstance> _items; protected ItemContainer() { +++java/net/sf/l2j/gameserver/model/zone/type/L2MultiFunctionZone.java CREATE NEW THIS FILE DOES NOT EXIST! package net.sf.l2j.gameserver.model.zone.type; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import net.sf.l2j.commons.concurrent.ThreadPool; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.model.itemcontainer.PcInventory; import net.sf.l2j.gameserver.model.zone.L2ZoneType; import net.sf.l2j.gameserver.model.zone.ZoneId; public class L2MultiFunctionZone extends L2ZoneType { public L2MultiFunctionZone(int id) { super(id); loadConfigs(); } public static boolean pvp_enabled, restart_zone, store_zone, logout_zone, revive_noblesse, revive_heal, revive, remove_buffs, remove_pets, give_noblesse; static int radius, enchant, revive_delay; static int[][] spawn_loc; L2Skill noblesse = SkillTable.getInstance().getInfo(1323, 1); private static List<String> items = new ArrayList<>(), classes = new ArrayList<>(), grades = new ArrayList<>(); public static List<int[]> rewards = new ArrayList<>(); static String[] gradeNames = { "", "D", "C", "B", "A", "S" }; @Override protected void onEnter(Creature character) { character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true); character.setInsideZone(ZoneId.MULTI_FUNCTION, true); if (character instanceof Player) { Player activeChar = ((Player) character); if (classes != null && classes.contains("" + activeChar.getClassId().getId())) { activeChar.teleToLocation(83597, 147888, -3405, 0); activeChar.sendMessage("Your class is not allowed in the MultiFunction zone."); return; } for (ItemInstance o : activeChar.getInventory()._items) { if (o.isEquipable() && o.isEquipped() && !checkItem(o)) { int slot = activeChar.getInventory().getSlotFromItem(o); activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot); activeChar.sendMessage(o.getItemName() + " unequiped because is not allowed inside this zone."); } } if (give_noblesse) noblesse.getEffects(activeChar, activeChar); if (pvp_enabled) activeChar.updatePvPFlag(1); activeChar.sendMessage("You entered in a MultiFunction zone."); clear(activeChar); } } @Override protected void onExit(Creature character) { character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false); character.setInsideZone(ZoneId.MULTI_FUNCTION, false); if (character instanceof Player) { Player activeChar = ((Player) character); activeChar.sendMessage("You left from a MultiFunction zone."); if (pvp_enabled) activeChar.updatePvPFlag(0); } } @Override public void onDieInside(final Creature character) { if (character instanceof Player) { final Player activeChar = ((Player) character); if (revive) { ThreadPool.schedule(new Runnable() { @Override public void run() { activeChar.doRevive(); heal(activeChar); int[] loc = spawn_loc[Rnd.get(spawn_loc.length)]; activeChar.teleToLocation(loc[0] + Rnd.get(-radius, radius), loc[1] + Rnd.get(-radius, radius), loc[2], 0); } }, revive_delay * 1000); } } } @Override public void onReviveInside(Creature character) { if (character instanceof Player) { Player activeChar = ((Player) character); if (revive_noblesse) noblesse.getEffects(activeChar, activeChar); if (revive_heal) heal(activeChar); } } static void heal(Player activeChar) { activeChar.setCurrentHp(activeChar.getMaxHp()); activeChar.setCurrentCp(activeChar.getMaxCp()); activeChar.setCurrentMp(activeChar.getMaxMp()); } private static void clear(Player player) { if (remove_buffs) { player.stopAllEffects(); if (remove_pets) { Summon pet = player.getPet(); if (pet != null) { pet.stopAllEffects(); pet.unSummon(player); } } } else { if (remove_pets) { Summon pet = player.getPet(); if (pet != null) pet.unSummon(player); } } } public static void givereward(Player player) { if (player.isInsideZone(ZoneId.MULTI_FUNCTION)) { for (int[] reward : rewards) { PcInventory inv = player.getInventory(); inv.addItem("Custom Reward", reward[0], reward[1], player, player); } } } public static boolean checkItem(ItemInstance item) { int o = item.getItem().getCrystalType().ordinal(); int e = item.getEnchantLevel(); if (enchant != 0 && e >= enchant) return false; if (grades.contains(gradeNames[o])) return false; if (items != null && items.contains("" + item.getItemId())) return false; return true; } private static void loadConfigs() { try { Properties prop = new Properties(); prop.load(new FileInputStream(new File("./config/MultiFunctionZone.properties"))); pvp_enabled = Boolean.parseBoolean(prop.getProperty("EnablePvP", "False")); spawn_loc = parseItemsList(prop.getProperty("SpawnLoc", "150111,144740,-12248")); revive_delay = Integer.parseInt(prop.getProperty("ReviveDelay", "10")); if (revive_delay != 0) revive = true; give_noblesse = Boolean.parseBoolean(prop.getProperty("GiveNoblesse", "False")); String[] propertySplit = prop.getProperty("Items", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) items.add(i); propertySplit = prop.getProperty("Grades", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) if (i.equals("D") || i.equals("C") || i.equals("B") || i.equals("A") || i.equals("S")) grades.add(i); propertySplit = prop.getProperty("Classes", "").split(","); if (propertySplit.length != 0) for (String i : propertySplit) classes.add(i); radius = Integer.parseInt(prop.getProperty("RespawnRadius", "500")); enchant = Integer.parseInt(prop.getProperty("Enchant", "0")); remove_buffs = Boolean.parseBoolean(prop.getProperty("RemoveBuffs", "False")); remove_pets = Boolean.parseBoolean(prop.getProperty("RemovePets", "False")); restart_zone = Boolean.parseBoolean(prop.getProperty("NoRestartZone", "False")); store_zone = Boolean.parseBoolean(prop.getProperty("NoStoreZone", "False")); logout_zone = Boolean.parseBoolean(prop.getProperty("NoLogoutZone", "False")); revive_noblesse = Boolean.parseBoolean(prop.getProperty("ReviveNoblesse", "False")); revive_heal = Boolean.parseBoolean(prop.getProperty("ReviveHeal", "False")); propertySplit = prop.getProperty("Rewards", "57,100000").split(";"); for (String reward : propertySplit) { String[] rewardSplit = reward.split(","); if (rewardSplit.length == 2) { try { rewards.add(new int[] { Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1]) }); } catch (NumberFormatException nfe) { } } } } catch (Exception e) { e.printStackTrace(); } } private static int[][] parseItemsList(String line) { final String[] propertySplit = line.split(";"); if (propertySplit.length == 0) return null; int i = 0; String[] valueSplit; final int[][] result = new int[propertySplit.length][]; for (String value : propertySplit) { valueSplit = value.split(","); if (valueSplit.length != 3) return null; result[i] = new int[3]; try { result[i][0] = Integer.parseInt(valueSplit[0]); } catch (NumberFormatException e) { return null; } try { result[i][1] = Integer.parseInt(valueSplit[1]); } catch (NumberFormatException e) { return null; } try { result[i][2] = Integer.parseInt(valueSplit[2]); } catch (NumberFormatException e) { return null; } i++; } return result; } } ++++java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java +import net.sf.l2j.gameserver.model.zone.ZoneId; +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -96,6 +98,12 @@ if (item == null) return; + if (getClient().getActiveChar().isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.checkItem(item)) + { + getClient().getActiveChar().sendMessage("You cannot use " +item.getName()+ " inside this zone."); + return; + } + +++java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java +import net.sf.l2j.gameserver.model.zone.type.L2MultiFunctionZone; @@ -54,6 +55,13 @@ return; } + if (player.isInsideZone(ZoneId.MULTI_FUNCTION) && !L2MultiFunctionZone.restart_zone) + { + player.sendMessage("You cannot restart while inside a Multifunction zone."); + sendPacket(RestartResponse.valueOf(false)); + return; + } + if (player.isInsideZone(ZoneId.NO_RESTART)) { player.sendPacket(SystemMessageId.NO_RESTART_HERE); +++config/MultiFunctionZone.properties # --------------------------------------------------------------------------- # MultiFunctionZone # --------------------------------------------------------------------------- # This option will turn on PvP flag to all people when entering to the zone EnablePvP = True # If set to false, zone will be no-restart zone NoRestartZone = False # If set to false, zone will be no-logout zone NoLogoutZone = False # If set to false, zone will be no-store zone NoStoreZone = False # Give noblesse after revive? ReviveNoblesse = False # Heal after revive? ReviveHeal = False # Delay, in seconds, to wait before revive # 0 to disable ReviveDelay = 10 # Set the spawn points where players will be teleported on revive, if enabled # example:150111,144740,-12248;143665,144418,-12022;144443,147685,-12139 SpawnLoc = 150111,144740,-12248;143665,144418,-12022;144443,147685,-12139 # Random respawn radius RespawnRadius = 500 # If set to true, players will take noblesse blessing when entering GiveNoblesse = True # Remove buffs when entering to the zone RemoveBuffs = False # Remove pets when entering to the zone RemovePets = False # Special rewards when hunting inside this zone # example: 57,100000;14720,1 Rewards = 57,100000;14720,1 # List of Items(id's) that won't be usable inside this area and also will be unequiped when entering # (armor, weapons, scrolls, potions, etc), example: 728,7575, 6383, 1538 Items = 728,7575,6383,1538 # List of Grades that won't be usable inside this area and also will be unequiped when entering # example: D,C,B,A,S Grades = C,B,A # Items with this enchant or more won't be usable inside this area and also will be unequiped when entering # 0 to disable Enchant = 0 # Players with one of that classes won't be able to enter to the zone # example: 93,85,12 Classes = 92 \ No newline at end of file +++ data/xml/zones/MultiFunctionZone.xml <?xml version="1.0" encoding="UTF-8"?> <list> <zone type="MultiFunctionZone" shape="Cuboid" minZ="-3752" maxZ="-352"><!-- gludin_pvp --> <node X="-88411" Y="141732" /> <node X="-87429" Y="142708" /> <spawn X="-86979" Y="142402" Z="-3643" /> </zone> </list> CREDITS: ^Wyatt
  8. Hello guys, here I leave a video library with many tutorials related to the development of Lineage 2 servers. Some have subtitles in English and Portuguese, others do not. But you can mute the video and follow the steps. Consider this like a video library. I just wanted to let you know that in my channel you will find the most up-to-date tutorials. Channel: https://www.youtube.com/user/reynolsreynaldo/videos
  9. Hello guys! I notice in there's days, not many good l2j servers left (seems lots of them <3 more do vipe instead fix bugs), please share your l2j server list, which are worth attention ! :) I try couple server I really enjoyed L2COTP , Warland, L2Two, theres catch my eye but seems Warland is too easy and benefit players too much but Online is impresive for l2j server , L2Two is more Pay To Win but not good as Warland, and L2COTP well done with good economic balance and is not pay to win, but Online is low coz seems they new in market :) Can you guys share your favorite server list coz all theres Hopzone and Topzones only show theres server who pay $$$, so its really hard to find good well balanced server :) Thanks Folks :)!
  10. View File PN Gen Simple program for generate pathnode files from L2J geodata. Initially, the program was distributed free of charge, but after it was sold (I could be wrong). Author: Akumu VirusTotal link. Submitter Rootware Submitted 06/12/2019 Category Tools  
  11. Rootware

    Tool PN Gen

    Version 1.6b

    19 downloads

    Simple program for generate pathnode files from L2J geodata. Initially, the program was distributed free of charge, but after it was sold (I could be wrong). Author: Akumu VirusTotal link.

    Free

  12. Hello / good morning, I developing Seven Signs update of Classics client and I want to implement Spirit Info and Manager. Someone who knows how to get packets for these features? or any help to get it or tip? Can I parse all packets from installed client? :) Thank you.
  13. Hello, we are 2 friends looking for a L2J H5 dev to make a full project. Contact me for more info.
  14. Hello mates, Since all my previous posts was for H5 Chronicle so i think i’ll start post some content for Interlude Chronicle, so here is my first Interlude guide, but after all Java is Java, no matter Interlude, H5, … etc all are just Java files The Server Pack i’m gonna use in this guide will be ( aCis Rev.360 [Free Version] ), and for the IDE will use NetBeans, of course you can use Eclipse it’s just personal preferences. ---------------------------------------------------------------------------------- Requirements : – I expect that you have aCis Source Pack Installed on your computer or server – We won’t go through the process of installing and starting server, since there are a lot of good guides about this here. – You need a Java IDE (Eclipse, Netbeans, IntelliJ or any else) i’ll use NetBeans but you can use Any. – Stay Relaxed, No Stress, Coding is just Entertaining. ---------------------------------------------------------------------------------- – How things happen in Game ? Well In Lineage 2 Every thing has two sides (Client and Server), whatever you do in Client (Game) it will automatically send a request to server, then server analyze this request, start processing it and response with a response . That data the fly between Client and Server called Packets , This Packets can be a Request Packet or Response Packet, and each Packet has special code or identifier, if you click here you will find the main Packets for Interlude. For Example : You Click on Community or ALT+B, your game client will send a packet to server called RequestShowboardwith code 57, this is sent from Client to Server, so it’s ClientPacket. So if we want to do any special thing when Player try to show the community board we need to find this packet code which since it’s a ClientPacket then it will be in that package : net.sf.l2j.gameserver.network.clientpackets When Server Analyze that request and see things like if it’s enabled … etc it will reply with another Packet which is ShowBoard with code 6E (if board enabled ofc), and this is sent from Server to Client, so it’s a ServerPacket, and since it’s a ServerPacket so we can find it in that package : net.sf.l2j.gameserver.network.serverpackets , and we can expect that this class or java file will be responsible for what will be shown on the board. By now we know how to find where magic happens, but what about more power ? ---------------------------------------------------------------------------------- What is Bypass and how it works ? Whenever you click on a button or a link for an NPC or even in Community Board this buttons and links meant to do something when a player click on it, but how it happens ? and how server knows which button player clicked and what should happen after that ? Well if you try to show the code of any l2j html file that contain a link or a button, for example i’ll view source code of aCis main buffer by @Tryskell, which located in gamserver/data/html/mods/buffer/50008.htm <html><body> <center><img src="L2UI_CH3.herotower_deco" width=256 height=32 /></center><br> Hello stranger!<br> I'm Tryskell. Yup, you're right, I created an avatar of myself and decided to share some of my powerful buffs in order to improve your pew-pew-bum-zap abilities.<br> What can I do for you ? Do you want to hear <font color="LEVEL"><a action="bypass -h npc_%objectId%_Chat 9">my story</a></font> ?<br> <center> <a action="bypass -h npc_%objectId%_support player">Magic support</a><br> <a action="bypass -h npc_%objectId%_manageschemes">Manage my schemes</a><br1> <a action="bypass -h npc_%objectId%_editschemes none none">Edit my schemes</a><br> <a action="bypass -h npc_%objectId%_heal">Heal me and my pet</a><br1> <a action="bypass -h npc_%objectId%_cleanup">Cleanup all effects on me and my pet</a> </center> </body></html> Here you can see the attribute action contains something like : let’s split this action in parts and see what every part do : bypass : tells your client to send a packet RequestBypassToServer with OP Code 0x21 (0x identify a hex decimal > a numeric base 16 value ) -h : tells your client to hide the window on click event npc_%objectId%_Chat 9 : is the command that will be bypassed to server So if we wanna make a bypass to server we just wanna set the action of the link (<a>) or button to something like : “bypass -h command” or just “bypass command” But actually we still dunno what commands already available or if we can create a new custom ….. ----------------------------------------------------------- Track the Bypass down : I can just give you a list of possible bypass commands but i hate limitations, so i’ll give you a quick guide about how to find them and learn about what they do all on your own and then will give you some examples, also this will help you work with almost any pack or chronicle, so let’s see how it works. First packets sent to server will be sent to a class called L2GamePacketHandler.java, which in aCis it’s located at : net.sf.l2j.gameserver.network , and then this class will redirect that packet to the proper Handler or class depending on the received packet OPCode, and since we know that RequestBypassToServer have the OPCode of 0x21 so what about search about this in that Java File : As we can see it call a class called RequestBypassToServer, if we click on this class name : For Netbeans : Right Click > Navigate > Declaration (or CTRL+B) For Eclipse : Right Click > Go To > Declaration It will open that file we will find a part of the code like this (i removed some part just to be easier to read) : if (_command.startsWith("admin_")) { .... } else if (_command.startsWith("player_help ")) { .... } else if (_command.startsWith("npc_")) { .... } else if (_command.startsWith("manor_menu_select?")) { .... } else if (_command.startsWith("bbs_") || _command.startsWith("_bbs") || _command.startsWith("_friend") || _command.startsWith("_mail") || _command.startsWith("_block")) { .... } else if (_command.startsWith("Quest ")) { .... } else if (_command.startsWith("_match")) { .... } else if (_command.startsWith("_diary")) { .... } else if (_command.startsWith("arenachange")) { .... } So as we can see the current supported bypasses are commands that started with : Of course you can add another main custom command by adding another “else if” statement or even create a bypass handler or replace this one with an extended one. Why we don’t go further and inspect how this npc_ thing work ….. here the code of that section : else if (_command.startsWith("npc_")) { if (!activeChar.validateBypass(_command)) return; int endOfId = _command.indexOf('_', 5); String id; if (endOfId > 0) id = _command.substring(4, endOfId); else id = _command.substring(4); try { final L2Object object = L2World.getInstance().getObject(Integer.parseInt(id)); if (object != null && object instanceof L2Npc && endOfId > 0 && ((L2Npc) object).canInteract(activeChar)) ((L2Npc) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1)); activeChar.sendPacket(ActionFailed.STATIC_PACKET); } catch (NumberFormatException nfe) { } } The first part can be lil confusing if you’re not very familiar with java, so lemme explain it to you . That part looking for a number that comes after npc_ that followed by an “_” for example : npc_123456 , and before we saw that command npc_%objectId%_Chat 9 , so here we expect that %objectId% is a number and yes it is since server will automatically replace %objectId% with a unique numeric identifier for the NPC you’re talking to, and it’s not the id you use to spawn it, since you may spawn that npc multiple times so server needs to identify each one of them. So for now we know that command is used like this : Later in this code we will find that part : final L2Object object = L2World.getInstance().getObject(Integer.parseInt(id)); if (object != null && object instanceof L2Npc && endOfId > 0 && ((L2Npc) object).canInteract(activeChar)) ((L2Npc) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1)); activeChar.sendPacket(ActionFailed.STATIC_PACKET); Also let me explain this for you, this code will search the L2World for something with that unique identifier and if found it will use it as L2Npc object and call the method onBypassFeedback to process the command in our case the command will be Chat 9. So Lets Go to declaration of that L2Npc class (as we learned how before), and lets see what this onBypassFeedback do we will find something like this : if (command.equalsIgnoreCase("TerritoryStatus")) { .... } else if (command.startsWith("Quest")) { .... } else if (command.startsWith("Chat")) { .... } else if (command.startsWith("Link")) { .... } else if (command.startsWith("Loto")) { .... } else if (command.startsWith("CPRecovery")) { .... } else if (command.startsWith("SupportMagic")) { .... } else if (command.startsWith("multisell")) { .... } else if (command.startsWith("exc_multisell")) { .... } else if (command.startsWith("Augment")) { .... } else if (command.startsWith("EnterRift")) { .... } else if (command.startsWith("ChangeRiftRoom")) { .... } else if (command.startsWith("ExitRift")) { .... } As we can see we can now expect that we can use npc_ commands as follow : But in the previous example there were number 9 in the end as npc_%objectId%_Chat 9, what this would mean ? well here is the code of Chat command : else if (command.startsWith("Chat")) { int val = 0; try { val = Integer.parseInt(command.substring(5)); } catch (IndexOutOfBoundsException ioobe) {} catch (NumberFormatException nfe) {} showChatWindow(player, val); } As we can see here it will look for that number (9 in our case) and pass it to a method called showChatWindow , which will look for an htm file with same npc id ended with -9 for example this npc id is 50008 so it will looks for 50008-9.htm , and yes it’s right : Now we know how to track things down but one thing left, which is what if you found an bypass in an npc which you cannot find in L2Npc Class, well some npc don’t directly based on L2Npc type but sometimes it’s based on something else that based on L2Npc, for example this NPC in our example has a bypass like : this “heal” command not exist but if we go to our npcs folder in path of gameserver/data/xml/npcs , and we opened the file 50000-50099.xml since our npc id is 50008 and look into that npc definition you will find this : As you can see it’s based on L2Buffer, not L2Npc directly, so we can expect that this class called L2Buffer will contain a method called onBypassFeedback and it will contain an implementation for this “heal” command, but wait a second … you’ll never find a class called L2Buffer, simply because in aCis Packs L2Buffer will redirect to a class called L2BufferInstance and L2BlaBla will redirect to L2BlaBlaInstance, it’s just how aCis simplify things, so just keep that in mind we looking for L2BufferInstance … If we go to that class which is located in the package of : net.sf.l2j.gameserver.model.actor.instance (btw this package contains a lot of interesting stuff) we will find that part inside the onBypassFeedback method : Yay , it’s here, so if we want to use this command on another npc we have 3 options : – Add this code to the main RequestBypassToServer – Set the NPC type to L2Buffer – Create a new NPC instance and implement this on it Or we can even add it to community board :D ------------------------------------------------------------------- Do you learned something from this guide ? Personally i don’t learn any thing without getting my hands into it in real action, so why not create something real, like a multi function npc and as a bonus we will create a new NPC type as well, also we can work a bit with Community Board . . . let’s go friends ------------------------------------------------------------------- 1.1 : Create a new NPC Type : Let’s Create a new Class in the package net.sf.l2j.gameserver.model.actor.instance, and i’ll call it L2MultiFunctionInstance (Name it whatever u want but don’t forget suffix it with Instance) , Just right click on the package and New > Java Class : Now i’ll make it extends the L2NpcInstance or you can use L2Npc class only, but L2NpcInstance has cool implementation so i’ll go for it, and now Server will know it’s an NPC, but you may want for example extends L2BufferInstance to take benefit of Buffer commands or anything else that considered as NPC, but i’ll go pure in this guide , and to simplify thing and to not go off topic i’ll create a simple class code for you which you can use it and i’ll highlight the important parts : //TODO: Add your Custom Bypasses Here At this place we can add our custom bypass commands “data/html/custom/multifunction/” this is where our .htm files will be located for npcs with this type ------------------------------------------------------------- 1.1 Create the Actual NPC So First let’s create our NPC, i’ll add it Below Tryskell NPC so it will be in file 50000-50099.xml : <npc id="50009" idTemplate="31324" name="Relina" title="Multifunction NPC"> <set name="level" val="70"/> <set name="radius" val="8"/> <set name="height" val="23"/> <set name="rHand" val="316"/> <set name="lHand" val="0"/> <set name="type" val="L2MultiFunction"/> <set name="exp" val="0"/> <set name="sp" val="0"/> <set name="hp" val="2444.46819"/> <set name="mp" val="1345.8"/> <set name="hpRegen" val="7.5"/> <set name="mpRegen" val="2.7"/> <set name="pAtk" val="688.86373"/> <set name="pDef" val="295.91597"/> <set name="mAtk" val="470.40463"/> <set name="mDef" val="216.53847"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="30"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="50"/> <set name="runSpd" val="120"/> <set name="dropHerbGroup" val="0"/> <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/> <skills> <skill id="4045" level="1"/> <skill id="4416" level="16"/> </skills> </npc> Note that it has id of 50009 and type of L2MultiFunction (without Instance) ------------------------------------------------------------ 1.2 Create the html files Now the html part, we gonna create a folder called custom inside html folder and inside it will create multifunction folder which it’s where we gonna have our html files, First we need the main htm which will be on our created folder with name 50009.htm : <html> <body> <br> <center> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> <font color="D5C003">Hello Player</font><br> <font color="DDDEC0">I'm the Multi Function NPC with Awesome Customs</font><br> <button value="Open Another Chat" action="bypass -h npc_%objectId%_Chat 1" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Show a Multi Sell" action="bypass -h npc_%objectId%_multisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Multisell [Inv.Maintain]" action="bypass -h npc_%objectId%_exc_multisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Community Board" action="bypass _bbshome" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Acumen Buff - No Close" action="bypass npc_%objectId%_giveAcumen" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Teleport To Giran" action="bypass -h npc_%objectId%_gotogiran" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Augment" action="bypass -h npc_%objectId%_Augment 1" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Warehouse" action="bypass npc_%objectId%_warehouse_deposit" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> </center> </body> </html> Thanks to @Sinister Smile for the buttons, and to make it work, you need to have this file > Download Also we will need another htm file for testing which will be named 50009-1.htm : <html> <body> <br> <center> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /><br > <font color="D5C003">Hello Once Again</font><br> <font color="DDDEC0">This is another Chat of me</font><br> <button value="Back to Main" action="bypass -h npc_%objectId%_Chat 0" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> </center> </body> </html> ----------------------------------------------------------------- 1.3 Create the Multisell File I’ll Create a multisell file with name 50009.xml in multisell folder : <?xml version='1.0' encoding='utf-8'?> <list maintainEnchantment="true"> <item> <production id="6608" count="1"/> <ingredient id="6579" count="1" /> </item> <item> <production id="5643" count="1" /> <ingredient id="151" count="1"/> </item> </list> --------------------------------------------------------------- 1.4 Start Server (If not Yet) and let’s Test Each one Open Another Chat : Action : bypass -h npc_%objectId%_Chat 1 This will Open the htm file called 50009-1.htm Show Multi Sell : Action : bypass -h npc_%objectId%_multisell 50009 This will Show a Multisell with id of 50009, and will show all items even items player can’t buy Multi Sell [Inv.Maintain] : Action : bypass -h npc_%objectId%_exc_multisell 50009 This will Show a Multisell with id of 50009, and will show only items player can buy (have the required items for it) Community Board : Action : bypass _bbshome Will Show Community Board if enabled, you can also use : Augment : Action : bypass -h npc_%objectId%_Augment 1 Will Show Augment Panel, also you can use bypass -h npc_%objectId%_Augment 2, to show Remove Augment Panel ----------------------------------------------------------- 1.5 Implement Missed Bypasses : So Now we need to add our custom bypasses to the NPC Type which are : giveAcument, gotogiran, warehouse_deposit Let’s get back to Java and inside onBypassFeedback in the Class we just created we will add this : if(command.equalsIgnoreCase("giveAcumen")) { SkillTable.getInstance().getInfo(1085, SkillTable.getInstance().getMaxLevel(1085)).getEffects(player, player); } else if(command.equalsIgnoreCase("gotogiran")) { player.teleToLocation(82698,148638,-3473,0); } else if(command.equalsIgnoreCase("warehouse_deposit")) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WarehouseDepositList(player, WarehouseDepositList.PRIVATE)); } else { super.onBypassFeedback(player, command); } ------------------------------------------------------------------ 1.6 Let’s Test this When we test this everything will be find except one thing, which is Warehouse, it will show deposit window, but when you confirm, it will not move items to warehouse, since in client packet of SendWareHouseDepositList it will check if the last npc was a Warehouse and our npc is not warehouse : And to Fix this it simple, just we can add another method to our custom NPC class which will make it pretend as being warehouse : @Override public boolean isWarehouse() { return true; } So we end up with this code : package net.sf.l2j.gameserver.model.actor.instance; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.WarehouseDepositList; /** * Multi Function NPC Instance * * Made for MxC Bypasses Guide * * @author Sam Dev */ public class L2MultiFunctionInstance extends L2NpcInstance { public L2MultiFunctionInstance(int objectId, NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { if(command.equalsIgnoreCase("giveAcumen")) { SkillTable.getInstance().getInfo(1085, SkillTable.getInstance().getMaxLevel(1085)).getEffects(player, player); } else if(command.equalsIgnoreCase("gotogiran")) { player.teleToLocation(82698,148638,-3473,0); } else if(command.equalsIgnoreCase("warehouse_deposit")) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WarehouseDepositList(player, WarehouseDepositList.PRIVATE)); } else { super.onBypassFeedback(player, command); } } @Override public boolean isWarehouse() { return true; } @Override public String getHtmlPath(int npcId, int val) { String filename = "data/html/custom/multifunction/" + npcId + ((val == 0) ? "" : "-"+ val ) + ".htm"; return (HtmCache.getInstance().isLoadable(filename)) ? filename : "data/html/npcdefault.htm"; } } By Now we have our Multi Function NPC, But Guess what .... we have a Bonus in this Guide . ----------------------------------------------------------------- 2.0 The Bonus : How to Open a Multisell in Community Board Well i’m sure it’s easy for you now, all we need to do is to add another command to CommunityBoard since we can’t use npc_%objectId% stuff here ----------------------------------------------------------------- 2.1 Add the Command to the CommunityBoard.java You can find it in the package : net.sf.l2j.gameserver.communitybbs , Then we gonna add this code after the _bbshome code else if(command.startsWith("_bbsmultisell")) {MultisellData.getInstance().separateAndSend(command.substring(13).trim(), activeChar, null, false);} To look like : ----------------------------------------------------- 2.1 Add the Mutlisell Button to the Community Board Home Go to : data/html/CommunityBoard/top/Index.htm, and add this code any where you like it to appear : <br> <center> <button value="Multisell In Community" action="bypass _bbsmultisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> </center> ------------------------------------------------------- 2.2 Now Build your Server Core and Restart Server to Test Now Guess What ?? it’s Working and we have Multisell in Community Board At the End i hope you learned something new, and i wish it’s useful to anyone Thanks and Regards
  15. Hey guys, i just made server by this tutorial and i have problem, i can create account ( i see it in my db ) but once i click on arrow to choose race it gets stuck and program is not responding.... see here : http://i65.tinypic.com/2r74i7r.png do you know why ? i am newb in l2j and stuff like that
  16. This little code will shows the real diff range of async between server and client position. By default, this code was maked for aCis but can be use for any L2J forks. ### Eclipse Workspace Patch 1.0 #P aCis_gameserver Index: java/net/sf/l2j/gameserver/network/clientpackets/MoveBackwardToLocation.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/MoveBackwardToLocation.java (revision 1133) +++ java/net/sf/l2j/gameserver/network/clientpackets/MoveBackwardToLocation.java (working copy) @@ -2,6 +2,8 @@ import java.nio.BufferUnderflowException; +import net.sf.l2j.commons.math.MathUtil; + import net.sf.l2j.Config; import net.sf.l2j.gameserver.model.actor.ai.CtrlIntention; import net.sf.l2j.gameserver.model.actor.instance.Player; @@ -95,6 +97,18 @@ activeChar.sendPacket(ActionFailed.STATIC_PACKET); return; } + + // Check async range. + dx = _originX - activeChar.getX(); + dy = _originY - activeChar.getY(); + double dz1 = _originZ - activeChar.getZ(); + float diff = (float) Math.sqrt(dx * dx + dy * dy + dz1 * dz1); + int heading = MathUtil.calculateHeadingFrom(_originX, _originY, activeChar.getX(), activeChar.getY()); + if (Math.abs(activeChar.getHeading() - heading) > 16000) + diff = diff * -1; + + activeChar.sendMessage("Async distance: " + diff); + activeChar.getAI().setIntention(CtrlIntention.MOVE_TO, new Location(_targetX, _targetY, _targetZ)); } } \ No newline at end of file Index: java/net/sf/l2j/gameserver/network/clientpackets/ValidatePosition.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/ValidatePosition.java (revision 1133) +++ java/net/sf/l2j/gameserver/network/clientpackets/ValidatePosition.java (working copy) @@ -1,5 +1,7 @@ package net.sf.l2j.gameserver.network.clientpackets; +import net.sf.l2j.commons.math.MathUtil; + import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.model.zone.ZoneId; import net.sf.l2j.gameserver.network.serverpackets.GetOnVehicle; @@ -88,5 +90,17 @@ player.setClientY(_y); player.setClientZ(_z); player.setClientHeading(_heading); // No real need to validate heading. + + // Check async range. + dx = _x - player.getX(); + dy = _y - player.getY(); + dz = _z - player.getZ(); + float diff = (float) Math.sqrt(dx * dx + dy * dy + dz * dz); + + int heading = MathUtil.calculateHeadingFrom(_x, _y, player.getX(), player.getY()); + if (Math.abs(player.getHeading() - heading) > 16000) + diff = diff * -1; + + player.sendMessage("[4] Async distance: " + diff); } } \ No newline at end of file Have fun, so!
  17. simplest custom buffer - easy in use, intuitive window. magical support has been divided onto five independent groups where users can buffup themselves manually or automatically via two pre-definied sets (mage, fighter). also there's an additional option to bestow heroic valor effect in exchange for any item (in this case: gold bar). i recommend to combine this feature with vote reward system :) preview: http://s9.postimg.org/czbrb670v/buffer.gif create new instance: java/gameserver/model/actor/instance/L2BufferInstance.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 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.util.StringTokenizer; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; /** * * @author Caparso */ public final class L2BufferInstance extends L2NpcInstance { int fighterbuffs [] = {1397,1087,1044,1243,1304,1259,1204,1068,1388,1040,1036,1035,1048,1045,1077,1242,1086,1043,1240,1268,1032,1033,1191,1189,1182,1354,1353,1352,1392,1393,4699,4700,1416,1363,277,307,309,311,310,272,271,275,274,264,269,265,270,267,268,266,364,349,308,306,304}; int magebuffs [] = {1397,1087,1044,1243,1304,1259,1204,1040,1389,1036,1035,1048,1045,1085,1078,1303,1059,1032,1033,1191,1189,1182,1353,1354,1352,1392,1393,4703,1416,1363,273,276,365,307,309,311,264,265,270,267,268,266,363,349,308,306,304}; int voterewards [] = {1374}; public L2BufferInstance(int objectId, NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); int buffid = 0; int bufflevel = 1; String nextWindow = null; if (st.countTokens() == 3) { buffid = Integer.valueOf(st.nextToken()); bufflevel = Integer.valueOf(st.nextToken()); nextWindow = st.nextToken(); } else if (st.countTokens() == 1) { buffid = Integer.valueOf(st.nextToken()); } if (actualCommand.equalsIgnoreCase("getbuff")) { if (buffid != 0) { MagicSkillUse mgc = new MagicSkillUse(this, player, buffid, bufflevel, -1, 0); SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player); showMessageWindow(player); player.broadcastPacket(mgc); showChatWindow(player, nextWindow); } } else if (actualCommand.equalsIgnoreCase("fighterset")) { for (int id: fighterbuffs) { SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)).getEffects(this, player); } showChatWindow(player); } else if (actualCommand.equalsIgnoreCase("mageset")) { for (int id: magebuffs) { SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)).getEffects(this, player); } showChatWindow(player); } else if (actualCommand.equalsIgnoreCase("rewards")) { if (player.destroyItemByItemId("voterewards",10600,1, player.getCurrentFolkNPC(), true)) { for (int id: voterewards) { SkillTable.getInstance().getInfo(id, SkillTable.getInstance().getMaxLevel(id)).getEffects(this, player); } } else { player.sendMessage("You don't have heroic's certifications to exchange."); } showChatWindow(player); } else if (actualCommand.equalsIgnoreCase("restore")) { player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp()); player.setCurrentCp(player.getMaxCp()); showMessageWindow(player); } else if (actualCommand.equalsIgnoreCase("cancel")) { player.stopAllEffects(); showMessageWindow(player); } else super.onBypassFeedback(player, command); } @Override public void onAction(L2PcInstance player) { if (this != player.getTarget()) { player.setTarget(this); player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel())); player.sendPacket(new ValidateLocation(this)); } else if (isInsideRadius(player, INTERACTION_DISTANCE, false, false)) { SocialAction sa = new SocialAction(this, Rnd.get(8)); broadcastPacket(sa); player.setCurrentFolkNPC(this); showMessageWindow(player); player.sendPacket(ActionFailed.STATIC_PACKET); } else { player.getAI().setIntention(CtrlIntention.INTERACT, this); player.sendPacket(ActionFailed.STATIC_PACKET); } } private void showMessageWindow(L2PcInstance player) { String filename = "data/html/buffer/" + getNpcId() + ".htm"; filename = getHtmlPath(getNpcId(), 0); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(filename); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%npcname%", getName()); player.sendPacket(html); } @Override public String getHtmlPath(int npcId, int val) { String pom = ""; if (val == 0) pom = "" + npcId; else pom = npcId + "-" + val; return "data/html/buffer/" + pom + ".htm"; } }create new npc: <npc id="9001" idTemplate="31081" name="BUFFER" title="L2EUPHORIA.COM"> <set name="level" val="70"/> <set name="radius" val="8"/> <set name="height" val="30.5"/> <set name="rHand" val="0"/> <set name="lHand" val="5802"/> <set name="type" val="L2Buffer"/> <set name="exp" val="0"/> <set name="sp" val="0"/> <set name="hp" val="2444.46819"/> <set name="mp" val="1345.8"/> <set name="hpRegen" val="7.5"/> <set name="mpRegen" val="2.7"/> <set name="pAtk" val="688.86373"/> <set name="pDef" val="295.91597"/> <set name="mAtk" val="470.40463"/> <set name="mDef" val="216.53847"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="30"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="50"/> <set name="runSpd" val="120"/> <set name="dropHerbGroup" val="0"/> <set name="attackRange" val="40"/> <ai type="default" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/> <skills> <skill id="4045" level="1"/> <skill id="4416" level="14"/> </skills> </npc> don't forget to paste this folder within htmls in the right section (gameserver/data/html), then spawn 9001.
  18. Hi MXC Community. I'm just going to leave those files here because I saw some people selling this files as their "Own Work". So lets take a look what this pack have: Those screenshots is just part of the MODs of this pack have, also this pack was used for L2Ava project in 2015. So here are the links: Enjoy it..!!! Cheers
  19. Hello, i need help resolving one problem that i´m encountered. I´m using l2mythras share from here for a long time. We were playing in few people via hamachi connection. Last week my hamachi ip got changed after that noone could log in. I swap new ip4 adress with the old one, everywhere but only local pc where server is located can log in. I tried more things, but so far nothing work so i hope that someone from you guys will help me with it what i overlook. Server prop : # =============================== # Network Configuration Server # # =============================== # IP which Bind Game server, * - all possible GameserverHostname = 25.63.xx.x GameserverPort = 7777 # This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname ExternalHostname = 25.63.xx.x # This is transmitted to the client from the same network, so it has to be a local IP or resolvable host name InternalHostname = 25.63.xx.x # AdvIpSystem Make more GameServerIDs. Every Ip should be Protected by a DDoS Guard. # Your Server will have Success with this system Online. AdvIPSystem = False # Address \ port LS LoginPort = 9014 LoginHost = 127.0.0.1 LoginUseCrypt = true # How to request ID of LS RequestServerID = 4 # Permission to take a different id, if requested busy AcceptAlternateID = False Login server prop: # ================================================= # Settings authorization server # ================================================= # Host and port for client connections LoginserverHostname = 25.xx.xx.x LoginserverPort = 2106 # Host and port for game servers LoginHost = 127.0.0.1 LoginPort = 9014 # Accept new game server in a free slot AcceptNewGameServer = True Also i edited l2.ini and put here new hamaxi ip. Server is loading without any errors and i can connect only via pc where the server is Thanks for every advice and have a nice day guys
  20. Hello guys! I want to share with you this Frozen pack and Source so i hope in the future no one will spend money for packs like this! I don`t know if its already shared so i apologize for same shares! Also some gevorakos backdoors have been removed.I don`t know if all backdoors have been removed but at least some of them. The balance need a little work but pack has a lot of things. Download links: http://www.mediafire.com/file/1xygdx843069edy/L2Frozen+Pack.rar http://www.mediafire.com/file/hkpgimjtccrbdjq/L2Frozen+Source.rar http://www.mediafire.com/file/1xt9j87jgh2v7t3/161229234819.rar <-- backup http://www.mediafire.com/file/jkciu6jy6c9ww4h/Patch++v1.0.rar
  21. I come to make a denounce to all, do NOT USE... or STOP use topl2jbrasil. I've been analyzing some of the top sites for a few months, and I've found concrete evidence that topl2jbrasil is a corrupt site and no have suficient traffic. The first positions are being sold, some sites even offline are obtaining automatic votes by the own system of topl2jbrasil. We have several evidence, including the denunciation within their forum, which was then erased by the corrupt administrator who could not justify his actions. How it works? The first 8 positions are already prepared for certain servers, the automatic voting system activates as soon as someone surpasses one of these sites, it is impossible to surpass them. The corrupt Administration! When I made the first complaint, after having surveyed the evidence and analyzed the site for months in order not to make a slanderous denounce. The first 8 positions had more than 116k of votes for each of those servers involved. The administrator decided to reduce these votes to 16k, not to draw the attention of other users who might come to question this. Therefore, my denounce was excluded. After the denounces, no server was banned or had their votes removed. This is further evidence that administration is involved, selling positions. And the servers that did not buy positions and use votebot, also did not have the votes removed, because they generate profit every month buying banners. Warning! If you register in the top L2jBrasil, you will be giving players to mafia servers, totally corrupt and you will not receive any traffic.
  22. Hello Cheaters, I wanna introduce to you my new Project which is a Desktop Application based on .NET named L2Ninja. Table of Contents : – What is L2Ninja – System Requirements – Objectives – The Plan & Main Features – Feedback and Suggestions – Current State – Future Plans – Reported Bugs – ScreenShots – How to Help ? – Releasing Information - Update Log What is L2Ninja ? L2Ninja is a desktop application based on .NET core that aim to help L2 Server and Client Developers to be able to work with L2 Files and do their routine task easily with the less bugs possible. System Requirements : – Operating System : It’s mainly built for Windows OS, maybe in feature will consider working for a Linux version, have no decision about this yet. Application been developed and pretested on Windows 10 64 bit-based Processor, but should be working fine with Windows 8 and 7. will confirm that when testers prepare their report. – .NET Framework : This Application based on .NET core which means you need the proper .NET version to be installed in order to run it. Required .NET version for this to run is .NET Framework 4.5 . Also there will be two Installer Packages for this Software one of them will be shipped with proper .NET Offline Installer, and the other one without to reduce installer Disk Size. – Disk Space : For the current State and version the application needs approximately 50 MegaBytes as Diskspace Objectives and Aims : First i started this project a private little tool that help me to work with Lineage Development to reduce time and efforts, also i was using a lot of well known tools which was annoying process routine to use about 2 or 3 programs to do a simple task, so i wanted to create a tool that combine what’s needed to do Lineage stuff. It had a very non-organized interface and a mess everywhere but who cares it was just a private thing to make job done no more, after that i decided to make more researches on Lineage communities to see what applications they use and what known bugs are out there to improve my little application … and after some fixes i decided to improve it more to be usable but someone else so i started a Discussion to ask people in MxC community, about what they think about it and how to make it useful to others. By the community members feedback i got new suggestions, ideas and problems that L2 Developers face when working with there daily tasks. At that point i had new objectives : – Create an organized and clean interface – Best User Experience …..by working on Accessibility and Easy to Use concepts to be usable by anyone without very extensive experience requirements – Provide many tools in one application so you can give your Alt-tab a lil mercy – As most Coders/Developers spend a lot of time in front of their screens so they need an Eyes relaxing mechanism, that why i work on multi Interface Colors Schemes so applications users can adjust it to fit better in their working environment lightning – Reliability ….. i got reported by a friend on MxC community that some L2 Tools out there sometimes deletes and corrupt files by mistake, so i try to work hard on reliability and backups mechanism, and the main concept here is to make that application never use your files directly or replace it until it’s verified as a valid modification process. – Listening and Listening then Listening …. i believe that something made for the community should be made by the community it self, that’s why i insist to ask people about their opinions and listen for their problems and suggestions . – Responsibility … wont leave this project and stop updating at least until i can rely on another .NET developer to take the flag so i can take a break then i back again, until then i’ll be responsible for the updates and fixing bugs ( i don’t pretend to be a good coder and will never do but i’ll try my best) – Eyes Catches First … i’ll try to achieve a beautiful interface to make it at least non-disturbing looking if not catchy The Plan & Main Features : – UTX Files : Supporting the main tasks for UTX Files such as decrypting, encrypting, searching inside the file, view items, export a single/multi/all to readable and editable files – System Files (dat, ini, int) : The ability to work with System files and edit them in a more readable way by listing it’s contents into a Grid for more readability, save them back or export, as well as searching, replacing and validation, also providing a new feature which is Applying patch so you can share modifications with others to import it into there system – Splash Tool : Capability of working with L2 Splash Image files with features as encrypt, decrypt, replace original with new one and viewing an encrypted file with respect of Transparency mechanism in Lineage so it will show it after applying the transparency mechanism so you wont see that green and pinky colors. Also the capability of replacing original BMP Splashes with almost any image format and support transparency so the application will process your transparent pixels and apply the original Lineage Transparency Keys and definitions – Server XML Files : Editing XML Server Files visually without caring to open/closing tags, attributes … etc, which can cause big problems for a simple mistake if done by hand. Well we all know that XML Files structure are different so i’ll implement an XSD Validation to detect the XSD that XML uses and apply it to it . But older chronicles pack doesn’t support XSD, in this case i’ll make it skip XSD Validation and just scan the file to detect scheme, but i have plans to add custom XSDs to the application for certain packs like aCis, since it has fans so i can’t skip fans of aCis so application we have a special support for aCis server files – Config Editor : Work with .properties file, i know it’s plain easy to edit files, but why not just having all in one with some extra features and auto complete organized editor – HTML Designer : Not a regular HTML Designer but a special WYSIWYG HTML designer and Editor made for Lineage, how many time you had to start the server and log just to see how the html button will look like or if some color fit or not, it’s just pain also most of us got Critical Errors just for an HTML mistake. – Database Tools Just a little tool that helps you with backups, monitoring and custom modifications such as adding agumentations, change access levels, change passwords, scan for dual boxes and much more … but how can i know the database structure ? Well i’ll implement a database scheme definitions for most known packs (at least known to me) so you can you can select the pack you work with and application will load proper definitions – Icon Finder A tool that help you search and find the icon you want and it will be working in three ways : First : Search by src .. ex. : Icon.blablabla and this will show you the icon preview Second : looking into a list of icons and get the src location of what you selected, based on extensive search into a file you select or default files set by application Third : Search by Item ID, ex. : 57 > will show Adena Icon Also this tool will be integrated into HTML Designer, so you add icons to HTML document on the fly without even know the src for it. – Color Tools Here you will get a color picker so no need to open Photoshop just for picking a color, also get the valid color codes Lineage system files or HTML files – Report Tool So if you got a bug or problem or something you can send me a report without leaving the application and go to forums or emails … etc – Snippets Desktops are screaming nowadays .. everytime we found a good snippet, link, guide … etc we create a new text file to desktop and save it to it, by time ending up with many text files, so with this tool you can save your snippets, todo lists, links in organized categories that’s created by you. – More features coming to futures plans or maybe to current plan if requested by the community Feedback and Suggestions : – Some editors deletes file even when doing the process right Credits : VanGon Status : Fixed – Try to improve it as much as you can Credits : baksteen Status : I’m on it – Being able to import files and create ready to use utx Credits : SweeTs Status : It Supports UTX files operation but working on more operations – You could add drag’n’drop as a optional way to load files Credits : SweeTs Status : Done – add a small ‘preview’ window for the UTX files. So, you can see what icon it is, if you want to see it bigger/detailed, then you click ‘view selected’ button. Credits : SweeTs Status : Done – Improving DDF Files Credits : Sdw Status : Fixed Some as npcgrp.ddf, itemname-e.ddf and need testing to detect other problems to fix - Thing of creating your own project's website, and gather all the traffic from your users there (reports,requests,download etc). Credits : @`NeverMore Status : Published at http://l2ninja.samdev.org - have a script to automatically encrypt+overwrite existing in directory Credit : @big man bill Status : In Progress Current State : – Metro Style Interface – Multi Themes adjustable by use via Application Settings Panel – Encrypt a UTX file with one-click – Decrypt a UTX file with one-click – UTX Browser : Browse UTX Encrypted Files, look inside contents with a grid sortable by type and name, search inside it, export selected textures, export all at once, view selected texture or content, (Adding a live preview without a click) – System File Editor : Open Lineage system Files, Show Contents to a sortable grid, Modify, Search, Replace, Patch, Export to Text File, Save them after validation to original file or another location based on user decision – File Editor Chronicles Support : it support from C3 to GrandCursade – Modified DDF files for the System File Editor to reduce errors and bugs – Splash Tool : Open an Encrypted Lineage Image such as Splash screen and live preview it – Splash Tool Automatic Encryption or Decryption State, so the application will recognize if the loaded image is encrypted or not – Decrypt Encrypted Lineage Image – Convert Encrypted or Decrypted Lineage Images to another Formats – Replace Encrypted Original Lineage Image with none Encrypted Image – Transparent Preserve for L2 Images so you see a transparent image into the preview without green and pink extra colors – Ability to replace original Lineage Bmp Image with non-BMP files with automatic Transparency translation for PNG files to Original Lineage Transparency Mechanism – Drag and Drop Editor : you can now drag and drop a lineage file to the application and it will load the proper tool for it – Shortcuts for most Application Functions - UTX Browser Now have a live preview support which means when you click on a texture from the grid you'll see how it look like in a preview box, and you can click Full Definition Button for full preview - Adapted File Edit Grid with the Selected theme for better visualization Future Plans : I’m aiming high for the future to this application to a very handy tool for Lineage Development progress and make it easy to attach a server project to it to provide a management tool for the server as well as monitoring and maybe it will come with a server pack in future… who knows …. Reported Bugs : will be posted here when receive it from testers …. Screenshots : - Live Preview Added September 2nd - File Edit Theme Adaption : Added 10th September 2017 - Color Detection : Added 10th September 2017 - Advanced Color Picker : Added 10th September 2017 Note : Will add more Screens over time How to help ? Well any hand will be appreciated, here is a list with things i could use a hand at : – Report bug or Problem that exist now days when work with L2 Files – Suggest a Feature or Update or even a simple modification for any thing even if buttons order – Pm me if you can join the project as a Tester to find bugs – Share any opinion with me Releasing Information : The plan is that Project should be Ready on 15th of September, getting more hands and help as listed in “How to help ?” section will make things faster Update Log : - 2nd September 2017 Add Live Preview to UTX Browser > Thanks to @SweeTs Enhance Search Process , you can now just type in and out and it will be processed without a single button click Modify Grids to Adapt automatically with Selected Theme and Style for better Visualization Add Screen shot of Live Preview and Search within UTX Browser - 10th September 2017 - Adapt File Edit Grid with the Selected theme for better visualization - Automatically Detect Colors Parameters and Add it as Background, for accessibility purpose. So you don't need to check how this color looks like anymore - With Double Click on a Colored Element you get an Adobe-Like Color picker, which automatically translate values to the valid syntax of dat files (rgb and rgba) Note : A Video will be available soon
  23. Hello guys! Maybe you have seen the effect of RedSky on some servers, when you die? This code works the same way, on die... but instead of the RedSky, I've used the SpecialCamera which captures for some seconds the player that killed you. I had to do something before I kill my self because of this boring day :lol: It's for Interlude, I've tested it on l2jfrozen So ugly patch, but it's written manually... Index: config/functions/pvp.properties =================================================================== AntiFarmPdefDiff = False AntiFarmMaxPdefDiff = 300 # You must active AntiFarmEnabled = True to enable this mod. # AntiFarm if player has Patk < AntiFarmMaxPatkDiff. AntiFarmPatkDiff = False AntiFarmMaxPatkDiff = 300 # If true summons don't give any reward (avoid pvp/pk farm) AntiFarmSummon = False + +#==================================== +# Camera effect on die +#==================================== +# Effect enabled? +CameraEnabled = True +# Distance Camera <-> Killer +CameraDistance = 10 +# Point of view to the killer +# North = 90, South = 270, East = 0, West = 180 +CameraPOV = 0 +# Angle of view to the killer +# angle > 0: looks up, angle < 0: looks down +CameraAngle = 5 +# Animation speed (milliseconds) +CameraSpeed = 3000 +# Animation delay +CameraDuration = 3000 Index: head-src/com/l2jfrozen/Config.java =================================================================== public static boolean ANTI_FARM_PDEF_DIFF_ENABLED; public static int ANTI_FARM_MAX_PDEF_DIFF; public static boolean ANTI_FARM_PATK_DIFF_ENABLED; public static int ANTI_FARM_MAX_PATK_DIFF; public static boolean ANTI_FARM_PARTY_ENABLED; public static boolean ANTI_FARM_IP_ENABLED; public static boolean ANTI_FARM_SUMMON; + // Camera Effect + public static boolean CAMERA_ENABLED; + public static int CAMERA_DISTANCE; + public static int CAMERA_POV; + public static int CAMERA_ANGLE; + public static int CAMERA_SPEED; + public static int CAMERA_DELAY; + // ============================================================ public static void loadPvpConfig() { final String PVP = FService.PVP_CONFIG_FILE; try { final Properties pvpSettings = new Properties(); final InputStream is = new FileInputStream(new File(PVP)); pvpSettings.load(is); is.close(); /* KARMA SYSTEM */ KARMA_MIN_KARMA = Integer.parseInt(pvpSettings.getProperty("MinKarma", "240")); FEW LINES BELOW >>>>>>>>>>>>>>>>>>>>>>> ANTI_FARM_PATK_DIFF_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmPatkDiff", "False")); ANTI_FARM_MAX_PATK_DIFF = Integer.parseInt(pvpSettings.getProperty("AntiFarmMaxPatkDiff", "300")); ANTI_FARM_PARTY_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmParty", "False")); ANTI_FARM_IP_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmIP", "False")); ANTI_FARM_SUMMON = Boolean.parseBoolean(pvpSettings.getProperty("AntiFarmSummon", "False")); + + CAMERA_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("CameraEnabled", "false")); + CAMERA_DISTANCE = Integer.parseInt(pvpSettings.getProperty("CameraDistance", "10")); + CAMERA_POV = Integer.parseInt(pvpSettings.getProperty("CameraPOV", "0")); + CAMERA_ANGLE = Integer.parseInt(pvpSettings.getProperty("CameraAngle", "5")); + CAMERA_SPEED = Integer.parseInt(pvpSettings.getProperty("CameraSpeed", "3000")); + CAMERA_DELAY = Integer.parseInt(pvpSettings.getProperty("CameraDuration", "3000")); } catch (final Exception e) { e.printStackTrace(); throw new Error("Failed to Load " + PVP + " File."); } } // ============================================================ Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java =================================================================== import com.l2jfrozen.gameserver.network.serverpackets.ShortCutInit; import com.l2jfrozen.gameserver.network.serverpackets.SkillCoolTime; import com.l2jfrozen.gameserver.network.serverpackets.SkillList; import com.l2jfrozen.gameserver.network.serverpackets.Snoop; import com.l2jfrozen.gameserver.network.serverpackets.SocialAction; +import com.l2jfrozen.gameserver.network.serverpackets.SpecialCamera; import com.l2jfrozen.gameserver.network.serverpackets.StatusUpdate; import com.l2jfrozen.gameserver.network.serverpackets.StopMove; import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage; import com.l2jfrozen.gameserver.network.serverpackets.TargetSelected; FEW LINES BELOW>>>>>>>>>>>>>>>>> } } else { onDieUpdateKarma(); // Update karma if delevel is not allowed } } } } + if (Config.CAMERA_ENABLED && !isPhoenixBlessed()) + { + sendPacket(new SpecialCamera(killer.getObjectId(), Config.CAMERA_DISTANCE, Config.CAMERA_POV, Config.CAMERA_ANGLE, Config.CAMERA_SPEED, Config.CAMERA_DELAY)); + } } // Unsummon Cubics unsummonAllCubics(); if (_forceBuff != null) { abortCast(); } for (final L2Character character : getKnownList().getKnownCharacters()) if (character.getTarget() == this) { if (character.isCastingNow()) character.abortCast(); } if (isInParty() && getParty().isInDimensionalRift()) { getParty().getDimensionalRift().getDeadMemberList().add(this); }
  24. L2J-Mobius The Start As a teenager I wanted to make my own game. Back on year 2000...something, game engines cost insane amount of money. Unlucky for me, L2jserver claimed to be legal, if you made no client modifications. I thought it would be a great to use Lineage 2 as a client and customize the server. So I joined L2jServer as Pandragon, later invited as an advanced member. Work with L2jServer At that time trying to launch a live server was devastating. Major reworks where never finished and official information was interpreted wrong. Fixes for these problems either took months to be committed, or if shared by non inner team members, denied even as tempfixes. Also even under GPLv3 license, they would not commit work of fork projects (see L2DC, aCis etc). Supposely to be open source and unlike other emulator projects, many things where kept and still are strictly available only to inner circle members. (See Hellbound committed after years and GeoData tools that still are private.) Goddess of Destruction After some time I saw many packs, selling for hundreds of euros, that actually was L2j plus my free shared implementations shared on L2jServer forum that was never committed. So I decided to share all my work for free as a new project based on russian forks. In fact, I was the first person that shared freely Goddess of Destruction files. L2jUnity Relationship For two years I worked with russian forks, but at the same time I worked with L2jServer as well. So I tried to make a GoD based L2jServer, at that point L2j did not have an Ertheia branch. Right after making that, L2jServer inner team decided to make an Ertheia branch. Since I already worked with L2jServer and it was open source I used it and made a new branch. Right after making that, L2jServer team (except Zoey) decided to leave L2j and make L2jUnity private. Since then L2jServer is essentially a dead project and their inner team is now known as L2jUnity. A year later when they released a free version, I used it, mainly for their reworked skill system. Since then I am blamed to use their, essentially free and shared work, as if I stole it. Main reason that lead making the project private in order to find serious people to work with. Project Progress Merged most of the work made while working with russian forks. Hundreds of commits fixing severe L2jUnity inherited issues. Made Interlude and HighFive branches following my way of working. Reworked many core features noone dared to touch to match retail behaviour. Fixed hundreds of bug reports made by people that had live servers. Added several custom features requested by people that had live servers. Followed all game updates from Ertheia to Salvation and Classic. Project Future Recently I decided to stop accepting subscribers on 1/1/2019. I do not agree on how things are done on L2j projects. Download FREE compiled versions. http://l2jmobius.com/get/ Register to my forum for more news. http://www.l2jmobius.com/
  25. hi im testing the skill and the char it does not become invulnerable how i can fix it? the database is l2jmobius helios thanks for your time and help