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 64

Aliyldrim

Çaylak Üye
Üye
Mesaj
9
Çözümler
1
Beğeni
1
Puan
23
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: 46
  • 0830_023843.webp
    0830_023843.webp
    116,1 KB · Gösterim: 39
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
 
Geri
Üst