noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
SLyFeLLowTR 1
SLyFeLLowTR
DEVLOPER 1
DEVLOPER
Hikaye Ekle

[C++ Python] Lycan tamamiyle kaldırma.

  • Konuyu başlatan Konuyu başlatan SelcukCUKUR
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 31
  • Görüntüleme Görüntüleme 11K
Merhaba forumda geliştirici arkadaşlar varmış global chat için bile 2 satır kod için bile full src full pack :D paylaşan neyse konuyu saptırmayacağım.

1. input_main.cpp açın.

Kod:
if (ch->GetJob() == JOB_WOLFMAN && bArg >= 16 && bArg <= 20)

Bunu aratın.

Kod:
if (ch->GetJob() == JOB_WOLFMAN && bArg >= 16 && bArg <= 20)
{
return false;
}

Bu satırı komple source içerisinden silin.

Kod:
if (CheckSpeedHack && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)

bu satırı aratın.

Kod:
                if (ch->GetJob() == JOB_WOLFMAN && Calc - ComboInterval < 400)
                {
                    return false;
                }

Komple kaldırın bu kısmı. Buradaki işimiz bitti.

2. input_login.cpp açın.

Kod:
case MAIN_RACE_WOLFMAN_M:
*ret_job = JOB_WOLFMAN;
break;

Şu kısmı bulup kaldırın.

Kod:
if (g_bEnableNewKingdomForWolfman && race == 8)

bunu aratın tekrardan.

Kod:
    //table->x        = CREATE_START_X(bEmpire) + number(-300, 300);
//    table->y        = CREATE_START_Y(bEmpire) + number(-300, 300);

    if (g_bEnableNewKingdomForWolfman && race == 8)
    {
        table->x = 808274 + number(-300, 300);
        table->y = 935090 + number(-300, 300);
    }
    else
    {
        table->x = CREATE_START_X(bEmpire) + number(-300, 300);
        table->y = CREATE_START_Y(bEmpire) + number(-300, 300);
    }

şöyle birr kodla karşılaşacaksınız büyük ihtimal sourcelerde farklılık gösterebilir ama ısaca kaldırmanız gereken yerleri görmüş olsanızda aynı yerlerde aramalar yaparak kaldırabilirsiniz ama farklılık göstermiyceğini düşünüyorum herkes kopyala yapıştır yapmış zaten .

aşağıdaki şekilde değiştirin o kod bloğunu.

Kod:
    table->x        = CREATE_START_X(bEmpire) + number(-300, 300);
    table->y        = CREATE_START_Y(bEmpire) + number(-300, 300);

buradaki işimizde bitti.

3. item.cpp açın.

Kod:
case JOB_WOLFMAN:

bu satırı aratın ve aşağıdaki kodu komple silin.

Kod:
case JOB_WOLFMAN:
if (GetAntiFlag() & ITEM_ANTIFLAG_WOLFMAN)
return false;
break;

buradaki işimizde bitti.

4. item_manager.cpp gülme krizine girdim burdaki eklemeyi gördüğümde :D

Kod:
if (LC_IsKorea() || LC_IsYMIR())

şu satırı aratın. ve aşağıdaki kodları kaldırın.

Kod:
DWORD dwSkillVnumWolfman;

Kod:
                dwSkillVnumWolfman = number(170, 175);
                CSkillProto * pkSki = CSkillManager::instance().Get(dwSkillVnumWolfman);
                if (!pkSki)
                    continue;

Buradan bu lycan sistemini eklyeen arkadaşı tebrik ediyorum bu kadar uğraşmak yerine skiller için üstteki ymirin orjinal ekli koduna zaten 1, 111 yerine 1,175 yapsaydı olurdu çünkü zaten officalinde olan bir şey lycan karakteri neyse konumuza dönelim.

Kod:
__WOLFMAN_CHARACTER__

bu satırı aratın ve aşağıdaki şekilde değiştirin.

Kod:
#ifdef __WOLFMAN_CHARACTER__
                        dwSkillVnum = number(221, 229);
#else
                        dwSkillVnum = number(221, 228);
#endif
                    }
                    else
                    {
#ifdef __WOLFMAN_CHARACTER__
                        dwSkillVnum = number(236, 244);
#else
                        dwSkillVnum = number(236, 243);
#endif

son hali aşağıdaki gibi olcak ordaki satırın.
Kod:
                if (number(1, 100) >= 70)
                {

                    item->SetSocket(0, dwSkillVnum);
                }

Burda bir aksaklık çıkabilir sorun yaşanırsa belirtin bir daha kontrol ederim benim kontrol etme fırsatım yok bu kısmı. Sorun çıkarsa eğer buildlenirken veya oyun içerisinde skill atarken ch düşebilir veya syserr verebilir verdiğinde büyük ihtimal if sorgusu boş döndüğündendir konuyla ilgili oyun hakında bilgisi olan bir geliştirmeci haberdar ederse ne olduğunu o satırda tam olarak düzenlerim oyunla çok alakam yok çünkü. tahminimce skill targetleri wolfman skilleriyle ilgili birşey.

buradaki işimizde bitti arkadaşlar. Game kısmından tamamiyle lycan'ı kaldırdık zaten paylaşılan dosyalarda lycan sorunsuz ve eksiksiz değilmiş bugluymuş. :)


EK OLARAK DEVAMI :)

ani.cpp açın. Ve aşağıdaki kod bloklarını kaldırın.

