tiguz Posted April 20, 2017 Posted April 20, 2017 (edited) Hello! I would like to get some help on how to fix some skills like Sonic Buster and Force Burst. If I target myself and press crtl, I can hit myself directly to HP, avoiding CP. With Force Burst Tyrants can use this bug to Pre-zealot in Olympiad. Im not sure what should be changed and where! Thank you in advance! Edit: I use L2JFrozen 1118 Edited April 20, 2017 by tiguz
0 Solomun Posted April 20, 2017 Posted April 20, 2017 doCast(final L2Skill skill) method. public void doCast(final L2Skill skill){ final L2Character activeChar = this; if (skill == null) { getAI().notifyEvent(CtrlEvent.EVT_CANCEL); return; } // Check if the skill is a magic spell and if the L2Character is not muted if (skill.isMagic() && isMuted() && !skill.isPotion()) { getAI().notifyEvent(CtrlEvent.EVT_CANCEL); return; }+ if (this instanceof L2PcInstance) {+ L2PcInstance pl = (L2PcInstance) this;+ if (pl.getTarget() instanceof L2PcInstance) {+ L2PcInstance trgt = (L2PcInstance) pl.getTarget();+ if (trgt.getName().equals(pl.getName())) //Player targets himself+ {+ int skill_id = skill.getId();+ switch (skill_id) {+ case 9://Sonic Buster+ case 17://Force Burst+ sendPacket(ActionFailed.STATIC_PACKET);+ return false;+ default:+ break;+ }+ }+ }+ } // Check if the skill is psychical and if the L2Character is not psychical_muted if (!skill.isMagic() && isPsychicalMuted() && !skill.isPotion()) { getAI().notifyEvent(CtrlEvent.EVT_CANCEL); return; } ... ... ...
0 Solomun Posted April 20, 2017 Posted April 20, 2017 You can use this code as a temporary fix. checkDoCastConditions(L2Character.java) if (this instanceof L2PcInstance) { L2PcInstance pl = (L2PcInstance) this; if (pl.getTarget() instanceof L2PcInstance) { L2PcInstance trgt = (L2PcInstance) pl.getTarget(); if (trgt.getName().equals(pl.getName())) //Player targets himself { int skill_id = skill.getId(); switch (skill_id) { case 9://Sonic Buster case 17://Force Burst sendPacket(ActionFailed.STATIC_PACKET); return false; default: break; } } } } After this code is added, they can't use these skills targeting their selves. (Give it a test by yourself first)
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 You can use this code as a temporary fix. checkDoCastConditions(L2Character.java) if (this instanceof L2PcInstance) { L2PcInstance pl = (L2PcInstance) this; if (pl.getTarget() instanceof L2PcInstance) { L2PcInstance trgt = (L2PcInstance) pl.getTarget(); if (trgt.getName().equals(pl.getName())) //Player targets himself { int skill_id = skill.getId(); switch (skill_id) { case 9://Sonic Buster case 17://Force Burst sendPacket(ActionFailed.STATIC_PACKET); return false; default: break; } } } } After this code is added, they can't use these skills targeting their selves. (Give it a test by yourself first) Thank you! I will test it right away!
0 Solomun Posted April 20, 2017 Posted April 20, 2017 Thank you! I will test it right away! Keep me posted ;)
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 Solomun where exactly inside Character.java should I add that code? I dont do coding, I can just add the patch and compile. :-
0 Solomun Posted April 20, 2017 Posted April 20, 2017 Solomun where exactly inside Character.java should I add that code? I dont do coding, I can just add the patch and compile. :- Post me here your L2Character.java and i will try to spot where you should add it...However in High Five there is checkDoCastConditions method, so i guess something similar should take place in your code.
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 here you go : https://pastebin.com/DqTypZPm
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 Im compiling. I will infor you if its working!
0 Solomun Posted April 20, 2017 Posted April 20, 2017 Ok...I hope you changed "return false" line to "return"...I didn't see that doCast method is void :)
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 It worked! I just had to change "return false" to "return;" because eclipse accused : void method cannot return a value. But I dont get the message you added to the code: sendPacket(ActionFailed.STATIC_PACKET); Maybe because I changed that "return false"? The char cant use the skill on itself now, but the system doesnt send any message. Thank you Solomon!
0 Solomun Posted April 20, 2017 Posted April 20, 2017 + case 17://Force Burst + pl.sendMessage("Incorrect Target");+ sendPacket(ActionFailed.STATIC_PACKET);+ return false; If you want to show a message...
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 + case 17://Force Burst + pl.sendMessage("Incorrect Target"); + sendPacket(ActionFailed.STATIC_PACKET); + return false; If you want to show a message... Alright thank you very much for your help! really =D
0 Solomun Posted April 20, 2017 Posted April 20, 2017 Alright thank you very much for your help! really =D No problem...Consider hitting the "Mark Solved" button under my post in order to make it easier-to-find from other people :)
0 tiguz Posted April 20, 2017 Author Posted April 20, 2017 No problem...Consider hitting the "Mark Solved" button under my post in order to make it easier-to-find from other people :) Done! ^-^
0 melron Posted April 20, 2017 Posted April 20, 2017 (edited) Something like that will be more stable if (this instanceof L2PcInstance) { L2PcInstance player = (L2PcInstance) this; if (player.getTarget() != null && player.getTarget() == player) if (skill.getSkillType() == SkillType.CHARGEDAM) { player.sendMessage("message"); return; } } but if you just wanted these 2 then take solomun's code its working ;) Edited April 20, 2017 by melron
Question
tiguz
Hello! I would like to get some help on how to fix some skills like Sonic Buster and Force Burst. If I target myself and press crtl, I can hit myself directly to HP, avoiding CP. With Force Burst Tyrants can use this bug to Pre-zealot in Olympiad.
Im not sure what should be changed and where!
Thank you in advance!
Edit: I use L2JFrozen 1118
Edited by tiguz19 answers to this question
Recommended Posts