Reklam
teşekkür ederimanydesk verebilirim ben
öncelikle SQL tarafında Bot Merchant Data tablosunu doldurmanız lazım. Sonra sizin sourse kodlarınızda botmerchant nasıl çağrılıyorsa örn: +botmerchantspawn 651 şeklinde 651 Mevcut düzenlediğiniz Tablodaki sıralamada index koduna denk geliyorçok tşk ederim işe yaradı peki maradonda pazar için nasıl bir kod lazım ?
Kodları oyun içinde gm ile +help yazarak öğrenebilirsinçok tşk ederim işe yaradı peki maradonda pazar için nasıl bir kod lazım ?
// Bot Kaçış Manervarsı için
INLINE float GetHPRatio()
{
if (GetMaxHealth() <= 0)
return 0.0f; // Maks HP 0 veya negatifse 0.0f döndür
return (float)GetHealth() / (float)GetMaxHealth();
} //Bot Manevrası Kaçış için
void CBot::RegionFindAttackProcess()
{
if ((m_sMoveRegionAttackTime - UNIXTIME2) < 1 * SECOND)
return;
// KAÇIŞ REFLEKSİ BAŞLANGICI
const float CRITICAL_HP_PERCENTAGE = 50.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 = 200.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
箭Botmoveattack.cpp
void CBot::RegionFindAttackProcess()
{
如果 (m_sMoveRegionAttackTime > UNIXTIME2)
返回;
我们将其添加到此行下方
隐藏文本:不能引用。***
OJBotmoveattack.cpp
无效CBot::RegionFindAttackProcess()
{
如果 (m_sMoveRegionAttackTime > UNIXTIME2)
返回;
我们把它加入到这条线下方
隐藏文本:无法引用。***
cansnBotmoveattack.cpp içerisinde
void CBot::RegionFindAttackProcess()
{
if (m_sMoveRegionAttackTime > UNIXTIME2)
return;
bu satırın hemen altına ekliyoruz
*** Gizli metin: alıntı yapılamaz. ***
Botmoveattack.cpp içerisinde
void CBot::RegionFindAttackProcess()
{
if (m_sMoveRegionAttackTime > UNIXTIME2)
return;
bu satırın hemen altına ekliyoruz
*** Gizli metin: alıntı yapılamaz. ***
Emeğine sağlıkBotmoveattack.cpp içerisinde
void CBot::RegionFindAttackProcess()
{
if (m_sMoveRegionAttackTime > UNIXTIME2)
return;
bu satırın hemen altına ekliyoruz
*** Gizli metin: alıntı yapılamaz. ***
tytyBotmoveattack.cpp içerisinde
void CBot::RegionFindAttackProcess()
{
if (m_sMoveRegionAttackTime > UNIXTIME2)
return;
bu satırın hemen altına ekliyoruz
*** Gizli metin: alıntı yapılamaz. ***