Yardım Oto Av kullanan oyuncular için drop düşürme

  • Konuyu açan Konuyu açan allien
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 263
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

allien

Premium Üye
Premium Üye
MT Üye
Mesaj
174
Çözümler
8
Beğeni
55
Puan
499
Ticaret Puanı
0
merhabalar, 1-2 tane sorum var yardımlarınız için şimdiden teşekkürler.

örneğin oto av kullanan herhangi bir oyuncu için karakter üzerinde herhangi bir efekt veya icon çıkarmak mümkün mü? mümkün ise bunu nasıl yapabilirim bunun için herhangi bir paylaşım var mı?

bir diğeri ise oto av ile metin farmı yapan oyuncuların metinlerden alacağı drobu örneğin 5/1 veya 5/2 yapmak mümkün mü?
 
merhabalar, 1-2 tane sorum var yardımlarınız için şimdiden teşekkürler.

örneğin oto av kullanan herhangi bir oyuncu için karakter üzerinde herhangi bir efekt veya icon çıkarmak mümkün mü? mümkün ise bunu nasıl yapabilirim bunun için herhangi bir paylaşım var mı?

bir diğeri ise oto av ile metin farmı yapan oyuncuların metinlerden alacağı drobu örneğin 5/1 veya 5/2 yapmak mümkün mü?
Merhaba GM logosu gibi bir affect oluşturup bunu affect listesine ekleyip karaktere verebilirsiniz. Oto av aktif olan oyuncuların drobunuda düşürebilirsiniz.
 
dracarys e ait olanı kullanıyorsan.

ilk olarak char.cpp de void CHARACTER::Initialize() bu kısıma bir bool değişkeni oluştur, diğerlerinde kopya çekebilirsin. sonra neyin altına eklediysen onu char.h da bul onunda altına char.cpp de oluşturduğun gibi aynı değişkeni oluştur bunda da diğerlerinden kopya çekebilirsin. sonra ilk resimde işaretli yerlerde bu değişkeni true veya false yaparsın. sonra 2. resimimdeki(item_manager.cpp) yeri bul char.cpp de oluşturduğun bool true ise bölenini yap.

+++:
Genişlet Daralt Kopyala
        int iPercent = (c_rInfo.m_iPercent * iDeltaPercent) / 100;

        if (auto_on)
            iPercent = iPercent / 3;


1725731657071.webp


1725731556521.webp
 
dracarys e ait olanı kullanıyorsan.

ilk olarak char.cpp de void CHARACTER::Initialize() bu kısıma bir bool değişkeni oluştur, diğerlerinde kopya çekebilirsin. sonra neyin altına eklediysen onu char.h da bul onunda altına char.cpp de oluşturduğun gibi aynı değişkeni oluştur bunda da diğerlerinden kopya çekebilirsin. sonra ilk resimde işaretli yerlerde bu değişkeni true veya false yaparsın. sonra 2. resimimdeki(item_manager.cpp) yeri bul char.cpp de oluşturduğun bool true ise bölenini yap.

+++:
Genişlet Daralt Kopyala
        int iPercent = (c_rInfo.m_iPercent * iDeltaPercent) / 100;

        if (auto_on)
            iPercent = iPercent / 3;


18770 eklentisini görüntüle

18769 eklentisini görüntüle
@okan4141 hocamın yardımlarıyla bir şeyler denedim fakat yapamadım örneğin drop oranını 2000 yapıyorum /2000 yaptığımda %1 şansla gelmesi gerekiyorken hala kesin olarak drop alabiliyor
 
@okan4141 hocamın yardımlarıyla bir şeyler denedim fakat yapamadım örneğin drop oranını 2000 yapıyorum /2000 yaptığımda %1 şansla gelmesi gerekiyorken hala kesin olarak drop alabiliyor
Kanka dediğim gibi yaparsan olur cmd_generalde senin oto avın start stop işlemleri var. Start olduğunda değişkeni true yap örneğin

ch->SetAutoHunt(true);

Stop olduğunda

ch->SetAutoHunt(false);

Bunları karakter sınıfında tanımla örneğin

void CHARACTER::SetAutoHunt(const bool i)
{
m_AutoHunt = i;
}

bool CHARACTER::IsAutoHunt()
{
return m_AutoHunt;
}

prototiplerini tanımla yada bunu char.h de direk yapabilirsin kafana göre

char.cpp de Initialize içine tanımla

m_AutoHunt = false;

prototipleri public değişkeni private olarak ekle.

item_manager.cpp gel tam ismini hatırlamıyorum işteyim şu an

CreateDropItem olacak birde GetDropPct olacak

GetDropPct nin aldığı parametreler de hem senin hemde öldürdüğünün işaretçisi olacak örneğin

