MartySama 5.8 Üçüncü El Aktif Etme

  • Konuyu açan Konuyu açan Aliyldrim
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 369

Aliyldrim

Üye
Üye
Mesaj
9
Çözümler
1
Beğeni
2
Puan
418
Ticaret Puanı
0
Selamlar MartySama 5.8 Files kullanıyorum ihtiyaç halinde üçüncü el ihtiyacım vardı ancak files da itemin olması birşeyi değiştirmiyordu o yüzden kendim bir şekilde aktif etmem gerekti bunu serverin /home/gdb_server_source/Srcs/Server/game/src dizininde char_battle.cpp dosyayı masaüstüne çektim ardından notepadd++ ile açtım ardından RewardGold dizizini f6 ile buldum ardından altına açılan { alt satırı ve bir sonraki sekme kısmına bu şekilde yazdım


C++:
Genişlet Daralt Kopyala
#define GetGoldMultipler() (distribution_test_server ? 3 : 1)

void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
{
    // Eğer saldıran oyuncunun envanterinde 70002 varsa, yangı yere düşürmeden direkt ekle
    if (pkAttacker && pkAttacker->IsPC() && pkAttacker->CountSpecifyItem(70002) > 0)
    {
        // Burada istersen tüm drop hesaplamalarını aşağıdaki orijinal mantıkla da yapabilirsin.
        int iGoldMultipler = GetGoldMultipler();
        int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax);

        iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
        iGold *= iGoldMultipler;

        if (iGold > 0)
        {
            pkAttacker->PointChange(POINT_GOLD, iGold);
            DBManager::instance().SendMoneyLog(MONEY_LOG_MONSTER, GetRaceNum(), iGold);
            pkAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d Yang cebine eklendi."), iGold);
        }

        return; // normal drop akışına girmeden çık
    }
}

// Buradan itibaren RewardGold’un normal akışı devam eder
C++:
Genişlet Daralt Kopyala
bool isAutoLoot =
    (pkAttacker->GetPremiumRemainSeconds(PREMIUM_AUTOLOOT) > 0 ||
     pkAttacker->IsEquipUniqueGroup(UNIQUE_GROUP_AUTOLOOT))
    ? true : false;

PIXEL_POSITION pos = GetXYZ();

int iTotalGold = 0;
int iGoldPercent = MobRankStats[GetMobRank()].iGoldPercent;

if (pkAttacker->IsPC())
    iGoldPercent = iGoldPercent * (100 + CPrivManager::instance().GetPriv(pkAttacker, PRIV_GOLD_DROP)) / 100;

if (pkAttacker->GetPoint(POINT_MALL_GOLDBONUS))
    iGoldPercent += (iGoldPercent * pkAttacker->GetPoint(POINT_MALL_GOLDBONUS) / 100);

iGoldPercent = iGoldPercent * CHARACTER_MANAGER::instance().GetMobGoldDropRate(pkAttacker) / 100;

if (pkAttacker->GetPremiumRemainSeconds(PREMIUM_GOLD) > 0 ||
    pkAttacker->IsEquipUniqueGroup(UNIQUE_GROUP_LUCKY_GOLD))
    iGoldPercent += iGoldPercent;

if (iGoldPercent > 100)
    iGoldPercent = 100;

int iPercent;
if (GetMobRank() >= MOB_RANK_BOSS)
    iPercent = ((iGoldPercent * PERCENT_LVDELTA_BOSS(pkAttacker->GetLevel(), GetLevel())) / 100);
else
    iPercent = ((iGoldPercent * PERCENT_LVDELTA(pkAttacker->GetLevel(), GetLevel())) / 100);

if (number(1, 100) > iPercent)
    return;

int iGoldMultipler = GetGoldMultipler();

// (Buradan itibaren orijinal RewardGold’un kalan kısmı aynı kalacak)
}
 

Dosya Eklentileri

  • 0830_022549.webp
    0830_022549.webp
    125,4 KB · Gösterim: 147
  • 0830_023843.webp
    0830_023843.webp
    116,1 KB · Gösterim: 125
En son bir moderatör tarafından düzenlenmiş:
vnumu farklı olan üçüncü eller çalışıyor zaten 5.8 'de ama effect olarak vermiyor giyiliyor
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst