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!

4TH JOB Skills commands, *Fixed Error 38* (Can Relog after using a skill)

Status
Not open for further replies.
Newbie Spellweaver
Joined
Feb 15, 2007
Messages
83
Reaction score
0
Ok, so like, personaly as a lazy GM I hate to Alt+Tab so like humm.. I've made me some short cuts xD which you might like :]

ERROR 38 FIXED! YOU CAN RELOG AFTER USING 4TH JOB SKILLS NOW

Inorder for Combo and Adv Combo to work properly you must do the following:
http://forum.ragezone.com/f427/rele...ing-advanced-combo-correct-animations-388163/
Inorder for Hurricane to work properly you must do the following:
http://forum.ragezone.com/f427/fix-hurricane-working-100-a-389645/
Inorder for All Job's Maple Warrior to work properly you must do the following:
http://forum.ragezone.com/f427/release-proper-maple-warrior-all-classes-one-function-388503/

Known Problems:
# Not all skills working perfectly
# Mobs attacking isn't always working (Such as Boomerang)
# 4th Job's buffs are not working (need to be scripted)

Fixing Error 38:

Open PlayerPacket and search (Ctrl+F) for:
PHP:
#include "Skills.h"

And add the following (below it):
PHP:
#include "SkillsPacket.h"

Search for (Ctrl+F):
PHP:
    packet.addShort(player->skills->getSkillsNum());
    for(int i=0; i<player->skills->getSkillsNum(); i++){
        packet.addInt(player->skills->getSkillID(i));
        packet.addInt(player->skills->getSkillLevel(player->skills->getSkillID(i)));
    }

And Replace it with:
PHP:
    packet.addShort(0);

Search for (Ctrl +F):
PHP:
    packet.addBytes("90633A0DC55DC801");
    packet.packetSend(player);

Add below it:
PHP:
    for(int i=0; i<player->skills->getSkillsNum(); i++){
        SkillsPacket::addSkill(player, player->skills->getSkillID(i), player->skills->getSkillLevel(player->skills->getSkillID(i)));
    }

To the guide:

Open Players.cpp and search (Ctrl+F) for:
PHP:
#include "Server.h"
And add the following (below it):
PHP:
#include "Skills.h"
#include "SkillsPacket.h"
(Unless you already have it)

Search (Ctrl+F) for:
PHP:
  else if(strcmp(command, "job") == 0){
   Levels::setJob(player, strval(strtok_s(NULL, " ",&next_token)));
  }

And add the following (below it):
PHP:
  else if(strcmp(command, "triple") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4121007;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "boomerang") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4221007;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "assassinate") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4221001;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "nlfake") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4120002;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "sfake") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4220002;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "hurricane") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3121004;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "genesis") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2321008;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "blizzard") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2221007;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "firem") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2121007;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "fired") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2121003;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "iced") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2221003;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "clight") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2221006;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "angelray") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2321007;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "bowdb") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3121003;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "xbowdb") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3221003;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "bowexp") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3120005;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "xbowexp") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3220005;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "blast") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1221009;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "combo") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1111002;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "advcombo") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1120003;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "heromw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1121000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "paladinmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1221000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "dkmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 1321000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "fpmagemw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2121000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "ilmagemw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2221000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "bishopmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 2321000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "bmmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3121000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "marksmanmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 3221000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "nlmw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4121000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
  else if(strcmp(command, "shadowermw") == 0){
                if(strlen(next_token) > 0){
                    int skillid = 4221000;
                    int count = 1;
                    if(strlen(next_token) > 0)
                    count = strval(next_token);
                    player->skills->addSkillLevel(skillid, count);
                    SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
                 }
         }
 
         }

Commands (GM):
Hero (112):
!combo <SkillLevel> - Combo (3rd job)
!advcombo <SkillLevel> - Advanced Combo
!heromw <SkillLevel> - Maple Warrior
Paladin (122):
!blast <SkillLevel> - Blast
!paladinmw <SkillLevel> - Maple Warrior
Dark Knight (132):
!dkmw <SkillLevel> - Maple Warrior
Fire & Poison Arch Mage (212):
!firem <SkillLevel> - Meteor Shower
!fired <SkillLevel> - Fire Demon
!fpmagemw <SkillLevel> - Maple Warrior
Ice & Lightning Arch Mage (222):
!iced <SkillLevel> - Ice Demon
!clight <SkillLevel> - Chain Lightning
!blizzard <SkillLevel> - Blizzard
!ilmagemw <SkillLevel> - Maple Warrior
Bishop (232):
!genesis <SkillLevel> - Genesis
!angelray <SkillLevel> - Angel's Ray
!bishopmw <SkillLevel> - Maple Warrior
Night Lord (412):
!triple <SkillLevel> - Triple Throw
!nlfake <SkillLevel> - Shadow Shifter/Fake
!nlmw <SkillLevel> - Maple Warrior
Shadower (422):
!boomerang <SkillLevel> - Boomerang Step
!assassinate <SkillLevel> - Assassinate
!sfake <SkillLevel> - Shadow Shifter/Fake
!shadowermw <SkillLevel> - Maple Warrior
Bow Master (312):
!hurricane <SkillLevel> - Hurricane
!bowdb <SkillLevel> - Dragon's Breath
!bowexp <SkillLevel> - Bow Expert
!bmmw <SkillLevel> - Maple Warrior
Marksman (322):
!xbowdb <SkillLevel> - Dragon's Breath
!xbowexp <SkillLevel> - Marksman Boost
!marksmanmw <SkillLevel> - Maple Warrior

