Assign Recommended AP command

Status
Not open for further replies.
Newbie Spellweaver
Joined
Apr 13, 2008
Messages
81
Reaction score
2
I saw Nexon's Assign AP stuff, so I was like...why can't we have this?
This should work perfectly, my basic tests say it does, but you never know. Correct me on anything that is broken/could be done better.

PlayerCommands.java
Code:
import org.character.MapleJob;
PHP:
else if (splitted[0].equalsIgnoreCase("@autoap")) {
                int strAssigned = 0;
                int dexAssigned = 0;
                int intAssigned = 0;
                int lukAssigned = 0;
                int targetLuk = 0;
                int targetStr = 0;
                int targetDex = 0;
                int pirateType = 0;
                if (player.getJob().equals(MapleJob.PIRATE)){
                    if (player.getTotalStr() >= 10){
                        pirateType = 2;
                    }
                    else{
                        pirateType = 1;
                    }
                }
                if (player.getJob().isA(MapleJob.MAGICIAN)) {
                    targetLuk = player.getLevel() + 3;
                    if (player.getTotalLuk() >= targetLuk || player.getTotalLuk() >= 113) {
						addAP(c, 3, player.getRemainingAp());
                    } else {
						lukAssigned = targetLuk - player.getTotalLuk();
						if (lukAssigned > player.getRemainingAp()) {
                                                    lukAssigned = player.getRemainingAp();
							}
						intAssigned = player.getRemainingAp() - lukAssigned;
						if (intAssigned < 0) {
							intAssigned = 0;
						}
						addAP(c, 4, lukAssigned);
						addAP(c, 3, intAssigned);
                    }
                } else if (pirateType == 1 || player.getJob().equals(MapleJob.BOWMAN) || player.getJob().isA(MapleJob.CROSSBOWMAN) || player.getJob().isA(MapleJob.GUNSLINGER)){
                    targetStr = player.getLevel();
                    if (player.getTotalStr() >= targetStr || player.getTotalStr() >= 110){
                        addAP(c, 2, player.getRemainingAp());
                    } else {
                        strAssigned = targetStr - player.getTotalStr();
                        if (strAssigned > player.getRemainingAp()){
                            strAssigned = player.getRemainingAp();
                        }
                        dexAssigned = player.getRemainingAp() - strAssigned;
                        if (dexAssigned < 0){
                            dexAssigned = 0;
                        }
                        addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
                    }
                } else if (player.getJob().isA(MapleJob.HUNTER)){
                    targetStr = player.getLevel() + 5;
                    if (player.getTotalStr() >= targetStr || player.getTotalStr() >= 115){
                        addAP(c, 2, player.getRemainingAp());
                    } else {
                        strAssigned = targetStr - player.getTotalStr();
                        if (strAssigned > player.getRemainingAp()){
                            strAssigned = player.getRemainingAp();
                        }
                        dexAssigned = player.getRemainingAp() - strAssigned;
                        if (dexAssigned < 0){
                            dexAssigned = 0;
                        }
                        addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
					}
                }
                else if (player.getJob().isA(MapleJob.WARRIOR)){
                    if (player.getLevel() <= 30){
                        targetDex = player.getLevel() * 2;
                    }
                    else if (player.getLevel() <= 50 && player.getLevel() >= 31){
                        targetDex = player.getLevel() + 30;
                    }
                    else{
						targetDex = 80;
                    }
                    if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 80){
                        addAP(c, 1, player.getRemainingAp());
                    }
                    else{
                        dexAssigned = targetDex - player.getTotalDex();
                        if (dexAssigned > player.getRemainingAp()){
                            dexAssigned = player.getRemainingAp();
                        }
                        strAssigned = player.getRemainingAp() - dexAssigned;
                        if (strAssigned < 0){
                            strAssigned = 0;
                        }
					    addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
                    }
                }
                else if (player.getJob().isA(MapleJob.THIEF)){
                    if (player.getLevel() <= 40){
						targetDex = player.getLevel() * 2 + 5;
                                                if (player.getTotalStr() >= 10){
                                                    targetStr = player.getLevel() - 10;
                                                }
					}
                                        else {
						targetDex = player.getLevel() + 40;
                                                if (player.getLevel() >= 61){
                                                    if (player.getTotalStr() >= 20){
                                                        targetStr = player.getLevel() - 50 / 10 - 1 * 5 + 50;
                                                    }
                                                }
					}
					if (targetDex >= 151){
						targetDex = 150;
					}
					if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 150){
						addAP(c, 4, player.getRemainingAp());
					}
					else{
						dexAssigned = targetDex - player.getTotalDex();
						if (dexAssigned > player.getRemainingAp()){
							dexAssigned = player.getRemainingAp();
						}
						lukAssigned = player.getRemainingAp() - dexAssigned;
						if (lukAssigned < 0){
							lukAssigned = 0;
						}
                                        addAP(c, 4, lukAssigned);
                                        addAP(c, 2, dexAssigned);
                                        addAP(c, 1, strAssigned);
					}
                }
				else if (player.getJob().isA(MapleJob.BRAWLER) || pirateType == 2){
					targetDex = player.getLevel();
					if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 110){
						addAP(c, 1, player.getRemainingAp());
					}
					else {
						dexAssigned = targetDex - player.getTotalDex();
						if (dexAssigned > player.getRemainingAp()){
							dexAssigned = player.getRemainingAp();
						}
						strAssigned = player.getRemainingAp() - dexAssigned;
						if (strAssigned < 0){
							strAssigned = 0;
						}
						addAP(c, 1, strAssigned);
						addAP(c, 2, dexAssigned);
					}
				} else {
                    mc.dropMessage("Sorry, br0, haven't coded your job yet.");//Perhaps I'll code KoC builds in soon. Who knows.
                }
           }
