- Moderatör
- #1
- Kayıtlı
- 1 Yıl 9 Ay 14 Gün
- Katılım
- 10 Ocak 2025
- Konular
- 50
- Mesajlar
- 140
- Tepkime puanı
- 21
- Online süresi
- 7h 23m
- Puan
- 43
- Konum
- Türkiye
- Web sitesi
- www.zyncra.shop
Konu İçeriği — Hızlı Bakış
01. window: eşya hangi pencerede?
02. pos: envanter kutuları nasıl numaralanır?
03. EQUIPMENT: ekipman yuvaları
04. Kemer, simya, depo ve Nesne Marketi Deposu
05. Taş yuvaları: socket0, socket1, socket2
06. Efsunlar: attrtype ve attrvalue
- item tablosunun sütunları
- window: eşya hangi pencerede?
- pos: envanter kutuları nasıl numaralanır?
player.item tablosu sunucudaki her eşyanın satırıdır: kime ait olduğu (owner_id), hangi pencerede ve kaçıncı kutuda durduğu (window, pos), adedi (count), ne olduğu (vnum), takılı taşlar ya da süre gibi ek değerleri (socket0-socket2) ve efsunları (attrtype, attrvalue çiftleri).window: eşya hangi pencerede?
| window | Numara | owner_id | Ne zaman okunur |
|---|---|---|---|
INVENTORY | 1 | Karakter | Girişte |
EQUIPMENT | 2 | Karakter | Girişte, eşya giydirilerek |
SAFEBOX | 3 | Hesap | Depo açılınca |
MALL | 4 | Hesap | Nesne Marketi Deposu açılınca |
DRAGON_SOUL_INVENTORY | 5 | Karakter | Girişte (simya taşları) |
BELT_INVENTORY | 6 | Karakter | Girişte (kemer envanteri) |
GROUND | 7 | Yok | Okunmaz |
pos: envanter kutuları nasıl numaralanır?
Bir envanter sayfası 5 sütun ve 9 satır, yani 45 kutudur. Kutular soldan sağa, yukarıdan aşağı numaralanır.
Orijinal yapıda envanter 2 sayfadır, pos 0-89 arasıdır. Envanteri 4 sayfaya çıkaran derlemelerde (
ENABLE_EXTEND_INVEN_SYSTEM) pos 0-179 arasıdır; istemcinin de 4 sayfayı desteklemesi gerekir.EQUIPMENT: ekipman yuvaları
21, 22 ve 24 numaralı yuvalar ilgili özellik kapalıysa yoktur ve sonraki numaralar kayar; bu yüzden numarayı kendi derlemendeki
EWearPositions sırasından doğrula. Takılı simya taşları da ekipman penceresinde, son yuvadan sonraki numaralarda durur.Kemer, simya, depo ve Nesne Marketi Deposu
BELT_INVENTORY: kemer envanteri 4 × 4 = 16 kutudur, pos 0-15; kaç kutunun açık olduğunu kemerin seviyesi belirler (kemer ve envanter). Eski kurulumlarda bu eşyalar envanter penceresinde, ekipman yuvalarından sonraki numaralarda tutulur; yaygın paketlerinsql/updates/postklasöründeki dosyalar onları kemer penceresine taşır.DRAGON_SOUL_INVENTORY: simya taşlarının envanteri.SAFEBOX:owner_idhesap numarasıdır; aynı hesabın bütün karakterleri aynı depoyu görür. Depo sayfası da 5 × 9 = 45 kutudur, sayfa sayısınısafebox.sizebelirler. Hesabınsafebox_expiresüresi devam ediyorsa ya da karakter büyük depo eşyasını takıyorsa depo 3 sayfa açılır. Geçersiz konumdaki ya da başka eşyayla çakışan depo eşyası gösterilmez ama satırı silinmez. Oyuncu tarafı depo yazısında.
Taş yuvaları: socket0, socket1, socket2
Yeni yaratılan bir eşyanın kaç açık yuvayla geleceğini item_proto belirler, ama SQL ile yazılan yuva sayısını oyun yüklerken denetlemez. Taş takmanın kuralları taş takma yazısında.
Efsunlar: attrtype ve attrvalue
Yedi efsun çifti vardır. İlk beşi (
attrtype0-attrtype4) normal efsunlar, son ikisi (attrtype5, attrtype6) 6.Bütün numaralar efsun listesi sayfasında. Değerler oyunun efsun tablosundaki beş seviyeden gelir; varsayılan tabloda silahtaki yarı insan efsunu en çok %10'dur.
Örnek satır
Kılıç'ın boyutu 2 olduğu için 0 ve 5 numaralı kutular boş olmalıdır. Bu satırı ekleyen sorgu ve öncesinde yapılacaklar MySQL ile sık yapılan işlemler yazısında.
Eşya verirken sık yapılan hatalar
- Sunucu açıkken item tablosuna satır eklemek. Oyundaki karakter yeni satırı görmez; eşya ancak karakter çıkıp önbellek boşaldıktan sonraki girişte gelir ve kutu o arada dolmuşsa başka yere taşınır. Daha sinsi sorun kimliktir. Her oyun çekirdeği açılışta db'den 10 milyonluk bir kimlik bloğu alır ve yeni eşyalara oradan sırayla numara verir; db bu blokları açılışta tablodaki en büyük kimliğe bakarak kurar. Sunucu açıkken otomatik numarayla eklenen satır, bir çekirdeğin birazdan kendi eşyasına vereceği kimliği alabilir; o eşya kaydedildiğinde REPLACE senin satırını ezer. Sunucu açıkken eşya
item_awardile, doğrudanitemtablosuna ise sunucu kapalıyken verilir. - Depo eşyasına karakter numarası yazmak. SAFEBOX ve MALL'da
owner_idhesap numarasıdır. - Dolu kutuya eşya koymak. Başlangıç kutusu doluysa oyun eşyayı ilk boş kutuya taşır, envanter doluysa yere atar. Büyük eşyanın alt kutuları denetlenmediği için üst üste binen eşyalar envanteri bozar.
İlgili kod yerleri
- db'nin okuması ve sütun sırası:
db/src/ClientManagerPlayer.cpp,CreateItemTableFromResve karakter yükleme sorgusu. - db'nin yazması:
db/src/Cache.cpp,CItemCache::OnFlush(REPLACE vesocket0-socket2). - Oyunun kaydettiği konum:
game/src/item_manager.cpp,SaveSingleItem(ekipmanda yuva numarası, kemerde 0-15, depoda hesap numarası).
İlgili sayfalar
- Metin2 6. ve 7. Efsun: Nadir Efsunlar Nasıl Eklenir ve Ne İşe Yarar? (Wiki)
- Metin2 Depo Sistemi: Depo Boyutu, Şifre ve Nesne Market Deposu (Wiki)
- Metin2 item_proto Rehberi: Sütunlar, Türler ve Bayraklar (Server kurma)
Özet Değerlendirme: player.item tablosunun sütunları: envanter, ekipman, kemer, simya, depo ve Nesne Marketi Deposu pencereleri, kutu ve yuva numaraları, taş yuvaları ve süre tutan socket sütunları, attrtype ve attrvalue efsun çiftleri, eşya verirken sık yapılan hatalar.
Sıkça Sorulan Sorular (SSS)
Soru 1: Metin2 item Tablosu: window, pos, socket ve attr Sütunları rehberindeki ayarlar tüm sunucu yapılarında geçerli mi?
Evet, rehberde paylaşılan temel mekanikler hem emek (zor) hem de orta/vs'lik sunucu kurgularında doğrudan uygulanabilir; sunucu oranlarına göre küçük ince ayarlar yapılabilir.
Soru 2: En yüksek verim için hangi sıralama takip edilmeli?
Öncelikle karakter/sistem temel gereksinimlerini tamamlayıp ardından konu içerisindeki adım adım dizilim ve optimizasyon tavsiyelerini sırasıyla uygulamanız en yüksek performansı sağlar.
Evet, rehberde paylaşılan temel mekanikler hem emek (zor) hem de orta/vs'lik sunucu kurgularında doğrudan uygulanabilir; sunucu oranlarına göre küçük ince ayarlar yapılabilir.
Soru 2: En yüksek verim için hangi sıralama takip edilmeli?
Öncelikle karakter/sistem temel gereksinimlerini tamamlayıp ardından konu içerisindeki adım adım dizilim ve optimizasyon tavsiyelerini sırasıyla uygulamanız en yüksek performansı sağlar.
Son düzenleme:

