0flee Posted April 22, 2020 Posted April 22, 2020 How i can make Delevel Manager With request item for delevel + reward for delevel? Was something with L2ItemInstance, but i don;t know how. I want to take from players 1 kk adena and give 1 apiga. Thank you ! Quote
0 TGSLineage2 Posted April 23, 2020 Posted April 23, 2020 Boolean method that asks if the item exists and you have enough to destroy, if so destroy the item and then execute what is inside the condition. Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 (edited) Yea, no work for me, thx all for attentions. everything i do, no work. I have lv 80 and item for destroy, Delevel Manager has telling me i no have lv 801..... Edited April 23, 2020 by 0flee Quote
0 TGSLineage2 Posted April 23, 2020 Posted April 23, 2020 (edited) Try this player.removeExpAndSp(ExperienceData.getInstance().getExpForLevel(55), 0); player.broadcastUserInfo(); Do you want it reduced to 55 or 30 levels? Edited April 23, 2020 by TGSLineage2 Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 I want after level 80 ( till level 85) player downlevel to 55. Quote
0 TGSLineage2 Posted April 23, 2020 Posted April 23, 2020 (edited) 13 minutes ago, 0flee said: I want after level 80 ( till level 85) player downlevel to 55. assuming the method you are using is void type, you should ask at the beginning. if (player.getLevel() <= 80) { player.sendMessage("You don't have the level necessary to perform this action") return; } Edited April 23, 2020 by TGSLineage2 Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 I try this before, unsuccessfully. Btw, i find a voice command to do that except npc. But it is in Greek and it is for interlude, and i try to adapt L2j-Sunrise , but idk if i can. Spoiler Quote
0 melron Posted April 23, 2020 Posted April 23, 2020 try this one if (player.getLevel >= 80 && player.getLevel <= 85) // Only 80 .. 85 levels if (player.destroyItemByItemId("delevel", 57, 1000, null, true)) // Check the destroy item { player.removeExpAndSp(player.getExp() - ExperienceData.getInstance().getExpForLevel(55), 0); //remove the xp player.addItem("delevel-reward", 7575, 1, null, true); // reward } Note: If this will not work, then you should look before this code if something doesn't allow the conditions Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 (edited) Yea, i did it on voice command. Now i must find that way to do delevel after lv 80. I try if (player.getLevel >= 80 && player.getLevel <= 85) // Only 80 .. 85 levels and chat still sau i no have requirements to do delevel. Edited April 23, 2020 by 0flee Quote
0 melron Posted April 23, 2020 Posted April 23, 2020 21 minutes ago, 0flee said: Yea, i did it on voice command. Now i must find that way to do delevel after lv 80. I try if (player.getLevel >= 80 && player.getLevel <= 85) // Only 80 .. 85 levels and chat still sau i no have requirements to do delevel. maybe you should post exactly what message you are receiving. also, post the whole code here in code tags Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 (edited) Ok, i have level 80 and i can;t do delevel. just on level 85. I will post here code. http:// Spoiler public class DelevelCmd implements IVoicedCommandHandler { private static final String[] VOICED_COMMANDS = { "delevel" }; public static final int ZONE_PEACE = 2; /* * (non-Javadoc) * @see l2r.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(String, l2r.gameserver.model.L2PcInstance), String) */ @Override public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { if (command.startsWith("delevel")) { requestDelevel(activeChar); } return true; } public boolean requestDelevel(L2PcInstance activeChar) { Siege siege = SiegeManager.getInstance().getSiege(activeChar); // Check the activeChar's level. if (activeChar.getLevel() <= 80) { activeChar.sendMessage("You do not meet the level requirement for Delevel!"); return false; } // Check activeChar if have SubClass else if (activeChar.isSubClassActive()) { activeChar.sendMessage("Please switch to your Main Class before attempting Delevel."); return false; } // Check activeChar if in Peace Zone else if (!activeChar.isInsideZone(ZoneIdType.PEACE)) { activeChar.sendMessage("You can only Delevel in peace zone."); return false; } // Check activeChar is death/fake death and movement disable else if (activeChar.isMovementDisabled() || activeChar.isAlikeDead()) { activeChar.sendMessage("You can't Delevel on death mode"); return false; } // Check if activeChar is in Siege else if ((siege != null) && siege.isInProgress()) { activeChar.sendMessage("You are in siege, you can't Delevel."); return false; } // Check if activeChar is a Cursed Weapon owner else if (activeChar.isCursedWeaponEquipped()) { activeChar.sendMessage("You can't Delevel! You are currently holding a cursed weapon."); return false; } // Check if activeChar is in Duel else if (activeChar.isInDuel()) { activeChar.sendMessage("You can't Delevel You are in a duel!"); return false; } // Check is in DimensionsRift else if (activeChar.isInParty() && activeChar.getParty().isInDimensionalRift()) { activeChar.sendMessage("You can't Delevel! You are in the dimensional rift."); return false; } // Check to see if the activeChar is in an event else if (activeChar.isOnEvent()) { activeChar.sendMessage("You can't Delevel! You are in event now."); return false; } // Check activeChar is in Olympiade else if (activeChar.isInOlympiadMode() || (activeChar.getOlympiadGameId() != -1)) { activeChar.sendMessage("You can't Delevel! Your are fighting in Olympiad!"); return false; } // Check activeChar is in observer mode else if (activeChar.inObserverMode()) { activeChar.sendMessage("You can't Delevel in Observer mode!"); return false; } // Check activeChar have karma/pk/pvp status if ((activeChar.getKarma() > 0) || (activeChar.getPvpFlag() > 0)) { activeChar.sendMessage("player in PVP or with Karma can't use the Delevel command!"); return false; } // Check if activeChar have no one in target else if (activeChar.getTarget() == null) { activeChar.sendMessage("You can't have any one in your target when Delevel only your self."); return false; } // If activeChar have not any of theis can delevel delevelstart(activeChar); return true; } public boolean delevelstart(L2PcInstance activeChar) { try { if (activeChar.destroyItemByItemId("Delevel", 3470, 10, null, true)) { activeChar.sendMessage("You don't have enough Gold Bar."); } { activeChar.addItem("delevel-reward", 7575, 1, null, true); activeChar.sendMessage("Congratulation)" + activeChar.getName() + (" you are on level 55.")); } activeChar.getCurrentHp(); activeChar.getCurrentCp(); int max_level = ExperienceData.getInstance().getMaxLevel(); // Protections Integer returnToLevel = 55; if (returnToLevel < 1) { returnToLevel = 1; } if (returnToLevel > max_level) { returnToLevel = max_level; } // Resets character to first class. activeChar.broadcastUserInfo(); final byte lvl = Byte.parseByte(returnToLevel + ""); final long pXp = activeChar.getStat().getExp(); final long tXp = ExperienceData.getInstance().getExpForLevel(lvl); if (pXp > tXp) { activeChar.getStat().removeExpAndSp(pXp - tXp, 0); } else if (pXp < tXp) { activeChar.getStat().addExpAndSp(tXp - pXp, 0); } // restore Hp-Mp-Cp activeChar.setCurrentCp(activeChar.getMaxRecoverableCp()); activeChar.setCurrentMp(activeChar.getMaxRecoverableMp()); activeChar.setCurrentHp(activeChar.getMaxRecoverableMp()); activeChar.broadcastStatusUpdate(); // Updates the activeChar's information in the Character Database. activeChar.store(); // Update skill list activeChar.sendSkillList(); } catch (Exception e) { e.printStackTrace(); } return true; } @Override public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Edited April 23, 2020 by 0flee Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 (edited) OK guys, i solve it. the problem was "=" from <=80. Now i leave it < 80 and it's working. thx again. Now i want to know how i can count them. it is player.getCountDelevel()? Edited April 23, 2020 by 0flee Quote
0 melron Posted April 23, 2020 Posted April 23, 2020 the code that you posted can destroy your server ... Quote
0 0flee Posted April 23, 2020 Author Posted April 23, 2020 And how i can fix it? @melron? what i can do? Quote
Question
0flee
How i can make Delevel Manager With request item for delevel + reward for delevel?
Was something with L2ItemInstance, but i don;t know how.
I want to take from players 1 kk adena and give 1 apiga. Thank you !
28 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.