Kod:
        FN_NAME(WEAPON_CLAW);

Kod:
        case WEAPON_CLAW:
            strlcpy(format, "%s/%sclaw/combo_%02d.msa", sizeof(format));
            break;

Kod:
        case WEAPON_CLAW:

Kod:
        case WEAPON_CLAW:
            return "CLAW";

Kod:
        FN_NAME(MAIN_RACE_WOLFMAN_M);

Kod:
        case MAIN_RACE_WOLFMAN_M:

Kod:
        case MAIN_RACE_WOLFMAN_M:
            return "WOLFMAN_M";

ani.cpp ile işimiz bitti.


battle.cpp açın ve aşağıdaki kod bloklarını kaldırın.

Kod:
            case JOB_WOLFMAN:
                iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_WOLFMAN)) / 100;
                break;

Kod:
            case JOB_WOLFMAN:
                iAtk -= (iAtk * pkVictim->GetPoint(POINT_RESIST_WOLFMAN)) / 100;
                break;

Kod:
            case WEAPON_CLAW:
                break;

Kod:
            case WEAPON_CLAW:
                // iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_CLAW)) / 100;//orjinal pence sav
                iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_DAGGER)) / 100;//býcak sav oldu boyle
                break;

Kod:
    else if (item && item->GetSubType() == WEAPON_CLAW)
        real_speed /= 2;

Kod:
    // BLEED
    if (pkAttacker->GetPoint(POINT_BLEEDING_PCT) && !pkVictim->IsAffectFlag(AFF_BLEEDING) && !pkVictim->IsAffectFlag(AFF_POISON))
    {
        if (number(1, 100) <= pkAttacker->GetPoint(POINT_BLEEDING_PCT))
            pkVictim->AttackedByBleeding(pkAttacker);
    }

battle.cpp ile işimiz bitti.

char.cpp açın ve aşağıdaki kod bloklarını kaldırın.

Kod:
case POINT_BLEEDING_REDUCE:

Kod:
            case WEAPON_CLAW:
                dwMode = MOTION_MODE_CLAW;
                break;

Kod:
if (GetJob() == JOB_WOLFMAN && m_iComboHackCount <= 20)
        {
            return;
        }

Kod:
            case JOB_WOLFMAN:
                iStatAtk = (2 * GetPoint(POINT_ST));
                break;

aşağıdaki sutunu şu şekilde değiştirin.

Kod:
        case MAIN_RACE_WOLFMAN_M:
            return SEX_MALE;

Kod:
return SEX_MALE;

Kod:
        case MAIN_RACE_WOLFMAN_M:
            m_points.job = MAIN_RACE_WOLFMAN_M;
            break;

Kod:
        case POINT_ATTBONUS_WOLFMAN:

Kod:
        case POINT_BLEEDING_PCT:

char.cpp de işimiz bitti.

char_item.cpp açın ve aşağıdaki kod bloklarını değiştirin.

Kod:
        case JOB_WOLFMAN:
            if (item->GetAntiFlag() & ITEM_ANTIFLAG_WOLFMAN)
                return false;
            break;

char_item.cpp ile işimiz bitti.

char_manager.cpp açın ve aşağıdaki kod bloklarını kaldırın.

Kod:
#define FIND_JOB_WOLFMAN_0    (1 << 15)
#define FIND_JOB_WOLFMAN_1    (1 << 16)
#define FIND_JOB_WOLFMAN    (FIND_JOB_WOLFMAN_0 | FIND_JOB_WOLFMAN_1)

char_manager.cpp ile işimiz bitti.

char_resist.cpp açın ve aşağıdakileri kaldırın.

Kod:
    iRate = MAX(0, iRate - ch->GetPoint(POINT_BLEEDING_REDUCE));
    return iRate;

char_resist.cpp ile işimiz bitti.

char_skill.cpp açın ve aşağıdakileri kaldırın.

Kod:
else if (m_pkSk->dwVnum == SKILL_GONGDAB)
        {
            float adjust = 1.0;
            if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_CLAW)
            {
                adjust = 1.35f;
            }

            iAmount = (int)(iAmount * adjust);
        }

Kod:
                            case WEAPON_CLAW:
                                // iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_CLAW)) / 100;//orjinal pence sav
                                iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_DAGGER)) / 100;//Býcak sav oldu boyle
                                break;

char_skill.cpp ile işimiz bitti.

config.cpp açın ve şunu kaldırın.

Kod:
bool g_bEnableNewKingdomForWolfman = true;

Kod:
        TOKEN("enable_new_kingdom_for_wolfman")
        {
            str_to_number(g_bEnableNewKingdomForWolfman, value_string);
            continue;
        }

config.cpp ile işimiz bitti.


ve sourceden tamamiyle kaldırdık. hayırlı uğurlu olsun eklemek isteyenler tam tersini yapabilirler.

Python olarak, kaldırmayıda ekleyecektim fakat elemiyorum çünkü config kodları mevcut en sağlıklısı o olacaktır.

root.epk & root.eix açın.

consinfo.py içerisinde:

Kod:
WOLF_MAN = "ENABLED"    # ENABLED/DISABLED
WOLF_WOMEN = "ENABLED"    # ENABLED/DISABLED

Kısımlarını DISABLED yapın.

sadece lycan bk kaldırmak ıstıyorm yazılanları yaptım fakat kalkmadı yardım ,

https://forum.turkmmo.com/konu/3618583-lycan-bk-lari-kaldirma/
 

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

Geri
Üst