Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

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