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!

About the bug Rune cooldown(v253/v260), does anyone have a solution?

Junior Spellweaver
Joined
Jan 29, 2015
Messages
118
Reaction score
5
This bug can be repeated stably through the following steps:
1.Prepare 10 (or more) runes with the same talent attributes
2.Install them all
3.Uninstall any one
Then you triggered the bug.

like this talent:

wxk0248 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums

Prepare 10(or more) red/yellow/blue runes with the same additional attributes
wxk0248 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums

wxk0248 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums




Under this bug, the cooldown of skills becomes 0 second. This bug can be triggered by talents of all occupations.

I've known this bug for a long time, and only recently did I know how to trigger it stably.
As far as I know, this bug has been fixed in v773.
Does anyone know how to fix it in v253/v260?



rune_bug_0 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums rune_bug_1 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums rune_bug_2 - About the bug Rune cooldown(v253/v260), does anyone have a solution? - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Oct 15, 2020
Messages
152
Reaction score
184
Did no one really figure out the fix or is it possible that they are selling the fix for that?
(I'm not expecting an answer.I'm just a bit frustrated that nothing really happens)

I will try to figure it out in the coming years and the day I get inspired and find a solution for this I hope to publicly share the method along with compiled binaries for v253+v260 with the fix.

 
Upvote 0
Newbie Spellweaver
Joined
Jul 15, 2018
Messages
11
Reaction score
0
So far I haven't seen any correction either, I got around this problem in another way, on my server the runes are obtained through the player's panel and in limited quantities by attributes. The negative point of this rescue is that there is no more rune trading, the positive point is the impossibility of bug.
 
Upvote 0
Junior Spellweaver
Joined
Oct 15, 2020
Messages
152
Reaction score
184
---How to use the rune glitch fix?
1)Replace gs within /server-fw/gamed
2)Replace libtask.so & libskill.so within /usr/lib

*v253 Rune cooldown fix:

*V260 Rune cooldown fix:


->Debug messages are disabled through wgame/gs/player_imp.h [Friend's fix]
Code:
[B]    inline bool GetDebugMode()
    {
//        return _debug_command_enable;
        return false;
    }
[/B]
---General Method to fix rune glitch:

We will be adjusting wskill/skill/skillwrapper.cpp
Code:
We will be replacing this:
        if(real != it->second.reallevel)
With:
        if(real < it->second.reallevel)

---FW253(Dysil Wrath):

Code:
int SkillWrapper::Degrade(ID id, unsigned int level, unsigned int mask, object_interface player)
{
    if(!id)
    {
        commonlevel -= level;
        for( StorageMap::iterator it = map.begin(); it != map.end(); ++it )
        {
            if(it->second.baselevel)
            {
                int real = commonlevel + it->second.baselevel + it->second.actilevel + it->second.actilevel2;
                if(real < it->second.reallevel)
                    it->second.reallevel = real;
            }
        }
        player.SendClientSkillCommonAddon(commonlevel);
        return 0;
    }

    StorageMap::iterator it = map.find(id); 
    if(it!=map.end())
    {
        if(mask)
            it->second.actilevel2 -= level;
        else
            it->second.actilevel -= level;
        int real = commonlevel + it->second.baselevel + it->second.actilevel + it->second.actilevel2;
        
       [COLOR=#008000] //if(real != it->second.reallevel)[/COLOR]
       [COLOR=#0000cd] if(real < it->second.reallevel)[/COLOR]
            it->second.reallevel = real;
        
        if(mask)
            player.SendClientExtraSkillByAddon(id, it->second.actilevel2);
        else
            player.SendClientSkillAddon(id, it->second.actilevel);
    }
    return 0;
}

---FW260(Bloodharvest):


Code:
int SkillWrapper::Degrade(ID id, unsigned int level, unsigned int mask, object_interface player)
{
    if(!id)
    {
        commonlevel -= level;
        for( StorageMap::iterator it = map.begin(); it != map.end(); ++it )
        {
            if(it->second.baselevel)
            {
                int real = commonlevel + it->second.baselevel + it->second.actilevel + it->second.actilevel2;
                if(real < it->second.reallevel)
                {
                    PassiveSkillUpdate(id, player, it->second.reallevel, real);
                    it->second.reallevel = real;
                }
            }
        }
        player.SendClientSkillCommonAddon(commonlevel);
        return 0;
    }

    StorageMap::iterator it = map.find(id); 
    if(it!=map.end())
    {
        if(mask)
            it->second.actilevel2 -= level;
        else
            it->second.actilevel -= level;
        int real = commonlevel + it->second.baselevel + it->second.actilevel + it->second.actilevel2;
        
       [COLOR=#008000] //if(real != it->second.reallevel)[/COLOR]
       [COLOR=#0000cd] if(real < it->second.reallevel)[/COLOR]
        {
            if(it->second.baselevel != 0)
                PassiveSkillUpdate(id, player, it->second.reallevel, real);
            it->second.reallevel = real;
        }
        if(mask)
            player.SendClientExtraSkillByAddon(id, it->second.actilevel2);
        else
            player.SendClientSkillAddon(id, it->second.actilevel);
    }
    return 0;
}


I wasn't the one to figure out this fix but I'm glad to help the community.
Special thanks to the person who publicly shared the fix.
If there is any issue ,please let me know!

 
Last edited:
Upvote 0
Junior Spellweaver
Joined
Jan 29, 2015
Messages
118
Reaction score
5
I tested it, it worked, and there were no drop table bugs that occurred when I compiled.



In v253/260,another bug I know is about "pet melt", which occurs in a specific situation when "logic_level_limit>80" in "ptemplate.conf". When "logic_level_limit>80" and a pet's level exceeds 80, players using pet_melt_service will cause the gs to crash. I compared v773 and can fix it in the following ways:
/wgame/gs/item/item_mercenary_bedge.cpp
replacing this:
ASSERT(gmatrix::GetDataMan().generate_item(guard,entry.gain_item_id,&tag,sizeof(tag)));
with:
if (!gmatrix::GetDataMan().generate_item(guard,entry.gain_item_id,&tag,sizeof(tag))) { return S2C::ERR_FATAL_ERR; }
 
Upvote 0
Newbie Spellweaver
Joined
Jul 15, 2018
Messages
11
Reaction score
0
Eu testei, funcionou e não houve bugs de drop table que ocorreram quando eu compilei.

- - - Atualizado - - -

Na v253/260, outro bug que conheço é sobre "pet melt", que ocorre em uma situação específica quando "logic_level_limit>80" em "ptemplate.conf". Quando "logic_level_limit>80" e o nível de um animal de estimação exceder 80, os jogadores que usam pet_melt_service farão com que o gs trave. Comparei v773 e posso corrigi-lo das seguintes maneiras:

This can be corrected directly in elements.data, in versions where the maximum level is 80, PET does not have an experience table above this level, just replicate what is in FW2 elements.
 
Upvote 0
Junior Spellweaver
Joined
Jan 29, 2015
Messages
118
Reaction score
5
This can be corrected directly in elements.data, in versions where the maximum level is 80, PET does not have an experience table above this level, just replicate what is in FW2 elements.
Yes, this is a better solution
 
Upvote 0
Back
Top