Reklam
void AddBotPkStart();
// Gameserverdlg.cpp kısmını açıyoruz ve botlarlar ilgili bir satır bulup altına bu kodu yapıştırın
void CGameServerDlg::AddBotPkStart()
printf("INFO: AddBotPkStart fonksiyonu baslatiliyor...\n");
{
// --- GENEL AYARLAR ---
int Minute = 1440; // Botların ne kadar süre kalacağı (24 saat)
uint8 minlevel = 80; // Minimum Level (ayarlanabilir)
int sCount = 10; // Her ırk/sınıf için atılacak bot sayısı
// Sınıf ve Ulus ID'leri
uint8 classWarrior = 1;
uint8 classRogue = 2;
uint8 classMage = 3;
uint8 classPriest = 4;
uint8 nationKarus = 1;
uint8 nationHuman = 2;
// Ronark Land (Zone 71) ayarları (Koordinatları kendi haritanıza göre ayarlayın!)
uint8 zoneID = 71;
// Karus Base civarı koordinatları (Örn: X=350, Y=350 civarı)
float KarusXBase = 350.0f;
float KarusYBase = 350.0f;
// Human Base civarı koordinatları (Örn: X=650, Y=650 civarı)
float HumanXBase = 650.0f;
float HumanYBase = 650.0f;
float Z = 0.0f; // Z koordinatı genellikle 0.0f veya harita zeminine uygun bir değer olmalıdır.
//////////////////////////////////////////////////////////////////////////////////////////////////////
// KARUS BOTLARI (Her sınıftan sCount kadar)
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Karus Warrior (Sınıf 1)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f; // Her bot arasında 1.5f mesafe
g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + Offset, KarusYBase, Z,
minlevel, nationKarus, classWarrior, nullptr, true);
}
// Karus Rogue (Sınıf 2)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
// Botları farklı bir alana veya Warrior'lardan kaydırılmış bir konuma atıyoruz
g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase, KarusYBase + Offset, Z,
minlevel, nationKarus, classRogue, nullptr, true);
}
// Karus Mage (Sınıf 3)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f + Offset, KarusYBase, Z,
minlevel, nationKarus, classMage, nullptr, true);
}
// Karus Priest (Sınıf 4)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f, KarusYBase + Offset, Z,
minlevel, nationKarus, classPriest, nullptr, true);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// HUMAN BOTLARI (Her sınıftan sCount kadar)
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Human Warrior (Sınıf 1)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase + Offset, HumanYBase, Z,
minlevel, nationHuman, classWarrior, nullptr, true);
}
// Human Rogue (Sınıf 2)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase, HumanYBase + Offset, Z,
minlevel, nationHuman, classRogue, nullptr, true);
}
// Human Mage (Sınıf 3)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f + Offset, HumanYBase, Z,
minlevel, nationHuman, classMage, nullptr, true);
}
// Human Priest (Sınıf 4)
for (int i = 0; i < sCount; i++)
{
float Offset = i * 1.5f;
g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f, HumanYBase + Offset, Z,
minlevel, nationHuman, classPriest, nullptr, true);
}
}
printf("INFO: AddBotPkStart fonksiyonu tamamlandi. Botlarin atilmasi denendi.\n");
}
g_pMain->AddBotPkStart();
Lazım olacak, teşekkürlerMerhaba Cümleten Kolay Gelsin.
Gameserverdlg.h kısmına
ekliyoruz.Kod:void AddBotPkStart();
Kod:// Gameserverdlg.cpp kısmını açıyoruz ve botlarlar ilgili bir satır bulup altına bu kodu yapıştırın void CGameServerDlg::AddBotPkStart() printf("INFO: AddBotPkStart fonksiyonu baslatiliyor...\n"); { // --- GENEL AYARLAR --- int Minute = 1440; // Botların ne kadar süre kalacağı (24 saat) uint8 minlevel = 80; // Minimum Level (ayarlanabilir) int sCount = 10; // Her ırk/sınıf için atılacak bot sayısı // Sınıf ve Ulus ID'leri uint8 classWarrior = 1; uint8 classRogue = 2; uint8 classMage = 3; uint8 classPriest = 4; uint8 nationKarus = 1; uint8 nationHuman = 2; // Ronark Land (Zone 71) ayarları (Koordinatları kendi haritanıza göre ayarlayın!) uint8 zoneID = 71; // Karus Base civarı koordinatları (Örn: X=350, Y=350 civarı) float KarusXBase = 350.0f; float KarusYBase = 350.0f; // Human Base civarı koordinatları (Örn: X=650, Y=650 civarı) float HumanXBase = 650.0f; float HumanYBase = 650.0f; float Z = 0.0f; // Z koordinatı genellikle 0.0f veya harita zeminine uygun bir değer olmalıdır. ////////////////////////////////////////////////////////////////////////////////////////////////////// // KARUS BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Karus Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Her bot arasında 1.5f mesafe g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + Offset, KarusYBase, Z, minlevel, nationKarus, classWarrior, nullptr, true); } // Karus Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Botları farklı bir alana veya Warrior'lardan kaydırılmış bir konuma atıyoruz g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase, KarusYBase + Offset, Z, minlevel, nationKarus, classRogue, nullptr, true); } // Karus Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f + Offset, KarusYBase, Z, minlevel, nationKarus, classMage, nullptr, true); } // Karus Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f, KarusYBase + Offset, Z, minlevel, nationKarus, classPriest, nullptr, true); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // HUMAN BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Human Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase + Offset, HumanYBase, Z, minlevel, nationHuman, classWarrior, nullptr, true); } // Human Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase, HumanYBase + Offset, Z, minlevel, nationHuman, classRogue, nullptr, true); } // Human Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f + Offset, HumanYBase, Z, minlevel, nationHuman, classMage, nullptr, true); } // Human Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f, HumanYBase + Offset, Z, minlevel, nationHuman, classPriest, nullptr, true); } } printf("INFO: AddBotPkStart fonksiyonu tamamlandi. Botlarin atilmasi denendi.\n"); }
GameServer Main kısmını bulup
if (g_pMain->Startup()) { // ... g_pMain->ResetBattleZone(BATTLEZONE_NONE);
bu kodun altına
Kod:g_pMain->AddBotPkStart();
kodunu ekliyoruz ve derleme işlemine geçiyoruz
güle güle kullanın
db'de bir ekleme yapanıza gerek yok files açıldığında otomatik atıcaktır oyuna girdiğinizde ortalama 80 adet bot cz'de aktif olacakbunun için db ye bişey eklemek gerekiyormu ?
// KAÇIŞ REFLEKSİ BAŞLANGICI
const float CRITICAL_HP_PERCENTAGE = 30.0f;
if (GetHPRatio() * 100.0f < CRITICAL_HP_PERCENTAGE)
{
// Can kritik seviyenin altında, kaçış mantığı devreye girer.
// Saldırmayı bırakmadan önce hedefi alalım.
Unit* pLastTarget = g_pMain->GetUnitPtr(m_sTargetID, GetZoneID());
m_sTargetID = -1; // Saldırmayı bırak
__Vector3 vBot(GetX(), GetY(), GetZ());
__Vector3 vEscapeDirection;
if (pLastTarget != nullptr)
{
__Vector3 vTarget(pLastTarget->GetX(), pLastTarget->GetY(), pLastTarget->GetZ());
// Saldıran düşmandan uzaklaşma yönü
vEscapeDirection = vBot - vTarget;
}
else
{
// Hedef yoksa rastgele bir yöne kaç
vEscapeDirection.Set((float)(myrand(0, 2000) - 1000.0f), 0.0f, (float)(myrand(0, 2000) - 1000.0f));
}
vEscapeDirection.Normalize();
// Hız ayarı: Normal hızının %10 fazlası
float fEscapeSpeed = m_sSpeed * 1.1f;
const float MIN_ESCAPE_SPEED = 10.0f;
if (fEscapeSpeed < MIN_ESCAPE_SPEED) {
fEscapeSpeed = MIN_ESCAPE_SPEED;
}
// *** HAREKET MANTIK DEĞİŞİKLİĞİ BAŞLANGICI ***
// Kaçış Mesafesi: Botun yürümesini istediğimiz mesafe (Örn: 10 birim ileri)
// 10.0f yerine daha uzun bir mesafe deneyelim, örneğin 50 birim.
// Bu değer, botun tek bir döngüde ne kadar uzağa yürümeye çalışacağını belirler.
const float ESCAPE_DISTANCE = 50.0f;
// Yeni hedef koordinatlarını hesapla
__Vector3 vMove = vEscapeDirection * ESCAPE_DISTANCE;
__Vector3 vNewPosition = vBot + vMove;
// Botu anında ışınlamak yerine, yeni noktaya doğru YÜRÜT!
// WalkCordinat(float x, float y, float z, uint16 Delay = 0, bool isAttack = false);
// Delay=0 ve isAttack=false kullanıyoruz. Bot koşarak uzaklaşsın.
WalkCordinat(vNewPosition.x, vNewPosition.y, vNewPosition.z, 0, false);
// Bu hareketin tamamlanması için gereken süreyi tahmin edelim.
// Zaman = Mesafe / Hız. Basitçe sabit bir süre belirleyebiliriz.
const uint16 ESCAPE_DURATION_MS = 1500; // 1.5 saniye boyunca kaçmasını bekle
m_sMoveRegionAttackTime = ULONGLONG(UNIXTIME2 + ESCAPE_DURATION_MS);
// *** HAREKET MANTIK DEĞİŞİKLİĞİ SONU ***
return;
}
// KAÇIŞ REFLEKSİ SONU
birde bunu Auto command kısmına koymayı yapsan tadından yenmezMerhaba Cümleten Kolay Gelsin.
Gameserverdlg.h kısmına
ekliyoruz.Kod:void AddBotPkStart();
Kod:// Gameserverdlg.cpp kısmını açıyoruz ve botlarlar ilgili bir satır bulup altına bu kodu yapıştırın void CGameServerDlg::AddBotPkStart() printf("INFO: AddBotPkStart fonksiyonu baslatiliyor...\n"); { // --- GENEL AYARLAR --- int Minute = 1440; // Botların ne kadar süre kalacağı (24 saat) uint8 minlevel = 80; // Minimum Level (ayarlanabilir) int sCount = 10; // Her ırk/sınıf için atılacak bot sayısı // Sınıf ve Ulus ID'leri uint8 classWarrior = 1; uint8 classRogue = 2; uint8 classMage = 3; uint8 classPriest = 4; uint8 nationKarus = 1; uint8 nationHuman = 2; // Ronark Land (Zone 71) ayarları (Koordinatları kendi haritanıza göre ayarlayın!) uint8 zoneID = 71; // Karus Base civarı koordinatları (Örn: X=350, Y=350 civarı) float KarusXBase = 350.0f; float KarusYBase = 350.0f; // Human Base civarı koordinatları (Örn: X=650, Y=650 civarı) float HumanXBase = 650.0f; float HumanYBase = 650.0f; float Z = 0.0f; // Z koordinatı genellikle 0.0f veya harita zeminine uygun bir değer olmalıdır. ////////////////////////////////////////////////////////////////////////////////////////////////////// // KARUS BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Karus Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Her bot arasında 1.5f mesafe g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + Offset, KarusYBase, Z, minlevel, nationKarus, classWarrior, nullptr, true); } // Karus Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Botları farklı bir alana veya Warrior'lardan kaydırılmış bir konuma atıyoruz g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase, KarusYBase + Offset, Z, minlevel, nationKarus, classRogue, nullptr, true); } // Karus Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f + Offset, KarusYBase, Z, minlevel, nationKarus, classMage, nullptr, true); } // Karus Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f, KarusYBase + Offset, Z, minlevel, nationKarus, classPriest, nullptr, true); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // HUMAN BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Human Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase + Offset, HumanYBase, Z, minlevel, nationHuman, classWarrior, nullptr, true); } // Human Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase, HumanYBase + Offset, Z, minlevel, nationHuman, classRogue, nullptr, true); } // Human Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f + Offset, HumanYBase, Z, minlevel, nationHuman, classMage, nullptr, true); } // Human Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f, HumanYBase + Offset, Z, minlevel, nationHuman, classPriest, nullptr, true); } } printf("INFO: AddBotPkStart fonksiyonu tamamlandi. Botlarin atilmasi denendi.\n"); }
GameServer Main kısmını bulup
if (g_pMain->Startup()) { // ... g_pMain->ResetBattleZone(BATTLEZONE_NONE);
bu kodun altına
Kod:g_pMain->AddBotPkStart();
kodunu ekliyoruz ve derleme işlemine geçiyoruz
güle güle kullanın
source kodları arasında +pkbotspawn olarak çağırılan komutu bulup / (slash) /pkbotspawn haline getirebilirsen oto command kısmına ekleye bilirsin diye düşünüyorum yarın bi bakalımbirde bunu Auto command kısmına koymayı yapsan tadından yenmez![]()
Merhabalar paylaşım teşekkürler, ancak kodları uygularken sorun yaşıyorum görselleri ekledim konu hakkında desteğini rica ederim.Merhaba Cümleten Kolay Gelsin.
Gameserverdlg.h kısmına
ekliyoruz.Kod:void AddBotPkStart();
Kod:// Gameserverdlg.cpp kısmını açıyoruz ve botlarlar ilgili bir satır bulup altına bu kodu yapıştırın void CGameServerDlg::AddBotPkStart() printf("INFO: AddBotPkStart fonksiyonu baslatiliyor...\n"); { // --- GENEL AYARLAR --- int Minute = 1440; // Botların ne kadar süre kalacağı (24 saat) uint8 minlevel = 80; // Minimum Level (ayarlanabilir) int sCount = 10; // Her ırk/sınıf için atılacak bot sayısı // Sınıf ve Ulus ID'leri uint8 classWarrior = 1; uint8 classRogue = 2; uint8 classMage = 3; uint8 classPriest = 4; uint8 nationKarus = 1; uint8 nationHuman = 2; // Ronark Land (Zone 71) ayarları (Koordinatları kendi haritanıza göre ayarlayın!) uint8 zoneID = 71; // Karus Base civarı koordinatları (Örn: X=350, Y=350 civarı) float KarusXBase = 350.0f; float KarusYBase = 350.0f; // Human Base civarı koordinatları (Örn: X=650, Y=650 civarı) float HumanXBase = 650.0f; float HumanYBase = 650.0f; float Z = 0.0f; // Z koordinatı genellikle 0.0f veya harita zeminine uygun bir değer olmalıdır. ////////////////////////////////////////////////////////////////////////////////////////////////////// // KARUS BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Karus Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Her bot arasında 1.5f mesafe g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + Offset, KarusYBase, Z, minlevel, nationKarus, classWarrior, nullptr, true); } // Karus Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; // Botları farklı bir alana veya Warrior'lardan kaydırılmış bir konuma atıyoruz g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase, KarusYBase + Offset, Z, minlevel, nationKarus, classRogue, nullptr, true); } // Karus Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f + Offset, KarusYBase, Z, minlevel, nationKarus, classMage, nullptr, true); } // Karus Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, KarusXBase + 50.0f, KarusYBase + Offset, Z, minlevel, nationKarus, classPriest, nullptr, true); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // HUMAN BOTLARI (Her sınıftan sCount kadar) ////////////////////////////////////////////////////////////////////////////////////////////////////// // Human Warrior (Sınıf 1) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase + Offset, HumanYBase, Z, minlevel, nationHuman, classWarrior, nullptr, true); } // Human Rogue (Sınıf 2) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase, HumanYBase + Offset, Z, minlevel, nationHuman, classRogue, nullptr, true); } // Human Mage (Sınıf 3) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f + Offset, HumanYBase, Z, minlevel, nationHuman, classMage, nullptr, true); } // Human Priest (Sınıf 4) for (int i = 0; i < sCount; i++) { float Offset = i * 1.5f; g_pMain->SpawnEventBotPk(Minute, zoneID, HumanXBase - 50.0f, HumanYBase + Offset, Z, minlevel, nationHuman, classPriest, nullptr, true); } } printf("INFO: AddBotPkStart fonksiyonu tamamlandi. Botlarin atilmasi denendi.\n"); }
GameServer Main kısmını bulup
if (g_pMain->Startup()) { // ... g_pMain->ResetBattleZone(BATTLEZONE_NONE);
bu kodun altına
Kod:g_pMain->AddBotPkStart();
kodunu ekliyoruz ve derleme işlemine geçiyoruz
güle güle kullanın
gameserverdlg.hMerhabalar paylaşım teşekkürler, ancak kodları uygularken sorun yaşıyorum görselleri ekledim konu hakkında desteğini rica ederim.
tekrar denedim fakat aynı şekilde görselleri ekledim kontrol eder misingameserverdlg.h
Ekli dosyayı görüntüle 10776
gameserverdlg.cppEkli dosyayı görüntüle 10777
gameserver main
Ekli dosyayı görüntüle 10778
Hocam Gameserverdlg.h kısmındaki void AddBotPkStart(); satırını diğer tanımlamaların olduğu kısma yapın birde öyle deneyin satır numaralarını paylaştım şimdi
printf parantezi yanlış yerde ikinci resimdetekrar denedim fakat aynı şekilde görselleri ekledim kontrol eder misin
Tanımlamalar da da hata veriyor kullandığım filseler HSACS bundan kaynaklı olabilir mi ?printf parantezi yanlış yerde ikinci resimde
Ekli dosyayı görüntüle 10782
parantez hatası alıyor gibisin tekrar kontrol et
Teşekkür ederim desteğin için eline sağlıkUzak bağlantı ile sorun çözülmüştür. kolay gelsin
Bu süreçte @Slepperx destek oldu sorun çözülmüştür paylaştığın bilgi için ayrıca teşekkür ederim sanada.Ziyaretçiler için gizlenmiş link,görmek için Giriş yap veya üye ol.
Burda src içinde cr acinca oto pkbot atıyor bu src den yardım alabilirsin