Search the Community

Showing results for tags 'l2jserver'.



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
    • Buy Advertising Link #1
    • Private Servers
    • Buy Advertising Link #2
    • [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 23 results

  1. Professional Lineage 2 High Five Emulator! Server emulator fully written in Java. http://www.l2jdevs.org Telegram channel: https://t.me/l2jdevs We are waiting you, regards!
  2. Professional Lineage 2 High Five Emulator! Server emulator fully written in Java. http://www.l2jdevs.org Telegram channel: https://t.me/l2jdevs The suscription includes the following: 3 paid mods of your choice (with a price below 20€). Bugs priorization. Private group chat with the L2JDevs team members. Compiled server pack with, at least, one update per month. Compiled geodata pack with, at least, one update per month. Access to the VIP area and support. Some of the features: Implementations: - Treasure chest High Five implementation - Nevit's Advent Blessing - Nevit Hourglass - Area fan (for example: Rush impact) - Custom aggro range limit - Free mana cost in fortress and castles - New super haste - Fortress of Resistance - The Pilgrom's Necropolis - Execution Grounds - Added missing mobs in the map - Spawn return - Pc Points - Prime Shop Points - Instances: -- Seed of Infinity -- Hall of Erosion -- Hall Of Suffering -- Krateis Cube -- Pailaka Injured Dragon -- Zaken Night -- Andreas Van Halter -- Freya Hard - AIs: -- Lucky Pigs -- Drake Mage AI -- Ward Of Death -- Missing Pagan Temple AI's -- Master Toma (npcId 30556) -- Parade AI in Fantasy Isle -- Seer Ugoros - Quests: -- 7signs Solinas Tomb -- 7signs Power of the Seal Add-ons: - ModsEngineV2, you can select from a several list of mods for your server needs - AthenaEngiveV2: -- Team vs Team (no teams limit) -- Capture the flag -- Deathmatch Some bugfixing : - Fix for Quest A Game Of Cards (Q00662) - Fix for Forgotten Truth Quest (Q00106) - Fix for missing minions in Crystal Caverns Instance - Fix for Doorman Zombie (NpcId 22136) and Chapel Guard (NpcId 22138) - Fix for Don't Know Don't Care Quest (Q00456) - Fix Hellbound Npc Kief - Siege golems fixed - Fixing multiple hits made by NPC's which had base attack type FIST. - Fear effect - Fix for runners (Antharas Lair) - Jail system. - Fix for Fake Death Delay - Herbs - Pickup - Vengenance UD effect fix - Retail like player/pet/clan names rules - Fix for warnings in FishingChampionshipManager - Sweeper Skill - L2AirShipInstance - Fix animations of skills - Fix for Sweeper Festival Skill - Fix for mobs must use SS and BSS - Fix for issue about unlimited stun - Fix Admin GmShop htm and buylists - Valley of Saints AI: handles the other self spawn - Isle of prayer AI: added the silhouette spawn logic - Plains of lizardman AI: when you hit a Tanta summoner, two Tanta scouts are spawned - Add missing drop epic weapons raidboss. - Fix StakatoNest for leader heal with followers - Rework on AirShipGludioGracia - fix missed npc on MOS - Added missing Triol's Revelation (npcId 32068) htm - Fix html in Quest Fates Whisper - Fix spawn of Tanta Guard - The door opens with the Anteroom Key - Fix Doom Wraith Spawn - Ingenious Contraption Missing Html - Valakas Family Spawn - Fix for tattoos - Q00454_CompletelyLost fix - Fix mana burn with celestial - Fix in Seductive Whispers (663) - Fix for Blessed Olf's T-shirt Enchant Scroll - Fix Stigma Aftermath - Missing drop in MOS & sel mahum clan range - Fix quest LegendaryTales - Restored Mouth of Ekimus dialogs - Minor fix on Destroyed Tumors AI - Retail-like Fate's Whisper quest (234) - Fix for Q00696 Conquer The Hall Of Erosion - Fixed Door on Library Of Sages - Fix for StakatoNest AI - Fix for Disciples Necropolis Past - Fix Zaken door - Added missing NPC Galman in Dragon Valley - Fix for Deadly Poison (6815) and Deadly Bleed (6816) - Add missing html's & conditions in Newbie Guide - WalkingGuards fixes - Multiple NPEs Suscription Price: The suscription costs €150,00 per year. Click here for suscribe. If you're interesting in the suscription but you don't need a year suscription or you don't have the totally money, contact me by PM to talk about that. Best regards.
  3. https://www.l2tml2.com/ --- > New Server interlude mid rate (STACK SUB SERWER 1+1) STARTED! We invite everyone to the game, you will not regret itSERVER STACKSUB 1+1Basic FeaturesRates:Exp:x70 Spx70 Adenax60 Drop x1Enchant Rates:Normal Weapon x60Normal Armor x60 Normal Jewels x60 Blessed Weapon x65Blessed Armor x65Blessed Jewels x65Safe - 3 Max - 16Olympiad game:- Competition period 1 week.- Olympiad start time [06:00 PM] end [00:00 AM] UTC+1- New Heroes every Friday [12:00 PM]. Custom FeaturesItems:- Vywern Summon- Nobless Item- Agathion AccesoryEvents:- Fortress deffence- Lost Island- CTF- TVT- DMRaid Bosses:- Valakas 72h- Antharas 72h- Baium 48h- Benom Tezza 48h- Zaken 24h- Queen Ant 24- Event Boss- TyrannosaurusMachineHardware:8x(4xcore) 3.0GHZ4x Ge-Force 1060 G.P.2000TB HDD+500GB SSD 64GB RamSoftware:Windows Server 2016Internet connection:1GB/s Dedicated
  4. ============================================================= dist\game\data\scripts\ai\npc\LuckyPig\LuckyPig.java /* * Copyright (C) 2004-2014 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J DataPack is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package ai.npc.LuckyPig; import java.util.ArrayList; import java.util.List; import ai.npc.AbstractNpcAI; import com.l2jserver.Config; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.model.L2Object; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.itemcontainer.Inventory; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.clientpackets.Say2; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; import com.l2jserver.gameserver.util.Util; import com.l2jserver.util.Rnd; /** * Lucky Pig AI. * @author St3eT */ public final class LuckyPig extends AbstractNpcAI { // NPC private static final int LUCKY_PIG_WINGLESS = 2502; private static final int LUCKY_PIG_WINGLESS_GOLD = 2503; private static final int LUCKY_PIG_LOW = 18664; private static final int LUCKY_PIG_MEDIUM = 18665; private static final int LUCKY_PIG_TOP = 18666; //@formatter:off private static final int[] TRIGGER_MOBS_LOW = { // Enchanted Valley 20589, 20590, 20591, 20592, 20593, 20594, 20595, 20596, 20597, 20598, 20599, }; private static final int[] TRIGGER_MOBS_MEDIUM = { // Forest of the Dead, Valley of Saints 21520, 21521, 21522, 21523, 21524, 21525, 21526, 21527, 21528, 21529, 21530, 21531, 21532, 21533, 21534, 21535, 21536, 21537, 21538, 21539, 21540, 21541, 21542, 21543, 21544, 21545, 21546, 21547, 21548, 21549, 21550, 21551, 21552, 21553, 21554, 21555, 21556, 21557, 21558, 21559, 21560, 21561, 21562, 21563, 21564, 21565, 21566, 21567, 21568, 21569, 21570, 21571, 21572, 21573, 21574, 21575, 21576, 21577, 21578, 21579, 21580, 21581, 21582, 21583, 21584, 21585, 21586, 21587, 21588, 21589, 21590, 21591, 21592, 21593, 21594, 21595, 21596, 21597, 21598, 21599, 21600, 21601, }; private static final int[] TRIGGER_MOBS_TOP = { // Beast Farm, Plains of the Lizardmen, Sel Mahum Training Grounds, Field of Silence, Field of Whispers, Crypts of Disgrace, Den of Evil, Primeval Isle, Dragon Valley 18873, 18874, 18875, 18876, 18877, 18878, 18879, 18880, 18881, 18882, 18883, 18884, 18885, 18886, 18887, 18888, 18889, 18890, 18891, 18892, 18893, 18894, 18895, 18896, 18897, 18898, 18899, 18900, 18901, 18902, 18903, 18904, 18905, 18906, 18907, 22196, 22197, 22198, 22199, 22200, 22201, 22202, 22203, 22204, 22205, 22206, 22207, 22208, 22209, 22210, 22211, 22212, 22213, 22214, 22215, 22216, 22217, 22218, 22219, 22220, 22221, 22222, 22223, 22224, 22225, 22226, 22227, 22650, 22651, 22652, 22653, 22654, 22655, 22656, 22657, 22658, 22659, 22691, 22692, 22693, 22694, 22695, 22696, 22697, 22698, 22699, 22700, 22701, 22702, 22703, 22704, 22705, 22706, 22707, 22742, 22743, 22744, 22745, 22768, 22769, 22770, 22771, 22772, 22773, 22774, 22775, 22776, 22777, 22778, 22779, 22780, 22781, 22782, 22783, 22784, 22785, 22786, 22787, 22788, 22815, 22818, 22819, 22820, 22821, 22858, }; // Items private static final int[][] DROPLIST = { {LUCKY_PIG_LOW, 8755, 1, 100}, {LUCKY_PIG_LOW, 8755, 2, 25}, {LUCKY_PIG_MEDIUM, 5577, 1, 33}, {LUCKY_PIG_MEDIUM, 5578, 1, 33}, {LUCKY_PIG_MEDIUM, 5579, 1, 100}, {LUCKY_PIG_TOP, 9552, 1, 20}, {LUCKY_PIG_TOP, 9553, 1, 20}, {LUCKY_PIG_TOP, 9554, 1, 20}, {LUCKY_PIG_TOP, 9555, 1, 20}, {LUCKY_PIG_TOP, 9556, 1, 20}, {LUCKY_PIG_TOP, 9557, 1, 100}, {LUCKY_PIG_TOP, 9552, 2, 20}, {LUCKY_PIG_TOP, 9553, 2, 20}, {LUCKY_PIG_TOP, 9554, 2, 20}, {LUCKY_PIG_TOP, 9555, 2, 20}, {LUCKY_PIG_TOP, 9556, 2, 20}, {LUCKY_PIG_TOP, 9557, 2, 100}, }; private static final int[][] DROPLIST_GOLD = { {LUCKY_PIG_LOW, 14678, 1, 100}, {LUCKY_PIG_MEDIUM, 14679, 1, 100}, {LUCKY_PIG_TOP, 14680, 1, 100}, }; //@formatter:on // Skills public static final SkillHolder ENLARGE = new SkillHolder(23325, 1); // NpcStrings private static final NpcStringId[] SPAM_TEXTS = { NpcStringId.LUCKY_IF_I_EAT_TOO_MUCH_ADENA_MY_WINGS_DISAPPEAR, NpcStringId.LUCKY_IM_LUCKY_THE_SPIRIT_THAT_LOVES_ADENA, NpcStringId.LUCKY_I_WANT_TO_EAT_ADENA_GIVE_IT_TO_ME, }; private static final NpcStringId[] EATING_TEXTS = { NpcStringId.GRRRR_YUCK, NpcStringId.LUCKY_IT_WASNT_ENOUGH_ADENA_ITS_GOTTA_BE_AT_LEAST_S, NpcStringId.YUMMY_THANKS_LUCKY, NpcStringId.LUCKY_THE_ADENA_IS_SO_YUMMY_IM_GETTING_BIGGER, NpcStringId.LUCKY_NO_MORE_ADENA_OH_IM_SO_HEAVY, }; private static final NpcStringId[] TRANSFORM_TEXTS = { NpcStringId.OH_MY_WINGS_DISAPPEARED_ARE_YOU_GONNA_HIT_ME_IF_YOU_HIT_ME_ILL_THROW_UP_EVERYTHING_THAT_I_ATE, NpcStringId.OH_MY_WINGS_ACK_ARE_YOU_GONNA_HIT_ME_SCARY_SCARY_IF_YOU_HIT_ME_SOMETHING_BAD_WILL_HAPPEN }; // Misc //FIX DOUBLE private static final int LUCKY_PIG_CHANCE = Config.L2JMOD_LUCKY_PID_CHANCE; //@formatter:off private static final int[] LUCKY_PIG_GOLD_BASE_CHANCE = { 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 20 }; //@formatter:on @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { switch (event) { case "DESPAWN_TIME": { if (npc != null) { cancelQuestTimer("TEXT_SPAM", npc, null); cancelQuestTimer("CHECK_FOOD", npc, null); npc.deleteMe(); } break; } case "TEXT_SPAM": { final long lastEat = npc.getVariables().getLong("LUCKY_PIG_LAST_EAT", 0); if (System.currentTimeMillis() > (lastEat + 30000)) { broadcastNpcSay(npc, Say2.ALL, SPAM_TEXTS[getRandom(SPAM_TEXTS.length)]); startQuestTimer(event, (getRandom(20, 40) * 1000), npc, null); } else { startQuestTimer(event, (getRandom(10, 20) * 1000), npc, null); } break; } case "CHECK_FOOD": { final int foodState = npc.getVariables().getInt("LUCKY_PIG_FEED_STATE", 0); final L2ItemInstance foodItem = npc.getVariables().getObject("LUCKY_PIG_FOOD_ITEM", L2ItemInstance.class); switch (foodState) { case 0: // Looking for item { if (foodItem != null) { _log.warning(LuckyPig.class.getSimpleName() + ": Lucky pig trying to find another food while currently isn't eaten yet!"); break; } //@formatter:off final L2ItemInstance food = (L2ItemInstance) L2World.getInstance().getVisibleObjects(npc, 300) .stream() .filter(L2Object::isItem).filter(obj -> (obj.getId() == Inventory.ADENA_ID)) .sorted((object1, object2) -> (int) Util.calculateDistance(object1, object2, false, false)) .findFirst() .orElse(null); //@formatter:on if (food != null) { npc.getVariables().set("LUCKY_PIG_FEED_STATE", 1); npc.getVariables().set("LUCKY_PIG_FOOD_ITEM", food); } break; } case 1: // Move to item loc { if (foodItem != null) { npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, foodItem.getLocation()); npc.getVariables().set("LUCKY_PIG_FEED_STATE", 2); } else { // Maybe someone else pickup it? :P npc.getVariables().set("LUCKY_PIG_FEED_STATE", 0); } break; } case 2: { if (foodItem != null) { final int eatCount = npc.getVariables().getInt("LUCKY_PIG_EAT_COUNT", 0) + 1; final int targetAdena = npc.getVariables().getInt("LUCKY_PIG_TARGET_ADENA", 0); final long countAdena = npc.getVariables().getInt("LUCKY_PIG_EAT_ADENA", 0) + foodItem.getCount(); foodItem.decayMe(); npc.getVariables().set("LUCKY_PIG_LAST_EAT", System.currentTimeMillis()); npc.getVariables().set("LUCKY_PIG_EAT_ADENA", countAdena); npc.getVariables().set("LUCKY_PIG_FEED_COUNT", 0); npc.getVariables().set("LUCKY_PIG_EAT_COUNT", eatCount); npc.getVariables().set("LUCKY_PIG_FEED_STATE", 0); npc.getVariables().remove("LUCKY_PIG_FOOD_ITEM"); if (countAdena >= targetAdena) { broadcastNpcSay(npc, Say2.ALL, (getRandomBoolean() ? NpcStringId.LUCKY_IM_FULL_THANKS_FOR_THE_YUMMY_ADENA_OH_IM_SO_HEAVY : EATING_TEXTS[getRandom(EATING_TEXTS.length)])); } else { broadcastNpcSay(npc, Say2.ALL, EATING_TEXTS[getRandom(EATING_TEXTS.length)], Util.formatAdena(targetAdena)); } npc.broadcastPacket(new MagicSkillUse(npc, npc, ENLARGE.getSkillId(), 1, 1000, 1000)); if (eatCount >= 10) { npc.getVariables().set("LUCKY_PIG_FEED_STATE", 3); } } else { npc.getVariables().set("LUCKY_PIG_FEED_STATE", 0); } break; } case 3: { transformLuckyPig(npc); break; } } break; } } return super.onAdvEvent(event, npc, player); } private void transformLuckyPig(L2Npc luckyPig) { cancelQuestTimer("CHECK_FOOD", luckyPig, null); cancelQuestTimer("TEXT_SPAM", luckyPig, null); final L2Npc pig = addSpawn(calculateGoldChance(luckyPig) ? LUCKY_PIG_WINGLESS_GOLD : LUCKY_PIG_WINGLESS, luckyPig, true, 600000, true); broadcastNpcSay(pig, Say2.ALL, TRANSFORM_TEXTS[getRandom(TRANSFORM_TEXTS.length)]); pig.getVariables().set("LUCKY_PIG_SPAWN_ID", luckyPig.getId()); luckyPig.deleteMe(); } @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { if (npc.getId() == LUCKY_PIG_WINGLESS) { manageDrop(npc, killer, false); } else if (npc.getId() == LUCKY_PIG_WINGLESS_GOLD) { manageDrop(npc, killer, true); } else { final boolean LuckyPidChance = Rnd.get(100) > (100 - LUCKY_PIG_CHANCE); if (Config.L2JMOD_LUCKY_PID_SPAWN_ENABLED && LuckyPidChance/* || killer.isGM()*/) { final int minAdena; final int luckyPigId; if (Util.contains(TRIGGER_MOBS_LOW, npc.getId())) { minAdena = Config.L2JMOD_LUCKY_PID_LOW_ADENA; luckyPigId = LUCKY_PIG_LOW; } else if (Util.contains(TRIGGER_MOBS_MEDIUM, npc.getId())) { minAdena = Config.L2JMOD_LUCKY_PID_MEDIUM_ADENA; luckyPigId = LUCKY_PIG_MEDIUM; } else { minAdena = Config.L2JMOD_LUCKY_PID_TOP_ADENA; luckyPigId = LUCKY_PIG_TOP; } final int targetAdena = (int) (getRandom(minAdena, (minAdena * 10)) * Config.RATE_DROP_AMOUNT_MULTIPLIER.get(Inventory.ADENA_ID)); final L2Npc luckyPig = addSpawn(luckyPigId, npc, true, 0, true); startQuestTimer("DESPAWN_TIME", 600000, luckyPig, null); startQuestTimer("TEXT_SPAM", 5000, luckyPig, null); startQuestTimer("CHECK_FOOD", 2000, luckyPig, null, true); luckyPig.getVariables().set("LUCKY_PIG_TARGET_ADENA", targetAdena); } } return super.onKill(npc, killer, isSummon); } private void manageDrop(L2Npc luckyPig, L2PcInstance player, boolean isGold) { final int npcId = luckyPig.getVariables().getInt("LUCKY_PIG_SPAWN_ID", 0); if (npcId > 0) { final List<Integer> catData = new ArrayList<>(); for (int[] data : (isGold ? DROPLIST_GOLD : DROPLIST)) { if ((data[0] == npcId) && (getRandom(100) < data[3]) && !catData.contains(data[2])) { luckyPig.dropItem(player, data[1], data[2]); catData.add(data[2]); } } } } private boolean calculateGoldChance(L2Npc luckyPig) { final int eatCount = luckyPig.getVariables().getInt("LUCKY_PIG_EAT_COUNT", 0); final int targetAdena = luckyPig.getVariables().getInt("LUCKY_PIG_TARGET_ADENA", 0); final long countAdena = luckyPig.getVariables().getInt("LUCKY_PIG_EAT_ADENA", -1); //FIX double finalChance = LUCKY_PIG_GOLD_BASE_CHANCE[eatCount]; if (countAdena >= targetAdena) { finalChance *= 1.46; } return getRandom(100) < finalChance; } private LuckyPig() { super(LuckyPig.class.getSimpleName(), "ai/npc"); addStartNpc(LUCKY_PIG_LOW, LUCKY_PIG_MEDIUM, LUCKY_PIG_TOP); addTalkId(LUCKY_PIG_LOW, LUCKY_PIG_MEDIUM, LUCKY_PIG_TOP); addKillId(LUCKY_PIG_WINGLESS, LUCKY_PIG_WINGLESS_GOLD); addKillId(TRIGGER_MOBS_LOW); addKillId(TRIGGER_MOBS_MEDIUM); addKillId(TRIGGER_MOBS_TOP); } public static void main(String[] args) { new LuckyPig(); } } ==================================================================================================================== ==================================================================================================================== server\src\main\java\com\l2jserver\Config.java public static boolean L2JMOD_LUCKY_PID_SPAWN_ENABLED; public static int L2JMOD_LUCKY_PID_LOW_ADENA; public static int L2JMOD_LUCKY_PID_MEDIUM_ADENA; public static int L2JMOD_LUCKY_PID_TOP_ADENA; public static int L2JMOD_LUCKY_PID_CHANCE; L2JMOD_LUCKY_PID_SPAWN_ENABLED = L2JModSettings.getBoolean("EventLuckyPigEnabled", false); L2JMOD_LUCKY_PID_LOW_ADENA = L2JModSettings.getInt("LuckyPigLowAdena", 500); L2JMOD_LUCKY_PID_MEDIUM_ADENA = L2JModSettings.getInt("LuckyPigMediumAdena", 1000); L2JMOD_LUCKY_PID_TOP_ADENA = L2JModSettings.getInt("LuckyPigTopAdena", 2000); L2JMOD_LUCKY_PID_CHANCE = L2JModSettings.getInt("LuckyPigChance", 3); ==================================================================================================================== ==================================================================================================================== datapack\dist\game\data\stats\npcs\02500-02599.xml <?xml version="1.0" encoding="UTF-8"?> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd"> <npc id="2501" level="80" type="L2Npc" name="Lucky Pig" title="The Spirit of Fortune"> <sex>MALE</sex> <stats str="10" int="10" dex="10" wit="10" con="10" men="10"> <vitals hp="2444" mp="2444.0" /> <attack physical="500" magical="500" attackSpeed="278" range="40" /> <defence physical="500" magical="500" /> <attribute> <defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" /> </attribute> <speed> <walk ground="60" /> <run ground="160" /> </speed> </stats> <skillList> <skill id="4416" level="3" /> <!--Beasts --> <skill id="23325" level="1" /> <!--Enlarge - Luckpy --> <skill id="23326" level="1" /> <!--Reduce - Luckpy --> </skillList> <collision> <radius normal="25" /> <height normal="35" /> </collision> </npc> <npc id="2502" level="80" type="L2Monster" name="Wingless Lucky Pig"> <sex>MALE</sex> <stats str="10" int="10" dex="10" wit="10" con="10" men="10"> <vitals hp="2444" mp="2444.0" /> <attack physical="500" magical="500" attackSpeed="278" range="40" /> <defence physical="500" magical="500" /> <attribute> <defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" /> </attribute> <speed> <walk ground="60" /> <run ground="160" /> </speed> </stats> <collision> <radius normal="25" /> <height normal="35" /> </collision> </npc> <npc id="2503" level="80" type="L2Monster" name="Wingless Lucky Pig"> <sex>MALE</sex> <stats str="10" int="10" dex="10" wit="10" con="10" men="10"> <vitals hp="2444" mp="2444.0" /> <attack physical="500" magical="500" attackSpeed="278" range="40" /> <defence physical="500" magical="500" /> <attribute> <defence fire="20" water="20" wind="20" earth="20" holy="20" dark="20" /> </attribute> <speed> <walk ground="60" /> <run ground="160" /> </speed> </stats> <collision> <radius normal="25" /> <height normal="35" /> </collision> </npc> </list> ================================================================================================== ================================================================================================== dist\game\data\scripts.cfg ai/npc/Kier/Kier.java + ai/npc/LuckyPig/LuckyPig.java ================================================================================================== ================================================================================================== dist\game\config\L2JMods.properties # Enable/disable spawning EventLuckyPigEnabled = True LuckyPigLowAdena = 500 LuckyPigMediumAdena = 1000 LuckyPigTopAdena = 2000 # Random Defaul: 1 = Spawn 1% LuckyPigChance = 1
  5. Teleportcustom command Easily supplemented Who is interested in Checked 99,9
  6. L2J foi incrível, foi o melhor simulador de Lineage II, ele se tornou o mais usado no mundo todo. Então nós tivemos esse desafio. Como melhorar algo tão extraordinário? Nós do L2JWZ Team, fizemos exatamente isso!!! The package is based on L2JServer and has been developed for your enjoyment, our work has more than 5 years, we are survivors. I can say this pack is the most advanced, feature complete and custom modifications on the market today. We bring together the very best on the market in one pack, or that I think is our best work. Custom Features: Fully Retail Community Board (backup) Fully Custom Community Board: - *New Augmentation Manager - *New Rank Manager - *New Log Viewer - Gatekeeper - Buffer - GMSHOP - PartyMatching System - Class Master - Warehouse - BlackSmith - Raid Boss info - Grand Boss info - Donation - Auction - Ranking Manager - Achievements Manager - Friends Manager - Clan Managment - Enchant/Attribute Board - Character statistics board. - All kind of services as change sex/level up/ name color/reduce pk.. etc etc # Achievement System : - Over 40 achievements and easy implementation of new. - Configurable rewards. # Cancel Restoration system. - Return canceled buff after xx time. # Character Intro System - Accepting terms of usage - Setting up character security password - Setting email to recover password. - Referral system with rewards. - Different color name for clan members, ally members, clan war members. # Advanced Premium System - Fully configurable - Exp, Sp, Drop, attribute, enchant, karma, fame bonus. - Drop by item id. - Bonus functions: whereis command, infinity arrow/shots, can shop/buff/warehous/change class outside peace zone, usage of global chat. # Poll System - Ask your players questions related or not related with the server. # Captcha - Advanced anti-bot System. - Custom algorithm for catching bot players. - Options how to work captcha against bots. # Bot Report System. - Admin can review reports with options to check reported player. - Report for bot/fake shop/abuse/ etc... # Custom PvP System. - Killing spree messages & rewards. - Attribute items on pvp/pk kills. - Fame rewards - Enchant items on pvp/pk kills. - Special PvP zone with rewards and various effects. # Fake PC - System making NPC looking as Players. # Quest sAddon System - Adjust XP/SP/Drop rate/Rewards rate for certain quest. # Anti-Feed check by hwid/ip # Protected olympiad by hwid/ip # System to register account and recover password by email. # Secondary character protection, bind your IP/HWID. # Find Party command. Easy setup of party for instance or farming # Custom Shift + click for player and NPC. # Most of retail events are implemented and working. # Latest nexus-engine with custom fixes and mods. - Most advanced event engine with over events. - Support mini events. - Fully info nexus-engine.net (not supported anymore by the owner) # Character Control Panel - Enable/Disable character related functions. # Items 30000 - Donate Potion 40001 AiO Gemstone 40002 Gold Adena 40003 Aqua Stone 40004 Stigma Stone 40005 Torch Stone 40006 Vote Coin 41005 AioBook 41006 Raid's Skull 41007 Raid's Treasure Box 41008 The GM's Crown 40103 Vote Scroll: Enchant Weapon (S-Grade) 40104 Safe Scroll: Enchant Weapon (S-Grade) 40108 Vote Scroll: Enchant Armor (S-Grade) 40109 Safe Scroll: Enchant Armor (S-Grade) # Npcs Fakes 5001 a 5006 e 6001 a 6006 News Npcs 60000 a 60014 REV 075 limited PLAYERS REV 082 limited PLAYERS Started tests and Preconfiguration, enjoy !!!
  7. Grand Opening 12/4/2017 [Webiste]: Lineage II Narcos [Forum]: L2Nacros - Index page [Facebook]: https://www.facebook.com/l2narcos L2 Narcos high rates no custom pvp server opens for you on 12 / April / 2017. We are waiting for you all. For more information visit features section. Join us and be best of the best P.s Account creation is automatic just enter in game login and password and your account will be created immediately. See you in game ! :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Rates: » Xp 5000x. » Sp 5000x. » Aden 5000x. » Drop 1000x. » PartyXp 2x. » PartySp 2x. » Starting character level - 20. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Enchant rates: » Safe enchant +3. » Blessed and simple scrolls max enchant (+16). » Simple enchant scrolls chance - 66%. » Blessed enchant scrolls chance - 70%. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Features: » Three towns. Main town - Giran, Adena.Rune » Giran Aden & Rune castle sieges. » Stackable scrolls » Unique pvp zone. » More then 9 active raid bosses. » Special Casino event manager. » Unique Giran system. » Wedding system. » Unique farming zones. » Npc skill enchanter. » Shops till top S grade. » Unique tattoos. » full npc buffers. » Max count of buffs - 56. » Max subclasses - 5. » Free and no quest class change. » Free and no quest sub class. » Free nobless status. » No weight limit. » No grade limit. » Killing Spree pvp system. » Pvp/pk show on title. » Online password change. » Top 10 pvp,pk & online npc in game. » Augmentation system . » Server information npc. » Unique monsters. » Interlude retail skills. » Server up-time [12/4] [99]%. » Perfect class balance. » Dynasty Weapons ! :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Event system: » TVT event Every 4 hours » Dm event Every 4 hours » Casino event working [24/7]. » Unique event shop. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Olympiad game: » Retail olympiad game. » Competition period [1] week. » Olympiad start time [18:00] end [20:00]. » Olympoiad start/end times can be found in olympiad manager. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Voiced commands: .tvtjoin .tvtleave - Join or leave tvt event. .dmjoin .dmleave - Join or leave dm event. .deposit - exchange 1 billion adena to 1 gold bar .withdraw.- exchange 1 gold bar for 1 billion adena .repair - repairs stuck character in world. .siege_giran - open box to attack/defend the castle .siege_aden - open box to attack/defend the castle .siege_rune - open box to attack/defend the castle .pvpzone - opens pvp zone window .exit - exits from pvp zone :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: SERVER START - 2017-04-12, Wednesday, 18:00 +2 GMT TIME ZONE. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: perfect class balance and much updates ! Server is created for more then 1000+ players online at one time ! Dont waste your time in others pvp servers and join us ! See you in game ! https://www.youtube.com/watch?v=nZluTRTKNvI
  8. Hello everyone. I have a problem here. Problem no, actually I need something and I tried everything and I did not succeed. I wanted to make an autoloot mod just for adena. I tried everything on L2Attackable and I did not succeed. Does anyone know any mod, or could you help me? Thank you in advance.
  9. Greetings, I am trying to replace the way Npcs redirect you to simple HTML text with community board html text. I edited L2Npc class and changed the NpcHtmlMessage with the Util.SendCBHtml method and I managed to make the window open in the CB but the buttons with the npc's bypasses do not work at all. Note: The html text is the same I used to have on my npcs before the change, when the bypasses used to work. Any ideas on how to make them functional again while on CB? Am I missing something here? Thanks.
  10. Hello guys, I'm excusing for this topic but i need help with an antibot captcha to my Gracia final server. This is the antibot http://www.maxcheaters.com/topic/105460-share-captcha-antibot-system-updated-1762011-version-2-please-lock-it/ The problem is when i start the server all npcs are removed from the world. Also when spawn a mob and kill it few tims captcha appears, when close the html i write the command .captcha and notting appears. I think that the problem is inside of L2Npc.java for the spawns and voicedcommandhandlers captcha.java and antibot.java. This is the whole codes: 1.L2Npc 2.Antibot 3. Captcha 4.Masterhandler package net.sf.l2j.gameserver.model.actor; import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import java.text.DateFormat; import java.text.DecimalFormat; import java.util.Collection; import java.util.List; import java.util.logging.Level; import javolution.util.FastList; import net.sf.l2j.Config; import net.sf.l2j.gameserver.GameTimeController; import net.sf.l2j.gameserver.GmListTable; import net.sf.l2j.gameserver.SevenSigns; import net.sf.l2j.gameserver.SevenSignsFestival; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.datatables.ClanTable; import net.sf.l2j.gameserver.datatables.FakePcsTable; import net.sf.l2j.gameserver.datatables.ItemLists; import net.sf.l2j.gameserver.datatables.ItemTable; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.datatables.SpawnTable; import net.sf.l2j.gameserver.idfactory.IdFactory; import net.sf.l2j.gameserver.instancemanager.CastleManager; import net.sf.l2j.gameserver.instancemanager.DayNightSpawnManager; import net.sf.l2j.gameserver.instancemanager.DimensionalRiftManager; import net.sf.l2j.gameserver.instancemanager.FortManager; import net.sf.l2j.gameserver.instancemanager.QuestManager; import net.sf.l2j.gameserver.instancemanager.TownManager; import net.sf.l2j.gameserver.instancemanager.games.Lottery; import net.sf.l2j.gameserver.model.L2Clan; import net.sf.l2j.gameserver.model.L2DropCategory; import net.sf.l2j.gameserver.model.L2DropData; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2Multisell; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2Skill; import net.sf.l2j.gameserver.model.L2Spawn; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.L2WorldRegion; import net.sf.l2j.gameserver.model.MobGroupTable; import net.sf.l2j.gameserver.model.actor.instance.L2BufferInstance; import net.sf.l2j.gameserver.model.actor.instance.L2ClanHallManagerInstance; import net.sf.l2j.gameserver.model.actor.instance.L2ControlTowerInstance; import net.sf.l2j.gameserver.model.actor.instance.L2ControllableMobInstance; import net.sf.l2j.gameserver.model.actor.instance.L2DoormenInstance; import net.sf.l2j.gameserver.model.actor.instance.L2FestivalGuideInstance; import net.sf.l2j.gameserver.model.actor.instance.L2FishermanInstance; import net.sf.l2j.gameserver.model.actor.instance.L2MerchantInstance; import net.sf.l2j.gameserver.model.actor.instance.L2MonsterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2RaidBossInstance; import net.sf.l2j.gameserver.model.actor.instance.L2TeleporterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2WarehouseInstance; import net.sf.l2j.gameserver.model.actor.instance.L2SummonInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.actor.knownlist.NpcKnownList; import net.sf.l2j.gameserver.model.actor.stat.NpcStat; import net.sf.l2j.gameserver.model.actor.status.NpcStatus; import net.sf.l2j.gameserver.model.entity.Castle; import net.sf.l2j.gameserver.model.entity.Fort; import net.sf.l2j.gameserver.model.entity.L2Event; import net.sf.l2j.gameserver.model.events.CTF; import net.sf.l2j.gameserver.model.events.DM; import net.sf.l2j.gameserver.model.events.FOS; import net.sf.l2j.gameserver.model.events.TvT; import net.sf.l2j.gameserver.model.events.VIP; import net.sf.l2j.gameserver.model.itemcontainer.NpcInventory; import net.sf.l2j.gameserver.model.olympiad.Olympiad; import net.sf.l2j.gameserver.model.quest.Quest; import net.sf.l2j.gameserver.model.quest.QuestState; import net.sf.l2j.gameserver.model.quest.State; import net.sf.l2j.gameserver.model.zone.type.L2TownZone; import net.sf.l2j.gameserver.network.L2GameClient; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.AbstractNpcInfo; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate; import net.sf.l2j.gameserver.network.serverpackets.ExShowBaseAttributeCancelWindow; import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate; import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.PledgeCrest; import net.sf.l2j.gameserver.network.serverpackets.RadarControl; import net.sf.l2j.gameserver.network.serverpackets.ServerObjectInfo; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation; import net.sf.l2j.gameserver.skills.Stats; import net.sf.l2j.gameserver.taskmanager.DecayTaskManager; import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate; import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate.AIType; import net.sf.l2j.gameserver.templates.item.L2Item; import net.sf.l2j.gameserver.templates.item.L2Weapon; import net.sf.l2j.gameserver.util.StringUtil; import gov.nasa.worldwind.formats.dds.DDSConverter; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import net.sf.l2j.gameserver.skills.AbnormalEffect; import net.sf.l2j.util.Rnd; import cz.nxs.events.engine.main.globalevent.GlobalEvent; import cz.nxs.interf.NexusEvents; HERE IS NOT WHOLE CODE BECOUSE OF THE LONG SIZE /** * Return the Exp Reward of this L2NpcInstance contained in the L2NpcTemplate (modified by RATE_XP).<BR><BR> */ public long getExpReward() { return (long)(getTemplate().rewardExp * Config.RATE_XP); } /** * Return the SP Reward of this L2NpcInstance contained in the L2NpcTemplate (modified by RATE_SP).<BR><BR> */ public int getSpReward() { return (int) (getTemplate().rewardSp * Config.RATE_SP); } public static StringBuilder finalString = new StringBuilder(); NpcHtmlMessage adminReply = new NpcHtmlMessage(5); private static BufferedImage generateCaptcha() { Color textColor = new Color(98, 213, 43); Color circleColor = new Color(98, 213, 43); Font textFont = new Font("comic sans ms", Font.BOLD, 24); int charsToPrint = 5; int width = 256; int height = 64; int circlesToDraw = 8; float horizMargin = 20.0f; double rotationRange = 0.7; // this is radians BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D) bufferedImage.getGraphics(); //Draw an oval g.setColor(new Color(30,31,31)); g.fillRect(0, 0, width, height); // lets make some noisey circles g.setColor(circleColor); for ( int i = 0; i < circlesToDraw; i++ ) { int circleRadius = (int) (Math.random() * height / 2.0); int circleX = (int) (Math.random() * width - circleRadius); int circleY = (int) (Math.random() * height - circleRadius); g.drawOval(circleX, circleY, circleRadius * 2, circleRadius * 2); } g.setColor(textColor); g.setFont(textFont); FontMetrics fontMetrics = g.getFontMetrics(); int maxAdvance = fontMetrics.getMaxAdvance(); int fontHeight = fontMetrics.getHeight(); // Suggestions ---------------------------------------------------------------------- // i removed 1 and l and i because there are confusing to users... // Z, z, and N also get confusing when rotated // 0, O, and o are also confusing... // lowercase G looks a lot like a 9 so i killed it // this should ideally be done for every language... // i like controlling the characters though because it helps prevent confusion // So recommended chars are: // String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYabcdefhjkmnpqrstuvwxy23456789"; // Suggestions ---------------------------------------------------------------------- String elegibleChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; char[] chars = elegibleChars.toCharArray(); float spaceForLetters = -horizMargin * 2 + width; float spacePerChar = spaceForLetters / (charsToPrint - 1.0f); for ( int i = 0; i < charsToPrint; i++ ) { double randomValue = Math.random(); int randomIndex = (int) Math.round(randomValue * (chars.length - 1)); char characterToShow = chars[randomIndex]; finalString.append(characterToShow); // this is a separate canvas used for the character so that // we can rotate it independently int charWidth = fontMetrics.charWidth(characterToShow); int charDim = Math.max(maxAdvance, fontHeight); int halfCharDim = (charDim / 2); BufferedImage charImage = new BufferedImage(charDim, charDim, BufferedImage.TYPE_INT_ARGB); Graphics2D charGraphics = charImage.createGraphics(); charGraphics.translate(halfCharDim, halfCharDim); double angle = (Math.random() - 0.5) * rotationRange; charGraphics.transform(AffineTransform.getRotateInstance(angle)); charGraphics.translate(-halfCharDim,-halfCharDim); charGraphics.setColor(textColor); charGraphics.setFont(textFont); int charX = (int) (0.5 * charDim - 0.5 * charWidth); charGraphics.drawString("" + characterToShow, charX, ((charDim - fontMetrics.getAscent()) / 2 + fontMetrics.getAscent())); float x = horizMargin + spacePerChar * (i) - charDim / 2.0f; int y = ((height - charDim) / 2); g.drawImage(charImage, (int) x, y, charDim, charDim, null, null); charGraphics.dispose(); } g.dispose(); return bufferedImage; } /** * Kill the L2NpcInstance (the corpse disappeared after 7 seconds).<BR><BR> * * <B><U> Actions</U> :</B><BR><BR> * <li>Create a DecayTask to remove the corpse of the L2NpcInstance after 7 seconds </li> * <li>Set target to null and cancel Attack or Cast </li> * <li>Stop movement </li> * <li>Stop HP/MP/CP Regeneration task </li> * <li>Stop all active skills effects in progress on the L2Character </li> * <li>Send the Server->Client packet StatusUpdate with current HP and MP to all other L2PcInstance to inform </li> * <li>Notify L2Character AI </li><BR><BR> * * <B><U> Overridden in </U> :</B><BR><BR> * <li> L2Attackable </li><BR><BR> * * @param killer The L2Character who killed it * */ @Override public boolean doDie(L2Character killer) { //If killer instanceof L2PetInstance or instanceof L2SummonInstance, this is going to get the player that controls the killer. L2PcInstance player = null; player = killer.getActingPlayer(); //ANTIBOT - Start if((killer instanceof L2PcInstance) || (killer instanceof L2PetInstance) || (killer instanceof L2SummonInstance)) { //+1 to mobcounter player.setKills(player.getKills() + 1); //Checks the mobcounter if(player.getKills() == 50) { //Random image file name int imgId = IdFactory.getInstance().getNextId(); //Convertion from .png to .dds, and crest packed send try { File captcha = new File("data/captcha/captcha.png"); ImageIO.write(generateCaptcha(), "png", captcha); PledgeCrest packet = new PledgeCrest(imgId, DDSConverter.convertToDDS(captcha).array()); //Convertion to DDS where is antybot player.sendPacket(packet); } catch (Exception e) { _log.warning(e.getMessage()); } //Paralyze, abnormal effect, invul, html with captcha output and start of the 1 min counter player.startAbnormalEffect(AbnormalEffect.REAL_TARGET); player.setIsParalyzed(true); player.setIsInvul(true); adminReply.setHtml("<html><title>Captcha Antibot System</title><body><center>Enter the 5-digits code below and click Confirm.<br><img src=\"Crest.crest_" + Config.SERVER_ID + "_" + imgId + "\" width=256 height=64><br><font color=\"888888\">(There are only english uppercase letters.)</font><br1><font color=\"FF0000\">Tries Left: " + player.getTries() +"</font><br><edit var=\"antibot\" width=110><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>If you close by mistake this window,<br1>you can re-open it by typing \".captcha\" on Chat.<br1>You have 3 minutes to answer or you<br1>will get jailed.<br1>You have 3 tries, if you will<br1>answer wrong to all of them you<br1>will get punished.</center></body></html>"); player.sendPacket(adminReply); player.setCode(finalString); ThreadPoolManager.getInstance().scheduleGeneral(new CaptchaTimer(player), 180000);//180sec player.setCodeRight(false); finalString.replace(0, 5, ""); } } //ANTIBOT - End if (!super.doDie(killer)) return false; if(getGlobalEvent() != null) getGlobalEvent().monsterDies(this); // normally this wouldn't really be needed, but for those few exceptions, // we do need to reset the weapons back to the initial templated weapon. _currentLHandId = getTemplate().lhand; _currentRHandId = getTemplate().rhand; /* _currentCollisionHeight = getCollisionHeight(); _currentCollisionRadius = getCollisionRadius();*/ DecayTaskManager.getInstance().addDecayTask(this); return true; } //3 Mins Counter and the event that happens class CaptchaTimer implements Runnable { L2PcInstance activeChar; public CaptchaTimer(L2PcInstance player) { activeChar = player; } public void run() { //here will be code that will run after 1 min if(!activeChar.isCodeRight()) { activeChar.setTries(3); //here will run method with jailing player after 1 min activeChar.stopAbnormalEffect(AbnormalEffect.REAL_TARGET); NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0); npcHtmlMessage.setHtml("<html><title>Captcha Antibot System</title><body><center><font color=\"FF0000\">3 minutes passed.<br><br></font><font color=\"66FF00\"><center></font><font color=\"FF0000\">You will be jailed.</font><br><button value=\"Exit\" action=\"bypass -h npc_%objectId%_Quest\" width=45 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); if (activeChar.isFlyingMounted()) activeChar.untransform(); activeChar.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 1); activeChar.setIsInvul(false); activeChar.setIsParalyzed(false); activeChar.sendPacket(npcHtmlMessage); } } } /** * Set the spawn of the L2NpcInstance.<BR><BR> * * @param spawn The L2Spawn that manage the L2NpcInstance * */ public void setSpawn(L2Spawn spawn) { _spawn = spawn; } @Override public void onSpawn() { if (_inventory != null) _inventory.reset(); super.onSpawn(); if (getTemplate().getEventQuests(Quest.QuestEventType.ON_SPAWN) != null) for (Quest quest : getTemplate().getEventQuests(Quest.QuestEventType.ON_SPAWN)) quest.notifySpawn(this); } /** * Remove the L2NpcInstance from the world and update its spawn object (for a complete removal use the deleteMe method).<BR><BR> * * <B><U> Actions</U> :</B><BR><BR> * <li>Remove the L2NpcInstance from the world when the decay task is launched </li> * <li>Decrease its spawn counter </li> * <li>Manage Siege task (killFlag, killCT) </li><BR><BR> * * <FONT COLOR=#FF0000><B> <U>Caution</U> : This method DOESN'T REMOVE the object from _allObjects of L2World </B></FONT><BR> * <FONT COLOR=#FF0000><B> <U>Caution</U> : This method DOESN'T SEND Server->Client packets to players</B></FONT><BR><BR> * */ @Override public void onDecay() { if (isDecayed()) return; setDecayed(true); // Manage Life Control Tower if (this instanceof L2ControlTowerInstance) ((L2ControlTowerInstance) this).onDeath(); // Remove the L2NpcInstance from the world when the decay task is launched super.onDecay(); // Decrease its spawn counter if (_spawn != null) _spawn.decreaseCount(this); } /** * Remove PROPERLY the L2NpcInstance from the world.<BR><BR> * * <B><U> Actions</U> :</B><BR><BR> * <li>Remove the L2NpcInstance from the world and update its spawn object </li> * <li>Remove all L2Object from _knownObjects and _knownPlayer of the L2NpcInstance then cancel Attack or Cast and notify AI </li> * <li>Remove L2Object object from _allObjects of L2World </li><BR><BR> * * <FONT COLOR=#FF0000><B> <U>Caution</U> : This method DOESN'T SEND Server->Client packets to players</B></FONT><BR><BR> * */ public void deleteMe() { L2WorldRegion oldRegion = getWorldRegion(); try { decayMe(); } catch (Exception e) { _log.log(Level.SEVERE, "Failed decayMe().", e); } try { if (_fusionSkill != null) abortCast(); for (L2Character character : getKnownList().getKnownCharacters()) if (character.getFusionSkill() != null && character.getFusionSkill().getTarget() == this) character.abortCast(); } catch (Exception e) { _log.log(Level.SEVERE, "deleteMe()", e); } if (oldRegion != null) oldRegion.removeFromZones(this); // Remove all L2Object from _knownObjects and _knownPlayer of the L2Character then cancel Attak or Cast and notify AI try { getKnownList().removeAllKnownObjects(); } catch (Exception e) { _log.log(Level.SEVERE, "Failed removing cleaning knownlist.", e); } // Remove L2Object object from _allObjects of L2World L2World.getInstance().removeObject(this); } /** * Return the L2Spawn object that manage this L2NpcInstance.<BR><BR> */ public L2Spawn getSpawn() { return _spawn; } @Override public String toString() { return getTemplate().name; } public boolean isDecayed() { return _isDecayed; } public void setDecayed(boolean decayed) { _isDecayed = decayed; } public void endDecayTask() { if (!isDecayed()) { DecayTaskManager.getInstance().cancelDecayTask(this); onDecay(); } } public boolean isMob() // rather delete this check { return false; // This means we use MAX_NPC_ANIMATION instead of MAX_MONSTER_ANIMATION } // Two functions to change the appearance of the equipped weapons on the NPC // This is only useful for a few NPCs and is most likely going to be called from AI public void setLHandId(int newWeaponId) { _currentLHandId = newWeaponId; updateAbnormalEffect(); } public void setRHandId(int newWeaponId) { _currentRHandId = newWeaponId; updateAbnormalEffect(); } public void setLRHandId(int newLWeaponId, int newRWeaponId) { _currentRHandId = newRWeaponId; _currentLHandId = newLWeaponId; updateAbnormalEffect(); } public void setCollisionHeight(float height) { _currentCollisionHeight = height; } public void setCollisionRadius(float f) { _currentCollisionRadius = f; } public float getCurrCollisionHeight() { return _currentCollisionHeight; } public float getCurrCollisionRadius() { return _currentCollisionRadius; } public boolean isUsingShot(boolean d) { return isUsingShot(); } public boolean isUsingShot() { if (getTemplate().ssRate == 0) return false; if (getTemplate().ssRate >= Rnd.get(100)) return true; return false; } @Override public NpcInventory getInventory() { return _inventory; } @Override public void sendInfo(L2PcInstance activeChar) { if (Config.CHECK_KNOWN) activeChar.sendMessage("Added NPC: "+getName()); if (getRunSpeed() == 0) activeChar.sendPacket(new ServerObjectInfo(this, activeChar)); else activeChar.sendPacket(new AbstractNpcInfo.NpcInfo(this, activeChar)); } public int getElite() { return getTemplate().elite; } public int getRare() { return getTemplate().rare; } public void setIsTempSpawn() { _tempSpawn = true; } } package handlers.voicedcommandhandlers; import gov.nasa.worldwind.formats.dds.DDSConverter; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.util.StringTokenizer; import java.util.logging.Level; import javax.imageio.ImageIO; import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; import net.sf.l2j.gameserver.idfactory.IdFactory; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.PledgeCrest; import net.sf.l2j.gameserver.skills.AbnormalEffect; /** * * @author Pipiou211 * */ public class AntiBot implements IVoicedCommandHandler { private static final String[] _voicedCommands = { "antibot" }; public static StringBuilder finalString = new StringBuilder(); NpcHtmlMessage adminReply = new NpcHtmlMessage(5); private static BufferedImage generateCaptcha() { Color textColor = new Color(98, 213, 43); Color circleColor = new Color(98, 213, 43); Font textFont = new Font("comic sans ms", Font.BOLD, 24); int charsToPrint = 5; int width = 256; int height = 64; int circlesToDraw = 8; float horizMargin = 20.0f; double rotationRange = 0.7; // this is radians BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D) bufferedImage.getGraphics(); //Draw an oval g.setColor(new Color(30,31,31)); g.fillRect(0, 0, width, height); // lets make some noisey circles g.setColor(circleColor); for ( int i = 0; i < circlesToDraw; i++ ) { int circleRadius = (int) (Math.random() * height / 2.0); int circleX = (int) (Math.random() * width - circleRadius); int circleY = (int) (Math.random() * height - circleRadius); g.drawOval(circleX, circleY, circleRadius * 2, circleRadius * 2); } g.setColor(textColor); g.setFont(textFont); FontMetrics fontMetrics = g.getFontMetrics(); int maxAdvance = fontMetrics.getMaxAdvance(); int fontHeight = fontMetrics.getHeight(); // Suggestions ---------------------------------------------------------------------- // i removed 1 and l and i because there are confusing to users... // Z, z, and N also get confusing when rotated // 0, O, and o are also confusing... // lowercase G looks a lot like a 9 so i killed it // this should ideally be done for every language... // i like controlling the characters though because it helps prevent confusion // So recommended chars are: // String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYabcdefhjkmnpqrstuvwxy23456789"; // Suggestions ---------------------------------------------------------------------- String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYZ"; char[] chars = elegibleChars.toCharArray(); float spaceForLetters = -horizMargin * 2 + width; float spacePerChar = spaceForLetters / (charsToPrint - 1.0f); for ( int i = 0; i < charsToPrint; i++ ) { double randomValue = Math.random(); int randomIndex = (int) Math.round(randomValue * (chars.length - 1)); char characterToShow = chars[randomIndex]; finalString.append(characterToShow); // this is a separate canvas used for the character so that // we can rotate it independently int charWidth = fontMetrics.charWidth(characterToShow); int charDim = Math.max(maxAdvance, fontHeight); int halfCharDim = (charDim / 2); BufferedImage charImage = new BufferedImage(charDim, charDim, BufferedImage.TYPE_INT_ARGB); Graphics2D charGraphics = charImage.createGraphics(); charGraphics.translate(halfCharDim, halfCharDim); double angle = (Math.random() - 0.5) * rotationRange; charGraphics.transform(AffineTransform.getRotateInstance(angle)); charGraphics.translate(-halfCharDim,-halfCharDim); charGraphics.setColor(textColor); charGraphics.setFont(textFont); int charX = (int) (0.5 * charDim - 0.5 * charWidth); charGraphics.drawString("" + characterToShow, charX, ((charDim - fontMetrics.getAscent()) / 2 + fontMetrics.getAscent())); float x = horizMargin + spacePerChar * (i) - charDim / 2.0f; int y = ((height - charDim) / 2); g.drawImage(charImage, (int) x, y, charDim, charDim, null, null); charGraphics.dispose(); } g.dispose(); return bufferedImage; } public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0); if (command.equalsIgnoreCase("antibot") && target != null) { StringTokenizer st = new StringTokenizer(target); try { String newpass = null, repeatnewpass = null; if (st.hasMoreTokens()) newpass = st.nextToken(); repeatnewpass = activeChar.getCode(); if (!(newpass == null || repeatnewpass == null)) { if (newpass.equals(repeatnewpass))//Right:) { npcHtmlMessage.setHtml("<html><title>Captcha Antibot System</title><body><center><font color=\"00FF00\">Correct Captcha.<br><br></font><center><br><button value=\"Exit\" action=\"bypass -h npc_%objectId%_Quest\" width=45 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); activeChar.sendPacket(npcHtmlMessage); activeChar.stopAbnormalEffect(AbnormalEffect.REAL_TARGET); activeChar.setIsInvul(false); activeChar.setIsParalyzed(false); activeChar.setKills(0); activeChar.setCodeRight(true); return false; } } if (!newpass.equals(repeatnewpass))//Wrong { if (activeChar.getTries() > 1) { activeChar.setTries(activeChar.getTries() -1); //Random image file name int imgId = IdFactory.getInstance().getNextId(); //Convertion from .png to .dds, and crest packed send try { File captcha = new File("data/captcha/captcha.png"); ImageIO.write(generateCaptcha(), "png", captcha); PledgeCrest packet = new PledgeCrest(imgId, DDSConverter.convertToDDS(captcha).array()); //Convertion to DDS where is antybot activeChar.sendPacket(packet); } catch (Exception e) { _log.warning(e.getMessage()); } //Paralyze, abnormal effect, invul, html with captcha output and start of the 1 min counter adminReply.setHtml("<html><title>Captcha Antibot System</title><body><center>Enter the 5-digits code below and click Confirm.<br><img src=\"Crest.crest_" + Config.SERVER_ID + "_" + imgId + "\" width=256 height=64><br><font color=\"888888\">(There are only english uppercase letters.)</font><br1><font color=\"FF0000\">Tries Left: " + activeChar.getTries() +"</font><br><edit var=\"antibot\" width=110><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>If you close by mistake this window,<br1>you can re-open it by typing \".captcha\" on Chat.<br1>You have 3 minutes to answer or you<br1>will get jailed.<br1>You have 3 tries, if you will<br1>answer wrong to all of them you<br1>will get punished.</center></body></html>"); activeChar.sendPacket(adminReply); activeChar.setCode(finalString); finalString.replace(0, 5, ""); return false; } activeChar.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 1); return false; } else { if (activeChar.getTries() > 1) { activeChar.setTries(activeChar.getTries() -1); //Random image file name int imgId = IdFactory.getInstance().getNextId(); //Convertion from .png to .dds, and crest packed send try { File captcha = new File("data/captcha/captcha.png"); ImageIO.write(generateCaptcha(), "png", captcha); PledgeCrest packet = new PledgeCrest(imgId, DDSConverter.convertToDDS(captcha).array()); //Convertion to DDS where is antybot activeChar.sendPacket(packet); } catch (Exception e) { _log.warning(e.getMessage()); } //Paralyze, abnormal effect, invul, html with captcha output and start of the 1 min counter adminReply.setHtml("<html><title>Captcha Antibot System</title><body><center>Enter the 5-digits code below and click Confirm.<br><img src=\"Crest.crest_" + Config.SERVER_ID + "_" + imgId + "\" width=256 height=64><br><font color=\"888888\">(There are only english uppercase letters.)</font><br1><font color=\"FF0000\">Tries Left: " + activeChar.getTries() +"</font><br><edit var=\"antibot\" width=110><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>If you close by mistake this window,<br1>you can re-open it by typing \".captcha\" on Chat.<br1>You have 3 minutes to answer or you<br1>will get jailed.<br1>You have 3 tries, if you will<br1>answer wrong to all of them you<br1>will get punished.</center></body></html>"); activeChar.sendPacket(adminReply); activeChar.setCode(finalString); finalString.replace(0, 5, ""); return false; } //here will run method with jailing player activeChar.stopAbnormalEffect(AbnormalEffect.REAL_TARGET); npcHtmlMessage.setHtml("<html><title>Captcha Antibot System</title><body><center><font color=\"FF0000\">You have wasted your Tries.<br><br></font><font color=\"66FF00\"><center></font><font color=\"FF0000\">You will be jailed.</font><br><button value=\"Exit\" action=\"bypass -h npc_%objectId%_Quest\" width=45 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); if (activeChar.isFlyingMounted()) activeChar.untransform(); activeChar.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 1); activeChar.setIsInvul(false); activeChar.setIsParalyzed(false); activeChar.sendPacket(npcHtmlMessage); return false; } } catch (Exception e) { activeChar.sendMessage("A problem occured while adding captcha!"); _log.log(Level.WARNING, "", e); } } else { if (activeChar.getTries() > 1) { activeChar.setTries(activeChar.getTries() -1); //Random image file name int imgId = IdFactory.getInstance().getNextId(); //Convertion from .png to .dds, and crest packed send try { File captcha = new File("data/captcha/captcha.png"); ImageIO.write(generateCaptcha(), "png", captcha); PledgeCrest packet = new PledgeCrest(imgId, DDSConverter.convertToDDS(captcha).array()); //Convertion to DDS where is antybot activeChar.sendPacket(packet); } catch (Exception e) { _log.warning(e.getMessage()); } //Paralyze, abnormal effect, invul, html with captcha output and start of the 1 min counter adminReply.setHtml("<html><title></title><body><center>Enter the 5-digits code below and click Confirm.<br><img src=\"Crest.crest_" + Config.SERVER_ID + "_" + imgId + "\" width=256 height=64><br><font color=\"888888\">(There are only english uppercase letters.)</font><br1><font color=\"FF0000\">Tries Left: " + activeChar.getTries() +"</font><br><edit var=\"antibot\" width=110><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>If you close by mistake this window,<br1>you can re-open it by typing \".captcha\" on Chat.<br1>You have 3 minutes to answer or you<br1>will get jailed.<br1>You have 3 tries, if you will<br1>answer wrong to all of them you<br1>will get punished.</center></body></html>"); activeChar.sendPacket(adminReply); activeChar.setCode(finalString); finalString.replace(0, 5, ""); return false; } //here will run method with jailing player activeChar.stopAbnormalEffect(AbnormalEffect.REAL_TARGET); npcHtmlMessage.setHtml("<html><title>Captcha Antibot System</title><body><center><font color=\"FF0000\">You have wasted your Tries.<br><br></font><font color=\"66FF00\"><center></font><font color=\"FF0000\">You will be jailed.</font><br><button value=\"Exit\" action=\"bypass -h npc_%objectId%_Quest\" width=45 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); if (activeChar.isFlyingMounted()) activeChar.untransform(); activeChar.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 1); activeChar.setIsInvul(false); activeChar.setIsParalyzed(false); activeChar.sendPacket(npcHtmlMessage); return false; } return true; } public String[] getVoicedCommandList() { return _voicedCommands; } } package handlers.voicedcommandhandlers; import gov.nasa.worldwind.formats.dds.DDSConverter; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; import net.sf.l2j.gameserver.idfactory.IdFactory; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.PledgeCrest; import net.sf.l2j.gameserver.skills.AbnormalEffect; /** * * @author Pipiou211 * */ public class Captcha implements IVoicedCommandHandler //when you click on confirm, also this code is running or something else? this, only, and just //unpara the targetpl { private static final String[] _voicedCommands = { "captcha" }; public static StringBuilder finalString = new StringBuilder(); NpcHtmlMessage adminReply = new NpcHtmlMessage(5); private static BufferedImage generateCaptcha() { Color textColor = new Color(98, 213, 43); Color circleColor = new Color(98, 213, 43); Font textFont = new Font("comic sans ms", Font.BOLD, 24); int charsToPrint = 5; int width = 256; int height = 64; int circlesToDraw = 8; float horizMargin = 20.0f; double rotationRange = 0.7; // this is radians BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D) bufferedImage.getGraphics(); //Draw an oval g.setColor(new Color(30,31,31)); g.fillRect(0, 0, width, height); // lets make some noisey circles g.setColor(circleColor); for ( int i = 0; i < circlesToDraw; i++ ) { int circleRadius = (int) (Math.random() * height / 2.0); int circleX = (int) (Math.random() * width - circleRadius); int circleY = (int) (Math.random() * height - circleRadius); g.drawOval(circleX, circleY, circleRadius * 2, circleRadius * 2); } g.setColor(textColor); g.setFont(textFont); FontMetrics fontMetrics = g.getFontMetrics(); int maxAdvance = fontMetrics.getMaxAdvance(); int fontHeight = fontMetrics.getHeight(); // Suggestions ---------------------------------------------------------------------- // i removed 1 and l and i because there are confusing to users... // Z, z, and N also get confusing when rotated // 0, O, and o are also confusing... // lowercase G looks a lot like a 9 so i killed it // this should ideally be done for every language... // i like controlling the characters though because it helps prevent confusion // So recommended chars are: // String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYabcdefhjkmnpqrstuvwxy23456789"; // Suggestions ---------------------------------------------------------------------- String elegibleChars = "ABCDEFGHJKLMPQRSTUVWXYZ"; char[] chars = elegibleChars.toCharArray(); float spaceForLetters = -horizMargin * 2 + width; float spacePerChar = spaceForLetters / (charsToPrint - 1.0f); for ( int i = 0; i < charsToPrint; i++ ) { double randomValue = Math.random(); int randomIndex = (int) Math.round(randomValue * (chars.length - 1)); char characterToShow = chars[randomIndex]; finalString.append(characterToShow); // this is a separate canvas used for the character so that // we can rotate it independently int charWidth = fontMetrics.charWidth(characterToShow); int charDim = Math.max(maxAdvance, fontHeight); int halfCharDim = (charDim / 2); BufferedImage charImage = new BufferedImage(charDim, charDim, BufferedImage.TYPE_INT_ARGB); Graphics2D charGraphics = charImage.createGraphics(); charGraphics.translate(halfCharDim, halfCharDim); double angle = (Math.random() - 0.5) * rotationRange; charGraphics.transform(AffineTransform.getRotateInstance(angle)); charGraphics.translate(-halfCharDim,-halfCharDim); charGraphics.setColor(textColor); charGraphics.setFont(textFont); int charX = (int) (0.5 * charDim - 0.5 * charWidth); charGraphics.drawString("" + characterToShow, charX, ((charDim - fontMetrics.getAscent()) / 2 + fontMetrics.getAscent())); float x = horizMargin + spacePerChar * (i) - charDim / 2.0f; int y = ((height - charDim) / 2); g.drawImage(charImage, (int) x, y, charDim, charDim, null, null); charGraphics.dispose(); } g.dispose(); return bufferedImage; } public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0); if (command.equalsIgnoreCase("captcha") && !activeChar.isCodeRight()) { if (activeChar.getTries() > 1) { activeChar.setTries(activeChar.getTries() -1); //Random image file name int imgId = IdFactory.getInstance().getNextId(); //Convertion from .png to .dds, and crest packed send try { File captcha = new File("data/captcha/captcha.png"); ImageIO.write(generateCaptcha(), "png", captcha); PledgeCrest packet = new PledgeCrest(imgId, DDSConverter.convertToDDS(captcha).array()); //Convertion to DDS where is antybot activeChar.sendPacket(packet); } catch (Exception e) { _log.warning(e.getMessage()); } //Paralyze, abnormal effect, invul, html with captcha output and start of the 1 min counter adminReply.setHtml("<html><title>Captcha Antibot System</title><body><center>Enter the 5-digits code below and click Confirm.<br><img src=\"Crest.crest_" + Config.SERVER_ID + "_" + imgId + "\" width=256 height=64><br><font color=\"888888\">(There are only english uppercase letters.)</font><br1><font color=\"FF0000\">Tries Left: " + activeChar.getTries() +"</font><br><edit var=\"antibot\" width=110><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><br>If you close by mistake this window,<br1>you can re-open it by typing \".captcha\" on Chat.<br1>You have 3 minutes to answer or you<br1>will get jailed.<br1>You have 3 tries, if you will<br1>answer wrong to all of them you<br1>will get punished.</center></body></html>"); activeChar.sendPacket(adminReply); activeChar.setCode(finalString); finalString.replace(0, 5, ""); return false; } activeChar.setTries(3); //here will run method with jailing player activeChar.stopAbnormalEffect(AbnormalEffect.REAL_TARGET); npcHtmlMessage.setHtml("<html><title>Captcha Antibot System</title><body><center><font color=\"FF0000\">You have wasted your Tries.<br><br></font><font color=\"66FF00\"><center></font><font color=\"FF0000\">You will be jailed.</font><br><button value=\"Exit\" action=\"bypass -h npc_%objectId%_Quest\" width=45 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></center></body></html>"); if (activeChar.isFlyingMounted()) activeChar.untransform(); activeChar.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 1); activeChar.setIsInvul(false); activeChar.setIsParalyzed(false); activeChar.sendPacket(npcHtmlMessage); return false; } else { return false; } //return false; } public String[] getVoicedCommandList() { return _voicedCommands; } } /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package handlers; import handlers.admincommandhandlers.*; import handlers.chathandlers.*; import handlers.itemhandlers.*; import handlers.skillhandlers.*; import handlers.usercommandhandlers.*; import handlers.voicedcommandhandlers.*; import handlers.voicedcommandhandlers.stats; import handlers.voicedcommandhandlers.AntiBot; import handlers.voicedcommandhandlers.Captcha; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.AdminCommandHandler; import net.sf.l2j.gameserver.handler.ChatHandler; import net.sf.l2j.gameserver.handler.ItemHandler; import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.handler.UserCommandHandler; import net.sf.l2j.gameserver.handler.VoicedCommandHandler; /** * * @author nBd */ public class MasterHandler { private static Logger _log = Logger.getLogger(MasterHandler.class.getName()); private static void loadAdminHandlers() { AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminAdmin()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminAnnouncements()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminBan()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminBBS()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminBuffs()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCache()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminChangeAccessLevel()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCreateItem()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminCursedWeapons()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminDelete()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminDisconnect()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminDoorControl()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminEditChar()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminEditNpc()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminEffects()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminElement()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminEnchant()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminEventEngine()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminExpSp()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminFightCalculator()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminFortSiege()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminGeodata()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminGeoEditor()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminGm()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminGmChat()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminHeal()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminHelpPage()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminInstance()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminInvul()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminKick()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminKill()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminLevel()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminLogin()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminMammon()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminManor()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminMenu()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminMobGroup()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminMonsterRace()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminPathNode()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminPetition()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminPForge()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminPledge()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminPolymorph()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminQuest()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminRepairChar()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminRes()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminRide()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminShop()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminShutdown()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminSiege()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminSkill()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminSpawn()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminSummon()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminTarget()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminTeleport()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminTest()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminTvTEvent()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminUnblockIp()); AdminCommandHandler.getInstance().registerAdminCommandHandler(new AdminZone()); _log.config("Loaded " + AdminCommandHandler.getInstance().size() + " AdminCommandHandlers"); } private static void loadChatHandlers() { ChatHandler.getInstance().registerChatHandler(new ChatAll()); ChatHandler.getInstance().registerChatHandler(new ChatAlliance()); ChatHandler.getInstance().registerChatHandler(new ChatClan()); ChatHandler.getInstance().registerChatHandler(new ChatHeroVoice()); ChatHandler.getInstance().registerChatHandler(new ChatParty()); ChatHandler.getInstance().registerChatHandler(new ChatPartyRoomAll()); ChatHandler.getInstance().registerChatHandler(new ChatPartyRoomCommander()); ChatHandler.getInstance().registerChatHandler(new ChatPetition()); ChatHandler.getInstance().registerChatHandler(new ChatShout()); ChatHandler.getInstance().registerChatHandler(new ChatTell()); ChatHandler.getInstance().registerChatHandler(new ChatTrade()); _log.config("Loaded " + ChatHandler.getInstance().size() + " ChatHandlers"); } private static void loadItemHandlers() { ItemHandler.getInstance().registerItemHandler(new ScrollOfResurrection()); ItemHandler.getInstance().registerItemHandler(new SoulShots()); ItemHandler.getInstance().registerItemHandler(new SpiritShot()); ItemHandler.getInstance().registerItemHandler(new BlessedSpiritShot()); ItemHandler.getInstance().registerItemHandler(new BeastSoulShot()); ItemHandler.getInstance().registerItemHandler(new BeastSpiritShot()); ItemHandler.getInstance().registerItemHandler(new PaganKeys()); ItemHandler.getInstance().registerItemHandler(new Maps()); ItemHandler.getInstance().registerItemHandler(new Potions()); ItemHandler.getInstance().registerItemHandler(new Recipes()); ItemHandler.getInstance().registerItemHandler(new RollingDice()); ItemHandler.getInstance().registerItemHandler(new EnchantAttribute()); ItemHandler.getInstance().registerItemHandler(new EnchantScrolls()); ItemHandler.getInstance().registerItemHandler(new ExtractableItems()); ItemHandler.getInstance().registerItemHandler(new Book()); ItemHandler.getInstance().registerItemHandler(new SoulCrystals()); ItemHandler.getInstance().registerItemHandler(new SevenSignsRecord()); ItemHandler.getInstance().registerItemHandler(new ItemSkills()); ItemHandler.getInstance().registerItemHandler(new Seed()); ItemHandler.getInstance().registerItemHandler(new Harvester()); ItemHandler.getInstance().registerItemHandler(new MercTicket()); ItemHandler.getInstance().registerItemHandler(new FishShots()); ItemHandler.getInstance().registerItemHandler(new PetFood()); ItemHandler.getInstance().registerItemHandler(new SpecialXMas()); ItemHandler.getInstance().registerItemHandler(new SummonItems()); ItemHandler.getInstance().registerItemHandler(new BeastSpice()); ItemHandler.getInstance().registerItemHandler(new TeleportBookmark()); ItemHandler.getInstance().registerItemHandler(new Elixir()); _log.config("Loaded " + ItemHandler.getInstance().size() + " ItemHandlers"); } private static void loadSkillHandlers() { SkillHandler.getInstance().registerSkillHandler(new Blow()); SkillHandler.getInstance().registerSkillHandler(new Pdam()); SkillHandler.getInstance().registerSkillHandler(new Mdam()); SkillHandler.getInstance().registerSkillHandler(new CpDam()); SkillHandler.getInstance().registerSkillHandler(new Manadam()); SkillHandler.getInstance().registerSkillHandler(new Heal()); SkillHandler.getInstance().registerSkillHandler(new CombatPointHeal()); SkillHandler.getInstance().registerSkillHandler(new ManaHeal()); SkillHandler.getInstance().registerSkillHandler(new BalanceLife()); SkillHandler.getInstance().registerSkillHandler(new Charge()); SkillHandler.getInstance().registerSkillHandler(new Continuous()); SkillHandler.getInstance().registerSkillHandler(new ChangeFace()); SkillHandler.getInstance().registerSkillHandler(new Resurrect()); SkillHandler.getInstance().registerSkillHandler(new ShiftTarget()); SkillHandler.getInstance().registerSkillHandler(new Spoil()); SkillHandler.getInstance().registerSkillHandler(new Sweep()); SkillHandler.getInstance().registerSkillHandler(new StrSiegeAssault()); SkillHandler.getInstance().registerSkillHandler(new SummonFriend()); SkillHandler.getInstance().registerSkillHandler(new SummonTreasureKey()); SkillHandler.getInstance().registerSkillHandler(new Disablers()); SkillHandler.getInstance().registerSkillHandler(new Recall()); SkillHandler.getInstance().registerSkillHandler(new BallistaBomb()); SkillHandler.getInstance().registerSkillHandler(new TakeCastle()); SkillHandler.getInstance().registerSkillHandler(new TakeFort()); SkillHandler.getInstance().registerSkillHandler(new Unlock()); SkillHandler.getInstance().registerSkillHandler(new DrainSoul()); SkillHandler.getInstance().registerSkillHandler(new Craft()); SkillHandler.getInstance().registerSkillHandler(new Fishing()); SkillHandler.getInstance().registerSkillHandler(new FishingSkill()); SkillHandler.getInstance().registerSkillHandler(new LearnSkill()); SkillHandler.getInstance().registerSkillHandler(new BeastFeed()); SkillHandler.getInstance().registerSkillHandler(new DeluxeKey()); SkillHandler.getInstance().registerSkillHandler(new Sow()); SkillHandler.getInstance().registerSkillHandler(new Soul()); SkillHandler.getInstance().registerSkillHandler(new Harvest()); SkillHandler.getInstance().registerSkillHandler(new GetPlayer()); SkillHandler.getInstance().registerSkillHandler(new TransformDispel()); SkillHandler.getInstance().registerSkillHandler(new Trap()); SkillHandler.getInstance().registerSkillHandler(new GiveSp()); SkillHandler.getInstance().registerSkillHandler(new InstantJump()); SkillHandler.getInstance().registerSkillHandler(new Dummy()); SkillHandler.getInstance().registerSkillHandler(new Extractable()); _log.config("Loaded " + SkillHandler.getInstance().size() + " SkillHandlers"); } private static void loadUserHandlers() { UserCommandHandler.getInstance().registerUserCommandHandler(new ClanPenalty()); UserCommandHandler.getInstance().registerUserCommandHandler(new ClanWarsList()); UserCommandHandler.getInstance().registerUserCommandHandler(new DisMount()); UserCommandHandler.getInstance().registerUserCommandHandler(new Escape()); UserCommandHandler.getInstance().registerUserCommandHandler(new InstanceZone()); UserCommandHandler.getInstance().registerUserCommandHandler(new Loc()); UserCommandHandler.getInstance().registerUserCommandHandler(new Mount()); UserCommandHandler.getInstance().registerUserCommandHandler(new PartyInfo()); UserCommandHandler.getInstance().registerUserCommandHandler(new Time()); UserCommandHandler.getInstance().registerUserCommandHandler(new OlympiadStat()); UserCommandHandler.getInstance().registerUserCommandHandler(new ChannelLeave()); UserCommandHandler.getInstance().registerUserCommandHandler(new ChannelDelete()); UserCommandHandler.getInstance().registerUserCommandHandler(new ChannelListUpdate()); _log.config("Loaded " + UserCommandHandler.getInstance().size() + " UserHandlers"); } private static void loadVoicedHandlers() { VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new AntiBot()); VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new Captcha()); VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new stats()); if (Config.L2JMOD_ALLOW_WEDDING) VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new Wedding()); if (Config.BANKING_SYSTEM_ENABLED) VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new Banking()); _log.config("Loaded " + VoicedCommandHandler.getInstance().size() + " VoicedHandlers"); } /** * @param args */ public static void main(String[] args) { _log.config("Loading Handlers..."); loadAdminHandlers(); loadChatHandlers(); loadItemHandlers(); loadSkillHandlers(); loadUserHandlers(); loadVoicedHandlers(); _log.config("Handlers Loaded..."); } }
  11. Kalhspera.. Tha ithela na rwtiso ean ginete na perasw se l2jserver interlude pack custom_armor/weapon/tele/npc apo frozen se l2j? Gnwrizei kanenas?
  12. Where I need to add "echo %TIME%" for time in L2J server gameserver and login .bat console? Just give me some example please. Ty in advance I have this by default but without TIME ... @echo off title Game Server Console :start echo Starting L2J Game Server. echo. java -Xms1536m -Xmx3072m -jar l2jserver.jar REM NOTE: If you have a powerful machine, you could modify/add some extra parameters for performance, like: REM -Xms1536m REM -Xmx3072m REM -XX:+AggressiveOpts REM Use this parameters carefully, some of them could cause abnormal behavior, deadlocks, etc. REM More info here: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html if ERRORLEVEL 2 goto restart if ERRORLEVEL 1 goto error goto end :restart echo. echo Admin Restarted Game Server. echo. goto start :error echo. echo Game Server Terminated Abnormally! echo. :end echo. echo Game Server Terminated. echo. pause
  13. Well, I have some java knowledge, but Im searching for someone who have solid knowldege to do some ideas I have, more stable than I can do. I have one idea/job right now, but if the guy knows and do the job fine I will contact him again and again for more work. My dev doesn't have time, then Im searching for other guy. If are u interest and have knowledge, send me a pm. Thanks for your time.
  14. I'm looking for the L2JServer's HightFive latest revision. I need a source code or compiled version, because the GitHub repository is closed right now... :( Anyone have it?
  15. As title say. I'm not the file owner, just found on 4Shared.. Enjoy!! DONWLOAD
  16. Well since, previous similar topics have dead links or are digged on previous pages, i'm posting this guide made by Prezicator. One more guide, never hurted anyone, since it may cover parts that other guides didn't, and people can take advantage of them. It is written based on l2jsunrise project, and will show you how to set up Eclipse, with automated updates from SVN and build your own server. We are using l2jsunrise's SVN url's which are not open to everyone, for more information visit their website, however you can use other project's SVN links and the process is the same. Enough with the talking part lets start working This Guide will show you how to : 1.Download Java Jdk & install 2.Download Eclipse 3.Download & install Eclispe Subversion 4.Checkout Sunrise Repositories & Build project 1.Download Java Jdk & install Go to http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Accept licence agreement and chose your version After download instal`it ( it simple dont need tutorial ) 2.Download Eclipse: Go to : Http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/marsr There chose your version and download You will download one archive with eclipse Extract where you want :) 3.Download & install Eclispe Subversion: Open Eclipse Chose your workspace (where you whant) and hit OK Close first page of eclipse Go to Help > Install New Software Hit Add Write name (what you whant) Paste link at location ( link : http://subeclipse.tigris.org/update_1.8.x ) Hit OK Check both Subeclipse and SVNKit Hit Next Hit Next Accept Terms & Finish Restart Eclipse! 4.Checkout Sunrise Repositories & Build project: Eclipse is alerdy restertated so go to Window > Show View > Other Go to SVN SVN Repositories Now we will get Sunrise Core Go to SVN Repositories Area , hit right click on blank area , hit New> Repository Location Instert url for sunrise core and hit Finish After repository is added is time to checkout our project Open sunrisecore repository And chose what version you want to checkout Trunk links are for sql version Brances links are for xml version Right Click on your version , hit Checkout > Check out as a project in the workspace > Finish And all is done you have Core source on your eclipse In order to compile Hit L2J_SunriseProject_Core > Right Click build > Run As > 1Ant Build All Done, your core is now compiled and ready for use. You will need to do the same for data. In order to get datapack you must follow same steps from "Now we will get Sunrise Core" but only url must be changed with datapack url Optional Step If you have problems compile datapack Close eclipse Download and install https://sliksvn.com/download/ restart pc In rare cases that core build fails: Once you have the JDK installation path:[/size] Right-click the My Computer icon on your desktop and select Properties. Click the Advanced tab, then click the Environment Variables button. Under System Variables, click New. Enter the variable name as JAVA_HOME. Enter the variable value as the installation path for the Java Development Kit. Click OK. Click Apply Changes. You might need to restart Windows. https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html
  17. tell me your problem and i give to you any solution, i can fix you or adapt any code skype contact: guztavoud payment method: paypal
  18. Hello everyone are welcome to l2 GaDeLanCe, our server will debut April 13. count on the presence of everyone in our humble servant, very dedicated, with several events and active protections below some information from our server. •BASE RATES ••• XP Rates: x200 ••• SP Rates: x200 ••• Adena Rates: x200 ############################################################ •ENCHANT RATES ••• Safe Enchant: x20 ••• Max Enchant: x20 ••• Normal Scroll: 100% ############################################################ •RAID & GRAND BOSS ••• Raid Boss Drop Rate: x2 ••• Grand Boss Drop Date: x1 ############################################################ •CUSTOM ITEMS ••Armors ••• Titanium (+ Shield): Skills Passives 100% ••Weapons ••• Hero Dual Weapons: Skills Passives 100% Balanced ••Reward Items ••• Event Coin: Skills Passives 100% Balanced ••• PvP Coin: 1 PvP = 1 Coin •REWARDS ••• TvT Event: 1 Event Coin ••• CTF Event: 1 Event Coin ••• DM Event: 2 Event Coins ••• TW Event: 2 PvP Coin By PvP ••• Siege Reward: The Clan Castle Winner receives a prize to all players at the end of the siege Online! ••• Weekend Reward: Events prepared by staff L2Gadelance for all weekends!! ############################################################ •SYSTEMS ••• Olympiads: 100%: Olympiad period changed to 1 week ••• Castle Siege: 100% ••• Seven Signs: 100% ••• HITMAN SYSTEM: 100% ••••• All Balanced Classes 100% Retail ••••• And much more, Sign in to find out! ############################################################ •DROP AREA ••• Imperial Graveyard: Hight Hight Level Area ••• Pavel Ruins: Hight Drop Adena ••• Monastery Of Silence: Hight Drop Scroll Enchant ••• Tower Of Silence 10: Hight Drop Giant Book Enchant ••• Tower Of Silence 11: Hight Drop Giant Book Enchant ••• Tower Of Silence 13: Hight Drop Giant Book Enchant ############################################################ •HOSTING ••• We paid dedicated server for 1 year and we promise to keep this server online and neat. ••• L2Gadelance aims to build a more peaceful and friendly community. We have the collaboration of the players to maintain order in our community. Visit our website: http://www.L2Gadelance.com Find us on Facebook: http://www.facebook.com/L2Gadelance We wait for you !!
  19. Here A present From Me. Like The Title Say's I'm Sharing My UsbPortable Platform. I Instaled Last L2jfree H5 Pack Version 1.0 Mysql Php Website Template Navicat Portable Full Java L2jServer last rev eclipse L2FileEdit L2Lige All you Need To Do is To Start The Program And Ping Pong You Have Succes Runing A l2 Server I will post later A Video tutorial VerSion 1.0 http://www.mediafire.com/download/bog4tkzomkikzug/UsbServer.exe On The New Update I will Share H5/interlude/Grecia Final Source's If You Have Any Sugestion Replay Here Video Tutorial https://www.youtube.com/embed/egezkWWq2DQ
  20. Hi everybody, im using the L2jServer BETA 10448 last udpated on September 24, 2014. Since i can't edit ingame monsters anymore, can someone make a code to get that function back please? I got cero knowledge of coding. Thanks.
  21. hello ppl from maxcheaters I would like to start a new l2server 8x-15x but i realy need your oppinion , what you prefer ? a clasic linege 2 game ? with clasic npc`s minor buffer , sgrade at luxury shop , and clasic quests ? and ofc ... Grand rb modified respawns and players required and buffs 1,2 hours or a featured one ? with alot of things in CB , no such alot quest needed and full buffer ? and ofc ... Grand rb modified respawns and players required and buffs 1,2 hours
  22. What I offer Server Hosting DDoS Protection (Invurable to any types of DDoS) Full installation of the server till it gets online Server's developing (my best bet, can do anything) What I want Serious people with motivation Not 1-2 Days servers Don't post here neither pm here, just add me on skype drake2wow
  23. kalispera tha ithela na rotisw ean ginete na kanw ena pack pou exw update