Soru Yapay zekayı eğitmek için veri seti ve .md'ler oluşturma

  • Konuyu açan Konuyu açan Raviel
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 13
  • Gösterim Gösterim 336
Herhangi bir konuda danışmak istediğiniz soru varsa bu öneki seçebilirsiniz.

Raviel

Premium Üye
Premium Üye
MT Üye
Mesaj
182
Çözümler
3
Beğeni
149
Puan
764
Ticaret Puanı
0
Arkadaşlar selamlar,

Metin2 game ve client source kısımları bildiğiniz üzere çok karışık ve kapsamlı. Yapay zeka quest vb. tarzda basit işlemler için başarılı şekilde çalışıyor ancak detaylı karmaşık yapılarda çok ciddi bir bilgisi olmadan çok fazla hata yapıyor bu sebeple yapay zekayı eğitmek için .md(MarkDown) dosyaları oluşturuyorum. Bir nevi yapay zekayı eğitmek ve ona yol göstericek rehberler oluşturmak gibi. Daha önce yapay zekayla alakalı bu konuda tecrübeleri olan veya source dosyalarında dikkat etmemi özellikle belirttiğiniz bir kısım var mı?

Örnek olarak game/src kısmında quest ile başlayan dosyalarla alakalı bir markdown dosyası:

quest game/src md:
Genişlet Daralt Kopyala
# Metin2 QuestLua Referans Kılavuzu

Bu dosya, Metin2 kaynak kodundaki çeşitli `questlua_*.cpp` dosyalarının amaçlarını ve Lua görev scriptlerinde hangi ön eklerle (`.` ile biten) kullanıldıklarını özetlemektedir.

---

## `questlua_affect.cpp`

*   **Amaç:** Karakter etkilerini (buff, debuff, özel durumlar) yönetir.
*   **Lua Ön Eki:** `affect.`
*   **Örnek Fonksiyonlar:**
    *   `affect.add`: Efekt ekler.
    *   `affect.remove`: Efekti kaldırır.
    *   `affect.remove_bad`, `affect.remove_good`: İyi/kötü efektleri toplu kaldırır.
    *   `affect.add_hair`: Saç efekti ekler.
    *   `affect.add_collect`: Toplama görevi efekti ekler.

---

## `questlua_arena.cpp`

*   **Amaç:** PvP Arena sistemini yönetir.
*   **Lua Ön Eki:** `arena.`
*   **Örnek Fonksiyonlar:**
    *   `arena.start_duel`: Düello başlatır.
    *   `arena.add_map`: Arena haritası tanımlar.
    *   `arena.get_duel_list`: Aktif düelloları listeler.
    *   `arena.add_observer`: İzleyici ekler.
    *   `arena.is_in_arena`: Oyuncunun arenada olup olmadığını kontrol eder.

---

## `questlua_attr67add.cpp`

*   **Amaç:** 6. ve 7. Efsun ekleme sistemini yönetir (`__ATTR_6TH_7TH__` aktifse).
*   **Lua Ön Eki:** `attr67add.`
*   **Örnek Fonksiyonlar:**
    *   `attr67add.holding`: Ekleme penceresinde eşya olup olmadığını kontrol eder.
    *   `attr67add.collect`: Eşyayı pencereden alır.
    *   `attr67add.success`: Efsun eklemenin başarılı olup olmadığını kontrol eder ve efsunu uygular.
    *   `attr67add.item_vnum`: Penceredeki eşyanın VNUM'unu döndürür.

---

## `questlua_ba.cpp`

*   **Amaç:** Savaş Alanı (Battle Arena) etkinliklerini başlatır.
*   **Lua Ön Eki:** `ba.`
*   **Örnek Fonksiyonlar:**
    *   `ba.start`: Savaş Alanı etkinliğini başlatır.

---

## `questlua_building.cpp`

*   **Amaç:** Lonca arazileri ve binaları ile ilgili işlemleri yönetir.
*   **Lua Ön Eki:** `building.`
*   **Örnek Fonksiyonlar:**
    *   `building.get_land_id`: Koordinata göre arazi ID'sini alır.
    *   `building.get_land_info`: Arazi bilgilerini (sahip, fiyat vb.) alır.
    *   `building.set_land_owner`: Araziye sahip atar.
    *   `building.has_land`: Loncanın arazisi olup olmadığını kontrol eder.
    *   `building.reconstruct`: Lonca binasını yeniden yapılandırır.

---

## `questlua_danceevent.cpp`

*   **Amaç:** Özel bir dans etkinliği ile ilgili (muhtemelen oyuncuları haritadan çıkarma) işlem yapar.
*   **Lua Ön Eki:** `dance_event.`
*   **Örnek Fonksiyonlar:**
    *   `dance_event.gohome`: Belirli bir haritadaki oyuncuları evlerine gönderir.

---

## `questlua_dragonlair.cpp`

*   **Amaç:** Ejderha Odası (Beran-Setaou) raid'ini yönetir.
*   **Lua Ön Eki:** `DragonLair.`
*   **Örnek Fonksiyonlar:**
    *   `DragonLair.startRaid`: Belirtilen lonca için Ejderha Odası'nı başlatır.

---

## `questlua_dragonsoul.cpp`

*   **Amaç:** Ejderha Taşı Simyası (Dragon Soul) sistemini yönetir.
*   **Lua Ön Eki:** `ds.`
*   **Örnek Fonksiyonlar:**
    *   `ds.open_refine_window`: Simya arıtma penceresini açar.
    *   `ds.give_qualification`: Simya kullanma yetkisi verir.
    *   `ds.is_qualified`: Simya kullanma yetkisini kontrol eder.
    *   `ds.open_changeattr_window`: Bonus değiştirme penceresini açar (`__DS_CHANGE_ATTR__` aktifse).

---

## `questlua_dungeon.cpp`

