Yardım Eşya Altında Nesne Kodu Gösterme.

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

droestaha

Üye
Üye
Mesaj
96
Beğeni
32
Puan
426
Ticaret Puanı
0
Merhaba, Alttaki kodu sorunsuz ekliyorum gerekli yerlere oyuna giriş yapıyorum fakat itemin altında nesne kodunu göstermiyor ve herhangi bir sysser de vermiyor.

uitooltip.py:
Genişlet Daralt Kopyala
#uitooltip.py - açılır

#Bu kod bloğunu aratın
 def __DragonSoulInfoString (self, dwVnum):

# Aynı bloktan iki tane olacaktır en üste olanı bulun ve onunda

# üstünde bu kod olacak

        self.ShowToolTip()

#üstüne eklenir
        if chr.IsGameMaster(player.GetMainCharacterIndex()):
            self.AppendTextLine(localeInfo.ITEM_VNUM_TOOLTIP % (int(itemVnum)), self.SINIRSIZ_COLOR)
            self.AppendTextLine(localeInfo.ITEM_TYPE_TOOLTIP % (int(itemType)), self.SINIRSIZ_COLOR)
            self.AppendTextLine(localeInfo.ITEM_SUBTYPE_TOOLTIP % (int(itemSubType)), self.SINIRSIZ_COLOR)


https://prnt.sc/20xppe5 Bu fotoğrafa bakarak doğru yeri anlayın.

# aratılır

Bunları sorunsuz ekliyorum herhangi bir sysser de vermiyor oyuna giriyorum fakat itemin üstüne gelince item kodunu göstermiyor.


    NEED_SKILL_POINT_COLOR = 0xff9A9CDB



#altına eklenir

    SINIRSIZ_COLOR = 0xffFFFF00

#locale_game.txt açılır ve eklenir

ITEM_VNUM_TOOLTIP    Vnum: %d
ITEM_TYPE_TOOLTIP    Type: %d
ITEM_SUBTYPE_TOOLTIP    SubType: %d
 
şunu dene bakim.

uitooltip.py:
Genişlet Daralt Kopyala
        if chr.IsGameMaster(0):
            self.AppendTextLine("Vnum: {}".format(itemVnum), 0xFFf863ff)
            self.AppendTextLine("Type: {}, Subtype {}".format(itemType, itemSubType), 0xFF00cfb6)
            if metinSlot:
                self.AppendTextLine("Socket: {}".format('-'.join("[" + str(i) + "]" for i in metinSlot)), 0xFF00b6d6)
 
şunu dene bakim.

uitooltip.py:
Genişlet Daralt Kopyala
        if chr.IsGameMaster(0):
            self.AppendTextLine("Vnum: {}".format(itemVnum), 0xFFf863ff)
            self.AppendTextLine("Type: {}, Subtype {}".format(itemType, itemSubType), 0xFF00cfb6)
            if metinSlot:
                self.AppendTextLine("Socket: {}".format('-'.join("[" + str(i) + "]" for i in metinSlot)), 0xFF00b6d6)
Onu eklediğim de böyle bir sysser veriyor;
Sysser:
Genişlet Daralt Kopyala
1219 20:23:06193 ::
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:23) <module>
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiAffectShower.py(line:8) <module>
system.py(line:130) __pack_import

networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiToolTip.py, line 1209)

1219 20:23:06193 :: ============================================================================================================
1219 20:23:06193 :: Abort!!!!


1219 20:23:06193 :: filename=exception.py, name=Abort, line=33
1219 20:23:06193 :: filename=networkModule.py, name=SetSelectCharacterPhase, line=213
1219 20:23:06193 :: filename=prototype.py, name=RunApp, line=57
1219 20:23:06193 :: filename=prototype.py, name=<module>, line=61
1219 20:23:06193 :: filename=system.py, name=Run, line=163
1219 20:23:06193 :: filename=system.py, name=execfile, line=192
1219 20:23:06193 :: filename=system.py, name=RunMainScript, line=273
1219 20:23:06193 :: filename=system.py, name=<module>, line=296
1219 20:23:06193 :: filename=<string>, name=<module>, line=298
 
