- Katılım
- 6 Mayıs 2022
- Konular
- 48,291
- Mesajlar
- 48,601
- Tepkime puanı
- 75
- M2 Yaşı
- 3 yıl 11 ay 10 gün
- Trophy Puan
- 48
- M2 Yang
- 488,879
1,) Veri Tipleri
Değişkenler Kod Bloklarının Başına Girdiğimiz Gidişatı Belirleyen C++ Ve Tüm Yazılım Dillerinin Temelini Oluşturan Algoritmalardır .
2,) Static Tagını Tanıyalım.
Eğer Bir Değişkenin Başına static Koyarsak Bu Değişken header Dosyasına Eklememiz Gerekmez. Fakat Bazı Kısıtlamalar Getirecektir Örneğin Return Algoritmasını False veya true şeklinde ayıramayacak , direkt olarak return; çekmemiz gerekecektir . Source İçerisinde vnumHelper Sisteminde Geçmektedir .
3,) Header'leri Tanıyalım.
Header Dosyaları Cpp Dosyalarında Yaptığımız Eklentileri , Değişiklikleri Kayıt Altında Tutan , Bağlantı Kuracağımız CPP Dosyalarını Birbirine Bağlayan Dosyalardır. örneğin #include "char.cpp" değilde #include "char.h" kullanırız char.h içerisinde değişkenlerin isimleri kayıt altındadır char.h yazdığımızda aslında char.cpp char_item.cpp vs. vs. tüm char.h dosyasına bağlı dosyaları cpp dosyamıza çektirmiş olacağız.
4,) Başlamadan Önce Kısa Ve Ufak Bir Bilgi.
Bu İşe Başlarken Ufacık Bir C++ Bilgim Yoktu . Halada Çok Var Diyemem Fakat Şu Ana Kadar Ne DEV C++ İle Ders İşledim Nede Farklı Bir Şey Yaptım Sadece Elimi Kodlamaya Alıştırdım Ve Şu An Lise 2 Okuyorum Bilişim Bölümündeyim Ve Kodlama Dersim 95 Gerisini Siz Düşünebilirsiniz Sınıfta Benden İyisi Yok Diyebilirim. DEV C++'ı Kesinlikle Önermiyorum O Kadar Dandik Bir Program Görmedim Ben DEV C++'la C++ Öğrenirim Diyenler O İşi Unutsunlar .
5,) bool'u tanıyalım.
bool nedir öncelikle bunla başlayalım. bool C++'da Yada işlevini görür . bool döngüsü içerisinde return algoritmasını false veya true şeklinde kullanabiliriz fakat sayısal olarak değeri yoktur . bu döngü source içerisinde genelde Grid , Pos Gibi Boost Library Fonksiyonlarında Çok İş Görüyor CONFIG Komutu Eklerkende Kullanabilirsiniz . Özellikle NO TXT DB Yapacaklar İçin Öneririm.
6,) void'i Tanıyalım.
void ana fonksiyon eklemekte kullanılan örneğin CHARACTER::SebnemSilKeke(int ItemPos) gibi gibi işlerde kullanılıyor return komutunu ister false true olarak ister return; devam anlamında kullanabilirsiniz . sayısal bir anlam ifade etmez Grid gibi işlerdede işe yarıyor .
Grid Demişken Gridi Açıklayayım.
Grid Bir Sistem Yaptıktan Sonra Bunun X Ve Y Ayarını Girmeniz Gerektiğinde Yardımınıza Koşar . Örneğin Window Bir Sistem Yaptınız Bunda 30 Adet Etc Slotu Var Siz Bu Slotları Yatay Olarak 10 Dikey Olarak 3 Döşediniz Gridin Ayarına Göre Eğer Gride X , Y Girdiyseniz Grid(10,3) Olarak Kullanırsınız . Diğer Türlü (3,10) Olarak Kullanırsınız Boost Library 1.5.0'da Y X Olarak Çalışıyor Demesi Tüm Sistemlerin Gridlerini Tersleyin Kullanıyorsanız.
Çok Uzun Anlatmıyorum Bu Dersinde İlgi Alaka Olursa 2 3 4 5 6 7 Diye Gider .
Edit ; Bool Döngüsü İçin 3 Arkadaş Mesaj Attı Tamamlamadığım Bir Kod Bloğu Vermek İstiyorum Daha Anlaşılır Hale Gelmesi İçin .
Değişkenler Kod Bloklarının Başına Girdiğimiz Gidişatı Belirleyen C++ Ve Tüm Yazılım Dillerinin Temelini Oluşturan Algoritmalardır .
2,) Static Tagını Tanıyalım.
Eğer Bir Değişkenin Başına static Koyarsak Bu Değişken header Dosyasına Eklememiz Gerekmez. Fakat Bazı Kısıtlamalar Getirecektir Örneğin Return Algoritmasını False veya true şeklinde ayıramayacak , direkt olarak return; çekmemiz gerekecektir . Source İçerisinde vnumHelper Sisteminde Geçmektedir .
3,) Header'leri Tanıyalım.
Header Dosyaları Cpp Dosyalarında Yaptığımız Eklentileri , Değişiklikleri Kayıt Altında Tutan , Bağlantı Kuracağımız CPP Dosyalarını Birbirine Bağlayan Dosyalardır. örneğin #include "char.cpp" değilde #include "char.h" kullanırız char.h içerisinde değişkenlerin isimleri kayıt altındadır char.h yazdığımızda aslında char.cpp char_item.cpp vs. vs. tüm char.h dosyasına bağlı dosyaları cpp dosyamıza çektirmiş olacağız.
4,) Başlamadan Önce Kısa Ve Ufak Bir Bilgi.
Bu İşe Başlarken Ufacık Bir C++ Bilgim Yoktu . Halada Çok Var Diyemem Fakat Şu Ana Kadar Ne DEV C++ İle Ders İşledim Nede Farklı Bir Şey Yaptım Sadece Elimi Kodlamaya Alıştırdım Ve Şu An Lise 2 Okuyorum Bilişim Bölümündeyim Ve Kodlama Dersim 95 Gerisini Siz Düşünebilirsiniz Sınıfta Benden İyisi Yok Diyebilirim. DEV C++'ı Kesinlikle Önermiyorum O Kadar Dandik Bir Program Görmedim Ben DEV C++'la C++ Öğrenirim Diyenler O İşi Unutsunlar .
5,) bool'u tanıyalım.
bool nedir öncelikle bunla başlayalım. bool C++'da Yada işlevini görür . bool döngüsü içerisinde return algoritmasını false veya true şeklinde kullanabiliriz fakat sayısal olarak değeri yoktur . bu döngü source içerisinde genelde Grid , Pos Gibi Boost Library Fonksiyonlarında Çok İş Görüyor CONFIG Komutu Eklerkende Kullanabilirsiniz . Özellikle NO TXT DB Yapacaklar İçin Öneririm.
6,) void'i Tanıyalım.
void ana fonksiyon eklemekte kullanılan örneğin CHARACTER::SebnemSilKeke(int ItemPos) gibi gibi işlerde kullanılıyor return komutunu ister false true olarak ister return; devam anlamında kullanabilirsiniz . sayısal bir anlam ifade etmez Grid gibi işlerdede işe yarıyor .
Grid Demişken Gridi Açıklayayım.
Grid Bir Sistem Yaptıktan Sonra Bunun X Ve Y Ayarını Girmeniz Gerektiğinde Yardımınıza Koşar . Örneğin Window Bir Sistem Yaptınız Bunda 30 Adet Etc Slotu Var Siz Bu Slotları Yatay Olarak 10 Dikey Olarak 3 Döşediniz Gridin Ayarına Göre Eğer Gride X , Y Girdiyseniz Grid(10,3) Olarak Kullanırsınız . Diğer Türlü (3,10) Olarak Kullanırsınız Boost Library 1.5.0'da Y X Olarak Çalışıyor Demesi Tüm Sistemlerin Gridlerini Tersleyin Kullanıyorsanız.
Çok Uzun Anlatmıyorum Bu Dersinde İlgi Alaka Olursa 2 3 4 5 6 7 Diye Gider .
Edit ; Bool Döngüsü İçin 3 Arkadaş Mesaj Attı Tamamlamadığım Bir Kod Bloğu Vermek İstiyorum Daha Anlaşılır Hale Gelmesi İçin .
Kod:
bool CHARACTER::ItemineWs(const LPITEM item, const TItemPos& srcCell, const TItemPos& destCell) { if (ITEM_BELT == item->GetType()) return false; if (isEquipped()) return false; if (isExchanging()) return false; if (isFight()) return false; { int pos = -1; if (item->IsDragonSoul()) pos = GetEmptyDragonSoulInventory(item); else pos = GetEmptyInventory(item->GetSize()); } return true; }
Haydi Selametle .
Metin2 Lobby'da C++ ile Oyun Geliştirme Serisi: Değişken Türleri Ve Bilinmesi Gerekenler (Ders 1)
Oyun geliştirme dünyasında, özellikle Metin2 gibi MMORPG sistemlerinde C++ dilinin kullanımı oldukça yaygındır. Bu bağlamda, Metin2 private server geliştirme sürecinde temel taşlarından biri olan değişken türlerine hakim olmak büyük önem taşır. Bu yazıda, Metin2 sunucularında C++ ile geliştirme yaparken dikkat edilmesi gereken değişken türlerini ve bunlarla ilgili önemli noktaları ele alacağız.
Değişken Nedir?
C++ gibi sistem programlama dillerinde değişkenler, bellekte veri saklamamızı sağlayan adlandırılmış alanlardır. Metin2 sunucu geliştirme süreçlerinde, oyuncu verileri, envanter içerikleri, PvP sistemleri gibi pek çok yapı bu değişkenler üzerinden şekillenir. Bu nedenle doğru ve etkin değişken kullanımı, hem performans hem de güvenlik açısından kritiktir.
Temel Veri Türleri ve Kullanımları
C++ dilinde birçok temel veri türü bulunur. Bunlar, farklı büyüklükte ve tipte verileri tutmak için tasarlanmıştır:
- int: Tam sayı değerler için kullanılır. Örneğin bir oyuncunun seviyesi ya da envanter slot numarası bu türde olabilir.
- bool: Mantıksal değerler için kullanılır. Doğru veya yanlış (true/false) durumlarında kullanılır. Örnek: 'oyuncu_canli_mi', 'envanter_dolu_mu'.
- char: Karakter verileri tutmak için kullanılır. Özellikle string işlemlerinde veya bayt bazlı veri manipülasyonlarında tercih edilir.
- float / double: Ondalıklı sayılar için kullanılır. Can miktarı, hasar çarpanları gibi verilerde kullanılabilir.
Metin2 Sunucularında Özel Kullanımlar
Metin2 özel sunucularında, genellikle Martysama veya diğer SRC paketlerinde tanımlanmış özel türler de kullanılır. Bunlar genellikle typedef veya enum aracılığıyla tanımlanmıştır. Örneğin:
typedef unsigned int DWORD; gibi tanımlar, 32-bit pozitif tam sayılar için kullanılır. Bu türler, sistemsel uyumluluk ve veri bütünlüğü açısından önemlidir.
Hata Yapmamanız Gereken Yerler
- int yerine unsigned int kullanmayı ihmal etmeyin. Negatif değerler beklenmeyen hatalara yol açabilir.
- Bellek sızıntısı yaratmamak için pointer kullanırken dikkatli olun. Özellikle new/delete eşleşmelerine dikkat edin.
- Değişken adlarını anlamlı seçin. Örnek: player_level yerine pLvl gibi kısaltmalar kod okunabilirliğini düşürür.
Değişken Kapsamı ve Performans
Metin2 sunucu yazılımlarında, global değişkenlerin aşırı kullanımı performans kaybına neden olabilir. Özellikle oyuncu bazlı veriler için lokal değişkenler tercih edilmelidir. Ayrıca değişkenlerin scope yaşam süresi, bellek yönetimi açısından önemlidir.
Sonuç
Metin2 özel sunucularında C++ tabanlı sistem geliştirme yaparken, veri türlerini doğru kullanmak kod kalitesini ve sistemin stabilitesini doğrudan etkiler. Bu nedenle, özellikle yeni başlayan geliştiricilerin değişken türleri konusunda sağlam bir temele sahip olması gerekir. Daha fazla C++ kaynak kodu ve Metin2 geliştirme rehberi için Metin2 Lobby'yi takip etmeye devam edin.
Metin2 Lobby C++ Game Development Series: Variable Types And What You Need To Know (Lesson 1)
In the world of game development, especially for MMORPG systems like Metin2, the use of the C++ language is quite common. In this context, mastering variable types, which are one of the fundamental building blocks in developing Metin2 private servers, is crucial. In this article, we will discuss the variable types used in C++ while developing Metin2 servers and highlight important points related to them.
What Is a Variable?
In system programming languages like C++, variables are named memory areas that allow us to store data. In Metin2 server development processes, many structures such as player data, inventory content, and PvP systems are built upon these variables. Therefore, proper and efficient use of variables is critical in terms of both performance and security.
Basic Data Types and Their Uses
There are several basic data types in C++. These are designed to hold data of different sizes and types:
- int: Used for integer values. For example, a player's level or inventory slot number might be of this type.
- bool: Used for logical values. True or false states are represented with this type. Example: 'player_alive', 'inventory_full'.
- char: Used to hold character data. Preferred in string operations or byte-level data manipulation.
- float / double: Used for floating-point numbers. Can be used for values such as health amounts or damage multipliers.
Special Uses in Metin2 Servers
In Metin2 private servers, custom types defined in SRC packages like Martysama are often used. These are typically defined via typedef or enum. For example:
typedef unsigned int DWORD; defines a 32-bit positive integer. Such types are important for system compatibility and data integrity.
Places Where You Should Avoid Making Mistakes
- Don't neglect to use unsigned int instead of int. Negative values can lead to unexpected errors.
- Be careful when using pointers to avoid memory leaks. Pay attention to matching new/delete pairs.
- Choose meaningful variable names. Example: Using abbreviations like pLvl instead of player_level decreases code readability.
Variable Scope and Performance
In Metin2 server software, excessive use of global variables may cause performance losses. Especially for player-based data, local variables should be preferred. Additionally, the scope lifetime of variables is important for memory management.
Conclusion
When developing C++-based systems for Metin2 private servers, correctly using data types directly affects code quality and system stability. Therefore, especially beginner developers must have a solid foundation in variable types. Follow Metin2 Lobby for more C++ source codes and Metin2 development guides.
