-TuRKuaZ- 1
-TuRKuaZ-
SLyFeLLowTR 1
SLyFeLLowTR
TGamesZeus 1
TGamesZeus
Best Studio 1
Best Studio
berkmenoo 1
berkmenoo
InfernoShade 1
InfernoShade
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
onur akbaş 1
onur akbaş
Hikaye Ekle

Sohbet Penceresi Log Fix

  • Konuyu başlatan Konuyu başlatan Silverhand
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 12
  • Görüntüleme Görüntüleme 3K

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Teşekkür ederim
 
Paylaşım için teşekkürler
 
Paylaşım için teşekkürler.
 
Merhaba,

Yıllardır böyle saçma bir olay neden var diye merak ettiğim, eminim bazılarınızın da merak ettiği bizler için küçük ama kainat için de küçük bir düzenleme paylaşacağım.
Yabancı bir forumda gezerken gördüm, benim gibi bu tarz önemsenmeyen olayları ciddi kafasına takan, her şey kusursuz ve mükemmel olsun diye düşünenlerin işine yarayacaktır eminim.

Ha bu arada, Owsap paylaşmış başka bir forumda teşekkür ederim kendisine.
Yabancı platformlarda satış yapan arkadaşlar, kendi kalitelerini sunmak için topluluğa güzel içerikler paylaşıyorlar. Umarım bizimkiler de biraz faydalı olmaya çalışarak bu bölümü daha doğru ve güzel içeriklerle doldurabilirler. Malum eventlflaglar ile GM kod kapatma gibi şeyler çok üzücü bölüm kalitesi için.

Düzelteceğimiz sorun tam olarak şu ;

pve8ghf.gif


Ben görsel ile anlamadım derseniz L tuşuna basıp chat-log açtığınızda normal sohbetin mala bağladığını görebilirsiniz.

Client Source/UserInterface/Locale_Inc.h aç ve aşağıdaki kodu müsait bir yere dahil et

Kod:
#define /* @author: Owsap */ ENABLE_CHAT_LOG_FIX // Chat-log window fix

Client Source/UserInterface/PythonChat.cpp aç ve aşağıdaki düzenlemeleri yap

Kod:
/// 1.
// Şunun içerisinden @ void CPythonChat::UpdateViewMode      aşağıdaki alanı bul
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);

// Bununla Değiştir
#if defined(ENABLE_CHAT_LOG_FIX)
    TChatLineList* pLineList = &(dwID == CHAT_SET_LOG_WINDOW ? pChatSet->m_ShowingChatLogLineList : pChatSet->m_ShowingChatLineList);
#else
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);
#endif

/// 2.
// Şunun içerisinden @ void CPythonChat::UpdateEditMode           aşağıdaki alanı bul
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);

// Bununla değiştir
#if defined(ENABLE_CHAT_LOG_FIX)
    TChatLineList* pLineList = &(dwID == CHAT_SET_LOG_WINDOW ? pChatSet->m_ShowingChatLogLineList : pChatSet->m_ShowingChatLineList);
#else
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);
#endif

/// 3.
// Şunun içerisinden @ void CPythonChat::UpdateLogMode                aşağıdaki alanı bul
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);

// Bununla değiştir
#if defined(ENABLE_CHAT_LOG_FIX)
    TChatLineList* pLineList = &(dwID == CHAT_SET_LOG_WINDOW ? pChatSet->m_ShowingChatLogLineList : pChatSet->m_ShowingChatLineList);
#else
    TChatLineList* pLineList = &(pChatSet->m_ShowingChatLineList);
#endif

/// 4.
// Şunun içerisinden @ int CPythonChat::GetLineCount       aşağıdaki alanı bul
    for (DWORD i = 0; i < m_ChatLineDeque.size(); ++i)
    {
        if (!pChatSet->CheckMode(m_ChatLineDeque[i]->iType))
            continue;

        ++iCount;
    }

