Kodların arasında sessizce duran Metin2 detayları

şu kod bana çok garip geliyor acaba birisi bilerek yazmış olabilirmi

PythonItem.cpp:
Genişlet Daralt Kopyala
    bool bStabGround = false;

    if (bDrop)
    {
        z = CPythonBackground::Instance().GetHeight(x, y) + 10.0f;

        if (pItemData->GetType()==CItemData::ITEM_TYPE_WEAPON &&
            (pItemData->GetWeaponType() == CItemData::WEAPON_SWORD ||
             pItemData->GetWeaponType() == CItemData::WEAPON_ARROW))
            bStabGround = true;//belirli bir koşul sonrası true yapmış

        bStabGround = false;//sonrada false çevirmiş
        pGroundItemInstance->bAnimEnded = false;
    }
    else
    {
        pGroundItemInstance->bAnimEnded = true;
    }
Bu muhtemelen sonradan vazgeçilmiş bir özellik. Eğer burada bStabGround verisini kesin olarak true ayarlarsanız if koşulunda belirlenen silahlar yere düştüğünde veya atıldığında dikine saplanır. Bunu uzun zaman önce görüp denemiştim ama hem şehirde hemde farm esnasında aşırı görüntü kirliliği oluşturabilecek bir şey. Suistimal edilmeye çok müsait bir özellik.. Yine de istisnai durumlarda kullanılabilir.

screenshot_20250418_165757.webp
 
Bu muhtemelen sonradan vazgeçilmiş bir özellik. Eğer burada bStabGround verisini kesin olarak true ayarlarsanız if koşulunda belirlenen silahlar yere düştüğünde veya atıldığında dikine saplanır. Bunu uzun zaman önce görüp denemiştim ama hem şehirde hemde farm esnasında aşırı görüntü kirliliği oluşturabilecek bir şey. Suistimal edilmeye çok müsait bir özellik.. Yine de istisnai durumlarda kullanılabilir.

22968 eklentisini görüntüle
minecraft da yere item atınca havada asılı kalıp kendi etrafında dönüyor ya onun gibi bir şeymi yapmaya yeltendiler acaba :unsure:
 
Client'ta bir dev notu
C++:
Genişlet Daralt Kopyala
// 새로 추가된 신규 반지 & 벨트
// 장착형 아이템에 할당할 수 있는 위치가 기존 장비, 채기랍 퀘스트 보상, 코스튬 시스템 등으로 인해서 공간이 잘려있다.
// 이게 다 채기랍 보상 버프를 장착아이템처럼 구현한 ㅅㄲ 때문에 난리났따... ㅆㅂ
//
// 정리하면, 기존 장비창들은 서버DB상 아이템 포지션이 90 ~ 102 이고,
// 2013년 초에 새로 추가되는 슬롯들은 111 ~ 부터 시작한다. 착용 장비에서 최대로 사용할 수 있는 값은 121 까지이고, 122부터는 용혼석에서 사용한다.
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    const DWORD c_New_Equipment_Start = c_Equipment_Start + 21;
    const DWORD c_New_Equipment_Count = 3;
    const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
    const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
    const DWORD c_Equipment_Belt  = c_New_Equipment_Start + 2;;
#endif

Tercümesi:

C++:
Genişlet Daralt Kopyala
// Yeni eklenen yeni yüzükler ve kemerler
// Mevcut ekipman, Chaegirap görev ödülleri, kostüm sistemi vb.
// nedeniyle donatılmış eşyalara atanabilecek pozisyonlar kesildi.

// Bunların hepsi s*ktiğimin Chaegirap ödül güçlendirmelerinin
// donatılmış eşyalar olarak uygulanması yüzünden tam bir karmaşa... s*ktir

// Özetlemek gerekirse, mevcut ekipman pencerelerinin
// sunucu DB'sinde 90 ~ 102 eşya pozisyonları var,
// 2013 başlarında yeni eklenen yuvalar 111 ~'den başlıyor.
// Donanımlı ekipmanlarda kullanılabilecek maksimum
// değer 121'dir ve 122 ve üzeri Ejderha Ruh Taşı'nda kullanılır.
 
Client'ta bir dev notu
C++:
Genişlet Daralt Kopyala
// 새로 추가된 신규 반지 & 벨트
// 장착형 아이템에 할당할 수 있는 위치가 기존 장비, 채기랍 퀘스트 보상, 코스튬 시스템 등으로 인해서 공간이 잘려있다.
// 이게 다 채기랍 보상 버프를 장착아이템처럼 구현한 ㅅㄲ 때문에 난리났따... ㅆㅂ
//
// 정리하면, 기존 장비창들은 서버DB상 아이템 포지션이 90 ~ 102 이고,
// 2013년 초에 새로 추가되는 슬롯들은 111 ~ 부터 시작한다. 착용 장비에서 최대로 사용할 수 있는 값은 121 까지이고, 122부터는 용혼석에서 사용한다.
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    const DWORD c_New_Equipment_Start = c_Equipment_Start + 21;
    const DWORD c_New_Equipment_Count = 3;
    const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
    const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
    const DWORD c_Equipment_Belt  = c_New_Equipment_Start + 2;;