*   **Amaç:** Zindan (Dungeon) mekaniklerini kapsamlı bir şekilde yönetir. Görev tabanlı zindanlar için kritiktir.
*   **Lua Ön Eki:** `d.`
*   **Örnek Fonksiyonlar:**
    *   `d.notice`, `d.setqf`, `d.setf`, `d.getf`, `d.get_map_index`: Duyuru yapma, oyuncu/zindan flag'leri ayarlama/okuma, harita index'ini alma.
    *   `d.regen_file`, `d.clear_regen`: Yaratık doğma dosyalarını yönetme.
    *   `d.check_eliminated`, `d.set_exit_all_at_eliminate`: Zindan tamamlama koşullarını kontrol etme ve sonuçlarını ayarlama.
    *   `d.new_jump`, `d.new_jump_all`, `d.new_jump_party`: Yeni zindan oluşturma ve oyuncu/parti ışınlama.
    *   `d.jump_all`, `d.warp_all`: Mevcut zindanda ışınlama.
    *   `d.unique_...` fonksiyonları: Zindandaki özel yaratıkları yönetme (HP, Def, durum kontrolü).
    *   `d.purge_...`, `d.kill_...`: Yaratıkları/alanları temizleme/öldürme.
    *   `d.spawn_...` fonksiyonları: Yaratık, grup, kapı, unique mob doğurma.
    *   `d.exit`, `d.exit_all`: Zindandan çıkış yapma/yaptırma.
    *   `d.count_monster`: Zindandaki yaratık sayısını alma.
    *   `d.select`: Belirli bir zindanı yönetmek için seçme.
    *   `d.set_warp_location`: Zindan çıkış noktasını ayarlama.
    *   (Ve daha birçok fonksiyon...)

---

## `questlua_forked.cpp`

*   **Amaç:** Üç Yol Savaşı (Sungzi/Pass haritaları) mekaniklerini yönetir.
*   **Lua Ön Eki:** `forked.`
*   **Örnek Fonksiyonlar:**
    *   `forked.getdeadcount`: Ölüm sayısını/canlanma hakkını alır.
    *   `forked.initforked`: Üç Yol Savaşı'nı başlatır.
    *   `forked.get_sungzi_start_pos`, `forked.get_pass_start_pos`: Başlangıç konumlarını alır.
    *   `forked.getsungzimapindex`, `forked.getpassmapindexbyempire`: Harita index'lerini alır.
    *   `forked.isforkedmapindex`: Haritanın savaş haritası olup olmadığını kontrol eder.
    *   `forked.warp_all_in_map`: Haritadaki herkesi başka yere ışınlar.
    *   `forked.is_registered_user`, `forked.register_user`: Oyuncu kaydını kontrol eder/yapar.
    *   `forked.purge_all_monsters`: Savaştaki tüm canavarları temizler.

---

## `questlua_game.cpp`

*   **Amaç:** Oyunun genel işleyişiyle ilgili çeşitli fonksiyonları (genellikle doğrudan bir karakter veya NPC ile ilişkili olmayan) Lua scriptlerinden erişilebilir kılar.
*   **Lua Ön Eki:** `game.`
*   **Örnek Fonksiyonlar:**
    *   `game.set_event_flag`, `game.get_event_flag`: Sunucu genelindeki olay bayraklarını (event flag) ayarlar veya okur.
    *   `game.request_make_guild`: Lonca kurma penceresini açma isteği gönderir.
    *   `game.get_safebox_level`, `game.set_safebox_level`: Depo seviyesini (boyutunu) alır veya ayarlar.
    *   `game.open_safebox`, `game.open_mall`: Depo veya nesne marketi açma şifre ekranını tetikler.
    *   `game.drop_item`, `game.drop_item_with_ownership`: Eşyayı yere atar (sahiplik süresiyle).
    *   `game.web_mall`: Oyun içi (web) nesne marketini açar.
    *   `game.open_mailbox`, `game.send_gm_mail`: Posta kutusunu yönetir (`__MAILBOX__` aktifse).
    *   `game.open_aura_*_window`: Aura (Kuşak) sistemi pencerelerini açar (`__AURA_COSTUME_SYSTEM__` aktifse).
    *   `game.open_changelook`: Görünüm değiştirme (Yansıtma) penceresini açar (`__CHANGE_LOOK_SYSTEM__` aktifse).

---

## `questlua_global.cpp`

*   **Amaç:** Belirli bir nesneye bağlı olmayan, genel amaçlı yardımcı fonksiyonları Lua scriptlerine sunar.
*   **Lua Ön Eki:** Yok (Global fonksiyonlar)
*   **Örnek Fonksiyonlar:**
    *   `get_locale`, `locale_quest`, `LC`: Yerelleştirilmiş metinleri alır.
    *   `number`: Rastgele sayı üretir.
    *   `say`, `chat`, `notice`, `big_notice`, `syschat`: Farklı türlerde mesaj gönderir.
    *   `server_timer`, `timer`, `loop_timer`: Zamanlayıcıları yönetir.
    *   `is_test_server`: Sunucunun test sunucusu olup olmadığını kontrol eder.
    *   `char_log`, `item_log`, `sys_log`, `sys_err`: Loglama yapar.
    *   `give_char_privilege`, `give_empire_privilege`, `give_guild_privilege`: Ayrıcalıkları (priv) yönetir.
    *   `item_name`, `mob_name`, `skill_name`: ID'ye göre isimleri alır.
    *   `get_time`, `get_global_time`: Sunucu saatini alır.
    *   `command`: Sunucu komutu çalıştırır.
    *   `find_pc`, `find_npc_by_vnum`: Oyuncu veya NPC bulur.
    *   `set_quest_state`, `get_quest_state`: Görev durumunu yönetir.
    *   `notice_all`, `warp_all_to_village`, `kill_all_in_map`: Sunucu veya harita geneli işlemler yapar.
    *   (Ve daha birçok genel yardımcı fonksiyon...)

---

## `questlua_guild.cpp`

*   **Amaç:** Lonca (Guild) ile ilgili işlemleri Lua'dan yönetir.
*   **Lua Ön Eki:** `guild.`
*   **Örnek Fonksiyonlar:**
    *   `guild.get_rank`, `guild.get_ladder_point`: Lonca sıralamasını/puanını alır.
    *   `guild.high_ranking_string`: Sıralama bilgisini metin olarak alır.
    *   `guild.name`, `guild.level`: Lonca adını/seviyesini alır.
    *   `guild.is_war`: Loncanın savaşta olup olmadığını kontrol eder.
    *   `guild.war_enter`: Lonca savaşına katılır.
    *   `guild.get_reserve_war_table`: Planlanmış savaşları listeler.
    *   `guild.change_master`: Lonca liderliğini devreder.

---

## `questlua_horse.cpp`

*   **Amaç:** Binek (At) sistemiyle ilgili fonksiyonları Lua görev scriptlerinden erişilebilir hale getirir.
*   **Lua Ön Eki:** `horse.`
*   **Örnek Fonksiyonlar:**
    *   `horse.is_riding`, `horse.is_summon`: Ata binip binmediğini veya atın çağrılmış olup olmadığını kontrol eder.
    *   `horse.ride`, `horse.unride`: Ata biner/iner.
    *   `horse.summon`, `horse.unsummon`: Atı çağırır/gönderir.
    *   `horse.get_level`, `horse.set_level`: At seviyesini alır/ayarlar.
    *   `horse.get_health`, `horse.get_stamina`: At canını/dayanıklılığını alır.
    *   `horse.revive`, `horse.feed`: Atı canlandırır/besler.
    *   `horse.set_name`, `horse.get_name`: Ata isim verir/alır.

---

## `questlua_item.cpp`

*   **Amaç:** Eşyalar (item) üzerinde işlem yapmak için fonksiyonlar sunar.
*   **Lua Ön Eki:** `item.`
*   **Örnek Fonksiyonlar:**
    *   `item.select`, `item.select_cell`: İşlem yapılacak eşyayı ID veya hücre numarası ile seçer.
    *   `item.get_vnum`, `item.get_id`, `item.get_cell`: Eşyanın VNUM, ID veya hücre numarasını alır.
    *   `item.remove`: Seçili eşyayı siler.
    *   `item.get_socket`, `item.set_socket`: Taş yuvalarını okur/ayarlar.
    *   `item.get_value`, `item.set_value`: Eşya bonuslarını okur/ayarlar.
    *   `item.get_count`: Eşya sayısını alır.
    *   `item.get_level`: Eşya basma seviyesini alır.
    *   `item.start_realtime_expire`: Süreli eşyaların sayacını başlatır.

---

## `questlua_marriage.cpp`

*   **Amaç:** Evlilik sistemiyle ilgili fonksiyonları Lua görev scriptlerine sunar.
*   **Lua Ön Eki:** `marriage.`
*   **Örnek Fonksiyonlar:**
    *   `marriage.engage_to`: Evlilik teklifi gönderir.
    *   `marriage.remove`: Evliliği bitirme isteği gönderir.
    *   `marriage.set_to_marriage`: Çiftin durumunu evli yapar.
    *   `marriage.find_married_vid`: Eşin VID'sini bulur.
    *   `marriage.join_wedding`: Düğüne katılır.
    *   `marriage.end_wedding`: Düğünü bitirir.
    *   `marriage.wedding_dark`, `marriage.wedding_snow`, `marriage.wedding_music`: Düğün haritası efektlerini ayarlar.
    *   `marriage.get_married_time`: Evlilik süresini alır.

---

## `questlua_meleylair.cpp`

*   **Amaç:** Meley'in İni (Guild Zindanı) sistemini yönetir (`__GUILD_DRAGONLAIR__` aktifse). Loncaların zindana kaydolması, girmesi, ödül alması gibi işlemleri içerir.
*   **Lua Ön Eki:** `MeleyLair.`
*   **Örnek Fonksiyonlar:**
    *   `MeleyLair.Register`: Loncanın zindana kaydını yapar.
    *   `MeleyLair.IsRegistered`: Loncanın kayıtlı olup olmadığını kontrol eder.
    *   `MeleyLair.Enter`: Lonca üyelerinin zindana girmesini sağlar.
    *   `MeleyLair.IsMeleyMap`: Bulunulan haritanın Meley haritası olup olmadığını kontrol eder.
    *   `MeleyLair.Leave`: Zindandan ayrılma isteği gönderir.
    *   `MeleyLair.CanGetReward`, `MeleyLair.Reward`: Ödül alma koşullarını kontrol eder ve ödülü verir.
    *   `MeleyLair.OpenRanking`: Meley İni sıralamasını açar.

---

## `questlua_mgmt.cpp`

*   **Amaç:** Sunucu yönetimi (management) ile ilgili bazı özel fonksiyonları, özellikle hükümdarlık (monarch) sistemiyle ilgili yönetimsel işlemleri Lua'ya açar. Genellikle GM (Game Master) görevlerinde kullanılır.
*   **Lua Ön Eki:** `mgmt.`
*   **Örnek Fonksiyonlar:**
    *   `mgmt.monarch_state`: Belirtilen imparatorluğun hükümdar bilgilerini (isim, PID, tarih, para) alır.
    *   `mgmt.monarch_change_lord`: Belirtilen imparatorluğun hükümdarını (PID ile) değiştirme isteği gönderir (Veritabanına).

---

## `questlua_monarch.cpp`

