Jump to content

LotharAxe

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by LotharAxe

  1. 54 minutes ago, Vykimo said:

    Unfortunately you cannot increase content in a client packet... Because client won't be able to understand longer packet than usual.

    But if you wanna experience it, go in clif_packetdb.hpp and replace :

    
    packet(0x01cd,30);

    by :

    
    packet(0x01cd,54);

    PS : 0x1cd is the packet id.

     

    Thank you so much for answering, now I understand better what is happening.

    Unfortunately, as you expected, it didn't work. The game crashed as soon as I casted Autospell.

  2. Hi everyone, I've been trying to increase the amount of spells that can be selected for the Autospell skill of the Sage.

    From my investigation, I found a code that might be the one responsible for allowing you to pick certain spells in the menu that appears once you use the skill.

    The code I've changed is as follows:

    /// Presents a list of skills that can be auto-spelled (ZC_AUTOSPELLLIST).
    /// 01cd { <skill id>.L }*7
    void clif_autospell(struct map_session_data *sd,uint16 skill_lv)
    {
        int fd;
    
        nullpo_retv(sd);
    
        fd=sd->fd;
        WFIFOHEAD(fd,packet_len(0x1cd));
        WFIFOW(fd, 0)=0x1cd;
    
        if(skill_lv>0 && pc_checkskill(sd,MG_NAPALMBEAT)>0)
            WFIFOL(fd,2)= MG_NAPALMBEAT;
        else
            WFIFOL(fd,2)= 0x00000000;
        if(skill_lv>1 && pc_checkskill(sd,MG_COLDBOLT)>0)
            WFIFOL(fd,6)= MG_COLDBOLT;
        else
            WFIFOL(fd,6)= 0x00000000;
        if(skill_lv>1 && pc_checkskill(sd,MG_FIREBOLT)>0)
            WFIFOL(fd,10)= MG_FIREBOLT;
        else
            WFIFOL(fd,10)= 0x00000000;
        if(skill_lv>1 && pc_checkskill(sd,MG_LIGHTNINGBOLT)>0)
            WFIFOL(fd,14)= MG_LIGHTNINGBOLT;
        else
            WFIFOL(fd,14)= 0x00000000;
        if(skill_lv>4 && pc_checkskill(sd,MG_SOULSTRIKE)>0)
            WFIFOL(fd,18)= MG_SOULSTRIKE;
        else
            WFIFOL(fd,18)= 0x00000000;
        if(skill_lv>7 && pc_checkskill(sd, MG_THUNDERSTORM)>0)
            WFIFOL(fd,22)= MG_THUNDERSTORM;
        else
            WFIFOL(fd,22)= 0x00000000;
        if(skill_lv>9 && pc_checkskill(sd,MG_FROSTDIVER)>0)
            WFIFOL(fd,26)= MG_FROSTDIVER;
        else
            WFIFOL(fd,26)= 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, MG_FIREBALL) > 0)
            WFIFOL(fd, 30) = MG_FIREBALL;
        else
            WFIFOL(fd, 30) = 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, MG_STONECURSE) > 0)
            WFIFOL(fd, 34) = MG_STONECURSE;
        else
            WFIFOL(fd, 34) = 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, SA_DISPELL) > 0)
            WFIFOL(fd, 38) = SA_DISPELL;
        else
            WFIFOL(fd, 38) = 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, WZ_EARTHSPIKE) > 0)
            WFIFOL(fd, 42) = WZ_EARTHSPIKE;
        else
            WFIFOL(fd, 42) = 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, WZ_HEAVENDRIVE) > 0)
            WFIFOL(fd, 46) = WZ_HEAVENDRIVE;
        else
            WFIFOL(fd, 46) = 0x00000000;
        if (skill_lv > 0 && pc_checkskill(sd, SA_SPELLBREAKER) > 0)
            WFIFOL(fd, 50) = SA_SPELLBREAKER;
        else
            WFIFOL(fd, 50) = 0x00000000;
    
        WFIFOSET(fd,packet_len(0x1cd));
        sd->menuskill_id = SA_AUTOSPELL;
        sd->menuskill_val = skill_lv;

    Sadly this doesn't work, as only the first 7 skills can be selected in the menu.

    I assume the problem is with the package size, which is 0x1cd. But I don't understand this number. Why is it 0x1cd? What is its function? If I increase it in a specific correct amount, can I increase the amount of skills in the package from 7 to 13? Or am I insane and looking at the wrong part of the code?

  3. Hi, I've been using this amazing software lately and I came up with an issue related to the maximum level of skills. I use a 2018-05-30b client.

    Currently, when you edit the max level of a skill, the software alters the "max" camp at "skill_db.txt", but unfortunately that doesn't actually change the maximum level accepted by the game. The file "skill_tree.txt" also must be altered in the camp "MaxLv", otherwise even if you change the max in "skill_db.txt" and the lua files in the GRF, after investing points in the skill, the game rolls back the level to what is defined in "skill_tree.txt".

    The other unfortunate thing is that this file has redundant data and assumes every class needs to have their "own version" of Basic Skill, which means that even if you alter it in a Novice, you also need to alter it in a Swordsman, Mage, etc, otherwise once you turn into these classes, suddenly your skill no longer has the new level, instead the old one.

    So, is this file supported by the software, or am I missing something in using it? Thank you for reading.

×
×
  • Create New...