Help for newbies:
*Job Job's ID Command Skill's Name
# Command example : !triple 30
That will give you a level 30 Triple Throw.
# <SkillLevel> = The wanted skill level you want, and no you are not suppose to actualy type <SkillLevel>, your suppose to replace it with the wanted skill level (example : 30)

IF theres a skill you realy want me to add, please PM me and I'll add it

IMPORTANT WARNING:
Before you use a command, make sure your in the right job or else it either won't work, or ruin your character.

Updates:
# Added Combo and Adv Combo, must follow the guide inorder for the new skills to work:
http://forum.ragezone.com/f427/rele...ing-advanced-combo-correct-animations-388163/
# Added Maple Warrior Commands, must follow the guide inorder for the new skills to work perfectly:
http://forum.ragezone.com/f427/release-proper-maple-warrior-all-classes-one-function-388503/
# Hurricane is now working thanks to kingofkongfu inorder for skill 'Hurricane' to work perfectly, please use the following guide:
http://forum.ragezone.com/f427/fix-hurricane-working-100-a-389645/


CREDITS TO :
jwshan for fixing Error 38!
kingofkongfu for fixing Hurricane skill
 
Last edited:
Experienced Elementalist
Joined
Apr 6, 2008
Messages
296
Reaction score
3
Re: [Release] 4TH JOB Skills commands :]

Nice release ^^
 
Newbie Spellweaver
Joined
Apr 9, 2008
Messages
60
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

Seeing as how it may freeze your account would it be possible if you used the skill then when you logged out do like !clight 0 and then log out? Would that make you not freeze?
 
Experienced Elementalist
Joined
Dec 7, 2006
Messages
294
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

theres already a !addsp and you can use it for any skill, more handy than this :)
 
Experienced Elementalist
Joined
Apr 3, 2008
Messages
290
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

so these moves are ones that are fine to use without error 38 and such ?

or do they still mess you up .
 
Newbie Spellweaver
Joined
Feb 15, 2007
Messages
83
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

It would'nt matter if you do clight 0, since it only gives points to the skill not sets it, I may change it the a set status now, wait.
 
Newbie Spellweaver
Joined
Feb 15, 2007
Messages
83
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

theres already a !addsp and you can use it for any skill, more handy than this :)

Well read the beggining of my post, its my own shortcut that I released..
 
Master Summoner
Joined
Apr 2, 2008
Messages
538
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

this is useless, sorry and its freakin outdated....its been posted a thousand times. -.- now if you can get them to work without crashing your char that would have been amazing.
 
Newbie Spellweaver
Joined
Aug 10, 2007
Messages
27
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

Well, pretty easy, it crashes since it mastery level is 0....
think about 4th job skills...
need books rite?
then go code it ^^,
if u need any help, really help, not leeching help,
pm me...
 
Master Summoner
Joined
Apr 2, 2008
Messages
538
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

why would it crash if its lv 0?
 
Newbie Spellweaver
Joined
Apr 12, 2008
Messages
54
Reaction score
1
Re: [Release] 4TH JOB Skills commands :]

Don't 4th job skills jack up your player?
 
Master Summoner
Joined
Apr 2, 2008
Messages
538
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

yes they do. lol
 
Experienced Elementalist
Joined
Apr 2, 2007
Messages
260
Reaction score
1
Re: [Release] 4TH JOB Skills commands :]

Yep. 4th job skills just crash the client.
 
Newbie Spellweaver
Joined
Apr 8, 2008
Messages
7
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

if u wanna use 4th job skillz without screwing up ur character, just use the command to w/e skill level u want, and before you log out, make sure to put the oppisite number of the current skill lvl.

eg: put !genesis 30 when u log in, and before you log out, put !genesis -30. this will subtract 30 from the skill, thus leaving you with a skill level of 0. (not sure if this works for these commands, but it works for the !addsp command, so i immagine it will work for this as well.
 
Master Summoner
Joined
Apr 2, 2008
Messages
538
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

slayer55 that method sux though.
 
Experienced Elementalist
Joined
Apr 13, 2008
Messages
211
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

nice lol
tnx
but im always putting the maple cilent in dxwnd
so its not such matter
thanks anyway
i might add this!
 
Newbie Spellweaver
Joined
Apr 5, 2008
Messages
8
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

What does this mean?!
.\Players.cpp(121) : error C2181: illegal else without matching if
 
Newbie Spellweaver
Joined
Apr 4, 2008
Messages
13
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

um i cant find this
PHP:
  else if(strcmp(command, "job") == 0){ 
   Levels::setJob(player, strval(strtok_s(NULL, " ",&next_token))); 
  }

so where do i put that at, as in under which part in Players.cpp?
 
Newbie Spellweaver
Joined
Feb 15, 2007
Messages
83
Reaction score
0
Re: [Release] 4TH JOB Skills commands :]

um i cant find this
PHP:
  else if(strcmp(command, "job") == 0){ 
   Levels::setJob(player, strval(strtok_s(NULL, " ",&next_token))); 
  }

so where do i put that at, as in under which part in Players.cpp?

Hum, it doesn't realy matter, put it under your 'shop' command
search for:
PHP:
elsf if(strcmp(command, "shop")== 0{
 
Status
Not open for further replies.
Back
Top