pkKiller pkVictim ve diğerleri.

Buradaki herşey karşılanırsa CreateDropItem çalışmaya devam eder burası false döndürür ise CreateDropItem çalışmayı durdurur. Şimdi burada pkKiller sen oluyorsun ve burada bu işaretçinin IsAutoHunt fonksiyonunu çağıracaksın ve diyeceksin ki

if (pkKiller->IsAutoHunt())

burada İtem düşme oranını sağlayan isim hangisi ise ona müdahale edeceksin.
 
Son düzenleme:
Kanka dediğim gibi yaparsan olur cmd_generalde senin oto avın start stop işlemleri var. Start olduğunda değişkeni true yap örneğin

ch->SetAutoHunt(true);

Stop olduğunda

ch->SetAutoHunt(false);

Bunları karakter sınıfında tanımla örneğin

void CHARACTER::SetAutoHunt(const bool i)
{
m_AutoHunt = i;
}

bool CHARACTER::IsAutoHunt()
{
return m_AutoHunt;
}

prototiplerini tanımla yada bunu char.h de direk yapabilirsin kafana göre

char.cpp de Initialize içine tanımla

m_AutoHunt = false;

prototipleri public değişkeni private olarak ekle.

item_manager.cpp gel tam ismini hatırlamıyorum işteyim şu an

CreateDropItem olacak birde GetDropPct olacak

GetDropPct nin aldığı parametreler de hem senin hemde öldürdüğünün işaretçisi olacak örneğin

pkKiller pkVictim ve diğerleri.

Buradaki herşey karşılanırsa CreateDropItem çalışmaya devam eder burası false döndürür ise CreateDropItem çalışmayı durdurur. Şimdi burada pkKiller sen oluyorsun ve burada bu işaretçinin IsAutoHunt fonksiyonunu çağıracaksın ve diyeceksin ki

if (pkKiller->IsAutoHunt())

burada İtem düşme oranını sağlayan isim hangisi ise ona müdahale edeceksin.
cmd_general.cpp:
Genişlet Daralt Kopyala
{
    case 'b': //Baslat
    {
        if (!ch->IsAffectFlag(AFF_OTOMATIK_AV))
            ch->AddAffect(AFFECT_OTOMATIK_AV, POINT_NONE, 0, AFF_OTOMATIK_AV, INFINITE_AFFECT_DURATION, 0, false);
        ch->SetAutoHuntItemDrop(true);
        ch->ChatPacket(CHAT_TYPE_INFO, "Otomatik Av aktif.");
    }
    break;

    case 'd': //Durdur
    {
        if (ch->IsAffectFlag(AFF_OTOMATIK_AV))
            ch->RemoveAffect(AFFECT_OTOMATIK_AV);
        ch->SetAutoHuntItemDrop(false);
        ch->ChatPacket(CHAT_TYPE_INFO, "Otomatik Av deaktif.");
    }
    break;

    default:
        break;


char.cpp:
Genişlet Daralt Kopyala
void CHARACTER::SetAutoHuntItemDrop(bool active_mode)
{
    m_isAutoHuntItemDrop = active_mode;
}

bool CHARACTER::GetAutoHuntItemDrop()
{
    return m_isAutoHuntItemDrop;
}

char.cpp:
Genişlet Daralt Kopyala
    m_isAutoHuntItemDrop = false;


char.h:
Genişlet Daralt Kopyala
    public:
        void SetAutoHuntItemDrop(bool active_mode);
        bool GetAutoHuntItemDrop();

    private:
        bool m_isAutoHuntItemDrop;


item_manager.cpp:
Genişlet Daralt Kopyala
    // PC_BANG_ITEM_ADD
    if (pkKiller->GetPoint(POINT_PC_BANG_DROP_BONUS) > 0)
    {
        if (pkKiller->IsPCBang() == true)
            iDeltaPercent += iDeltaPercent * pkKiller->GetPoint(POINT_PC_BANG_DROP_BONUS)/100;
    }
    // END_PC_BANG_ITEM_ADD

    if (pkKiller->FindAffect(AFFECT_OTOMATIK_AV))
        iDeltaPercent /= 10;


    iRandRange = 4000000;
    iRandRange = iRandRange * 100 /
        (100 +
         CPrivManager::instance().GetPriv(pkKiller, PRIV_ITEM_DROP) +
         (pkKiller->IsEquipUniqueItem(UNIQUE_ITEM_DOUBLE_ITEM)?100:0));

    if (distribution_test_server)
        iRandRange /= 3;

    return true;

bu şekilde ekli zaten kontrol eder misiniz eksik bir şey var mı
 
Üst