Reklam
// g_pMain->GetUnitListFromSurroundingRegions(this, &unitList);
//
// foreach(itr, unitList)
// {
// Unit* pTarget = g_pMain->GetUnitPtr(*itr, GetZoneID());
//
// if (pTarget == nullptr)
// continue;
//
// if (this != pTarget
// && !pTarget->isDead()
// && !pTarget->isBlinking()
// && pTarget->isAttackable())
// casted_member.push_back(pTarget);
// }
if (pTarget == nullptr)
continue;
if (this != pTarget
&& !pTarget->isDead()
&& !pTarget->isBlinking()
&& pTarget->isAttackable())
casted_member.push_back(pTarget);
}
foreach(itr, unitList)
{
Unit* pTarget = g_pMain->GetUnitPtr(*itr, GetZoneID());
if (pTarget == nullptr)
continue;
if (pTarget->isNPC())
{
// int16 targetID = pTarget->GetID();
// printf("Mob eklendi SID: %d ++ %d \n", targetID, pTarget);
// if (SultanKO.find(targetID) != SultanKO.end())
// {
// printf("Mob eklendi SID: %d\n", targetID);
casted_member.push_back(pTarget); // Sadece geçerli yaratıklar.
// printf("Atak yapılıyor SID: %d\n", targetID);
// }
}
else if (pTarget->isPlayer()) // target hedefine human ve karus oyuncu gelirse sapma işlemi olmaması adına kontrol
{
if (TO_USER(pTarget)->GetNation() != GetNation())
{ casted_member.push_back(pTarget);
}
}
else if (pTarget->isBot()) // Eğer hedef bir bot ise
{ if (TO_BOT(pTarget)->GetNation() != GetNation())
{ casted_member.push_back(pTarget);
}
}
/* if (pTarget == nullptr)
continue;
if (this != pTarget
&& !pTarget->isDead()
&& !pTarget->isBlinking()
&& pTarget->isAttackable())
casted_member.push_back(pTarget);*/
}
süper kodMerhaba arkadaşlar,
Bu konuda, PK botlarımızın monsterlara saldırmasını sağlayan bir sistemin nasıl yapılacağını anlatacağım.
Bu sayede botlar,Sadece user’lere saldırmayacak ve farm verimliliği artacaktır.
Öncelikle,
BotMoveAttack.cpp Açıyoruz
CTRL + F Tusuna Basarak
g_pMain->GetUnitListFromSurroundingRegions(this, &unitList);
Kodu buluyoruz. Altınada
foreach(itr, unitList) Kod Çıkar
Örnek :
Kod:// g_pMain->GetUnitListFromSurroundingRegions(this, &unitList); // // foreach(itr, unitList) // { // Unit* pTarget = g_pMain->GetUnitPtr(*itr, GetZoneID()); // // if (pTarget == nullptr) // continue; // // if (this != pTarget // && !pTarget->isDead() // && !pTarget->isBlinking() // && pTarget->isAttackable()) // casted_member.push_back(pTarget); // }
g_pMain->GetUnitListFromSurroundingRegions(this, &unitList); Altına
std::set<int16> SultanKO= { 11245,19658, 10987, 10447, 10446, 10448 }; // monster kodları.
Hemen Altında Olan
Kod:if (pTarget == nullptr) continue; if (this != pTarget && !pTarget->isDead() && !pTarget->isBlinking() && pTarget->isAttackable()) casted_member.push_back(pTarget); }
Kısmı Kaldırıp
Ekliyoruz Ve işlemimiz Tamamdır.Kod:foreach(itr, unitList) { Unit* pTarget = g_pMain->GetUnitPtr(*itr, GetZoneID()); if (pTarget == nullptr) continue; if (pTarget->isNPC()) { // int16 targetID = pTarget->GetID(); // printf("Mob eklendi SID: %d ++ %d \n", targetID, pTarget); // if (SultanKO.find(targetID) != SultanKO.end()) // { // printf("Mob eklendi SID: %d\n", targetID); casted_member.push_back(pTarget); // Sadece geçerli yaratıklar. // printf("Atak yapılıyor SID: %d\n", targetID); // } } else if (pTarget->isPlayer()) // target hedefine human ve karus oyuncu gelirse sapma işlemi olmaması adına kontrol { if (TO_USER(pTarget)->GetNation() != GetNation()) { casted_member.push_back(pTarget); } } else if (pTarget->isBot()) // Eğer hedef bir bot ise { if (TO_BOT(pTarget)->GetNation() != GetNation()) { casted_member.push_back(pTarget); } } /* if (pTarget == nullptr) continue; if (this != pTarget && !pTarget->isDead() && !pTarget->isBlinking() && pTarget->isAttackable()) casted_member.push_back(pTarget);*/ }