Add
Code:
new CommandDefinition("autoap", 0),
to

Code:
public CommandDefinition[] getDefinition() {
        return new CommandDefinition[]{
                    new CommandDefinition("str", 0),
                    new CommandDefinition("dex", 0),
                    new CommandDefinition("int", 0),
                    new CommandDefinition("luk", 0),
                    new CommandDefinition("hp", 0),
                    new CommandDefinition("mp", 0),
                    new CommandDefinition("stats", 0),
                    new CommandDefinition("commands", 0),
                    new CommandDefinition("goto", 0),
                    new CommandDefinition("rank", 0),
                };
    }
 
Last edited:
Nice ;D

If you wanted it to be "gms-like" even though it can't be, because it doesn't have a button, wouldn't it just have to correspond with the regular build? (like the xbows str equaling their level, etc.)
 
Nice ;D

If you wanted it to be "gms-like" even though it can't be, because it doesn't have a button, wouldn't it just have to correspond with the regular build? (like the xbows str equaling their level, etc.)

It originally was GMS like, but it was suggested that I add some other builds.

The only one I could think of that would be needed(since most other builds involve having none of a certain stat) was Str Dit.
 
I was going to make something like this along with my Auto Job but i figured it would take to long (auto job took 10min :D)
 
I was going to make something like this along with my Auto Job but i figured it would take to long (auto job took 10min :D)

This didn't take that long. I based the builds off guides from BasilMarket.
If you're good at algebra, it's pretty easy to work out what the player's stat should be compared to their level.

I'd say the only difficult build was Str Dit.
 
I saw Nexon's Assign AP stuff, so I was like...why can't we have this?
This should work perfectly, my basic tests say it does, but you never know. Correct me on anything that is broken/could be done better.