sadece şu kısmı dene altındakileri sil çalışıyormu diye bakalım;
Python:
Genişlet Daralt Kopyala
        if chr.IsGameMaster(0):
            self.AppendTextLine("Vnum: {}".format(itemVnum), 0xFFf863ff)
            self.AppendTextLine("Type: {}, Subtype {}".format(itemType, itemSubType), 0xFF00cfb6)
Şimdi oyuna girdi sorunsuz bir şekilde ama itemin üstüne gelince kod gözükmüyor.
 
sadece şu kısmı dene altındakileri sil çalışıyormu diye bakalım;
Python:
Genişlet Daralt Kopyala
        if chr.IsGameMaster(0):
            self.AppendTextLine("Vnum: {}".format(itemVnum), 0xFFf863ff)
            self.AppendTextLine("Type: {}, Subtype {}".format(itemType, itemSubType), 0xFF00cfb6)
knk kendim denedim sorun orda değil.
Sorun şurda;
Eğer karekter diğer gm yetkilerine sahip olursa görünüyor. Sadece IMPLEMENTOR olunca gözükmüyor. Muhtemelen IsGameMaster fonksiyonunda implementor 0 dönüyor. Şuan çözümüyle uğraşıyorum.
 
Benim yazdıklarımla bunun bi alakası yokki. Eski kodu değiştirmedim üzerine, sa, ga, gm ve tgm ekledim sadece, inceleyebilirsiniz.
Eski hali ;
InstanceBase.cpp:
Genişlet Daralt Kopyala
BOOL CInstanceBase::IsGameMaster()
{
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR))
        return true;
    return false;
}

Yeni eklenmiş hali ;
InstanceBase.cpp:
Genişlet Daralt Kopyala
BOOL CInstanceBase::IsGameMaster()
{
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR))
        return true;
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_SA))
        return true;
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_GA))
        return true;
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_GM))
        return true;
    if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR_TGM))
        return true;

    return false;
}

Bunun dışında zaten ciddi bir yer değiştirtmedim.
Kendim de de deneyeceğim.
C++:
Genişlet Daralt Kopyala
if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR))
    return true;
Bu kod tamamen işlevsiz görünüyor.

Çünkü server tarafında;
C++:
Genişlet Daralt Kopyala
        if (GetGMLevel() == GM_IMPLEMENTOR)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_HIGH_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_GOD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_LOW_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
            m_bPKMode = PK_MODE_PROTECT;
        }

AFF_YMIR set edilmiyor, sadece yeni değerler set ediliyor.
Orjinal mantıkta:
C++:
Genişlet Daralt Kopyala
if (GetGMLevel() > GM_LOW_WIZARD)
{
    m_afAffectFlag.Set(AFF_YMIR);
    m_bPKMode = PK_MODE_PROTECT;
}
GM_LOW_WIZARD üstü tüm rütbelere GM rankı veriliyor. Aynı mantığı devam ettirmeyi deneyebilirsiniz, sadece rütbelere göre efektleri ayrı ayrı verirsiniz.
Server tarafını şu şekilde değiştirmeyi deneyebilirsiniz:
C++:
Genişlet Daralt Kopyala
    if (GetGMLevel() >= GM_LOW_WIZARD)
    {
        m_afAffectFlag.Set(AFF_YMIR); 
        m_bPKMode = PK_MODE_PROTECT;

        if (GetGMLevel() == GM_IMPLEMENTOR)
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
        else if (GetGMLevel() == GM_HIGH_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
        else if (GetGMLevel() == GM_GOD)
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
        else if (GetGMLevel() == GM_LOW_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
    }
 
Bunu Dermısınız Lutfen
 

Dosya Eklentileri

C++:
Genişlet Daralt Kopyala
if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR))
    return true;
Bu kod tamamen işlevsiz görünüyor.

Çünkü server tarafında;
C++:
Genişlet Daralt Kopyala
        if (GetGMLevel() == GM_IMPLEMENTOR)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_HIGH_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_GOD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_LOW_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
            m_bPKMode = PK_MODE_PROTECT;
        }

