[Release] All Class Combo

Page 1 of 5 12345 LastLast
Results 1 to 15 of 61
  1. #1
    Account Upgraded | Title Enabled! seedmaker is offline
    MemberRank
    Feb 2017 Join Date
    127.0.0.1Location
    580Posts

    [Release] All Class Combo



    Mega

    Password : SeedMaker
    Last edited by seedmaker; 13-04-18 at 11:57 AM. Reason: I made it Clear


  2. #2
    RZ's most loyal knight Dios is offline
    ModeratorRank
    Apr 2005 Join Date
    ArgentinaLocation
    5,238Posts

    re: [Release] All Class Combo

    Approved

  3. #3
    vnDev.games DaoVanTrong is offline
    MemberRank
    Aug 2014 Join Date
    VietnamLocation
    203Posts

    re: [Release] All Class Combo

    How to start ?
    Build it to a dll and hook ?

  4. #4
    #ChangeBrazil SmileYzn is offline
    MemberRank
    Nov 2012 Join Date
    0x00401000Location
    927Posts

    re: [Release] All Class Combo

    dafuq man, put into a formatted text area

    Thanks anyway

  5. #5
    Member jhonhy is offline
    MemberRank
    Dec 2010 Join Date
    65Posts

    re: [Release] All Class Combo

    yes, put into a formatted text area

    Thanks

  6. #6
    Enthusiast Scripter is offline
    MemberRank
    Feb 2018 Join Date
    32Posts

    re: [Release] All Class Combo

    boss kindly release it for non-developer user :)

  7. #7
    Novice C++ allexander is offline
    MemberRank
    Feb 2011 Join Date
    European UnionLocation
    580Posts

    re: [Release] All Class Combo

    Quote Originally Posted by DaoVanTrong View Post
    How to start ?
    Build it to a dll and hook ?
    It's for X-team Source files... edit/compile/run...
    @seedmaker why post all the code and not only what you added, without any info and completely unreadable? why not post it in Source [MUEMU] ?
    Last edited by allexander; 13-04-18 at 02:52 AM.

  8. #8
    Account Upgraded | Title Enabled! seedmaker is offline
    MemberRank
    Feb 2017 Join Date
    127.0.0.1Location
    580Posts

    re: [Release] All Class Combo

    Sorry about this i already release about this and this is the second time and the first is Full info with Video's

    - - - Updated - - -

    Quote Originally Posted by allexander View Post
    It's for X-team Source files... edit/compile/run...
    @seedmaker why post all the code and not only what you added, without any info and completely unreadable? why not post it in Source [MUEMU] ?
    Sorry its becuase need a lot of code and Explanation's or what to put to work thats why i post all code xD Well if you need the code ican post it here :P

  9. #9

    re: [Release] All Class Combo

    Working perfect, thanks :)

  10. #10
    Account Upgraded | Title Enabled! seedmaker is offline
    MemberRank
    Feb 2017 Join Date
    127.0.0.1Location
    580Posts

    re: [Release] All Class Combo

    Quote Originally Posted by muca View Post
    working perfect, thanks :)
    np =D
    Last edited by seedmaker; 13-04-18 at 02:47 PM.

  11. #11
    Novice C++ allexander is offline
    MemberRank
    Feb 2011 Join Date
    European UnionLocation
    580Posts

    wink re: [Release] All Class Combo

    Quote Originally Posted by seedmaker View Post
    Sorry about this i already release about this and this is the second time and the first is Full info with Video's

    - - - Updated - - -



    Sorry its becuase need a lot of code and Explanation's or what to put to work thats why i post all code xD Well if you need the code ican post it here :P
    X-Team Combo for all classes

    ComboSkill.cpp

    Code:
    int CComboSkill::GetSkillType(WORD skill) // OK
    {
        if(skill == SKILL_FALLING_SLASH      ||
            skill == SKILL_LUNGE             ||
            skill == SKILL_UPPERCUT          ||
            skill == SKILL_CYCLONE           ||
            skill == SKILL_SLASH             ||
            skill == SKILL_FIRE_SLASH        ||
            skill == SKILL_TWISTER           ||
            skill == SKILL_POWER_SLASH       ||
            skill == SKILL_FLAME             ||
            skill == SKILL_DRAIN_LIFE        ||
            skill == SKILL_TRIPLE_SHOT       ||
            skill == SKILL_UPPER_BEAST       ||
            skill == SKILL_PHOENIX_SHOT      ||
            skill == SKILL_LARGE_RING_BLOWER ||
            skill == SKILL_FIRE_BURST
            )
        {
            return 0;
        }
        else if(skill == SKILL_TWISTING_SLASH ||
            skill == SKILL_RAGEFUL_BLOW       ||
            skill == SKILL_DEATH_STAB         ||
            skill == SKILL_FROZEN_STAB        ||
            skill == SKILL_BLOOD_STORM        || 
            skill == SKILL_LIGHTNING          ||
            skill == SKILL_DECAY              ||
            skill == SKILL_HELL_FIRE          ||
            skill == SKILL_INFERNO            ||
            skill == SKILL_RED_STORM          ||
            skill == SKILL_CHAIN_LIGHTNING    ||
            skill == SKILL_FIVE_SHOT          ||
            skill == SKILL_PENETRATION        ||
            skill == SKILL_DRAGON_LORE        ||
            skill == SKILL_CHAIN_DRIVER       ||
            skill == SKILL_FIRE_SCREAM        ||
            skill == SKILL_BIRDS 
            )
        {
            return 1;
        }
        else
        {
            return -1;
        }
    }

    SkillManager.cpp

    Code:
    Code:
    case SKILL_DECAY:
                return this->SkillDecay(aIndex,bIndex,lpSkill,x,y,combo);
    Code:
    case SKILL_RED_STORM:
                return this->SkillRedStorm(aIndex,bIndex,lpSkill,combo);
    Code:
    case SKILL_FIVE_SHOT:
                return this->SkillFiveShot(aIndex,bIndex,lpSkill,angle,combo);
    Code:
    case SKILL_BIRDS:
                return this->SkillBirds(aIndex,bIndex,lpSkill,angle,combo);
    Code:
    case SKILL_DRAGON_LORE:
                return this->SkillDragonLore(aIndex,bIndex,lpSkill,combo);
    Code:
    bool CSkillManager::SkillDecay(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,bool combo) // OK
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,x,y) == 0)
        {
            return 0;
        }
    
        int count = 0;
    
        for(int n=0;n < MAX_VIEWPORT;n++)
        {
            if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
            {
                continue;
            }
    
            int index = lpObj->VpPlayer2[n].index;
    
            if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillRadio(lpSkill->m_index,x,y,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);
    
            if(combo != 0)
            {
                this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
            }
            if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
            {
                break;
            }
        }
    
        return 1;
    }
    Code:
    bool CSkillManager::SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        int count = 0;
    
        for(int n=0;n < MAX_VIEWPORT;n++)
        {
            if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
            {
                continue;
            }
    
            int index = lpObj->VpPlayer2[n].index;
    
            if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillRadio(lpSkill->m_index,lpObj->X,lpObj->Y,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            gObjAddAttackProcMsgSendDelay(lpObj,50,index,250,lpSkill->m_index,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);
    
            if(combo != 0)
            {
                this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
            }
            if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
            {
                break;
            }
        }
    
        return 1;
    }
    Code:
    bool CSkillManager::SkillFiveShot(int aIndex,int bIndex,CSkill* lpSkill,BYTE angle,bool combo) // OK
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        int SkillFrustrumX[4],SkillFrustrumY[4];
    
        this->GetSkillFrustrum(SkillFrustrumX,SkillFrustrumY,angle,lpObj->X,lpObj->Y,6.0f,7.0f,2.0f,0.0f);
    
        vec3_t Angle;
    
        Vector(0.0f,6.0f,0.0f,Angle);
    
        vec3_t p[4];
    
        Vector(0.0f,0.0f,40.0f,p[0]);
        Vector(0.0f,0.0f,20.0f,p[1]);
        Vector(0.0f,0.0f,340.0f,p[2]);
        Vector(0.0f,0.0f,320.0f,p[3]);
    
        float Matrix[3][4];
    
        vec3_t vFrustrum[5],vFrustrum2[5];
    
        AngleMatrix(p[0],Matrix);
        VectorRotate(Angle,Matrix,vFrustrum[0]);
    
        AngleMatrix(p[1],Matrix);
        VectorRotate(Angle,Matrix,vFrustrum[1]);
    
        Vector(0.0f,6.0f,0.0f,vFrustrum[2]);
    
        AngleMatrix(p[2],Matrix);
        VectorRotate(Angle,Matrix,vFrustrum[3]);
    
        AngleMatrix(p[3],Matrix);
        VectorRotate(Angle,Matrix,vFrustrum[4]);
    
        Vector(0.0f,0.0f,(vec_t)((angle*360)/255),p[0]);
    
        AngleMatrix((float*)p,Matrix);
    
        int ArrowFrustrum[5],ArrowFrustrumX[5],ArrowFrustrumY[5];
    
        for(int n=0;n < 5;n++)
        {
            VectorRotate(vFrustrum[n],Matrix,vFrustrum2[n]);
    
            ArrowFrustrumX[n] = (int)vFrustrum2[n][0]+lpObj->X;
    
            ArrowFrustrumY[n] = (int)vFrustrum2[n][1]+lpObj->Y;
        }
    
        int count = 0;
    
        for(int n=0;n < MAX_VIEWPORT;n++)
        {
            if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
            {
                continue;
            }
    
            int index = lpObj->VpPlayer2[n].index;
    
            if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillRadio(lpSkill->m_index,lpObj->X,lpObj->Y,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillFrustrum(SkillFrustrumX,SkillFrustrumY,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            for(int i=0;i < 5;i++)
            {
                if((ArrowFrustrum[i]=((ArrowFrustrumX[i]-lpObj->X)*(gObj[index].Y-lpObj->Y))-((ArrowFrustrumY[i]-lpObj->Y)*(gObj[index].X-lpObj->X))) > -5 && ArrowFrustrum[i] < 5)
                {
                    gAttack.Attack(lpObj,&gObj[index],lpSkill,1,0,0,0,0);
                    gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);
    
            if(combo != 0)
            {
                this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
            }
                }
            }
    
            if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
            {
                break;
            }
        }
    
        return 1;
    }
    Code:
    bool CSkillManager::SkillBirds(int aIndex,int bIndex,CSkill* lpSkill,BYTE angle,bool combo) // OK
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        int SkillFrustrumX[4],SkillFrustrumY[4];
    
        this->GetSkillFrustrum(SkillFrustrumX,SkillFrustrumY,angle,lpObj->X,lpObj->Y,1.5f,6.0f,1.5f,0.0f);
    
        int count = 0;
    
        for(int n=0;n < MAX_VIEWPORT;n++)
        {
            if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
            {
                continue;
            }
    
            int index = lpObj->VpPlayer2[n].index;
    
            if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillRadio(lpSkill->m_index,lpObj->X,lpObj->Y,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillFrustrum(SkillFrustrumX,SkillFrustrumY,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            if(OBJECT_RANGE(bIndex) != 0 && index == bIndex)
            {
                gObjAddAttackProcMsgSendDelay(lpObj,50,index,200,lpSkill->m_index,0);
    
                gObjAddAttackProcMsgSendDelay(lpObj,50,index,300,lpSkill->m_index,0);
            }
            else
            {
                gObjAddAttackProcMsgSendDelay(lpObj,50,index,200,lpSkill->m_index,0);
            }
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);
    
            if(combo != 0)
            {
                this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
            }
            if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
            {
                break;
            }
        }
    
        return 1;
    }
    Code:
    bool CSkillManager::SkillDragonLore(int aIndex,int bIndex,CSkill* lpSkill,bool combo) // OK
    {
        #if(GAMESERVER_UPDATE>=601)
    
        LPOBJ lpObj = &gObj[aIndex];
    
        if(OBJECT_RANGE(bIndex) == 0)
        {
            return 0;
        }
    
        LPOBJ lpTarget = &gObj[bIndex];
    
        if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,lpTarget->X,lpTarget->Y) == 0)
        {
            return 0;
        }
    
        int count = 0;
    
        for(int n=0;n < MAX_VIEWPORT;n++)
        {
            if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
            {
                continue;
            }
    
            int index = lpObj->VpPlayer2[n].index;
    
            if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
            {
                continue;
            }
    
            if(this->CheckSkillRadio(lpSkill->m_index,lpTarget->X,lpTarget->Y,gObj[index].X,gObj[index].Y) == 0)
            {
                continue;
            }
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,1,0,0,1,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,2,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,3,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,4,0);
    
            gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,combo);
    
            if(combo != 0)
            {
                this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
            }
    
            if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
            {
                break;
            }
        }
    
        return 1;
    
        #else
    
        return 0;
    
        #endif
    }
    SkillManager.h

    Code:
    Code:
    bool SkillDecay(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,bool combo);
    Code:
    bool SkillRedStorm(int aIndex,int bIndex,CSkill* lpSkill,bool combo);
    Code:
    bool SkillFiveShot(int aIndex,int bIndex,CSkill* lpSkill,BYTE angle,bool combo);
    Code:
    bool SkillBirds(int aIndex,int bIndex,CSkill* lpSkill,BYTE angle,bool combo);
    Code:
    bool SkillDragonLore(int aIndex,int bIndex,CSkill* lpSkill,bool combo);
    Source files can be find here

    Something like this :D, Great job by the way.

  12. #12
    Account Upgraded | Title Enabled! seedmaker is offline
    MemberRank
    Feb 2017 Join Date
    127.0.0.1Location
    580Posts

    re: [Release] All Class Combo

    Oh iforgot -.- You need to Finnish the Quest "Dark Stone/Hero Status" or You can Edit in Data/Quest (maybe it's take a week to Config xD) or Edit in Source

    Find or go to Line 931/ Line 989 Then edit 3 to 0

    if(gQuest.CheckQuestListState(lpObj,3,QUEST_FINISH) != 0 && lpObj->ComboSkill.CheckCombo(lpSkill->m_skill) != 0)

  13. #13
    #ChangeBrazil SmileYzn is offline
    MemberRank
    Nov 2012 Join Date
    0x00401000Location
    927Posts

    re: [Release] All Class Combo

    Quote Originally Posted by seedmaker View Post
    Oh iforgot -.- You need to Finnish the Quest "Dark Stone/Hero Status" or You can Edit in Data/Quest (maybe it's take a week to Config xD) or Edit in Source

    Find or go to Line 931/ Line 989 Then edit 3 to 0

    if(gQuest.CheckQuestListState(lpObj,3,QUEST_FINISH) != 0 && lpObj->ComboSkill.CheckCombo(lpSkill->m_skill) != 0)
    Make a check for characters like DL that do not have this quest, maybe for MG also is better than make this or just put gQuest.CheckQuestListState(lpObj,3,QUEST_FINISH) into CheckCombo(lpSkill->m_skill).

    Also make a config to adjust combos in all chars is better than do it in sources directly

  14. #14
    Account Upgraded | Title Enabled! seedmaker is offline
    MemberRank
    Feb 2017 Join Date
    127.0.0.1Location
    580Posts

    re: [Release] All Class Combo

    Quote Originally Posted by SmileYzn View Post
    Make a check for characters like DL that do not have this quest, maybe for MG also is better than make this or just put gQuest.CheckQuestListState(lpObj,3,QUEST_FINISH) into CheckCombo(lpSkill->m_skill).

    Also make a config to adjust combos in all chars is better than do it in sources directly
    Like this ?

    ;==================================================; Character Combo Skill Damage Settings;==================================================ComboDamageConstA = 20ComboDamageConstB = 10

  15. #15
    #ChangeBrazil SmileYzn is offline
    MemberRank
    Nov 2012 Join Date
    0x00401000Location
    927Posts

    re: [Release] All Class Combo

    Quote Originally Posted by seedmaker View Post
    Like this ?

    ;==================================================; Character Combo Skill Damage Settings;==================================================ComboDamageConstA = 20ComboDamageConstB = 10
    No :D



Page 1 of 5 12345 LastLast

Advertisement