BlackFullMoon 1
BlackFullMoon
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
mavzermete 1
mavzermete
Hikaye Ekle

HP ve SP çalma fixi

  • Konuyu başlatan Konuyu başlatan asas501
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 2K

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!

pasha37 nin konusudur isteyen daha rahat ulaşsın diye açıyorum

Hp çalma;


Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
iCurHP tanımlı olmadığı için sadece varolan orana "1" ekler, %5 HP Çalma efsunu varsa 6 hp çalar


Düzenlenmiş şekilde çalışma mantığı >

Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
iCurHP değeri CurrentHP yani o anki varolan hp miktarına tanımlandı dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutHP))


Koşullar düzenlendi, hp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi( Medium HP FLY ve SMALL SP FLY oranı )


Sp çalma;


Önceki çalışma mantığı >
Efsun varsa her hasarda 1/10 oranla aktif olur
Hedef mob ise sp yerine hp çalar
iCurHP ve iCurSP tanımlı olmadığı için var olan orana 1 ekler.


Düzenlenmiş şekilde çalışma mantığı >
Efsun varsa her hasar efsun oranı % kaç ise o oranda aktif olur
Hedef mob ise bu efsunu pas geçer
iCurSP değeri CurrentSP olarak düzenlendi, dolayısıyla mantık şu şekil değiştirildi Minimum(hasar, Maksimum(0, MevcutSP))


Koşullar düzenlendi, sp kontrolü eklendi
FLY çok küçük olduğundan medium olarak düzenlendi




%5 oranla ortalama çalma miktarları 6-20 arası ikisi içinde maksimum oran %50 ayarlanmış. Maksimumda ortalama 60-200 arası çalma mevcut


*char_battle.cpp

Kod:
            if (pAttacker->GetPoint(POINT_STEAL_HP))
            {
                int pct = 1;


                if (number(1, 10) <= pct)
                {
                    int iHP = MIN(dam, MAX(0, iCurHP)) * pAttacker->GetPoint(POINT_STEAL_HP) / 100;


                    if (iHP > 0 && GetHP() >= iHP)
                    {
                        CreateFly(FLY_HP_SMALL, pAttacker);
                        pAttacker->PointChange(POINT_HP, iHP);
                        PointChange(POINT_HP, -iHP);
                    }
                }
            }


            // SP ½ºÆ¿
            if (pAttacker->GetPoint(POINT_STEAL_SP))
            {
                int pct = 1;


                if (number(1, 10) <= pct)
                {
                    int iCur;


                    if (IsPC())
                        iCur = iCurSP;
                    else
                        iCur = iCurHP;


                    int iSP = MIN(dam, MAX(0, iCur)) * pAttacker->GetPoint(POINT_STEAL_SP) / 100;


                    if (iSP > 0 && iCur >= iSP)
                    {
                        CreateFly(FLY_SP_SMALL, pAttacker);
                        pAttacker->PointChange(POINT_SP, iSP);


                        if (IsPC())
                            PointChange(POINT_SP, -iSP);
                    }
                }
            }
Değiştir:
Kod:
            int iStealHP_ptr = pAttacker->GetPoint(POINT_STEAL_HP);
            if (iStealHP_ptr)
            {
                if (number(1, 100) <= iStealHP_ptr)
                {
                    int iHP = MIN(dam, MAX(0, GetHP())) * pAttacker->GetPoint(POINT_STEAL_HP) / 100;


                    if ((pAttacker->GetHP() > 0) && (pAttacker->GetHP() + iHP < pAttacker->GetMaxHP()) && (GetHP() > 0) && (iHP > 0))
                    {
                        CreateFly(FLY_HP_MEDIUM, pAttacker);


                        pAttacker->PointChange(POINT_HP, iHP);
                        PointChange(POINT_HP, -iHP);
                    }
                }
            }


            // SP ½ºÆ¿
            int iStealSP_ptr = pAttacker->GetPoint(POINT_STEAL_SP);
            if (iStealSP_ptr)
            {
                if (IsPC() && pAttacker->IsPC()) {
                    if (number(1, 100) <= iStealSP_ptr)
                    {
                        int iSP = MIN(dam, MAX(0, GetSP())) * pAttacker->GetPoint(POINT_STEAL_SP) / 100;


                        if ((pAttacker->GetSP() > 0) && (pAttacker->GetSP() + iSP < pAttacker->GetMaxSP()) && (GetSP() > 0) && (iSP > 0))
                        {
                            CreateFly(FLY_SP_MEDIUM, pAttacker);
                            pAttacker->PointChange(POINT_SP, iSP);


                            PointChange(POINT_SP, -iSP);
                        }
                    }
                }
            }
 

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

Geri
Üst