TouchAndDie
Members-
Posts
115 -
Credits
0 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by TouchAndDie
-
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
still same :-? -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
thank you very much, works great ! one more thing when i regain the buffs i get spammed 5-6 times with The effect of X has been removed. The effect of X has been removed. The effect of X has been removed. The effect of X has been removed. how can i solve that ? and how can i add a text when some one get cancelled to get a message like "You will regain your buffs in 10 seconds" -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
no error in console ( only first time but i changed com.l2jhidden.blablabla ) and still don't work :-? -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
hmm it doesn't work :'( -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
up :'( -
Help please! How to unlocked Hellbound
TouchAndDie replied to hernamewernau's question in Request Server Development Help [L2J]
go in data/scripts.ctf and delete or add a # ( in front of the lines ) lines: quests/130_PathToHellbound/__init__.py teleports/Warpgate/Warpgate.java -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
up -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
i know why it dosen't work, i need someone who can adapt the code :) -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
huh ? i have h5 , i think the code is for interlude -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
up... noone can adapt the code ? :( -
cancellation skill
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
i have deleted the old disablers file :( -
how can i add this : ### Eclipse Workspace Patch 1.0 #P Chr.6GMS Index: java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java =================================================================== --- java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (revision 5263) +++ java/net/sf/l2j/gameserver/handler/skillhandlers/Disablers.java (working copy) @@ -22,9 +22,13 @@ import java.util.logging.Level; import java.util.logging.Logger; +import javolution.util.FastList; + +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.ai.CtrlEvent; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.ai.L2AttackableAI; +import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.handler.ISkillHandler; import net.sf.l2j.gameserver.handler.SkillHandler; import net.sf.l2j.gameserver.model.L2Attackable; @@ -66,6 +70,28 @@ private float _negatePower=0.f; private int _negateId=0; + public class Canc implements Runnable{ + L2PcInstance j; + FastList<L2Effect> l; + + public Canc(L2PcInstance p,FastList<L2Effect> f){ + j = p; + l = f; + } + + public void run(){ + if(l.isEmpty()) + return; + for(L2Effect b : l) + { + L2Skill k = SkillTable.getInstance().getInfo(b.getSkill().getId(), b.getLevel()); + if(k != null) + k.getEffects(j, j); + } + l.clear(); + } + } + @Override public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { @@ -454,31 +480,30 @@ if(Rnd.get(100) < landrate) { - L2Effect[] effects = target.getAllEffects(); - int maxfive = 5; - for (L2Effect e : effects) - { - if (e.getSkill().getId() != 4082 && e.getSkill().getId() != 4215 && - e.getSkill().getId() != 4515 && e.getSkill().getId() != 110 && e.getSkill().getId() != 111 && - e.getSkill().getId() != 1323 && e.getSkill().getId() != 1325) // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 - { - if(e.getSkill().getSkillType() != SkillType.BUFF) //sleep, slow, surrenders etc - e.exit(); - else - { - int rate = 100; - int level = e.getLevel(); - if (level > 0) rate = Integer.valueOf(150/(1 + level)); - if (rate > 95) rate = 95; - else if (rate < 5) rate = 5; - if(Rnd.get(100) < rate) { - e.exit(); - maxfive--; - if(maxfive == 0) break; - } - } + L2PcInstance p = null; + if(target instanceof L2PcInstance) + p = (L2PcInstance) target; + + if(p != null){ + L2Effect[] l = p.getAllEffects(); + int r = Rnd.get(6); + if(l.length < r){} + int i = 0; + for(L2Effect h : l){ + int id = h.getSkill().getId(); + if(id == 4082 || id == 4515 || id == 110 || id == 111 || id == 1323 || id == 1325) + continue; + if(i == r) + break; + + i++; + p.addRemovedBuff(h); + h.exit(); } + ThreadPoolManager.getInstance().scheduleGeneral(new Canc(p,p.getRemovedBuffs()), 6000); } + // Cannot cancel skills 4082, 4215, 4515, 110, 111, 1323, 1325 + } else { if (activeChar instanceof L2PcInstance) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5263) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -408,6 +408,8 @@ /** True if the L2PcInstance is using the relax skill */ private boolean _relax; + + private FastList<L2Effect> removedBuffs = new FastList<L2Effect>(); /** Location before entering Observer Mode */ private int _obsX; @@ -8215,6 +8217,19 @@ return true; } + + public FastList<L2Effect> getRemovedBuffs(){ + return removedBuffs; + } + + public void addRemovedBuff(L2Effect j){ + removedBuffs.add(j); + } + public boolean isNoble() { return _noble; to http://pastebin.com/T8zGJteb ( high 5 client ) i tried but it don't work.. its very different :-? ( in l2pcinstance.java i have add the codes.. but i cannot do it in disablers.java )
-
How can i make a mob example gremlin to give +5 levels every time when i kill one ? even if i have level 80 and the mob have level 1 ...
-
hello... i have a DM event but when the npc spawn and i click on him, html don't appear :| weard .. http://pastebin.com/NXBMZqcU also i have in l2npc.java this _isEventMobDM ... :-?
-
[help] tvt skills
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
nope.. now i get more warnings :( -
[help] tvt skills
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
how can i fix it ? -
i found something useless on l2jserver forum and i can't figured out why i get warning :-? error: Syntax error on token "L2Character", VariableDeclaratorId expected after this token code: this code is in model->l2skill.java
-
[HELP] Rin4a's Buffer or another scheme buffer Hi5 please
TouchAndDie replied to Heero's question in Request Server Development Help [L2J]
http://www66.zippyshare.com/v/45347371/file.html make a folder in /scripts/custom/ named SchemeBuffer and paste the file ( __init__.py ), then add in scripts.cfg this line: custom/SchemeBuffer/__init__.py npc id 36607 change it if you want :D -
How can i make in events the aoe skills, hit only the target ? Or use aoe skill but teammates don't take damage/curses...
-
Gatekeeper Script
TouchAndDie replied to NeoDark's question in Request Server Development Help [L2J]
add this bellow else if (!Config.ALT_GAME_KARMA_PLAYER_CAN_USE_GK && player.getKarma() > 0) //karma in L2TeleporterInstance.java else if (player.getPvpFlag() > 0) // pvp { player.sendMessage("Go away, you're flagged."); return; } -
[Help]Remove skills
TouchAndDie replied to zourass's question in Request Server Development Help [L2J]
you mean cancellation ? -
[ help ] items on class change
TouchAndDie replied to TouchAndDie's question in Request Server Development Help [L2J]
up ... i have add this: // Reward players with Bracelet if (player.getClassId().level() == 2 && player.getLevel() >= 76) { if (player.getClassId().getId() == 5 || player.getClassId().getId() == 6 || player.getClassId().getId() == 20 || player.getClassId().getId() == 33) { player.addItem("ClassMaster", 40002, 1, player, true); // Knight's Bracelet } else if (player.getClassId().getId() == 9 || player.getClassId().getId() == 24 || player.getClassId().getId() == 37 || player.getClassId().getId() == 130) { player.addItem("ClassMaster", 40003, 1, player, true); // Archer's Bracelet } else if (player.getClassId().getId() == 17 || player.getClassId().getId() == 21 || player.getClassId().getId() == 34 || player.getClassId().getId() == 51 || player.getClassId().getId() == 52) { player.addItem("ClassMaster", 40004, 1, player, true); // Enchanter's Bracelet } else if (player.getClassId().getId() == 16 || player.getClassId().getId() == 30 || player.getClassId().getId() == 43) { player.addItem("ClassMaster", 40005, 1, player, true); // Healer's Bracelet } else if (player.getClassId().getId() == 8 || player.getClassId().getId() == 23 || player.getClassId().getId() == 36 || player.getClassId().getId() == 55) { player.addItem("ClassMaster", 40006, 1, player, true); // Rogue's Bracelet } else if (player.getClassId().getId() == 2 || player.getClassId().getId() == 3 || player.getClassId().getId() == 57 || player.getClassId().getId() == 46 || player.getClassId().getId() == 47 || player.getClassId().getId() == 127) { player.addItem("ClassMaster", 40007, 1, player, true); // Warrior's Bracelet } else if (player.getClassId().getId() == 14 || player.getClassId().getId() == 28 || player.getClassId().getId() == 41) { player.addItem("ClassMaster", 40008, 1, player, true); // Summoner's Bracelet } else if (player.getClassId().getId() == 12 || player.getClassId().getId() == 13 || player.getClassId().getId() == 27 || player.getClassId().getId() == 40 || player.getClassId().getId() == 128 || player.getClassId().getId() == 129) { player.addItem("ClassMaster", 40009, 1, player, true); // Wizard's Bracelet } } but it give the item to subclass too, how can i make it to give only to base class ? -
[ help ] items on class change
TouchAndDie posted a question in Request Server Development Help [L2J]
how can i add class item .. i mean if i am paladin and i make 3rd class -> phoenix knight i get knight's bracelet ( if i am soultaker, 3rd class -> necromancer i get wizard's bracelet ) , i can't figured out how to code it ( reward item ) /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package com.l2jserver.gameserver.model.actor.instance; import com.l2jserver.Config; import com.l2jserver.gameserver.cache.HtmCache; import com.l2jserver.gameserver.datatables.CharTemplateTable; import com.l2jserver.gameserver.datatables.ItemTable; import com.l2jserver.gameserver.instancemanager.QuestManager; import com.l2jserver.gameserver.model.base.ClassId; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo; import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; import com.l2jserver.gameserver.network.serverpackets.TutorialCloseHtml; import com.l2jserver.gameserver.network.serverpackets.TutorialShowHtml; import com.l2jserver.gameserver.network.serverpackets.TutorialShowQuestionMark; import com.l2jserver.gameserver.network.serverpackets.UserInfo; import com.l2jserver.gameserver.templates.chars.L2NpcTemplate; import com.l2jserver.util.StringUtil; /** * This class ... * * @version $Revision: 1.4.2.1.2.7 $ $Date: 2005/03/27 15:29:32 $ */ public final class L2ClassMasterInstance extends L2MerchantInstance { /** * @param objectId * @param template */ public L2ClassMasterInstance(int objectId, L2NpcTemplate template) { super(objectId, template); setInstanceType(InstanceType.L2ClassMasterInstance); } @Override public String getHtmlPath(int npcId, int val) { String pom = ""; if (val == 0) pom = "" + npcId; else pom = npcId + "-" + val; return "data/html/classmaster/" + pom + ".htm"; } @Override public void onBypassFeedback(L2PcInstance player, String command) { if(command.startsWith("1stClass")) { showHtmlMenu(player, getObjectId(), 1); } else if(command.startsWith("2ndClass")) { showHtmlMenu(player, getObjectId(), 2); } else if(command.startsWith("3rdClass")) { showHtmlMenu(player, getObjectId(), 3); } else if(command.startsWith("change_class")) { int val = Integer.parseInt(command.substring(13)); if (checkAndChangeClass(player, val)) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/ok.htm"); html.replace("%name%", CharTemplateTable.getInstance().getClassNameById(val)); player.sendPacket(html); } } else if(command.startsWith("become_noble")) { if (!player.isNoble()) { player.setNoble(true); player.sendPacket(new UserInfo(player)); player.sendPacket(new ExBrExtraUserInfo(player)); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nobleok.htm"); player.sendPacket(html); } } else if(command.startsWith("learn_skills")) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true); } else if(command.startsWith("increase_clan_level")) { if (!player.isClanLeader()) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/noclanleader.htm"); player.sendPacket(html); } else if (player.getClan().getLevel() >= 5) { NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player.getHtmlPrefix(), "data/html/classmaster/noclanlevel.htm"); player.sendPacket(html); } else { player.getClan().changeLevel(5); } } else { super.onBypassFeedback(player, command); } } public static final void onTutorialLink(L2PcInstance player, String request) { if (!Config.ALTERNATE_CLASS_MASTER || request == null || !request.startsWith("CO")) return; if (!player.getFloodProtectors().getServerBypass().tryPerformAction("changeclass")) return; try { int val = Integer.parseInt(request.substring(2)); checkAndChangeClass(player, val); } catch (NumberFormatException e) { } player.sendPacket(new TutorialCloseHtml()); } public static final void onTutorialQuestionMark(L2PcInstance player, int number) { if (!Config.ALTERNATE_CLASS_MASTER || number != 1001) return; showTutorialHtml(player); } public static final void showQuestionMark(L2PcInstance player) { if (!Config.ALTERNATE_CLASS_MASTER) return; final ClassId classId = player.getClassId(); if (getMinLevel(classId.level()) > player.getLevel()) return; if (!Config.CLASS_MASTER_SETTINGS.isAllowed(classId.level()+1)) return; player.sendPacket(new TutorialShowQuestionMark(1001)); } private static final void showHtmlMenu(L2PcInstance player, int objectId, int level) { NpcHtmlMessage html = new NpcHtmlMessage(objectId); if (!Config.ALLOW_CLASS_MASTERS) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/disabled.htm"); } else if (!Config.CLASS_MASTER_SETTINGS.isAllowed(level)) { int jobLevel = player.getClassId().level(); final StringBuilder sb = new StringBuilder(100); sb.append("<html><body>"); switch (jobLevel) { case 0: if (Config.CLASS_MASTER_SETTINGS.isAllowed(1)) sb.append("Come back here when you reached level 20 to change your class.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(2)) sb.append("Come back after your first occupation change.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back after your second occupation change.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 1: if (Config.CLASS_MASTER_SETTINGS.isAllowed(2)) sb.append("Come back here when you reached level 40 to change your class.<br>"); else if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back after your second occupation change.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 2: if (Config.CLASS_MASTER_SETTINGS.isAllowed(3)) sb.append("Come back here when you reached level 76 to change your class.<br>"); else sb.append("I can't change your occupation.<br>"); break; case 3: sb.append("There is no class change available for you anymore.<br>"); break; } sb.append("</body></html>"); html.setHtml(sb.toString()); } else { final ClassId currentClassId = player.getClassId(); if (currentClassId.level() >= level) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nomore.htm"); } else { final int minLevel = getMinLevel(currentClassId.level()); if (player.getLevel() >= minLevel || Config.ALLOW_ENTIRE_TREE) { final StringBuilder menu = new StringBuilder(100); for (ClassId cid : ClassId.values()) { if (cid == ClassId.inspector && player.getTotalSubClasses() < 2) continue; if (validateClassId(currentClassId, cid) && cid.level() == level) { StringUtil.append(menu, "<a action=\"bypass -h npc_%objectId%_change_class ", String.valueOf(cid.getId()), "\">", CharTemplateTable.getInstance().getClassNameById(cid.getId()), "</a><br>" ); } } if (menu.length() > 0) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/template.htm"); html.replace("%name%", CharTemplateTable.getInstance().getClassNameById(currentClassId.getId())); html.replace("%menu%", menu.toString()); } else { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/comebacklater.htm"); html.replace("%level%", String.valueOf(getMinLevel(level - 1))); } } else { if (minLevel < Integer.MAX_VALUE) { html.setFile(player.getHtmlPrefix(), "data/html/classmaster/comebacklater.htm"); html.replace("%level%", String.valueOf(minLevel)); } else html.setFile(player.getHtmlPrefix(), "data/html/classmaster/nomore.htm"); } } } html.replace("%objectId%", String.valueOf(objectId)); html.replace("%req_items%", getRequiredItems(level)); player.sendPacket(html); } private static final void showTutorialHtml(L2PcInstance player) { final ClassId currentClassId = player.getClassId(); if (getMinLevel(currentClassId.level()) > player.getLevel() && !Config.ALLOW_ENTIRE_TREE) return; String msg = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/classmaster/tutorialtemplate.htm"); msg = msg.replaceAll("%name%", CharTemplateTable.getInstance().getClassNameById(currentClassId.getId())); final StringBuilder menu = new StringBuilder(100); for (ClassId cid : ClassId.values()) { if (cid == ClassId.inspector && player.getTotalSubClasses() < 2) continue; if (validateClassId(currentClassId, cid)) { StringUtil.append(menu, "<a action=\"link CO", String.valueOf(cid.getId()), "\">", CharTemplateTable.getInstance().getClassNameById(cid.getId()), "</a><br>" ); } } msg = msg.replaceAll("%menu%", menu.toString()); msg = msg.replace("%req_items%", getRequiredItems(currentClassId.level()+1)); player.sendPacket(new TutorialShowHtml(msg)); } private static final boolean checkAndChangeClass(L2PcInstance player, int val) { final ClassId currentClassId = player.getClassId(); if (getMinLevel(currentClassId.level()) > player.getLevel() && !Config.ALLOW_ENTIRE_TREE) return false; if (!validateClassId(currentClassId, val)) return false; int newJobLevel = currentClassId.level() + 1; // Weight/Inventory check if(!Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).isEmpty() && !player.isInventoryUnder80(false)) { player.sendPacket(SystemMessageId.INVENTORY_LESS_THAN_80_PERCENT); return false; } // check if player have all required items for class transfer for (int _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keys()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId); if (player.getInventory().getInventoryItemCount(_itemId, -1) < _count) { player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); return false; } } // get all required items for class transfer for (int _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).keys()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(newJobLevel).get(_itemId); if (!player.destroyItemByItemId("ClassMaster", _itemId, _count, player, true)) return false; } // reward player with items for (int _itemId : Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).keys()) { int _count = Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).get(_itemId); player.addItem("ClassMaster", _itemId, _count, player, true); } player.setClassId(val); if (player.isSubClassActive()) player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass()); else player.setBaseClass(player.getActiveClass()); Quest q = QuestManager.getInstance().getQuest("SkillTransfer"); if (q != null) q.startQuestTimer("givePormanders", 1, null, player); player.broadcastUserInfo(); if(Config.CLASS_MASTER_SETTINGS.isAllowed(player.getClassId().level() + 1) && Config.ALTERNATE_CLASS_MASTER && ((player.getClassId().level() == 1 && player.getLevel() >= 40) || (player.getClassId().level() == 2 && player.getLevel() >= 76))) showQuestionMark(player); return true; } /** * @param level - current skillId level (0 - start, 1 - first, etc) * @return minimum player level required for next class transfer */ private static final int getMinLevel(int level) { switch (level) { case 0: return 20; case 1: return 40; case 2: return 76; default: return Integer.MAX_VALUE; } } /** * Returns true if class change is possible * @param oldCID current player ClassId * @param val new class index * @return */ private static final boolean validateClassId(ClassId oldCID, int val) { try { return validateClassId(oldCID, ClassId.values()[val]); } catch (Exception e) { // possible ArrayOutOfBoundsException } return false; } /** * Returns true if class change is possible * @param oldCID current player ClassId * @param newCID new ClassId * @return true if class change is possible */ private static final boolean validateClassId(ClassId oldCID, ClassId newCID) { if (newCID == null || newCID.getRace() == null) return false; if (oldCID.equals(newCID.getParent())) return true; if (Config.ALLOW_ENTIRE_TREE && newCID.childOf(oldCID)) return true; return false; } private static String getRequiredItems(int level) { if (Config.CLASS_MASTER_SETTINGS.getRequireItems(level) == null || Config.CLASS_MASTER_SETTINGS.getRequireItems(level).isEmpty()) return "<tr><td>none</td></r>"; StringBuilder sb = new StringBuilder(); for (int _itemId : Config.CLASS_MASTER_SETTINGS.getRequireItems(level).keys()) { int _count = Config.CLASS_MASTER_SETTINGS.getRequireItems(level).get(_itemId); sb.append("<tr><td><font color=\"LEVEL\">" + _count + "</font></td><td>" + ItemTable.getInstance().getTemplate(_itemId).getName() + "</td></tr>"); } return sb.toString(); } } i think it should be here : // reward player with items for (int _itemId : Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).keys()) { int _count = Config.CLASS_MASTER_SETTINGS.getRewardItems(newJobLevel).get(_itemId); player.addItem("ClassMaster", _itemId, _count, player, true); } i tried but .. without succes :) -
go in Database -> Npcskills -> delete all rows with id 13136
-
[ Help ] Only one Stadium in Hi5
TouchAndDie posted a question in Request Server Development Help [L2J]
How can i enable only one stadium in hi5 ? ( grassy arena )