PlayerCommands.java
Code:
import org.character.MapleJob;
PHP:
else if (splitted[0].equalsIgnoreCase("@autoap")) {
                int strAssigned = 0;
                int dexAssigned = 0;
                int intAssigned = 0;
                int lukAssigned = 0;
                int targetLuk = 0;
                int targetStr = 0;
                int targetDex = 0;
                int pirateType = 0;
                if (player.getJob().equals(MapleJob.PIRATE)){
                    if (player.getTotalStr() >= 10){
                        pirateType = 2;
                    }
                    else{
                        pirateType = 1;
                    }
                }
                if (player.getJob().isA(MapleJob.MAGICIAN)) {
                    targetLuk = player.getLevel() + 3;
                    if (player.getTotalLuk() >= targetLuk || player.getTotalLuk() >= 113) {
						addAP(c, 3, player.getRemainingAp());
                    } else {
						lukAssigned = targetLuk - player.getTotalLuk();
						if (lukAssigned > player.getRemainingAp()) {
                                                    lukAssigned = player.getRemainingAp();
							}
						intAssigned = player.getRemainingAp() - lukAssigned;
						if (intAssigned < 0) {
							intAssigned = 0;
						}
						addAP(c, 4, lukAssigned);
						addAP(c, 3, intAssigned);
                    }
                } else if (pirateType == 1 || player.getJob().equals(MapleJob.BOWMAN) || player.getJob().isA(MapleJob.CROSSBOWMAN) || player.getJob().isA(MapleJob.GUNSLINGER)){
                    targetStr = player.getLevel();
                    if (player.getTotalStr() >= targetStr || player.getTotalStr() >= 110){
                        addAP(c, 2, player.getRemainingAp());
                    } else {
                        strAssigned = targetStr - player.getTotalStr();
                        if (strAssigned > player.getRemainingAp()){
                            strAssigned = player.getRemainingAp();
                        }
                        dexAssigned = player.getRemainingAp() - strAssigned;
                        if (dexAssigned < 0){
                            dexAssigned = 0;
                        }
                        addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
                    }
                } else if (player.getJob().isA(MapleJob.HUNTER)){
                    targetStr = player.getLevel() + 5;
                    if (player.getTotalStr() >= targetStr || player.getTotalStr() >= 115){
                        addAP(c, 2, player.getRemainingAp());
                    } else {
                        strAssigned = targetStr - player.getTotalStr();
                        if (strAssigned > player.getRemainingAp()){
                            strAssigned = player.getRemainingAp();
                        }
                        dexAssigned = player.getRemainingAp() - strAssigned;
                        if (dexAssigned < 0){
                            dexAssigned = 0;
                        }
                        addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
					}
                }
                else if (player.getJob().isA(MapleJob.WARRIOR)){
                    if (player.getLevel() <= 30){
                        targetDex = player.getLevel() * 2;
                    }
                    else if (player.getLevel() <= 50 && player.getLevel() >= 31){
                        targetDex = player.getLevel() + 30;
                    }
                    else{
						targetDex = 80;
                    }
                    if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 80){
                        addAP(c, 1, player.getRemainingAp());
                    }
                    else{
                        dexAssigned = targetDex - player.getTotalDex();
                        if (dexAssigned > player.getRemainingAp()){
                            dexAssigned = player.getRemainingAp();
                        }
                        strAssigned = player.getRemainingAp() - dexAssigned;
                        if (strAssigned < 0){
                            strAssigned = 0;
                        }
					    addAP(c, 1, strAssigned);
                        addAP(c, 2, dexAssigned);
                    }
                }
                else if (player.getJob().isA(MapleJob.THIEF)){
                    if (player.getLevel() <= 40){
						targetDex = player.getLevel() * 2 + 5;
                                                if (player.getTotalStr() >= 10){
                                                    targetStr = player.getLevel() - 10;
                                                }
					}
                                        else {
						targetDex = player.getLevel() + 40;
                                                if (player.getLevel() >= 61){
                                                    if (player.getTotalStr() >= 20){
                                                        targetStr = player.getLevel() - 50 / 10 - 1 * 5 + 50;
                                                    }
                                                }
					}
					if (targetDex >= 151){
						targetDex = 150;
					}
					if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 150){
						addAP(c, 4, player.getRemainingAp());
					}
					else{
						dexAssigned = targetDex - player.getTotalDex();
						if (dexAssigned > player.getRemainingAp()){
							dexAssigned = player.getRemainingAp();
						}
						lukAssigned = player.getRemainingAp() - dexAssigned;
						if (lukAssigned < 0){
							lukAssigned = 0;
						}
                                        addAP(c, 4, lukAssigned);
                                        addAP(c, 2, dexAssigned);
                                        addAP(c, 1, strAssigned);
					}
                }
				else if (player.getJob().isA(MapleJob.BRAWLER) || pirateType == 2){
					targetDex = player.getLevel();
					if (player.getTotalDex() >= targetDex || player.getTotalDex() >= 110){
						addAP(c, 1, player.getRemainingAp());
					}
					else {
						dexAssigned = targetDex - player.getTotalDex();
						if (dexAssigned > player.getRemainingAp()){
							dexAssigned = player.getRemainingAp();
						}
						strAssigned = player.getRemainingAp() - dexAssigned;
						if (strAssigned < 0){
							strAssigned = 0;
						}
						addAP(c, 1, strAssigned);
						addAP(c, 2, dexAssigned);
					}
				} else {
                    mc.dropMessage("Sorry, br0, haven't coded your job yet.");//Until there's a way to check what weapon type is equipped, I can't make any other jobs. :(
                }
           }