#endif

Tercümesi:

C++:
Genişlet Daralt Kopyala
// Yeni eklenen yeni yüzükler ve kemerler
// Mevcut ekipman, Chaegirap görev ödülleri, kostüm sistemi vb.
// nedeniyle donatılmış eşyalara atanabilecek pozisyonlar kesildi.

// Bunların hepsi s*ktiğimin Chaegirap ödül güçlendirmelerinin
// donatılmış eşyalar olarak uygulanması yüzünden tam bir karmaşa... s*ktir

// Özetlemek gerekirse, mevcut ekipman pencerelerinin
// sunucu DB'sinde 90 ~ 102 eşya pozisyonları var,
// 2013 başlarında yeni eklenen yuvalar 111 ~'den başlıyor.
// Donanımlı ekipmanlarda kullanılabilecek maksimum
// değer 121'dir ve 122 ve üzeri Ejderha Ruh Taşı'nda kullanılır.
bu hangi dosyada
 
libthecore / stdafx.h:
Genişlet Daralt Kopyala
#ifndef false
    #define false 0
    #define true  (!false)
#endif

#ifndef FALSE
    #define FALSE false
    #define TRUE  (!FALSE)
#endif

Metin2 gibi mazisi derin projelerle çalışırken böyle detaylar bulmak şahsen çok hoşuma gidiyor, bu gördüğünüz eski makro tarihten bir parça, gelin nedenini açıklayayım.

Bu makro muhtemelen Ymir geliştiricileri tarafından 1999 öncesinde yazıldı, hatta daha eski de olabilir. Biliyorsunuz ki libthecore içerisindeki src dosyaları aslında .c uzantılı, bunun sebebi libthecore kütüphanesinin Ymir tarafından daha eski bir oyunları için yazılmış olması (çok yüksek ihtimalle, tahminim) bu kütüphaneyi alıp Metin2 için uyarlamışlar ve bu sebeple C++ ile uyumlu hale getirmek için çeşitli değişiklikler yapmışlar bu da onlardan biri.

Libthecore kütüphanesini incelerseniz içerisinde tonlarca old fashion C style kod olduğunu göreceksiniz, muhtemelen C99 öncesi dönemde yazıldı çünkü üstteki kod bloğunda gördüğünüz makro true ve false tanımlamak için kullanılıyor, C99 öncesinde C dilinde boolean henüz standart değildi ve herkes kendi versiyonunu yazıp kullanıyordu, bu sebeple true veya false kullanabilmek için bu tarz makrolar gerekiyordu, 2000'li yılların başından itibaren buna ihtiyaç kalmadı ama bu eski kodu sadece #ifndef bloğu içine alıp yine de orada bıraktılar çünkü eskiye uyumlu kalmasını istediler, daha sonra da bunu öylece unuttular.

Bunu bilmenin size herhangi bir faydası olmayabilir, yazarken bende bunun farkındayım ama benim gibi antika kalıntıları ilginç bulanların dikkatini çekebilir diye yazdım, sevgiler.
 
libthecore / stdafx.h:
Genişlet Daralt Kopyala
#ifndef false
    #define false 0
    #define true  (!false)
#endif

#ifndef FALSE
    #define FALSE false
    #define TRUE  (!FALSE)
#endif

Metin2 gibi mazisi derin projelerle çalışırken böyle detaylar bulmak şahsen çok hoşuma gidiyor, bu gördüğünüz eski makro tarihten bir parça, gelin nedenini açıklayayım.

Bu makro muhtemelen Ymir geliştiricileri tarafından 1999 öncesinde yazıldı, hatta daha eski de olabilir. Biliyorsunuz ki libthecore içerisindeki src dosyaları aslında .c uzantılı, bunun sebebi libthecore kütüphanesinin Ymir tarafından daha eski bir oyunları için yazılmış olması (çok yüksek ihtimalle, tahminim) bu kütüphaneyi alıp Metin2 için uyarlamışlar ve bu sebeple C++ ile uyumlu hale getirmek için çeşitli değişiklikler yapmışlar bu da onlardan biri.

Libthecore kütüphanesini incelerseniz içerisinde tonlarca old fashion C style kod olduğunu göreceksiniz, muhtemelen C99 öncesi dönemde yazıldı çünkü üstteki kod bloğunda gördüğünüz makro true ve false tanımlamak için kullanılıyor, C99 öncesinde C dilinde boolean henüz standart değildi ve herkes kendi versiyonunu yazıp kullanıyordu, bu sebeple true veya false kullanabilmek için bu tarz makrolar gerekiyordu, 2000'li yılların başından itibaren buna ihtiyaç kalmadı ama bu eski kodu sadece #ifndef bloğu içine alıp yine de orada bıraktılar çünkü eskiye uyumlu kalmasını istediler, daha sonra da bunu öylece unuttular.