// Bununla değiştir
#if defined(ENABLE_CHAT_LOG_FIX)
    TChatLineDeque ChatLineDeque = (dwID == CHAT_SET_LOG_WINDOW ? m_ChatLogLineDeque : m_ChatLineDeque);
    for (DWORD i = 0; i < ChatLineDeque.size(); ++i)
    {
        if (!pChatSet->CheckMode(ChatLineDeque[i]->iType))
            continue;

        ++iCount;
    }
#else
    for (DWORD i = 0; i < m_ChatLineDeque.size(); ++i)
    {
        if (!pChatSet->CheckMode(m_ChatLineDeque[i]->iType))
            continue;

        ++iCount;
    }
#endif

/// 5.
// Bunun içerisinden @ CPythonChat::TChatLineList* CPythonChat::GetChatLineListPtr                aşağıdaki alanı bul
    return &(rChatSet.m_ShowingChatLineList);

// Bununla değiştir
#if defined(ENABLE_CHAT_LOG_FIX)
    return &(dwID == CHAT_SET_LOG_WINDOW ? rChatSet.m_ShowingChatLogLineList : rChatSet.m_ShowingChatLineList);
#else
    return &(rChatSet.m_ShowingChatLineList);
#endif

/// 6.
// Bu fonksiyonun en sonuna ekle @void CPythonChat::ArrangeShowingChat
#if defined(ENABLE_CHAT_LOG_FIX)
    ArrangeShowingChatLog(dwID);
#endif

/// 7.
// Bu fonksiyonun en sonuna ekle@ void CPythonChat::AppendChat
#if defined(ENABLE_CHAT_LOG_FIX)
    AppendChatLog(iType, c_szChat);
#endif

/// 8.
// Ara
DWORD CPythonChat::GetChatColor(int iType)

// Üstüne ekle
#if defined(ENABLE_CHAT_LOG_FIX)
void CPythonChat::AppendChatLog(int iType, const char* c_szChat)
{
    // DEFAULT_FONT
    CGraphicText* pkDefaultFont = static_cast<CGraphicText*>(DefaultFont_GetResource());
    if (!pkDefaultFont)
    {
        TraceError("CPythonChat::AppendChatLog - CANNOT_FIND_DEFAULT_FONT");
        return;
    }
    // END_OF_DEFAULT_FONT

    IAbstractApplication& rApp = IAbstractApplication::GetSingleton();
    SChatLine* pChatLine = SChatLine::New();

    pChatLine->iType = iType;
    pChatLine->Instance.SetValue(c_szChat);
#if defined(WJ_MULTI_TEXTLINE)
    pChatLine->Instance.DisableEnterToken();
#endif

    // DEFAULT_FONT
    pChatLine->Instance.SetTextPointer(pkDefaultFont);
    // END_OF_DEFAULT_FONT

    pChatLine->fAppendedTime = rApp.GetGlobalTime();
    pChatLine->SetColorAll(GetChatColor(iType));

    m_ChatLogLineDeque.emplace_back(pChatLine);
    if (m_ChatLogLineDeque.size() > CHAT_LINE_MAX_NUM)
    {
        SChatLine* pChatLine = m_ChatLogLineDeque.front();
        SChatLine::Delete(pChatLine);
        m_ChatLogLineDeque.pop_front();
    }

    for (TChatSetMap::iterator itor = m_ChatSetMap.begin(); itor != m_ChatSetMap.end(); ++itor)
    {
        TChatSet* pChatSet = &(itor->second);
        pChatSet->m_ShowingChatLogLineList.emplace_back(pChatLine);
        if (pChatSet->m_ShowingChatLogLineList.size() > CHAT_LINE_MAX_NUM)
            pChatSet->m_ShowingChatLogLineList.pop_front();
    }
}

