Jump to content

Leonidas44

Members
  • Posts

    13
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

About Leonidas44

Profile Information

  • Gender
    Male
  • Country
    Greece

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Leonidas44's Achievements

Apprentice

Apprentice (3/16)

  • One Month Later Rare
  • Collaborator Rare
  • Week One Done Rare
  • First Post Rare
  • Dedicated Rare

Recent Badges

0

Reputation

  1. Hello mxc community, I come to ask You a favor. While developing L2Mythras file source I ran up to a problem. More of less Mana Potions when flagged as automatic use would not put item itself on reuse delay. Screens might show You how it's working for now BEFORE AFTER As You can see Auto Recharger consumed Mana Potion and gave MP back but I'm able to click on Mana Potion with left mouse button to get another 1k MP :') Ideally I'd like to change this code: package l2f.gameserver.taskmanager; import java.util.concurrent.Future; import l2f.commons.threading.RunnableImpl; import l2f.commons.threading.SteppingRunnableQueueManager; import l2f.gameserver.ThreadPoolManager; import l2f.gameserver.handler.items.IItemHandler; import l2f.gameserver.model.Player; import l2f.gameserver.model.Skill; import l2f.gameserver.model.items.ItemInstance; import l2f.gameserver.network.serverpackets.SystemMessage; import l2f.gameserver.network.serverpackets.UserInfo; import l2f.gameserver.scripts.Functions; import l2f.gameserver.utils.ItemFunctions; public class AutoRechargeManager extends SteppingRunnableQueueManager { private static final AutoRechargeManager _instance = new AutoRechargeManager(); private static final int TYPE_CP = 0x01; private static final int TYPE_HP = 0x02; private static final int TYPE_MP = 0x03; private static final long CP_CHECK_TIME = 1000L; // 3 sec private static final long MP_CHECK_TIME = 7000L; // 7 sec (actually is 8, because task is set every second) private static final long HP_CHECK_TIME = 7000L; // 7 sec public static final AutoRechargeManager getInstance() { return _instance; } private AutoRechargeManager() { super(10000L); ThreadPoolManager.getInstance().scheduleAtFixedRate(this, 1000L, 1000L); ThreadPoolManager.getInstance().scheduleAtFixedRate(new RunnableImpl() { @Override public void runImpl() { AutoRechargeManager.this.purge(); } }, 60000L, 60000L); } public Future<?> addAutoChargeTask(final Player player) { long delay = 1000L; return scheduleAtFixedRate(new RunnableImpl() { private long msHpLastCheck = System.currentTimeMillis(); private long msMpLastCheck = System.currentTimeMillis(); private long msCpLastCheck = System.currentTimeMillis(); public boolean consumeItem(int itemId) { if (ItemFunctions.getItemCount(player, itemId) > 0) { Skill[] itemSkills = player.getInventory().getItemByItemId(itemId).getTemplate().getAttachedSkills(); if (itemSkills.length > 0) { for (Skill itemSkill : itemSkills) { player.altUseSkill(itemSkill, player); } } } else return false; return true; } public void runValidationAndConsume(int type, int itemId, double percent) { switch (type) { case TYPE_CP: if ((player.getCurrentCp() / player.getMaxCp()) <= percent) { if (!consumeItem(itemId)) { player.AutoCp(false); } } break; case TYPE_HP: if((player.getCurrentHp() / player.getMaxHp()) <= percent) { if (!consumeItem(itemId)) { player.AutoHp(false); } } break; case TYPE_MP: if((player.getCurrentMp() / player.getMaxMp()) <= percent) { if (!consumeItem(itemId)) { player.AutoMp(false); } } break; } player.broadcastStatusUpdate(); player.broadcastCharInfo(); player.sendPacket(new UserInfo(player)); } @Override public void runImpl() { long current = System.currentTimeMillis(); if(player.isAfraid() || player.isAlikeDead() || player.isInOlympiadMode() || player.isDead() || player.isInFightClub() || player.isInTvT()) return; if(player._autoCp && (current >= (msCpLastCheck + CP_CHECK_TIME))) { runValidationAndConsume(TYPE_CP, Player.autoCp, 0.95); msCpLastCheck = current; //_log.info("Checking CP"); } if(player._autoHp && (current >= (msHpLastCheck + HP_CHECK_TIME))) { runValidationAndConsume(TYPE_HP, Player.autoHp, 0.70); msHpLastCheck = current; //_log.info("Checking HP"); } if(player._autoMp && (current >= (msMpLastCheck + MP_CHECK_TIME))) { runValidationAndConsume(TYPE_MP, Player.autoMp, 0.75); msMpLastCheck = current; //_log.info("Checking MP"); } } }, delay, delay); } } Here is Mana Potion XML and skill itself: <etcitem id="728" name="Mana Potion"> <set name="icon" value="icon.etc_reagent_blue_i00"/> <set name="class" value="OTHER"/> <set name="weight" value="0"/> <set name="stackable" value="true"/> <set name="tradeable" value="true"/> <set name="dropable" value="true"/> <set name="type" value="OTHER"/> <set name="reuse_delay" value="13000"/> <skills> <skill id="90001" level="1"/> </skills> <cond msgId="1508"> <not> <player olympiad="true"/> </not> </cond> </etcitem> <skill id="90001" levels="2" name="Mana potion"> <table name="#power">1000 1300 </table> <table name="#val">1 0</table> <table name="#val2">728 37001</table> <set name="icon" val="" /> <set name="displayId" val="2005" /> <set name="reuseDelay" val="7000" /> <set name="itemConsumeId" val="#val2" /> <set name="itemConsumeCount" val="#val" /> <set name="isHandler" val="true" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="MANAHEAL" /> <set name="power" val="#power" /> <set name="operateType" val="OP_ACTIVE" /> <set name="altUse" val="true" /> </skill> I was also thinking about manually adding the same packet handler as it is for Left Click on skillbar. Potion then consumes itself and puts item on reuse delay as requested in XML. Been trying also with different interfaces that have implemented ACP or Auto Potions. All of them were working correctly and so far what I'm missing is that what kind of packet listens to left click on skillbar. It should like general knowledge not only related to L2Mythras file source but I might be wrong. Anyway would really appreciate for anybody to kindly get into a discussion. I can share any code from files related to Mana Potions but all these files can be found in post made by Akar0
  2. Hello, I try to Start Olympiad but it doesn't do anything. Config is as same as in these files. Same for Database and Java. What should I do to run Olympiad on here?
  3. May I ask then what editor are You using? It looks like You have L2 File Edit as well as I do
  4. https://www.mediafire.com/file/50o6mewyck3vfjf/actionname-e.dat/file
  5. Hello, Im using L2 Mythras file sources but I think it doesnt matter at this point. I was trying to change Summon Interface and I wanted to edit actionname-e.dat since I have found some info about this on mc. Already tried with: -L2FileEditor -All known for me text editors such as VCS and Notepad++ -Even tried to copy this into excel Still can't find solution how to decrypt this file. Other .dat files are decrypting normally.
  6. Hello, I am working on L2Mythras free files. I was thinking how to make area to allow players to use maximum S grade equipment? Similar thing happens at oly when you cant wear some eq like heroic weapons.
  7. It's just an example of other RaidBosses. 25725 is ID of Drake Lord Let's work on this example. So what I need is to respawn Drake Lord everyday at 8PM
  8. Ok I tried this before but I need to set up frequently spawn. Then I kill Baium for example the respawn is calculated from his death. Whatt I need is to set respawn at for example Monday 8PM - 10PM. Every monday. I am looking for solutions to make it automatically
  9. The data in epic_boss_spawn have different numbers For example Baium respawnDate is 1629565469 which mean 452657 hours So how I change this value for one week?
  10. Hello, I am working on L2Mythras free files and wondering how to make epic like Queen Ant respawn everyday with 1 hour respawn?
×
×
  • Create New...