- 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
// Buradan itibaren RewardGold’un normal akışı devam eder
// (Buradan itibaren orijinal RewardGold’un kalan kısmı aynı kalacak)
}
C++:
#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++:
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
En son bir moderatör tarafından düzenlenmiş: