Yay kullanımında - Ok gereksinimini kaldırmak

mazeah321

Üye
Üye
Mesaj
36
Çözümler
1
Beğeni
25
Puan
694
Ticaret Puanı
0
KANIT =
Linkleri görebilmek için giriş yap veya kayıt ol.

C++:
service.h Müsait bir yere eklenir

#define OK_KALDIRMA


char_battle.cpp Açılır

//FONKSİYONU BUL

int CHARACTER::GetArrowAndBow

//FONKSİYONUN TAMAMINI DEĞİŞTİR

#ifdef OK_KALDIRMA
int CHARACTER::GetBow(LPITEM* ppkBow)
#else
int CHARACTER::GetArrowAndBow(LPITEM* ppkBow, LPITEM* ppkArrow, int iArrowCount)
#endif
{
    LPITEM pkBow;

    if (!(pkBow = GetWear(WEAR_WEAPON)) || pkBow->GetProto()->bSubType != WEAPON_BOW)
    {
        return 0;
    }

#ifdef OK_KALDIRMA
    *ppkBow = pkBow;

    return 1;
#else
    LPITEM pkArrow;

    if (!(pkArrow = GetWear(WEAR_ARROW)) || pkArrow->GetType() != ITEM_WEAPON ||
        pkArrow->GetProto()->bSubType != WEAPON_ARROW)
    {
        return 0;
    }

    iArrowCount = MIN(iArrowCount, pkArrow->GetCount());

    *ppkBow = pkBow;
    *ppkArrow = pkArrow;

    return iArrowCount;
#endif
}

// ARAT

LPITEM pkBow, pkArrow;

// DEĞİŞTİR

#ifdef OK_KALDIRMA
        LPITEM pkBow;
#else
        LPITEM pkBow, pkArrow;
#endif

// ARAT

if (0 == m_me->GetArrowAndBow(&pkBow, &pkArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
                if (0 == m_me->GetBow(&pkBow))
#else
                if (0 == m_me->GetArrowAndBow(&pkBow, &pkArrow))
#endif

// ARAT

iDam = CalcArrowDamage(m_me, pkVictim, pkBow, pkArrow)

// DEĞİŞTİR

#ifdef OK_KALDIRMA
                iDam = CalcArrowDamage(m_me, pkVictim, pkBow);
#else
                iDam = CalcArrowDamage(m_me, pkVictim, pkBow, pkArrow);
                m_me->UseArrow(pkArrow, 1);
#endif

// ARAT

if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
                if (iUseArrow == m_me->GetBow(&pkBow))
#else
                if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
#endif

// ARAT

m_me->UseArrow(pkArrow, iUseArrow);

// DEĞİŞTİR

#ifndef OK_KALDIRMA
                    m_me->UseArrow(pkArrow, iUseArrow);
#endif

// ARAT

if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
            if (iUseArrow == m_me->GetBow(&pkBow))
#else
            if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
#endif

// ARAT

m_me->UseArrow(pkArrow, iUseArrow);

// DEĞİŞTİR

#ifndef OK_KALDIRMA
                m_me->UseArrow(pkArrow, iUseArrow);
#endif

// ARAT

if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
            if (iUseArrow == m_me->GetBow(&pkBow))
#else
            if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
#endif

// ARAT

m_me->UseArrow(pkArrow, iUseArrow);

// DEĞİŞTİR

#ifndef OK_KALDIRMA
                m_me->UseArrow(pkArrow, iUseArrow);
#endif

// ARAT

if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
            if (iUseArrow == m_me->GetBow(&pkBow))
#else
            if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
#endif

// ARAT

m_me->UseArrow(pkArrow, iUseArrow);

// DEĞİŞTİR

#ifndef OK_KALDIRMA
                m_me->UseArrow(pkArrow, iUseArrow);
#endif

// ARAT

if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))

// DEĞİŞTİR

#ifdef OK_KALDIRMA
            if (iUseArrow == m_me->GetBow(&pkBow))
#else
            if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
#endif

// ARAT

m_me->UseArrow(pkArrow, iUseArrow);

// DEĞİŞTİR

#ifndef OK_KALDIRMA
                m_me->UseArrow(pkArrow, iUseArrow);
#endif



char.h Açılır

// BULUNUR

GetArrowAndBow

// DEĞİŞTİRİLİR

#ifdef OK_KALDIRMA
    int                    GetBow(LPITEM* ppkBow);
#else
    int                    GetArrowAndBow(LPITEM* ppkBow, LPITEM* ppkArrow, int iArrowCount = 1);
#endif


char_skill.cpp Açılır

// BULUNUR

            LPITEM pkBow, pkArrow;

            if (1 == m_pkChr->GetArrowAndBow(&pkBow, &pkArrow, 1))
                m_pkSk->SetPointVar("atk", CalcArrowDamage(m_pkChr, pkChrVictim, pkBow, pkArrow, true));
               
// DEĞİŞTİRİLİR

#ifdef OK_KALDIRMA
            LPITEM pkBow;

            if (1 == m_pkChr->GetBow(&pkBow))
                m_pkSk->SetPointVar("atk", CalcArrowDamage(m_pkChr, pkChrVictim, pkBow, true));
#else
            LPITEM pkBow, pkArrow;

            if (1 == m_pkChr->GetArrowAndBow(&pkBow, &pkArrow, 1))
                m_pkSk->SetPointVar("atk", CalcArrowDamage(m_pkChr, pkChrVictim, pkBow, pkArrow, true));
#endif

// BULUNUR

        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, this, pkBow, pkArrow, true));
        }
       
// DEĞİŞTİR

#ifdef OK_KALDIRMA
        LPITEM pkBow;

        if (1 == GetBow(&pkBow))
            pkSk->SetPointVar("atk", CalcArrowDamage(this, this, pkBow, true));
#else
        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, this, pkBow, pkArrow, true));
        }
#endif

// BULUNUR

        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, pkArrow, true));
        }
       
// DEĞİŞTİR

#ifdef OK_KALDIRMA
        LPITEM pkBow;

        if (1 == GetBow(&pkBow))
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, true));
#else
        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, pkArrow, true));
        }
#endif

// BULUNUR

        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, pkArrow, true));
        }
       
// DEĞİŞTİR

#ifdef OK_KALDIRMA
        LPITEM pkBow;
        if (1 == GetBow(&pkBow))
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, true));
#else
        LPITEM pkBow, pkArrow;

        if (1 == GetArrowAndBow(&pkBow, &pkArrow, 1))
        {
            pkSk->SetPointVar("atk", CalcArrowDamage(this, pkVictim, pkBow, pkArrow, true));
        }
#endif



battle.h Açılır


// BULUNUR

extern int    CalcArrowDamage

// DEĞİŞTİR

#ifdef OK_KALDIRMA
extern int    CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow, bool bIgnoreDefense = false);
#else
extern int    CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow, LPITEM pkArrow, bool bIgnoreDefense = false);
#endif


battle.cpp Açılır

// FONKSİYONU BUL

int CalcArrowDamage

// DEĞİŞTİR

#ifdef OK_KALDIRMA
int CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow, bool bIgnoreDefense)
#else
int CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow, LPITEM pkArrow, bool bIgnoreDefense)
#endif

// FONKSİYONUN İÇİNDE BUL

if (!pkArrow)
        return 0;
       
// DEĞİŞTİR

#ifndef OK_KALDIRMA
    if (!pkArrow)
        return 0;
#endif

// FONKSİYONUN İÇİNDE BUL

iDam = number(pkBow->GetValue(3), pkBow->GetValue(4)) * 2 + pkArrow->GetValue(3);

// DEĞİŞTİR

#ifdef OK_KALDIRMA
    iDam = number(pkBow->GetValue(3), pkBow->GetValue(4)) * 2;
#else
    iDam = number(pkBow->GetValue(3), pkBow->GetValue(4)) * 2 + pkArrow->GetValue(3);
#endif

locale_inc.h Açılır müsait bir yere eklenir

#define OK_KALDIRMA


PythonPlayerSkill.cpp Açılır

// FONKSİYON BULUNUR

bool CPythonPlayer::__HasEnoughArrow()

// FONKSİYONUN TAMAMI DEĞİŞTİRİLİR

bool CPythonPlayer::__HasEnoughArrow()
{
#ifdef OK_KALDIRMA
    return true;
#else
    CItemData* pItemData;
    if (CItemManager::Instance().GetItemDataPointer(GetItemIndex(TItemPos(INVENTORY, c_Equipment_Arrow)), &pItemData))
        if (CItemData::ITEM_TYPE_WEAPON == pItemData->GetType())
            if (CItemData::WEAPON_ARROW == pItemData->GetSubType())
            {
                return true;
            }

    PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotShotError", Py_BuildValue("(is)", GetMainCharacterIndex(), "EMPTY_ARROW"));
    return false;
#endif
}

Unuttuğum birşey varsa yada takıldığınız bir yer varsa yorumda belirtirsiniz.​
 
Son düzenleme:
Zırh güzelmiş :) set mi acaba?
 
Bunu yapıp yayların ninja sınırlamasını kaldırsak diğer karakterler de yayla saldırabilir mi lan acaba:alala:
 
Merhabalar,

Bilgi paylaşımınız için teşekkür ederim. Bu oyun ile ilgilenmiyorum artık ancak dilerseniz ilk bakışta anlaşılabilir olmasının kolaylığı açısından konu başlığını bu şekilde düzenleme talep edebilirsiniz.
Yay kullanımında - Ok gereksinimini kaldırmak

Bu bir öneri sadece, keyifli forumlar.
 
Merhabalar,

Bilgi paylaşımınız için teşekkür ederim. Bu oyun ile ilgilenmiyorum artık ancak dilerseniz ilk bakışta anlaşılabilir olmasının kolaylığı açısından konu başlığını bu şekilde düzenleme talep edebilirsiniz.
Yay kullanımında - Ok gereksinimini kaldırmak

Bu bir öneri sadece, keyifli forumlar.
Tabi
benim de merak ettiğim animasyon zaten :alala:
Bu savasci kadın normal ninjadan çekip uyarlıyabilirsin
Linkleri görebilmek için giriş yap veya kayıt ol.

