shrpnl 1
shrpnl
Agora Metin2 1
Agora Metin2
xranzei 1
xranzei
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Karan2offical 1
Karan2offical
Fethi Polat 1
Fethi Polat
ShadowFon 1
ShadowFon
bikral 1
bikral
-TuRKuaZ- 1
-TuRKuaZ-
SLyFeLLowTR 1
SLyFeLLowTR
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

589henry2

Level 5
TM Üye
Üye
Katılım
29 Mar 2012
Konular
38
Mesajlar
673
Reaksiyon Skoru
77
Altın Konu
0
TM Yaşı
14 Yıl 2 Ay 20 Gün
Başarım Puanı
72
MmoLira
9
DevLira
0
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

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.
 
Teşekkürler :)
 
eyv test eden olursa ıyı olur
 
Paylaşım için teşekkürler, forumda önceden paylaşılmıştı kaldırılmış sanırsam.
 

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

Geri
Üst