void CPythonChat::ArrangeShowingChatLog(DWORD dwID)
{
    TChatSet* pChatSet = GetChatSetPtr(dwID);
    if (!pChatSet)
        return;

    pChatSet->m_ShowingChatLogLineList.clear();

    TChatLineDeque TempChatLineDeque;
    for (TChatLineDeque::iterator itor = m_ChatLogLineDeque.begin(); itor != m_ChatLogLineDeque.end(); ++itor)
    {
        TChatLine* pChatLine = *itor;
        if (pChatSet->CheckMode(pChatLine->iType))
            TempChatLineDeque.emplace_back(pChatLine);
    }

    int icurLineCount = TempChatLineDeque.size();
    int iVisibleLineCount = min(icurLineCount, (pChatSet->m_iHeight + pChatSet->m_iStep) / pChatSet->m_iStep);
    int iEndLine = iVisibleLineCount + int(float(icurLineCount - iVisibleLineCount - 1) * pChatSet->m_fEndPos);

    /////

    int iHeight = 12;
    for (int i = min(icurLineCount - 1, iEndLine); i >= 0; --i)
    {
        if (!pChatSet->CheckMode(TempChatLineDeque[i]->iType))
            continue;

        if (pChatSet->m_iHeight + pChatSet->m_iStep <= iHeight)
            break;

        pChatSet->m_ShowingChatLogLineList.emplace_front(TempChatLineDeque[i]);
        iHeight += pChatSet->m_iStep;
    }
}
#endif

/// 9.
// Bunun içerisinden @ void CPythonChat::Close            aşağıdaki alanı bul
        TChatLineList* pLineList = &(rChatSet.m_ShowingChatLineList);
        for (TChatLineList::iterator itor = pLineList->begin(); itor != pLineList->end(); ++itor)
        {
            TChatLine* pChatLine = (*itor);
            pChatLine->fAppendedTime = 0.0f;
        }

// Altına bunu ekle
#if defined(ENABLE_CHAT_LOG_FIX)
        pLineList = &(rChatSet.m_ShowingChatLogLineList);
        for (TChatLineList::iterator itor = pLineList->begin(); itor != pLineList->end(); ++itor)
        {
            TChatLine* pChatLine = (*itor);
            pChatLine->fAppendedTime = 0.0f;
        }
#endif

/// 10.
// Bunun içerisinden @ void CPythonChat::Destroy        aşağıdaki alanı bul
    m_ChatLineDeque.clear();

// Altına ekle
#if defined(ENABLE_CHAT_LOG_FIX)
    m_ShowingChatLogLineList.clear();
    m_ChatLogLineDeque.clear();
#endif


/// 11.
// Bunun içerisinden @ CPythonChat::~CPythonChat    aşağıdaki alanı bul
    assert(m_WhisperMap.empty());

// Altına ekle
#if defined(ENABLE_CHAT_LOG_FIX)
    assert(m_ChatLogLineDeque.empty());
    assert(m_ShowingChatLogLineList.empty());
#endif



Client Source/UserInterface/PythonChat.h aç ve aşağıdaki düzenlemeleri yap

Kod:
/// 1.
// Ara
    enum EBoardState

// Üstüne ekle
#if defined(ENABLE_CHAT_LOG_FIX)
    enum EChatWindow
    {
        CHAT_SET_CHAT_WINDOW,
        CHAT_SET_LOG_WINDOW
    };
#endif

/// 2.
// Bunun içerisinde @ struct SChatSet                  aşağıdakini bul
        TChatLineList m_ShowingChatLineList;

// Altına ekle
#if defined(ENABLE_CHAT_LOG_FIX)
        TChatLineList m_ShowingChatLogLineList;
#endif

/// 3.
// Ara
    void ArrangeShowingChat(DWORD dwID);

// Altına ekle
#if defined(ENABLE_CHAT_LOG_FIX)
    // Chat-log
    void AppendChatLog(int iType, const char* c_szChat);
    void ArrangeShowingChatLog(DWORD dwID);
#endif

/// 4.
// Ara
    TWaitChatList m_WaitChatList;

// Altıne Ekle
#if defined(ENABLE_CHAT_LOG_FIX)
    TChatLineDeque m_ChatLogLineDeque;
    TChatLineList m_ShowingChatLogLineList;
#endif

Son olarak bu işlemleri yaparken aşağıdakini arkaplanda aktif etmeniz şiddetle önerilir.



Hepinize bir dönem kumar borcu olduğu için kıbrıs otellerinde ücretsiz konser vermek zorunda kalan Serdar Ortaç'ın şansını diliyorum.
@Tunga gibi değerli forum emekçilerine de saygılarımı iletiyorum
İyi forumlar.

Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst