-
- Katılım
- 13 Ağustos 2023
-
- Mesajlar
- 3.413
-
- Tepkime puanı
- 4.888
-
- ForumSAL Yaşı:
- 3 yıl 2 ay
- Kıdem:
- Yerleşik Üye
-
- Konum
- Germany

Metin2 PvP sunucularında etkinlik açmak veya kapatmak için her zaman ayrı bir quest hazırlamak gerekmiyor. Sunucu dosyalarında tanımlı event flag kodları sayesinde Okey, Ayışığı, yılbaşı ve benzeri etkinlikleri GM komutlarıyla yönetmek mümkün.
Event flag sistemi yalnızca etkinliklerden ibaret değil. EXP, Yang, eşya düşürme oranları ve çeşitli oyun ayarları da aynı yöntemle değiştirilebiliyor.
Ancak her kod bütün server files sürümlerinde çalışmaz. Kullanılan game source ve quest yapısına göre flag isimleri ve görevleri farklı olabilir.
Metin2 Event Flag Nedir?
Event flag, sunucu genelinde kullanılan bir ayar değeridir. Quest dosyaları ve oyun sunucusu bu değerleri okuyarak ilgili işlemleri gerçekleştirir.
Örneğin bir etkinliğin açık olup olmadığını belirlemek için 0 ve 1 değerleri kullanılabilir.
- 0: Kapalı
- 1: Açık
Sayısal değer kullanan flaglarda ise 100, 200 veya 50 gibi değerler kullanılabilir. Bunların ne anlama geldiği ilgili flagın çalışma mantığına bağlıdır.
Event Flag Komutları Nasıl Kullanılır?
GM yetkisine sahip karakterle oyun içinde şu komutu kullanabilirsiniz:
Kod:
/e cards_event 1
Bu komut, ilgili sistem destekleniyorsa Okey etkinliğini aktif eder.
Kapatmak için:
Kod:
/e cards_event 0
Değiştirilmiş event flag değerlerini görüntülemek için eski sunucu yapılarında şu komut kullanılabilir:
Kod:
/get
Not: /get komutunun bulunması ve hangi değerleri listelediği game source sürümüne bağlıdır.
Metin2 Etkinlik Açma ve Kapatma Kodları
Aşağıdaki kodlar klasik Metin2 sunucu dosyalarında karşılaşılan event flag isimleridir.
Okey Etkinliği
Kod:
/e cards_event 1
/e cards_event 0
Ayışığı Sandığı
Kod:
/e drop_moon 1
/e drop_moon 0
Bulmaca Kutusu
Kod:
/e kids_day_quiz 1
/e kids_day_quiz 0
Bulmaca kutusu düşürme oranlarında şu flaglar kullanılabilir:
Kod:
kids_day_drop
kids_day_drop_high
İlk değer düşük seviyeler, ikincisi yüksek seviyeler için tanımlanmış olabilir. Kesin oran hesabı source kodundan kontrol edilmelidir.
Futbol Topu Etkinliği
Kod:
/e futboltopu 1
/e futboltopu 0
Farklı dosyalarda football_drop isimli flag da bulunabilir. İki kodun aynı işlevi gördüğü varsayılmamalıdır.
Paskalya Etkinliği
Kod:
easter_drop
Paskalya eşyalarının düşürülmesiyle ilgili kullanılan eski bir flagdır. Değerinin nasıl yorumlandığı ilgili source koduna bağlıdır.
Cadılar Bayramı
Kod:
halloween_drop
Cadılar Bayramı eşya düşürme sistemiyle ilişkilidir.
Ramazan Etkinliği
Kod:
ramadan_drop
Ramazan etkinliği eşya düşürme ayarlarında kullanılabilir.
Sevgililer Günü
Kod:
valentine_drop
Çikolata ve gül gibi etkinlik eşyalarıyla ilişkilidir.
Beyaz Gün Etkinliği
Kod:
whiteday_drop
Eski sunucu dosyalarında Beyaz Gün eşyalarının düşürülmesi için kullanılır.
Önemli: Bir event flagın 1 değerine ayarlanması, ilgili etkinliğin mutlaka çalışacağı anlamına gelmez. Quest, drop tanımı ve sunucu desteği de bulunmalıdır.
Yılbaşı Event Flag Kodları
Metin2'de yılbaşıyla ilgili birden fazla flag bulunur.
Kod:
xmas_snow
xmas_song
xmas_sock
xmas_tree
xmas_boom
new_xmas_event
xmas_snow: Kar yağışı efektini yönetir.
xmas_song: Yılbaşı müziğiyle ilişkilidir.
xmas_sock: Yılbaşı çorabı düşürme ayarlarında kullanılır.
xmas_tree: Yılbaşı ağacının görünümünü belirleyen değerlerle ilişkilidir. Eski yapılarda 0-3 değerleri kullanılır.
xmas_boom: Havai fişek ve gece efektiyle ilişkilidir.
new_xmas_event: Yılbaşı ağacının oluşturulmasında kullanılabilir.
Örnek:
Kod:
/e xmas_snow 1
Kar yağışını kapatmak için:
Kod:
/e xmas_snow 0
Bu işlemlerin istemci tarafındaki görsel dosyalarla da uyumlu olması gerekir.
Metin2 EXP, Yang ve Drop Oranı Kodları
Event flagların en çok kullanıldığı alanlardan biri de sunucu oranlarıdır.
EXP oranı
Kod:
mob_exp
mob_exp_buyer
Eşya düşürme oranı
Kod:
mob_item
mob_item_buyer
Yang oranı
Kod:
mob_gold
mob_gold_buyer
Çoklu Yang düşürme
Kod:
mob_gold_pct
mob_gold_pct_buyer
Canavar hasarı
Kod:
mob_dam
Eski game source yapılarında bu değerlerin bir kısmı 100 tabanlı çarpan olarak yorumlanır.
Örneğin:
Kod:
/e mob_exp 200
İlgili sistem 100 değerini normal oran kabul ediyorsa 200 değeri iki katına karşılık gelebilir.
Ancak bu hesap bütün sunucu dosyalarında aynı değildir. Özellikle buyer uzantılı flagların hangi oyuncu gruplarına uygulandığı source üzerinden kontrol edilmelidir.
Drop oranı ile düşme ihtimali aynı şey değildir.
Bazı flaglarda verilen değer doğrudan çarpan değil, olasılık hesabında kullanılan bölen olabilir. Bu nedenle her drop koduna 200 yazmak iki kat drop anlamına gelmez.
Diğer Kullanışlı Event Flaglar
At Beceri Kitabı
Kod:
horse_skill_book_drop
Ruh Taşı
Kod:
three_skill_item
Kan Taşı
Kod:
hc_drop
Büyülü Bakır
Kod:
mars_drop
Lonca bekleme süreleri
Kod:
guild_disband_delay
guild_withdraw_delay
Arena iksir sınırı
Kod:
arena_potion_limit
arena_potion_limit_count
Yang düşürme aralığı
Kod:
gold_drop_limit_time
Kişisel pazar vergisi
Kod:
personal_shop
Üç Yol Savaşı Event Flagları
Üç Yol Savaşı sistemiyle ilgili şu flaglar bulunabilir:
Kod:
threeway_war_boss_count
threeway_war_pass_idx
threeway_war_sungzi_idx
threeway_war_choice
threeway_war_kill_count
threeway_war_dead_count
threeway_war_boss_count etkinlikte oluşturulacak boss sayısıyla ilişkilidir.
Harita indekslerini belirleyen pass_idx ve sungzi_idx değerleri ise doğrudan değiştirilmemelidir.
Uyarı: Yanlış harita indeksi kullanılması Üç Yol Savaşı sisteminin çalışmasını bozabilir. Önce harita tanımlarını ve ilgili quest dosyalarını kontrol edin.
Diğer Event Flag İsimleri
Eski Metin2 source ve quest dosyalarında aşağıdaki isimlerle de karşılaşılabilir:
Kod:
fish_miss_pct
gold_trade_cycle
gold_trade_enable
japan_regen
medal_part_drop
user_dam
user_dam_buyer
pre_event_hc
refine_box
refine_box_drop
refine_box_low
refine_box_mid
refine_box_high
drop_char_stone
drop_char_stone.level_range
dropevent.drop_char_stone
drop_char_stone.percent_lv01_10
drop_char_stone.percent_lv11_30
drop_char_stone.percent_lv31_MX
spawn_block_log
xmas_santa
manwoo
fishevent
poly
update_refine_time
Bu flagların tamamı için doğrulanmış, ortak bir çalışma biçimi bulunmuyor. İsimlerinden hareketle kesin değerler vermek doğru olmaz.
Event Açılıyor Ama Eşya Düşmüyorsa
Özellikle özel sunucularda karşılaşılan sorunlardan biri, etkinliğin açık görünmesine rağmen eşya düşmemesidir.
Kontrol edilmesi gerekenler:
- Event flag isminin quest ve game source içerisinde gerçekten kullanıldığını kontrol edin.
- Etkinliğin drop tanımının bulunduğundan emin olun.
- Oyuncu seviyesi ve canavar seviyesi kısıtlamalarını inceleyin.
- İlgili item VNUM değerinin sunucuda mevcut olduğunu kontrol edin.
- Etkinliğin belirli harita veya kanallarla sınırlandırılıp sınırlandırılmadığına bakın.
- Quest değişikliklerinden sonra gerekli derleme ve yeniden yükleme işlemlerini uygulayın.
- Test sırasında syserr ve sunucu loglarını inceleyin.
Örnek quest kullanımı:
Kod:
if game.get_event_flag("cards_event") == 1 then
-- Etkinlik açıkken yapılacak işlemler
end
Quest içerisinden bir flag değeri değiştirmek için:
Kod:
game.set_event_flag("cards_event", 1)
Bu kodlar yalnızca örnek kullanımı gösterir. Etkinliğin bütün işleyişini tek başına oluşturmaz.
Event Flag Değerleri Nerede Saklanır?
Klasik Metin2 sunucu yapılarında event flag değerleri quest sistemi üzerinden yönetilir. Eski sürümlerde bu değerler player.quest tablosunda da görülebilir.
Ancak doğrudan veritabanından kayıt silmek güvenli bir sıfırlama yöntemi değildir.
Öncelikle GM komutları veya ilgili quest fonksiyonları kullanılmalıdır. Veritabanı üzerinde işlem yapılacaksa yedek alınmalı ve kullanılan server files yapısı kontrol edilmelidir.
Sonuç
Metin2 event flag sistemi, sunucu yöneticilerinin etkinlikleri ve oyun oranlarını yönetmesini kolaylaştırır. Okey, Ayışığı, yılbaşı, EXP ve drop gibi işlemler uygun flaglarla kontrol edilebilir.
Burada önemli olan, kullanılan kodun sunucu dosyalarında gerçekten tanımlı olmasıdır. Eski bir rehberde yer alan her flagın güncel veya özelleştirilmiş server files üzerinde aynı şekilde çalışacağı düşünülmemelidir.
Değişiklikleri önce test sunucusunda denemek, özellikle drop oranları ve oyun ekonomisini etkileyen ayarlarda en güvenli yöntemdir.