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
 
China intoxication check

Zamanında yarım uyarlanmış bir ayar. Anladığım kadarıyla her karakterin bir gün içerisinde belirli bir süreden fazla oynanmasını istememişler. Mantık şu şekilde:

Eğer oyuncu over time değil ise (tanımlanan süreyi aşmamışsa) normal exp alır.
Eğer oyuncu 3 saat over time ise (tanımlanan süreyi 3 saat aşmış ise) normal/2 kadar exp alır.
Eğer oyuncu 5 saat over time ise hiç exp almaz.

Bana düşününce baya mantıklı geldi, eğer her karaktere günlük 4 saat örneğin bir limit konursa fazla oynayan ile az oynayan arasında fark bu kadar açılmaz, ya da yeni oyunlarda örneğin çoluk çocuğun belli bir süre üzerinde oyun oynamayı kendi kendine bırakması sağlanabilir.

1759763588901.webp
 
China intoxication check

Zamanında yarım uyarlanmış bir ayar. Anladığım kadarıyla her karakterin bir gün içerisinde belirli bir süreden fazla oynanmasını istememişler. Mantık şu şekilde:

Eğer oyuncu over time değil ise (tanımlanan süreyi aşmamışsa) normal exp alır.
Eğer oyuncu 3 saat over time ise (tanımlanan süreyi 3 saat aşmış ise) normal/2 kadar exp alır.
Eğer oyuncu 5 saat over time ise hiç exp almaz.

Bana düşününce baya mantıklı geldi, eğer her karaktere günlük 4 saat örneğin bir limit konursa fazla oynayan ile az oynayan arasında fark bu kadar açılmaz, ya da yeni oyunlarda örneğin çoluk çocuğun belli bir süre üzerinde oyun oynamayı kendi kendine bırakması sağlanabilir.

25988 eklentisini görüntüle
Bunu oyuna eklemeleri in sebebi Çin'deki okul çağındaki çocukların bilgisayar sürelerini kısıtlayan kanunlar. Bu kontrolleri eklemeden muhtemelen oyunu Çin pazarına sunamazlardı.

30 Ağustos 2021 tarihinde Ulusal Yayın ve Yayım İdaresi (National Press and Publication Administration, NPPA) “未成年人网络游戏防沉迷” başlıklı bir bildiri yayınladı. Bu düzenleme, online oyun hizmeti sunan işletmelerin reşit olmayanlara sağladıkları oyun süresini sıkı şekilde sınırlandırmalarını öngörüyor.

Bu düzenlemeye göre, reşit olmayan kullanıcılar yalnızca her hafta cuma, cumartesi, pazar günleri ve resmi tatillerde akşam 20:00-21:00 arasında oyun oynayabiliyor. Başka zamanlarda oyun hizmeti verilememesi gerekiyor.

Önceki düzenlemelerde (özellikle 2019 yılında) hafta içi günlerde 90 dakika, hafta sonu ve tatillerde 3 saat gibi sınırlar getirilmişti ve oyunların gece 22:00–08:00 arasında oynanması yasaklanmıştı.

Ayrıca Çin merkezli düzenlemelerde “gerçek isim doğrulaması” (real-name registration) sistemi zorunlu hale getirilmiş durumda: oyun şirketleri kullanıcıların kimlik bilgilerini doğrulamalı ve bu sayede reşit olmayan kullanıcıları tespit edip kısıtlamaları uygulamalıdır.

Daha geniş olarak, 2023’te Çin “küçük mod” (minor mode) adıyla, internet sağlayıcılarının ve uygulamaların reşit olmayanlara özel sınırlamalar getirmesini zorunlu kılacak taslak düzenlemeler önerdi. Bu taslak, örneğin reşit olmayanların belirli saatlerde internete erişimlerinin engellenmesini, günlük ekran süresi sınırlarını uygulamayı içeriyordu.
 
Bunu oyuna eklemeleri in sebebi Çin'deki okul çağındaki çocukların bilgisayar sürelerini kısıtlayan kanunlar. Bu kontrolleri eklemeden muhtemelen oyunu Çin pazarına sunamazlardı.

30 Ağustos 2021 tarihinde Ulusal Yayın ve Yayım İdaresi (National Press and Publication Administration, NPPA) “未成年人网络游戏防沉迷” başlıklı bir bildiri yayınladı. Bu düzenleme, online oyun hizmeti sunan işletmelerin reşit olmayanlara sağladıkları oyun süresini sıkı şekilde sınırlandırmalarını öngörüyor.

Bu düzenlemeye göre, reşit olmayan kullanıcılar yalnızca her hafta cuma, cumartesi, pazar günleri ve resmi tatillerde akşam 20:00-21:00 arasında oyun oynayabiliyor. Başka zamanlarda oyun hizmeti verilememesi gerekiyor.

Önceki düzenlemelerde (özellikle 2019 yılında) hafta içi günlerde 90 dakika, hafta sonu ve tatillerde 3 saat gibi sınırlar getirilmişti ve oyunların gece 22:00–08:00 arasında oynanması yasaklanmıştı.

Ayrıca Çin merkezli düzenlemelerde “gerçek isim doğrulaması” (real-name registration) sistemi zorunlu hale getirilmiş durumda: oyun şirketleri kullanıcıların kimlik bilgilerini doğrulamalı ve bu sayede reşit olmayan kullanıcıları tespit edip kısıtlamaları uygulamalıdır.

Daha geniş olarak, 2023’te Çin “küçük mod” (minor mode) adıyla, internet sağlayıcılarının ve uygulamaların reşit olmayanlara özel sınırlamalar getirmesini zorunlu kılacak taslak düzenlemeler önerdi. Bu taslak, örneğin reşit olmayanların belirli saatlerde internete erişimlerinin engellenmesini, günlük ekran süresi sınırlarını uygulamayı içeriyordu.
Kesinlikle CCP ile aynı fikirdeyim bu oyunlara karşı koydukları kurallar konusunda, Türkiye'de başıboş bırakılıyor herhangi bir denetim yok.
 
Bu oyunun 936_login scripti.

Screenshot 2025-10-06 011350.webp


Sol alttaki yazıyı çevirirsek, şöyle yazıyor:

Screenshot 2025-10-06 062630.webp


Sağlıklı Oyun Önerileri

Kötü oyunları boykot edin ve korsan oyunları reddedin.

Kendinizi korumaya dikkat edin ve aldatılmamaya dikkat edin.

Orta düzeyde oyun oynamak beyne iyi geliyor, ancak aşırı oyun oynamak vücuda zararlı.

Zamanınızı makul bir şekilde planlayın ve sağlıklı bir yaşam sürün.
 
Alman serverinde premium damage scaling satıyormuş Gameforge, şaşırtmadı

char_battle.cpp:
Genişlet Daralt Kopyala
    // ------------------------
    // 독일 프리미엄 모드
    // -----------------------
    if (LC_IsGermany() && pAttacker && pAttacker->IsPC())
    {
        int iDmgPct = CHARACTER_MANAGER::instance().GetUserDamageRate (pAttacker);
        dam = dam * iDmgPct / 100;
    }
 
Geri
Üst