• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Disallowing skills in certain maps

Junior Spellweaver
Joined
Oct 31, 2008
Messages
149
Reaction score
45
I think the only way to do this is to make the client think that the skills you want to block are the movement skills that would be blocked by JQ maps. So change the fieldLimit of the map to the same as a JQ map, and look around at the values for skills.

Then again, it might just be easier to temporarily remove the skill from them.
 
Upvote 0
Newbie Spellweaver
Joined
Aug 8, 2011
Messages
45
Reaction score
0
I think the only way to do this is to make the client think that the skills you want to block are the movement skills that would be blocked by JQ maps. So change the fieldLimit of the map to the same as a JQ map, and look around at the values for skills.

Then again, it might just be easier to temporarily remove the skill from them.

As far as i tested, i can use movement skills in JQ maps too, i'm using MoopleDEV.
Could be because i'm a GM?
 
Upvote 0
Junior Spellweaver
Joined
Oct 31, 2008
Messages
149
Reaction score
45
As far as i tested, i can use movement skills in JQ maps too, i'm using MoopleDEV.
Could be because i'm a GM?

Yes, generally field limits don't apply to GMs. And if you really want to disallow skill usage on certain maps, just store their skill level for the skills you want to disallow, set their skill level for the skills you want to disallow to 0, and then when they leave the map set the skill level back to what it was. Just make sure when you do change their skill level it isn't saved to the DB in case they disconnect in that map and lose the skill.
 
Upvote 0
Skilled Illusionist
Joined
Nov 12, 2011
Messages
360
Reaction score
93
This depends on what kind of skill it is that you want to block.
Attack Skill, Buff Skill, Move Skill (IE: FJ), etc..

---------- Post added at 07:27 PM ---------- Previous post was at 06:56 PM ----------

Blocking attack skills:

Ranged Attacks (RangedAttackHandler.java):
Magic Attacks (MagicDamageHandler.java):
Melee Attacks (CloseRangeDamageHandler):
Code:
if (player.getMap().getId() == <MAPID> && attack.skill == <SKILLIDHERE>) {
                    player.dropMessage("You were warpped out for using a banned skill.");
                    MapleMap map = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(100000000); //Henesys
                    player.changeMap(map, map.getPortal(0));
                    return;
                }


Skill Buffs (MapleStatEffect.java : applyTo(MapleCharacter chr) Method):
Code:
if (chr.getMap().getId() == <MAPID> && skill && sourceid == <MAPID>) {
                    chr.dropMessage("You were warpped out for using a banned skill.");
                    MapleMap map = ChannelServer.getInstance(chr.getClient().getChannel()).getMapFactory().getMap(100000000); //Henesys
                    chr.changeMap(map, map.getPortal(0));
                    return false;
                }

Special Skill Movement: FJ/Float/Shot-Back-Jump thingy/Assaulter/Assasinate/Teleport/Rush/Sitting... (AbstractMovementPacketHandler and MovePlayerHandler):
This is a little tricky, in MovePlayerHandler, you should see something like: "List<LifeMovementFragment> res = parseMovement(slea);"

You want to change parseMovement to also accept a MapleClient c variable. In AbstractMovementPacketHandler, make the beginning of parseMovement say
Code:
protected List<LifeMovementFragment> parseMovement(LittleEndianAccessor lea, MapleClient c) {

If you change this, you'll need to change all the places this method is used as well (Which should be in: MovePlayerHandler, MovePetHandler, MoveLifeHandler, and MoveSummonHandler)
You'll need to change
Code:
parseMovement(slea)
to
Code:
parseMovement(slea,c)
In this way, you can pass the client to the parseMovement function.

Now, in AbstractMovementPacketHandler.java : parseMovement Method, You'll see a switch code block and a whole bunch of Cases (that should be labelled with the corresponding skill) to disable a skill, under the Case you want:
Code:
if (c.getPlayer().getMap().getId() == <MAPID>) {
                                        c.getPlayer().dropMessage("You were warpped out for using a banned skill.");
                                        MapleMap map = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(100000000); //Henesys
                                        c.getPlayer().changeMap(map, map.getPortal(0));
                                        return null;
                                    }

GL with your coding =P
This might be wrong, since I'm writing all of this from the top of my head, but it should work.
Make sure to fix all imports to: Netbeans: Cntrl + Shift + I, I think.

That was posted in 09, dunno if it still works, but I hope it helps.
 
Upvote 0
Legendary Battlemage
Loyal Member
Joined
Dec 13, 2010
Messages
649
Reaction score
140
Just do what cris said and set the skill level to 0 after storing the original value and disable any means of applying skill points/mastery.
 
Upvote 0
Newbie Spellweaver
Joined
Aug 6, 2013
Messages
12
Reaction score
1
Hi~ Yes; I'd like to add that all of these previous comments were either wrong, or just not detailed enough to be considered helpful. I understand that the thread is old, however it hasn't actually been correctly answered yet. So; in order to disable Skills on a Map, you need to open the Map.wz in HaRepacker.

1. Once open, find an Example Map that you would like to use, in my case; I'm using Ludibrium Pet-Walk-Way or whatever; Map 220000006.

2. Once I've selected my Map, I just open the 'info' WZSubProperty. Once open, you can see a bunch of variables. The one that we're concerned about is the WZIntProperty called fieldLimit; which is equal to 6.

3. By copying that WZIntProperty, and placing it in another Map.IMG's 'info' WZSubProperty, you replicate the fact that no Skills are allowed on the Map.

4. For use in a Private Server, you'll want to re-create the XML for the Map, to re-add it into your Server Folder. To re-create it, just select the Map IMG of your choosing, in the upper right corner of HaRepacker, click Tools>Export Selection>XML> Private Server.

Ya welcome~
 
Upvote 0
Back
Top