mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
[DEV]AB 1
[DEV]AB
metin2008 1
metin2008
kaptanmikro1 1
kaptanmikro1
Scarlet 1
Scarlet
emirhanHCL 1
emirhanHCL
R 1
Roksam
farkmt2official 1
farkmt2official
Hikaye Ekle

[NEW] Core Downer Fix

  • Konuyu başlatan Konuyu başlatan cBaraN
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 59
  • Görüntüleme Görüntüleme 11K

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Paylaşım için teşekkürler, böylelikle kendini uyanık sanan kişilerin önüne taş koyulabilir.
çok teşekkürler
dangling bey teşekkürler.
Hocam bildiğiniz coreler nelerdir size göre bir fileste ilk nelerin test edilmesi gerekli?

Rica ederim
 
Merhabalar,​

Bugün birkaç serverde ve bende yapılmaya başlayınca çözmek zorunda kaldım, lamerlerin kendini bir halt sanmaya başladığı bir açığa dönüşmeden önleminizi alın. :) Güvenlik sebebi ile nasıl yapıldığını anlatmayacağım ama açığı basitçe açıklamak gerekirse içerik şu şekilde;

Hata tamamiyle game dosyasının m_stCurQuest erişememesinden kaynaklı. Erişememe sebebi ise hafızadan silinmiş olması. (Diğer adıyla programcıların bildiği gibi "dangling") bu duruma sebeb olabilecek birkaç şeyler var örneğin quest'i anlık durdurabilecek fonksiyonlar. (örneğin: select) ben bunu sadece select için yaptım çünkü çökmelerin hepsi bununla alakalıydı. Yaptığım çözüm ise QuestState içerisine quest_name eklemek böylelikle quest durmadan önce quest name QuestState içerisinde muhafaza edicem böylelikle quest devam etmeye başladığı zaman sistem benim belirttiğim quest_name baz alıcak eğer ki boş değilse. Eğer boş ise mevcut olan quest ismini alıcak böylelikle "dangling" sorunu ortadan kalkmış olucak.

Kod:
quest.h aç ve "int        st;" ara, altına aşağıdaki kodu ekle
Kod:
std::string quest_name;
Kod:
questlua.cpp aç ve "qs.suspend_state = SUSPEND_STATE_SELECT;" ara, altına aşağıdaki kodu ekle
Kod:
qs.quest_name = GetCurrentPC() ? GetCurrentPC()->GetCurrentQuestName() : "no_quest";
Kod:
questlua_quest.cpp aç ve "QuestState* pQS = pPC->GetRunningQuestState();" ara, altına aşağıdaki kodu ekle
Kod:
    std::string stQuestName = pPC->GetCurrentQuestName();
    if (pQS->quest_name.length() != 0)
        stQuestName = pQS->quest_name;

Yukarıdaki çözümü uyguladığınızda herhangi bir sorun kalmayacaktır, herşeye kulp bulan arkadaşlar yorum atma zahmetinde bulunmasınlar, bir zahmet daha iyisini yazıp paylaşsınlar, herkes faydalansın. Keyifli geceler. :)
Teşekkürler
 

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

Geri
Üst