Bunu bilmenin size herhangi bir faydası olmayabilir, yazarken bende bunun farkındayım ama benim gibi antika kalıntıları ilginç bulanların dikkatini çekebilir diye yazdım, sevgiler.
oyunda kullanılan çoğu lib ymir ortak kütüphanesinden alınmış. server tarafında libthecore mesela metin2 için yazılmamış, çok önceden hazırlanmış. client tarafında da spherepack var.
 
oyunda kullanılan çoğu lib ymir ortak kütüphanesinden alınmış. server tarafında libthecore mesela metin2 için yazılmamış, çok önceden hazırlanmış. client tarafında da spherepack var.
Hangi oyun için olduklarını biliyor musun ? Bunu merak ettim aslında biraz bakındım ama pek bir şey bulamadım bununla alakalı. Kraizy.tgz sızdırılmadan önce çalınan total verinin çok fazla olduğunu biliyorum internette sadece Metin2 kodları sızdırıldı, ana leak dosyalarının tamamını elinde tutan sayılı insan var, muhtemelen diğer oyunlarının (Rubinum Inferna oyunundan bir .h kullanmıştı diye hatırlıyorum, muhtemelen ellerinde vardı) kullandığı ortak şeyler çok fazladır, bir gün hepsini görmek dileğiyle.
 
Hangi oyun için olduklarını biliyor musun ? Bunu merak ettim aslında biraz bakındım ama pek bir şey bulamadım bununla alakalı. Kraizy.tgz sızdırılmadan önce çalınan total verinin çok fazla olduğunu biliyorum internette sadece Metin2 kodları sızdırıldı, ana leak dosyalarının tamamını elinde tutan sayılı insan var, muhtemelen diğer oyunlarının (Rubinum Inferna oyunundan bir .h kullanmıştı diye hatırlıyorum, muhtemelen ellerinde vardı) kullandığı ortak şeyler çok fazladır, bir gün hepsini görmek dileğiyle.
Metin1 için olsa gerek. Metin1 private serverler var internette, demek ki kaynak kodu dolaşıyor bir yerlerde.
 
Hangi oyun için olduklarını biliyor musun ? Bunu merak ettim aslında biraz bakındım ama pek bir şey bulamadım bununla alakalı. Kraizy.tgz sızdırılmadan önce çalınan total verinin çok fazla olduğunu biliyorum internette sadece Metin2 kodları sızdırıldı, ana leak dosyalarının tamamını elinde tutan sayılı insan var, muhtemelen diğer oyunlarının (Rubinum Inferna oyunundan bir .h kullanmıştı diye hatırlıyorum, muhtemelen ellerinde vardı) kullandığı ortak şeyler çok fazladır, bir gün hepsini görmek dileğiyle.
metin2 değil de direkt ymir geliştirici sunucusunu çaldıkları için bir kaç oyunun daha kaynak kodu sızmıştı. doğal olarak diğer oyunlarda kullanılan extern içerikleri de sızdı.
 
libthecore / stdafx.h:
Genişlet Daralt Kopyala
#ifndef false
    #define false 0
    #define true  (!false)
#endif

#ifndef FALSE
    #define FALSE false
    #define TRUE  (!FALSE)
#endif

Metin2 gibi mazisi derin projelerle çalışırken böyle detaylar bulmak şahsen çok hoşuma gidiyor, bu gördüğünüz eski makro tarihten bir parça, gelin nedenini açıklayayım.

Bu makro muhtemelen Ymir geliştiricileri tarafından 1999 öncesinde yazıldı, hatta daha eski de olabilir. Biliyorsunuz ki libthecore içerisindeki src dosyaları aslında .c uzantılı, bunun sebebi libthecore kütüphanesinin Ymir tarafından daha eski bir oyunları için yazılmış olması (çok yüksek ihtimalle, tahminim) bu kütüphaneyi alıp Metin2 için uyarlamışlar ve bu sebeple C++ ile uyumlu hale getirmek için çeşitli değişiklikler yapmışlar bu da onlardan biri.

Libthecore kütüphanesini incelerseniz içerisinde tonlarca old fashion C style kod olduğunu göreceksiniz, muhtemelen C99 öncesi dönemde yazıldı çünkü üstteki kod bloğunda gördüğünüz makro true ve false tanımlamak için kullanılıyor, C99 öncesinde C dilinde boolean henüz standart değildi ve herkes kendi versiyonunu yazıp kullanıyordu, bu sebeple true veya false kullanabilmek için bu tarz makrolar gerekiyordu, 2000'li yılların başından itibaren buna ihtiyaç kalmadı ama bu eski kodu sadece #ifndef bloğu içine alıp yine de orada bıraktılar çünkü eskiye uyumlu kalmasını istediler, daha sonra da bunu öylece unuttular.

Bunu bilmenin size herhangi bir faydası olmayabilir, yazarken bende bunun farkındayım ama benim gibi antika kalıntıları ilginç bulanların dikkatini çekebilir diye yazdım, sevgiler.
bruh moment
 
Geri
Üst