farkmt2official 1
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle

Sorunsuz Şaman Party Flag

  • Konuyu başlatan Konuyu başlatan 589henry2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 41
  • Görüntüleme Görüntüleme 8K
Merhabalar,

Arkadaşlar forumumuzda birçok şaman party flag sistemi paylaşılmış fakat hiçbiri sorunsuz çalışmıyor aslında
Pelin arkadaşımızın paylaştığı olması gerektiği gibi fakat birçok kişi şaman sadece grubtakileri kutsamasını istemez bu yüzden bu konuyu paylaşmak istedim.

Anlatım ;

Char_skill.cpp Açılır Aratılır

Kod:
static const DWORD s_adwSubSkillVnums[] =
{
    SKILL_LEADERSHIP,
    SKILL_COMBO,
    SKILL_MINING,
    SKILL_LANGUAGE1,
    SKILL_LANGUAGE2,
    SKILL_LANGUAGE3,
    SKILL_POLYMORPH,
    SKILL_HORSE,
    SKILL_HORSE_SUMMON,
    SKILL_HORSE_WILDATTACK,
    SKILL_HORSE_CHARGE,
    SKILL_HORSE_ESCAPE,
    SKILL_HORSE_WILDATTACK_RANGE,
    SKILL_ADD_HP,
    SKILL_RESIST_PENETRATE
};

Kod Satırının Altına Eklenir

Kod:
struct FPartyPIDCollector
{
    std::vector <DWORD> vecPIDs;
    FPartyPIDCollector()
    {
    }
    void operator () (LPCHARACTER ch)
    {
        vecPIDs.push_back(ch->GetPlayerID());
    }
};


Char_skill.cpp Aratılır

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        pkVictim = this;

Altına Eklenir

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
        pkVictim = this;

Char_skill.cpp Aratılır

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        pkVictim = this;

Altına Eklenir

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
        pkVictim = this;

Char_skill.cpp Aratılır

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        ComputeSkill(dwVnum, this);    
    else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_BYEURAK)
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
        ComputeSkill(dwVnum, pkVictim);


    m_dwLastSkillTime = get_dword_time();


    return true;
}

Değiştirilir

Kod:
    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        ComputeSkill(dwVnum, this);    
    else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
        ComputeSkill(dwVnum, this);
    else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())
    {
        FPartyPIDCollector f;
        GetParty()->ForEachOnMapMember(f, GetMapIndex());
        for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)
        {
            LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);
            ComputeSkill(dwVnum, ch); 
        }
    }
    else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_BYEURAK)
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
        ComputeSkill(dwVnum, pkVictim);


    m_dwLastSkillTime = get_dword_time();


    return true;
}

Guild.cpp Açılır Aratılır

Kod:
    if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))
    {
        // ÀÌ¹Ì °É·Á ÀÖÀ¸¹Ç·Î »ç¿ëÇÏÁö ¾ÊÀ½.
        if (ch->FindAffect(pkSk->dwVnum))
            return;


        victim = ch;
    }

Altına Eklenir

Kod:
    if ((pkSk->dwFlag & SKILL_FLAG_PARTY))
    {
        if (ch->FindAffect(pkSk->dwVnum))
            return;
 
        victim = ch;
    }

skill.h Açılır Aratılır

Kod:
    SKILL_FLAG_CRUSH_LONG        = (1 << 23),    // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²
    SKILL_FLAG_WIND        = (1 << 24),    // ¹Ù¶÷ ¼Ó¼º 
    SKILL_FLAG_ELEC        = (1 << 25),    // Àü±â ¼Ó¼º
    SKILL_FLAG_FIRE        = (1 << 26),

Değiştirilir

Kod:
    SKILL_FLAG_CRUSH_LONG        = (1 << 23),    // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²
    SKILL_FLAG_PARTY            = (1 << 24),    // Party Flag
    SKILL_FLAG_WIND        = (1 << 25),    // ¹Ù¶÷ ¼Ó¼º 
    SKILL_FLAG_ELEC        = (1 << 26),    // Àü±â ¼Ó¼º
    SKILL_FLAG_FIRE        = (1 << 27),

Mysql
Player>Skill_proto Masaüstüne Dump SQL File Yapılır ve Notepad İle Açılır.


Aratılır

Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE'  ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C  OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_  ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING','  ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB'  ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO  OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB  LE_BY_POINT_UP','CRUSH_LONG') DEFAULT NULL,

Değiştirilir

Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE'  ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C  OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_  ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING','  ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB'  ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO  OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB  LE_BY_POINT_UP','CRUSH_LONG','PARTY') DEFAULT NULL,

Kaydedilir ve sql Mysql>player'e Okutulur.

Kanıt


Başka Bir Forumdan Alıntıdır.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst