İçeriğe geç
Türkiye'nin SRO tanıtım & topluluk platformu

Knight Online PK Botlarına Hibrit Hedefleme (Mob & Düşman PK / Farm) Ekleme

Cevaplar0
Görüntüleme1
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
145
Tepkime puanı
24
Puanları
0
Mevcut Bakiye
3975 ₺
[KAYNAK KOD & GELİŞTİRME] Knight Online PK Botlarına Hibrit Hedefleme (Mob & Düşman PK / Farm) Ekleme
BotMoveAttack.cpp Üzerinden PK Botlarının Hem Karşı Irka Hem de Belirlenen Canavarlara (Monster) Saldırmasını Sağlama​



Merhaba değerli forum sakinleri,

Knight Online sunucularında (özellikle v19xx, v2xxx ve üzeri sourceler kullanan projelerde) yapay zeka destekli sanal oyuncuların (PK Bot) yalnızca karşı ırka saldırmak yerine, bulundukları bölgedeki **belirli canavarlara (Monster / Farm slotları) ve Unique bosslara da vurması** sunucu canlılığını ve farm ortamının gerçekçiliğini ciddi oranda artırır.

Orijinal/ham paylaşılan kodlarda `isDead()` ve `isAttackable()` kontrolleri kaldırıldığı için botlar **ölü hedeflere takılı kalabilir**, **dost NPC'lere (Guard Tower vb.) saldırabilir** veya yorum satırına alınan filtreler nedeniyle tüm yaratıkları ayrım gözetmeksizin listeye alabilir.

Aşağıda hem canlılık kontrolleri eksiksiz eklenmiş, hem de belirlenen canavar proto kimliklerine (`ProtoID / sSid`) göre çalışan optimize edilmiş **C++ kaynak kodu** bloğunu bulabilirsiniz.

Teknik Bilgilendirme & Hedefleme Mantığı' Alıntı:
DİKKAT:
  • Canlılık & Hedeflenebilirlik Kontrolü: Bir hedefin listeye eklenebilmesi için mutlaka !pTarget->isDead() ve pTarget->isAttackable() şartlarını sağlaması gerekir.
  • ProtoID / sSid Filtresi: Botun Moradon veya CZ'deki satıcı NPC'lerine ya da Guard kulelerine vurmaması için pTarget->GetProtoID() kontrolü üzerinden sadece tanımlanan canavar kimlikleri hedeflenir.
  • Irk Kontrolü (GetNation()): Karşı ırk oyuncu veya bot tespit edildiğinde hedefe otomatik kilitlenilir.



1. ADIM: BotMoveAttack.cpp Düzenlemesi

Kaynak kodunuzda **BotMoveAttack.cpp** dosyasını açın. GetUnitListFromSurroundingRegions çağrısının bulunduğu hedef toplama döngüsünü aşağıdaki optimize blok ile güncelleyin:





Neden Bu Optimize Versiyon Kullanılmalı?

  1. Ölü Hedefe Kilitlenme Bugu Çözüldü: !pTarget->isDead() kontrolü öne çekilerek botların ölmüş yaratıklara veya oyunculara vurmaya çalışıp donması (stuck) engellenir.
  2. Dost NPC Koruması: GetProtoID() filtrelemesi sayesinde botların dost NPC'lere, towner kulelerine veya eskort görev NPC'lerine yönelmesi engellenir.
  3. Performans: static const std::set kullanımı sayesinde her döngü adımında küme belleği yeniden oluşturulmaz; yüksek bot sayısında bile GameServer CPU yükü oluşturmaz.



Nasıl Uygulanır & Test Edilir?

  1. Visual Studio üzerinden projenizi açıp **BotMoveAttack.cpp** içerisindeki bloğu yukarıdaki kodla değiştirin.
  2. s_targetMonsterIDs kümesine sunucunuzdaki hedef canavarların (Örn: Atross, Riote, Apostle, Deruvish vb.) ID'lerini ekleyin.
  3. GameServer projenizi **Build (Derleme)** edin ve sunucuyu başlatın.
  4. Botların hem karşı ırka saldırdığını hem de slotta yaratık varken canavarları temizleyerek doğal bir farm akışı oluşturduğunu gözlemleyin.

Sorularınızı ve bot yapay zekasıyla ilgili geliştirmek istediğiniz özellikleri konu altından iletebilirsiniz. Herkese keyifli kodlamalar!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 29,174 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,373
Mesajlar 4,351
Kullanıcılar 1,668
Son üye Senbonzakura
Geri
Üst