Add
Code:
new CommandDefinition("autoap", 0),
to

Code:
public CommandDefinition[] getDefinition() {
        return new CommandDefinition[]{
                    new CommandDefinition("str", 0),
                    new CommandDefinition("dex", 0),
                    new CommandDefinition("int", 0),
                    new CommandDefinition("luk", 0),
                    new CommandDefinition("hp", 0),
                    new CommandDefinition("mp", 0),
                    new CommandDefinition("stats", 0),
                    new CommandDefinition("commands", 0),
                    new CommandDefinition("goto", 0),
                    new CommandDefinition("rank", 0),
                };
    }

I was thinking if rates could have a effect on this Assign Recommended AP Command. But anyway, good job ! :thumbup1::thumbup1::thumbup1::thumbup1::thumbup1:
 
This command works perfectly, though I saw addAp, not sure if other people have that. And yes, this command is much different than @str/@dex, etc, this is for people that don't really know what to add, @str is for high rate servers that have people with 1k AP leftover. Props for this.
 
Do we add the command definitions in PlayerCommand.java?

If not, where do they go?

Are they needed for the command to work or are they unnecessary?

addAP also needs to get defined in MapleClient.java, where can I get that?

Can someone plz upload their PlayerCommand.java with this command that is working
and give me the method addAP for MapleClient.java?

I will press thanks if you do.

Thank you in advance.
 
Last edited:
Here you go

PHP:
public void addAP(MapleClient c, int stat, int amount) {
        MapleCharacter player = c.getPlayer();
        switch (stat) {
            case 1: // STR
                player.setStr(player.getStr() + amount);
                player.updateSingleStat(MapleStat.STR, player.getStr());
                break;
            case 2: // DEX
                player.setDex(player.getDex() + amount);
                player.updateSingleStat(MapleStat.DEX, player.getDex());
                break;
            case 3: // INT
                player.setInt(player.getInt() + amount);
                player.updateSingleStat(MapleStat.INT, player.getInt());
                break;
            case 4: // LUK
                player.setLuk(player.getLuk() + amount);
                player.updateSingleStat(MapleStat.LUK, player.getLuk());
                break;
            case 5: // HP
                player.setMaxHp(amount);
                player.updateSingleStat(MapleStat.MAXHP, player.getMaxHp());
                break;
            case 6: // MP
                player.setMaxMp(amount);
                player.updateSingleStat(MapleStat.MAXMP, player.getMaxMp());
                break;
        }
    }
 
Status
Not open for further replies.
Back