psm tarafı falan var başka ne çıkar bilmiyorum ama uğraşırsan sonunda kesin yaparsın burda önemli olan nokta vaktini verdiğine değicek mi :)
 
Bu savasci kadın normal ninjadan çekip uyarlıyabilirsin
Linkleri görebilmek için giriş yap veya kayıt ol.

psm tarafı falan var başka ne çıkar bilmiyorum ama uğraşırsan sonunda kesin yaparsın burda önemli olan nokta vaktini verdiğine değicek mi :)

Metin 2 oyununa ait dinamik oyun karakterlerinin iskelet yapısı tüm aynı sınıf karakterlerde rigged olacak şekilde tasarlanmıştır. Bir karakterin animasyonunu farklı bir karakter de daha kullanabilirsiniz. (Örneğin, Savaşçının öfke animasyonunu, ninja da kullanabilirsiniz) Ancak burada önemli olan karakter meshlerinin kemik noktalarına uygun şekilde hareket edebiliyor olması gerektiğidir. Çünkü her bir kemik karakterin Mesh'ne göre uyum içindedir.

Ben bu örnekte M2M-Remastared oyun projemize ait iskelet sistemi baştan tasarlanan, PTR(sura) karakterimizi "ASN" Ninja yay kullanımı animasyonu ile çalıştırmayı denedim. Bu şekilde garip bir görüntü çıktı ancak görüntüden de anlayacağınız üzere Mesh ile Kemik uyumlu olsa da pozisyon hataları var.

Linkleri görebilmek için giriş yap veya kayıt ol.


Bunları uyumlu şekilde çalıştırabilmek için, dinamik karakterlerin 3D Max, Maya veya Blender'de projelerinin rigged edildikten sonra (veya varsa) UMotion Animation Editor gibi uygulamalar ile yeniden anime edilmesi veya restore edilmesi gerekebilir. Bunun içinde yeterli kaynak arama motorlarında bulunuyor.

Umarım yardımcı olabilmişimdir.
Keyifli forumlar..
 
Merhaba, sistem çalışıyor ancak binek üzerinde hasar vermiyor ve ok animasyonu görünmüyor.

Linkleri görebilmek için giriş yap veya kayıt ol.
Bunları yapmak yerine şu şekilde dener misin?

char_battle.cpp
Bul:
                            m_me->UseArrow(pkArrow, 1);
Değiştir:
                            m_me->UseArrow(pkArrow, 0);

Bul:
int iUseArrow = 1;
Değiştir:
int iUseArrow = 0;

iusearrow birden fazla çıkacak hepsini değiştir bi dene istersen
 
Eğer kastın konu da belirtilen tüm işlemleri geri alıp belirttiğini yapmak ise denedim, 1 adet ok takmadan hasar verilmiyor ancak 1 adet ok taktığımda o ok azalmıyor yani sınırsız olmuş oluyor ancak binek üzerinde aynı sorun devam ediyor. Sanırım sistemden değil genel olarak filesimde binek üstünde ok hasarı vurmuyor, yaptığım tüm işlemleri geri çekip onu test edeceğim.
 
Son düzenleme:
Evet sistem ile alakası yokmuş, filesimde okçu binek üzerinde oku işlemiyor ve animasyonu yok.
 
Evet sistem ile alakası yokmuş, filesimde okçu binek üzerinde oku işlemiyor ve animasyonu yok.
Yayla alakalı olmayabilir diğer karakterlerdede vurmuyor olabilir vurmuyorsa:
instancbasede :
UINT CInstanceBase::SHORSE::GetLevel()

return 3;
Üstüne binek mobproto kodlarını ekle
 
Evet sistem ile alakası yokmuş, filesimde okçu binek üzerinde oku işlemiyor ve animasyonu yok.
Aynı sorunla bende karşılaşmıştım debug mod ile deneme yapabilirsin pack tarafında animasyon eksikti
 
Merhaba, sistem çalışıyor ancak binek üzerinde hasar vermiyor ve ok animasyonu görünmüyor.

Linkleri görebilmek için giriş yap veya kayıt ol.
Geç cevap verdiğim için kusura bakmayın foruma çok girmiyorum dediginiz sorun sizin filesla alakalı yaptığımız işlemlerde binek ile alakalı bir kod satırı yok
kanıt :
Linkleri görebilmek için giriş yap veya kayıt ol.


eğer sorunu çözemediyseniz discord üzerinden ulaşın yardımcı olmaya çalışıyım mazeah321#2579
 
Geç cevap verdiğim için kusura bakmayın foruma çok girmiyorum dediginiz sorun sizin filesla alakalı yaptığımız işlemlerde binek ile alakalı bir kod satırı yok
kanıt :
Linkleri görebilmek için giriş yap veya kayıt ol.


eğer sorunu çözemediyseniz discord üzerinden ulaşın yardımcı olmaya çalışıyım mazeah321#2579
aynı problemi bende yaşıyorum ama size ulaşamadım çözümü paylaşma imkanınız var mı ?
 
Geri
Üst