*   **Amaç:** Hükümdar (Monarch/Emperor) sistemiyle ilgili oyuncu komutlarını ve yeteneklerini yönetir. Hükümdarların özel yeteneklerini (ışınlanma, duyuru, yaratık çağırma vb.) kullanmasını sağlar.
*   **Lua Ön Eki:** `oh.` (Dosya adından farklı olarak `oh` ön ekini kullanır)
*   **Örnek Fonksiyonlar:**
    *   `oh.takemonarchmoney`: İmparatorluk hazinesinden para çeker (hükümdar tarafından).
    *   `oh.isguildmaster`: Oyuncunun lonca lideri olup olmadığını kontrol eder.
    *   `oh.ismonarch`: Oyuncunun hükümdar olup olmadığını kontrol eder.
    *   `oh.monarchbless`: Hükümdarın kutsamasını (alan iyileştirmesi) etkinleştirir.
    *   `oh.monarchpowerup`, `oh.monarchdefenseup`: Hükümdarın saldırı/savunma artışı sağlayan yeteneklerini etkinleştirir.
    *   `oh.spawnmob`, `oh.spawnguard`: Hükümdarın yaratık veya koruma çağırmasını sağlar.
    *   `oh.warp`: Hükümdarın başka bir oyuncunun yanına ışınlanmasını sağlar.
    *   `oh.transfer`, `oh.transfer2`: Hükümdarın başka bir oyuncuyu yanına çağırmasını (veya çağırma isteği göndermesini) sağlar.
    *   `oh.info`: İmparatorluk hükümdar bilgilerini gösterir.
    *   `oh.notice`: Hükümdarın imparatorluk geneline duyuru yapmasını sağlar.
    *   `oh.monarch_mob`: Hükümdarın özel yaratık çağırma komutunu tetikler.

---

## `questlua_npc.cpp`

*   **Amaç:** Görevi tetikleyen veya görev içinde etkileşimde bulunulan mevcut NPC (Non-Player Character - Oyuncu Olmayan Karakter) ile ilgili işlemleri yönetir.
*   **Lua Ön Eki:** `npc.`
*   **Örnek Fonksiyonlar:**
    *   `npc.get_race`, `npc.get_vnum0`: NPC'nin VNUM'unu alır.
    *   `npc.open_shop`: NPC'nin dükkanını açar.
    *   `npc.get_empire`: NPC'nin imparatorluğunu alır.
    *   `npc.is_pc`: NPC'nin aslında bir oyuncu olup olmadığını kontrol eder (bazı özel durumlarda olabilir).
    *   `npc.kill`, `npc.purge`: NPC'yi öldürür veya tamamen haritadan siler.
    *   `npc.is_near`, `npc.is_near_vid`: Oyuncunun NPC'ye veya başka bir karaktere (VID ile belirtilen) yakın olup olmadığını kontrol eder.
    *   `npc.lock`, `npc.unlock`: NPC'yi geçici olarak sadece mevcut oyuncuyla etkileşime girecek şekilde kilitler/kilidi açar.
    *   `npc.get_guild`: NPC'nin bir loncası varsa ID'sini alır (örneğin lonca korumaları).
    *   `npc.get_name`, `npc.get_level`, `npc.get_rank`, `npc.get_type`: NPC'nin adını, seviyesini, rütbesini (Normal, Boss vb.), türünü alır.
    *   `npc.is_metin`, `npc.is_boss`: NPC'nin Metin taşı veya Boss olup olmadığını kontrol eder.
    *   `npc.get_exp`: NPC'nin verdiği tecrübe puanını alır.
    *   (Noel Baba etkinliği için özel fonksiyonlar da mevcut: `npc.get_remain_skill_book_count` vb.)

---

## `questlua_oxevent.cpp`