AFF_YMIR set edilmiyor, sadece yeni değerler set ediliyor.
Orjinal mantıkta:
C++:
Genişlet Daralt Kopyala
if (GetGMLevel() > GM_LOW_WIZARD)
{
    m_afAffectFlag.Set(AFF_YMIR);
    m_bPKMode = PK_MODE_PROTECT;
}
GM_LOW_WIZARD üstü tüm rütbelere GM rankı veriliyor. Aynı mantığı devam ettirmeyi deneyebilirsiniz, sadece rütbelere göre efektleri ayrı ayrı verirsiniz.
Server tarafını şu şekilde değiştirmeyi deneyebilirsiniz:
C++:
Genişlet Daralt Kopyala
    if (GetGMLevel() >= GM_LOW_WIZARD)
    {
        m_afAffectFlag.Set(AFF_YMIR);
        m_bPKMode = PK_MODE_PROTECT;

        if (GetGMLevel() == GM_IMPLEMENTOR)
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
        else if (GetGMLevel() == GM_HIGH_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
        else if (GetGMLevel() == GM_GOD)
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
        else if (GetGMLevel() == GM_LOW_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
    }
evet o zaten işlevsize düşüyor.

C++:
Genişlet Daralt Kopyala
        if (GetGMLevel() == GM_IMPLEMENTOR)
Burayı bu şekilde değiştiriyoruz.

C++:
Genişlet Daralt Kopyala
#ifdef GM_NEW_AFFECTS
        if (GetGMLevel() == GM_IMPLEMENTOR)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_HIGH_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_GOD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_LOW_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
            m_bPKMode = PK_MODE_PROTECT;
        }
#else
        if (GetGMLevel() > GM_LOW_WIZARD)
        {
            m_afAffectFlag.Set(AFF_YMIR);
            m_bPKMode = PK_MODE_PROTECT;
        }
#endif
 
C++:
Genişlet Daralt Kopyala
if (m_kAffectFlagContainer.IsSet(AFFECT_YMIR))
    return true;
Bu kod tamamen işlevsiz görünüyor.

Çünkü server tarafında;
C++:
Genişlet Daralt Kopyala
        if (GetGMLevel() == GM_IMPLEMENTOR)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_HIGH_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_GOD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
            m_bPKMode = PK_MODE_PROTECT;
        }
        else if (GetGMLevel() == GM_LOW_WIZARD)
        {
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
            m_bPKMode = PK_MODE_PROTECT;
        }

AFF_YMIR set edilmiyor, sadece yeni değerler set ediliyor.
Orjinal mantıkta:
C++:
Genişlet Daralt Kopyala
if (GetGMLevel() > GM_LOW_WIZARD)
{
    m_afAffectFlag.Set(AFF_YMIR);
    m_bPKMode = PK_MODE_PROTECT;
}
GM_LOW_WIZARD üstü tüm rütbelere GM rankı veriliyor. Aynı mantığı devam ettirmeyi deneyebilirsiniz, sadece rütbelere göre efektleri ayrı ayrı verirsiniz.
Server tarafını şu şekilde değiştirmeyi deneyebilirsiniz:
C++:
Genişlet Daralt Kopyala
    if (GetGMLevel() >= GM_LOW_WIZARD)
    {
        m_afAffectFlag.Set(AFF_YMIR);
        m_bPKMode = PK_MODE_PROTECT;

        if (GetGMLevel() == GM_IMPLEMENTOR)
            m_afAffectFlag.Set(AFFECT_YMIR_SA);
        else if (GetGMLevel() == GM_HIGH_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_GA);
        else if (GetGMLevel() == GM_GOD)
            m_afAffectFlag.Set(AFFECT_YMIR_GM);
        else if (GetGMLevel() == GM_LOW_WIZARD)
            m_afAffectFlag.Set(AFFECT_YMIR_TGM);
    }

Kaiser, Denedim sorun düzeldi fakat şöyle bir sorun oluştu GM Hesapta SA Logosu ile GM Logosu yani 2 logo birden gözükmeye başladı.
 
Geri
Üst