VideoCopilot Posted January 17, 2015 Posted January 17, 2015 Hello i was about to make a code that check if a duelist come close to you to do something like reduce his speed or whatever and i saw the codes and there is no such a file to do live check if player come close to you and i end up with passive skill but still i cant understand how Passive skills work So to make a new passive in Freya and make a check if player class is X or generaly a check and make the passive work how this should be? Thanks in advance
0 Lioy Posted January 17, 2015 Posted January 17, 2015 (edited) You can play with knownlist and check the classId. Make something like a global thread that it will check it every 1 seconds for example. It will read some objects(L2PcInstance) , so I don't think it will be heavy for the server. for(L2PcInstance p : L2World.getBlabla.getPlayers() { if(p==null) continue; for(L2PcInstance near : p.getKnownList().blabla.get(L2PcInstance.class),100) { if(near==null) continue; if(near classId == gladiator class id) //slow him } } Edited January 17, 2015 by etniafamily
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 (edited) You can play with knownlist and check the classId. Make something like a global thread that it will check it every 1 seconds for example. It will read some objects(L2PcInstance) , so I don't think it will be heavy for the server. for(L2PcInstance p : L2World.getBlabla.getPlayers() { } You mean threadpool ? every 1 seconds? ye somehow is heavy :/ any chance to do this with passive skill? that affect area or knownlist does not require threadpool :? Ps. i got it something like for (final L2Character obj : activeChar.getKnownList().getKnownCharactersInRadius(500())) but where should i add this line i mean in which file to do the check? Edited January 17, 2015 by VideoCopilot
0 Lioy Posted January 17, 2015 Posted January 17, 2015 You mean threadpool ? every 1 seconds? ye somehow is heavy :/ any chance to do this with passive skill? that affect area It's not.
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 It's not. Thanks for answers btw, for (final L2Character obj : activeChar.getKnownList().getKnownCharactersInRadius(skill.getSkillRadius())) this where should i add a line like this? to do the check up and inside and if (if player.getClass() == bla bla )
0 Lioy Posted January 17, 2015 Posted January 17, 2015 Thanks for answers btw, for (final L2Character obj : activeChar.getKnownList().getKnownCharactersInRadius(skill.getSkillRadius())) this where should i add a line like this? to do the check up and inside and if (if player.getClass() == bla bla ) Main structure: for(L2PcInstance p : L2World.getBlabla.getPlayers() { if(p==null) continue; for(L2PcInstance near : p.getKnownList().blabla.get(L2PcInstance.class),100) { if(near==null) continue; if(near classId == gladiator class id) //slow him } }
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 Main structure: for(L2PcInstance p : L2World.getBlabla.getPlayers() { if(p==null) continue; for(L2PcInstance near : p.getKnownList().blabla.get(L2PcInstance.class),100) { if(near==null) continue; if(near classId == gladiator class id) //slow him } } Yes i made the code already what i want to do the point is in which file i add it in L2PcInstance but where? in which class?
0 Lioy Posted January 17, 2015 Posted January 17, 2015 (edited) Yes i made the code already what i want to do the point is in which file i add it in L2PcInstance but where? in which class? You want to start this thread when the gameserver starts actually , so create a new class with SingletonHolder_ to create only 1 object(see an example if you didn't understand) and just put MyClass.getInstance() on Gameserver.java , the constructor of the class will just start the Thread. Edited January 17, 2015 by etniafamily
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 You want to start this thread when the gameserver starts actually , so create a new class with SingletonHolder_ to create only 1 object(see an example if you didn't understand) and just put MyClass.getInstance() on Gameserver.java , the constructor of the class will just start the Thread. public class CheckCouple { public static CheckCouple getInstance() { return SingletonHolder._instance; } public CheckCouple() { } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final CheckCouple _instance = new CheckCouple(); } } Something like this? and add it on gameserver so inside public CheckCouple() { } you add the check and it worke ach time a player with class enter inside the region arround you for knowncharacter u put ?
0 Lioy Posted January 17, 2015 Posted January 17, 2015 (edited) yea something like that public CheckCouple() { ThreadPoolmanager.getInstance().blabla.schedule() } Edited January 17, 2015 by etniafamily
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 yea something like that public CheckCouple() { ThreadPoolmanager.getInstance().blabla.schedule() } is there any way to add me on skype cause i messed up now with threadpool -.- ? if you can i really appreciate skype: unst0ppabl32
0 drake2wow Posted January 17, 2015 Posted January 17, 2015 create your listener and call it on every xy update
0 drake2wow Posted January 17, 2015 Posted January 17, 2015 on the other hand, a ScheduledFeature task wouldn't be heavy at all if coded properly
0 VideoCopilot Posted January 17, 2015 Author Posted January 17, 2015 on the other hand, a ScheduledFeature task wouldn't be heavy at all if coded properly Well added scheduleGeneralAtFixedRate(new Runnable for KnownPlayersInRadius and it works fine but i really dont know if it affect a lot the fact that it check every 0.5 seconds
Question
VideoCopilot
Hello i was about to make a code that check if a duelist come close to you to do something like reduce his speed or whatever
and i saw the codes and there is no such a file to do live check if player come close to you and i end up with passive skill
but still i cant understand how Passive skills work
So to make a new passive in Freya and make a check if player class is X or generaly a check and make the passive work
how this should be?
Thanks in advance
13 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now