*   **Amaç:** OX Yarışması etkinliğini yönetir. Etkinliği başlatma, kapatma, soru sorma, katılımı kontrol etme ve kazananları ödüllendirme gibi işlevleri içerir.
*   **Lua Ön Eki:** `oxevent.`
*   **Örnek Fonksiyonlar:**
    *   `oxevent.get_status`: Etkinliğin mevcut durumunu (Kapalı, Açık, Bitti vb.) alır.
    *   `oxevent.open`: Etkinliği başlatır ve `oxquiz.lua` dosyasını yükler.
    *   `oxevent.close`: Yeni katılımcı girişini kapatır.
    *   `oxevent.quiz`: Belirli bir soruyu başlatır (soru index'i ve doğru cevap - O veya X - belirtilir).
    *   `oxevent.get_attender`: Etkinlikteki katılımcı sayısını alır.
    *   `oxevent.end_event`, `oxevent.end_event_force`: Etkinliği bitirir (force ile anında).
    *   `oxevent.give_item`: Etkinlikteki tüm katılımcılara belirtilen eşyayı verir (genellikle kazananlara).

---

## `questlua_party.cpp`

*   **Amaç:** Oyuncunun içinde bulunduğu parti (grup) ile ilgili işlemleri ve bilgileri yönetir.
*   **Lua Ön Eki:** `party.`
*   **Örnek Fonksiyonlar:**
    *   `party.is_leader`: Oyuncunun partinin lideri olup olmadığını kontrol eder.
    *   `party.is_party`: Oyuncunun bir partide olup olmadığını kontrol eder.
    *   `party.get_leader_pid`: Parti liderinin PID'sini alır.
    *   `party.setf`, `party.getf`: Partiye özel bayrak (flag) ayarlar veya okur (parti dağılınca sıfırlanır).
    *   `party.setqf`: Mevcut görevin bayrağını partideki tüm çevrimiçi üyelere ayarlar.
    *   `party.chat`, `party.syschat`: Partiye normal veya sistem mesajı gönderir.
    *   `party.get_near_count`: Yakındaki parti üyesi sayısını alır.
    *   `party.show_cinematic`, `party.run_cinematic`: Parti üyelerine sinematik gösterir/çalıştırır.
    *   `party.get_max_level`: Partideki en yüksek seviyeli üyenin seviyesini alır.
    *   `party.is_in_dungeon`: Partinin bir zindanda olup olmadığını kontrol eder.
    *   `party.give_buff`: Partideki yakındaki üyelere efekt (buff) verir.
    *   `party.get_member_pids`: Partideki (aynı haritadaki) üyelerin PID'lerini bir liste olarak döndürür.

---

## `questlua_pc.cpp`

*   **Amaç:** Görevi çalıştıran oyuncu karakteri (PC - Player Character) ile ilgili çok geniş bir yelpazede fonksiyonları yönetir. Bu, muhtemelen en kapsamlı `questlua_*` dosyasıdır. Karakterin seviyesi, statüleri, envanteri, konumu, parası, tecrübesi, skilleri, görev bayrakları, sosyal durumu (evlilik, lonca), binekleri, dönüşümleri ve daha birçok özelliği ile ilgili işlemleri içerir.
*   **Lua Ön Eki:** `pc.`
*   **Örnek Fonksiyonlar (Kategorize Edilmiş):**
    *   **Bilgi Alma:** `pc.get_level`, `pc.get_exp`, `pc.get_gold`, `pc.get_alignment`, `pc.get_job`, `pc.get_race`, `pc.get_name`, `pc.get_vid`, `pc.get_x`, `pc.get_y`, `pc.get_map_index`, `pc.get_skill_level`, `pc.get_skill_point`, `pc.get_playtime`, `pc.get_hp`, `pc.get_sp`, `pc.get_wear` (giyilen eşya VNUM), `pc.get_part` (görünüm parçası), `pc.is_gm`, `pc.get_premium_remain_sec`.
    *   **Değişiklik Yapma:** `pc.set_level`, `pc.give_exp`, `pc.give_exp2`, `pc.change_gold` (`pc.change_money`), `pc.change_alignment`, `pc.change_sp`, `pc.reset_point` (statü sıfırlama), `pc.set_skill_level`, `pc.clear_skill`, `pc.clear_one_skill`, `pc.set_skillgroup`, `pc.change_sex`, `pc.change_empire`, `pc.change_name`, `pc.change_race`, `pc.reset_status`.
    *   **Eşya Yönetimi:** `pc.give_item`, `pc.give_item2` (ver veya düşür), `pc.remove_item`, `pc.count_item`, `pc.give_item_from_special_item_group`, `pc.enough_inventory`, `pc.get_empty_inventory_count`, `pc.equip_slot`, `pc.unequip_select`.
    *   **Konum & Işınlanma:** `pc.warp`, `pc.warp_local`, `pc.warp_exit`, `pc.save_exit_location`, `pc.set_warp_location`, `pc.teleport`.
    *   **Görev Bayrakları:** `pc.getqf`, `pc.setqf`, `pc.delqf` (mevcut görev için), `pc.getf`, `pc.setf` (başka görev için).
    *   **Sosyal:** `pc.has_guild`, `pc.get_guild`, `pc.is_guild_master`, `pc.destroy_guild`, `pc.remove_from_guild`, `pc.is_married`, `pc.is_engaged`.
    *   **Binek & Dönüşüm:** `pc.mount`, `pc.unmount`, `pc.is_mount`, `pc.polymorph`, `pc.remove_polymorph`, `pc.is_polymorphed`, `pc.give_polymorph_book`.
    *   **Diğer:** `pc.mining`, `pc.ore_refine`, `pc.aggregate_monster`, `pc.forget_my_attacker`, `pc.can_warp`.

---

## `questlua_pet.cpp`

*   **Amaç:** Evcil Hayvan (Pet) sistemini yönetir (`__PET_SYSTEM__` aktifse). Pet çağırma, gönderme, durum kontrolü gibi işlemleri içerir.
*   **Lua Ön Eki:** `pet.`
*   **Örnek Fonksiyonlar:**
    *   `pet.summon`: Belirtilen VNUM'lu peti, verilen isimle çağırır (eşyaya bağlı olarak).
    *   `pet.unsummon`: Belirtilen VNUM'lu peti geri gönderir.
    *   `pet.is_summon`: Belirtilen VNUM'lu petin çağrılmış olup olmadığını kontrol eder.
    *   `pet.count_summoned`: Oyuncunun çağırmış olduğu toplam pet sayısını döndürür.
    *   `pet.spawn_effect`: Çağrılmış pet üzerinde efekt gösterir.

---

## `questlua_quest.cpp`

*   **Amaç:** Görevin kendisiyle ilgili temel yönetim fonksiyonlarını içerir. Görevin durumunu (state) değiştirmek, oyuncuya gösterilecek görev arayüzü elemanlarını (başlık, sayaç, saat, ikon) ayarlamak ve görev akışını kontrol etmek (yield) gibi işlevleri sağlar.
*   **Lua Ön Eki:** `q.` (Dosya adından farklı olarak `q.` ön ekini kullanır)
*   **Örnek Fonksiyonlar:**
    *   `q.set_state` veya `q.setstate`: Görevin bir sonraki durumuna geçer.
    *   `q.yield`: Görevin çalışmasını geçici olarak durdurur ve belirli bir olay (zamanlayıcı, tıklama vb.) gerçekleşene kadar bekler.
    *   `q.set_title`: Görev takip penceresindeki başlığı ayarlar.
    *   `q.set_clock_name`, `q.set_clock_value`: Görev takip penceresindeki geri sayım sayacını ayarlar.
    *   `q.set_counter_name`, `q.set_counter_value`: Görev takip penceresindeki normal sayacı (örneğin, kesilecek yaratık sayısı) ayarlar.
    *   `q.set_icon`: Görev takip penceresinde gösterilecek ikonu belirler.
    *   `q.start`: Görevi başlatır (genellikle görevin başında kullanılır).
    *   `q.done`: Görevi tamamlandı olarak işaretler (görev penceresinden kaldırır).
    *   `q.getcurrentquestindex`: Mevcut görevin index numarasını alır.

---

## `questlua_shipdefense_mgr.cpp`

*   **Amaç:** Gemi Savunması (Hydra) etkinliğini yönetir (`__SHIP_DEFENSE__` aktifse). Etkinliği oluşturma, başlatma, oyuncuların katılması/ayrılması, durum kontrolü ve etkinlikle ilgili kuralları (parti gerekliliği, bilet, bekleme süresi vb.) yönetir.
*   **Lua Ön Eki:** `ship_defense_mgr.`
*   **Örnek Fonksiyonlar:**
    *   `ship_defense_mgr.create`: Yeni bir Gemi Savunması etkinliği oluşturur (genellikle parti lideri tarafından).
    *   `ship_defense_mgr.start`: Oluşturulan etkinliği başlatır.
    *   `ship_defense_mgr.join`: Oyuncunun mevcut etkinliğe katılmasını sağlar.
    *   `ship_defense_mgr.leave`: Oyuncunun etkinlikten ayrılmasını sağlar.
    *   `ship_defense_mgr.is_created`, `ship_defense_mgr.is_running`: Etkinliğin oluşturulup oluşturulmadığını veya çalışıp çalışmadığını kontrol eder.
    *   `ship_defense_mgr.need_party`, `ship_defense_mgr.need_ticket`, `ship_defense_mgr.require_cooldown`: Etkinliğin kurallarını (Parti gerekli mi? Bilet gerekli mi? Bekleme süresi var mı?) döndürür.
    *   `ship_defense_mgr.set_alliance_hp_pct`: Muhtemelen etkinlikteki NPC'lerin (Mast gibi) can yüzdesini ayarlar.
    *   `ship_defense_mgr.can_join`: Oyuncunun etkinliğe katılıp katılamayacağını kontrol eder.

---

## `questlua_speedserver.cpp`

*   **Amaç:** Hız Sunucusu (Speed Server) veya özel EXP etkinlik oranlarını yönetir. Haftanın belirli günlerinde veya özel tatil günlerinde farklı imparatorluklar için EXP oranlarını ayarlamaya ve sorgulamaya yarar.
*   **Lua Ön Eki:** `speedserver.`
*   **Örnek Fonksiyonlar:**
    *   `speedserver.get_wday`: Belirtilen imparatorluk ve gün için ayarlanmış EXP oranlarını (saat, dakika, yüzde) alır.
    *   `speedserver.set_wday`: Belirtilen imparatorluk ve gün için belirli bir saate kadar geçerli olacak EXP oranını ayarlar.
    *   `speedserver.init_wday`: Belirtilen imparatorluk ve gün için ayarları sıfırlar.
    *   `speedserver.get_holiday`: Belirtilen imparatorluk ve tarih için ayarlanmış özel tatil EXP oranlarını alır.
    *   `speedserver.set_holiday`: Belirtilen imparatorluk ve tarih için özel tatil EXP oranını ayarlar.
    *   `speedserver.init_holiday`: Belirtilen imparatorluk ve tarih için özel tatil ayarlarını sıfırlar.
    *   `speedserver.get_current_exp_priv`: Belirtilen imparatorluk için mevcut aktif EXP etkinliğini (oran, bitiş zamanı, süre) alır.

---

## `questlua_target.cpp`

*   **Amaç:** Quest (Görev) hedef işaretçisi sistemini yönetir. Oyuncunun mini haritasında veya ekranında görevin hedefini (belirli bir koordinat veya karakter) gösteren oku kontrol eder.
*   **Lua Ön Eki:** `target.`
*   **Örnek Fonksiyonlar:**
    *   `target.pos`: Belirtilen yerel koordinatları (x, y) mevcut görevin hedefi olarak ayarlar. Görev adı, argüman sayısı ve gösterilecek metin gibi ek parametreler alabilir.
    *   `target.vid`: Belirtilen VID'ye (Virtual ID) sahip karakteri mevcut görevin hedefi olarak ayarlar.
    *   `target.npc`, `target.pc`: `target.vid` ile aynı işlevi görür (eski veya alternatif isimler olabilir).
    *   `target.delete`: Mevcut görev için belirtilen isimdeki hedef işaretçisini kaldırır.
    *   `target.clear`: Mevcut görev için ayarlanmış tüm hedef işaretçilerini kaldırır.
    *   `target.id`: Belirtilen isimdeki hedefin VID'sini döndürür (eğer hedef bir karakterse).

---

## `questlua_templeochao.cpp`

*   **Amaç:** Ochao Tapınağı (muhtemelen Yıldırım Zindanı ile ilgili - `__MT_THUNDER_DUNGEON__`) sistemini yönetir. Bu dosya temel olarak sistemi hazırlama/başlatma (`initialize`) fonksiyonunu içerir.
*   **Lua Ön Eki:** `temple_ochao.`
*   **Örnek Fonksiyonlar:**
    *   `temple_ochao.initialize`: Ochao Tapınağı sistemini hazırlar/başlatır.

---

## `questlua.cpp`

*   **Amaç:** QuestLua sisteminin çekirdek uygulama dosyasıdır. Lua scriptlerinin C++ ile etkileşimini sağlayan temel mekanizmaları, yardımcı fonksiyonları ve görev durum makinesi yönetimini içerir.
*   **Lua Ön Eki:** Yok (Genellikle doğrudan Lua fonksiyonu sunmaz, altyapıyı sağlar).
*   **İçerik Özeti:**
    *   Lua scriptlerini çalıştırma ve işleme.
    *   Parti, karakter grupları üzerinde işlem yapan yardımcı yapılar (FPartyChat vb.).
    *   Görev durum makinesi yönetimi (RunState, GotoSelectState, GotoConfirmState vb.).
    *   Bazı global fonksiyonların (highscore, mob) implementasyonu.
    *   Lua ortamının başlatılması.

---

## `questlua.h`

*   **Amaç:** QuestLua sistemi için temel **tanımlamaları ve veri yapılarını** içeren C++ başlık (header) dosyasıdır.
*   **Lua Ön Eki:** Yok (C++ bildirim dosyasıdır).
*   **İçerik Özeti:**
    *   Görev olaylarının (event) enum tanımları (`QUEST_CLICK_EVENT`, `QUEST_KILL_EVENT` vb.).
    *   Görevlerin bekleme durumlarını (suspend state) tanımlayan enum (`SUSPEND_STATE_PAUSE`, `SUSPEND_STATE_SELECT` vb.).
    *   `AStateScriptType` (bir görev durumunun derlenmiş Lua kodunu tutar) ve `AArgScript` (argümanlı olay scriptlerini tanımlar) gibi yapıların tanımları.
    *   `QuestState` yapısının tanımı: Bir oyuncunun belirli bir görevdeki mevcut durumunu (çalışan Lua coroutine'i, argümanlar, bekleme durumu, görev arayüzü bilgileri vb.) tutar.
    *   Quest sistemiyle ilgili temel sabitleri ve enumları içerir.

---

## `questevent.cpp`

*   **Amaç:** Görev (Quest) sistemi için **zamanlayıcı olaylarının (timer events)** C++ uygulama (implementation) dosyasıdır. Lua'dan başlatılan `timer` ve `server_timer` olaylarının nasıl işlendiğini tanımlar.
*   **Lua Ön Eki:** Yok (C++ olay işleme kodudur).
*   **Sorumlulukları:**
    *   Belirli bir süre sonra tetiklenen olayları (hem oyuncu bazlı `quest_timer_event` hem de sunucu bazlı `quest_server_timer_event`) yönetir.
    *   Bu olaylar tetiklendiğinde `CQuestManager`'daki ilgili fonksiyonları (`Timer`, `ServerTimer`) çağırır.
    *   Tekrarlayan (looping) veya tek seferlik zamanlayıcıları yönetir.
    *   Zamanlayıcı olaylarını oluşturan (`quest_create_timer_event`, `quest_create_server_timer_event`) ve iptal eden (`CancelTimerEvent`) fonksiyonları içerir.

---

## `questevent.h`

*   **Amaç:** `questevent.cpp` için başlık (header) dosyasıdır. Görev zamanlayıcı olayları için kullanılan veri yapılarını (`quest_event_info`, `quest_server_event_info`) ve olay oluşturma/iptal etme fonksiyonlarının bildirimlerini içerir.
*   **Lua Ön Eki:** Yok (C++ bildirim dosyasıdır).
*   **İçerik Özeti:**
    *   `quest_event_info` (oyuncu bazlı zamanlayıcılar için bilgi tutar: oyuncu ID, NPC ID, isim, döngü süresi) yapısının tanımı.
    *   `quest_server_event_info` (sunucu bazlı zamanlayıcılar için bilgi tutar: NPC ID, argüman, isim, döngü süresi) yapısının tanımı.
    *   `quest_create_timer_event`, `quest_create_server_timer_event` ve `CancelTimerEvent` fonksiyonlarının bildirimleri.

---

# Çekirdek Quest Sistemi Dosyaları

Bu bölüm, doğrudan Lua fonksiyonları sunmak yerine Quest sisteminin C++ tarafındaki temel altyapısını ve yönetimini sağlayan ana dosyaları açıklar.

---

## `questmanager.cpp`

*   **Amaç:** Quest sisteminin merkezi yönetim sınıfı olan `CQuestManager`'ın ana uygulama (implementation) dosyasıdır.
*   **Sorumlulukları:**
    *   Lua ortamını başlatma ve Lua fonksiyonlarını kaydetme.
    *   Oyuncuların görev durumlarını (`PC` sınıfı) yönetme.
    *   Olayları (login, kill, click vb.) işleme ve ilgili NPC/scriptleri tetikleme.
    *   Lua scriptlerinin çalıştırılmasını ve durumlarını yönetme (`RunState`).
    *   Görev arayüzü komutlarını istemciye gönderme.
    *   Görev zamanlayıcılarını yönetme.
    *   Görev başlangıç koşullarını kontrol etme.
    *   Genel olay bayraklarını yönetme.
    *   Hata yönetimi ve loglama.

---

## `questmanager.h`

*   **Amaç:** `questmanager.cpp` için başlık (header) dosyasıdır. `CQuestManager`, `PC` ve `QuestState` gibi temel sınıfların ve yapıların tanımlarını içerir.
*   **Lua Ön Eki:** Yok (C++ bildirim dosyasıdır).
*   **İçerik Özeti:**
    *   `CQuestManager` (singleton) ve `PC` sınıflarının tanımı.
    *   `QuestState` yapısının tanımı.
    *   `CQuestManager` metotlarının bildirimleri.
    *   Gerekli enum ve diğer bildirimler.

---

## `questnpc.cpp`

*   **Amaç:** NPC'lerle ilişkili görev scriptlerini yöneten `NPC` sınıfını uygular.
*   **Sorumlulukları:**
    *   NPC VNUM'una göre ilgili görev scriptlerini diskten okuyup saklama (`LoadStateScript`).
    *   Belirli bir olay (`OnClick`, `OnKill` vb.) ve oyuncu durumu (`PC`) için çalıştırılacak doğru scripti belirleme (`HandleEvent`, `MatchingQuest`).
    *   Scriptin çalıştırılması için `CQuestManager::ExecuteQuestScript` fonksiyonunu çağırma.
    *   NPC konuşma seçeneklerini (`chat` eventi) yönetme.

---

## `questnpc.h`

*   **Amaç:** Bu dosya, `quest::NPC` sınıfının başlık (header) dosyasıdır. NPC'lerle ilişkili görev olaylarını ve scriptlerini yönetmek için gerekli yapıları ve metotları tanımlar.
*   **Lua Ön Eki:** Yok (C++ bildirim dosyasıdır).
*   **İçerik Özeti:**
    *   NPC'ye özel görevlerin nasıl saklandığını tanımlar (örneğin, `QuestMapType` ile görev index'inden durum scriptlerine eşleşen haritalar).
    *   NPC tarafından tetiklenen veya NPC ile ilgili çeşitli olayları (`OnClick`, `OnKill`, `OnTimer`, `OnLogin` vb.) işleyen metotları bildirir.
    *   Doğrudan Lua fonksiyonları sunmaz, `questnpc.cpp`'deki uygulamanın arayüzünü ve veri yapılarını tanımlar.

---

## `questpc.cpp`

*   **Amaç:** Bu dosya, `quest::PC` sınıfının C++ uygulama (implementation) dosyasıdır. `questpc.h`'de bildirilen fonksiyonların ve metotların gerçek kodunu içerir.
*   **Sorumlulukları:**
    *   Oyuncu karakterinin görev bayraklarını (flags) ayarlama, okuma ve silme (`SetFlag`, `GetFlag`, `DeleteFlag`).
    *   Görev zamanlayıcılarını yönetme (`AddTimer`, `RemoveTimer`, `ClearTimer`).
    *   Oyuncunun görev durumlarını (state) yönetme ve değişiklikleri uygulama (`SetQuestState`, `DoQuestStateChange`).
    *   Görev ödüllerini (`GiveItem`, `GiveExp`) biriktirme ve oyuncuya verme (`Reward`).
    *   Görev verilerini veritabanına kaydetme (`Save`).
    *   İstemciye görev bilgi paketlerini (`SendQuestInfoPacket`) gönderme.
    *   Bir görevin oyuncu için çalıştırılma sürecini (`EndRunning`, `CancelRunning`) yönetme.

---

## `questpc.h`

*   **Amaç:** Bu dosya, `quest::PC` sınıfının başlık (header) dosyasıdır. Bir oyuncu karakterinin (PC - Player Character) tüm görevle ilgili verilerini ve durumunu yönetmek için kullanılan temel sınıfı tanımlar.
*   **Lua Ön Eki:** Yok (C++ bildirim dosyasıdır).
*   **İçerik Özeti:**
    *   `PC` sınıfının tanımı ve metot bildirimleri.
    *   Oyuncunun görev bilgilerini (`QuestInfo`, `QuestState` kullanarak) saklama yapısı.
    *   Görev bayraklarını (`TFlagMap`) ve zamanlayıcılarını (`TTimerMap`) saklama yapıları.
    *   Ödül verilerini (`RewardData`) tanımlama.
    *   İstemciye gönderilecek görev bilgisi türlerini belirleyen enum'lar (`QUEST_SEND_ISBEGIN` vb.) ve metin uzunluk sabitleri (`QUEST_TITLE_NAME_LEN` vb.).
    *   Oyuncunun görevle ilgili genel durumunu (yüklendi mi, onay bekliyor mu vb.) yöneten değişkenler ve metotlar.
 
Cursor IDE ide bir çok alanda avantajlı fakat bunu en etkin kullanabilmen için elinde ki metin2 kaynak dosyaları için cmake kullanmanı öneriyorum. çünkü bütün bağımlılıkları görmesi gerekiyor doğru bir sonuç alması için
 
Cursor IDE kullanmayı denedin mi? Varolan projeni Cursor'a taşıyıp yapay zekayı doğrudan kendi projene entegre edebiliyorsun
Evet zaten aslında ilk amacım cursor için bu markdown dosyalarını hazırlamak. Project rules olarak entegrasyon sağlamak uzun zamandır sadece Metin2 değil çoğu projem için kullanıyorum.

Cursor IDE ide bir çok alanda avantajlı fakat bunu en etkin kullanabilmen için elinde ki metin2 kaynak dosyaları için cmake kullanmanı öneriyorum. çünkü bütün bağımlılıkları görmesi gerekiyor doğru bir sonuç alması için
Tavsiyeniz adına çok teşekkür ederim. Daha net ve daha sağlıklı bir öğrenme süreci için kesinlikle araştırıcam
 
Evet zaten aslında ilk amacım cursor için bu markdown dosyalarını hazırlamak. Project rules olarak entegrasyon sağlamak uzun zamandır sadece Metin2 değil çoğu projem için kullanıyorum.


Tavsiyeniz adına çok teşekkür ederim. Daha net ve daha sağlıklı bir öğrenme süreci için kesinlikle araştırıcam
Rica ederim. Ayrıca kendi localinde yapay zeka çalıştırmak gibi bir planın varsa LM Studio'yuda kullanabilirsin
 
lm sutidio ile hangi yapay zeka daha etkili olur metin2 projesi için
Metin2 için şu tam olur diyemem sonuçta metin2 çok büyük bir proje ve ve bütün bir projeye hakim olması zor çünkü hangi fonksiyonun ne işe yaradığını bilemez. Ama python c++ konusunda DeepSeek gerçekten başarılı kullanmak istersen. Ama özellikle metin2 üzerine kullanmak istiyorsan proje yönetimini Msbuildden arındırıp CMake kullanmalısın genel olarak hemen hemen bir çok ide tarafından desteklenir. Proje yönetimine ide hakim olursa kullandığın yapay zekanın kodları anlaması biraz daha kolay olur. Ayrıca Lm Studio biraz fazla yer kaplıyor localine model indirdiğin için cursor kullanacaksan openrouter.aiden GLM 4 32B için api alabilirsin c++ konusunda gayet başarılı
 
Metin2 için şu tam olur diyemem sonuçta metin2 çok büyük bir proje ve ve bütün bir projeye hakim olması zor çünkü hangi fonksiyonun ne işe yaradığını bilemez. Ama python c++ konusunda DeepSeek gerçekten başarılı kullanmak istersen. Ama özellikle metin2 üzerine kullanmak istiyorsan proje yönetimini Msbuildden arındırıp CMake kullanmalısın genel olarak hemen hemen bir çok ide tarafından desteklenir. Proje yönetimine ide hakim olursa kullandığın yapay zekanın kodları anlaması biraz daha kolay olur. Ayrıca Lm Studio biraz fazla yer kaplıyor localine model indirdiğin için cursor kullanacaksan openrouter.aiden GLM 4 32B için api alabilirsin c++ konusunda gayet başarılı
hocam peki msbuildden arındırma işlemini gmake olarak nasıl yapıp projeyi cursorsa nasıl tanıtabilirim bahsettiğin api yi alabilriim.
bana detaylı yardımcı olabilir misin müsait oldugunda.
 
hocam peki msbuildden arındırma işlemini gmake olarak nasıl yapıp projeyi cursorsa nasıl tanıtabilirim bahsettiğin api yi alabilriim.
bana detaylı yardımcı olabilir misin müsait oldugunda.
GnuMakefile windows ortamı hiç hazırlamadım. Ama en çok kaynak bulabileceğin ve desteği çok bulabileceğin en iyi ortam CMake olur
 
cmake olarak nasıl yazacaktım msbuildleri nasıl cmake ye çevireceğim cursora tanıtacagım.
Metin2 Projelerinde CMake bu konuyu inceleyebilirsin. Ayrıca cursora tanıtma diye bir durum yok CMake taşıdığın projeyi Cursor ile açınca gerekli ortamlar kurunca tanıyacaktır. Ayrıca Cursor extension olarak CMake'i kurmayı unutma
 
Geri
Üst