- Katılım
- 5 May 2019
- Konular
- 13
- Mesajlar
- 87
- Online süresi
- 9d 12h
- Reaksiyon Skoru
- 38
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 2 Gün
- Başarım Puanı
- 80
- MmoLira
- 4,015
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
yani iki yolu var, ya kendin map uzerinde manuel olarak her map icin collision ekliyorsun onun cevresinden gecme algoritmasi yaziyorsun click x,y'a gore. Ya da oyunun kendi collision managerini kullanarak, baslangic ve bitis noktasi arasindakilere isBlocked check atarak olur. Ilk yontem en basiti, sadece her map icin collision eklemen lazim
[CODE lang="cpp" title="checkadvancing"]
struct CollisionChecker
{
bool isBlocked;
CInstanceBase* pInstance;
CollisionChecker(CInstanceBase* pInstance) : pInstance(pInstance), isBlocked(false) {}
void operator () (CGraphicObjectInstance* pOpponent)
{
if (isBlocked)
return;
if (!pOpponent)
return;
if (pInstance->IsBlockObject(*pOpponent))
isBlocked=true;
}
};
struct CollisionAdjustChecker
{
bool isBlocked;
CInstanceBase* pInstance;
CollisionAdjustChecker(CInstanceBase* pInstance) : pInstance(pInstance), isBlocked(false) {}
void operator () (CGraphicObjectInstance* pOpponent)
{
if (!pOpponent)
return;
if (pInstance->AvoidObject(*pOpponent))
isBlocked=true;
}
};
bool CPythonBackground::CheckAdvancing(CInstanceBase * pInstance)
{
if (!IsMapReady())
return true;
Vector3d center;
float radius;
pInstance->GetGraphicThingInstanceRef().GetBoundingSphere(center,radius);
CCullingManager & rkCullingMgr = CCullingManager::Instance();
CollisionAdjustChecker kCollisionAdjustChecker(pInstance);
rkCullingMgr.ForInRange(center, radius, &kCollisionAdjustChecker);
if (kCollisionAdjustChecker.isBlocked)
{
CollisionChecker kCollisionChecker(pInstance);
rkCullingMgr.ForInRange(center, radius, &kCollisionChecker);
if (kCollisionChecker.isBlocked)
{
pInstance->BlockMovement();
return true;
}
else
{
pInstance->NEW_MoveToDestPixelPositionDirection(pInstance->NEW_GetDstPixelPositionRef());
}
return false;
}
return false;
}[/CODE]
Edit: Ayriyetten su fonksiyonu yeni gordum, buranin icerisinde aktif olarak mapin butun collisionpointleri mevcut
[CODE lang="cpp" title="xx"]BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)
{
/*
if (m_pkHorse)
{
if (m_pkHorse->TestActorCollision(rVictim))
return TRUE;
return FALSE;
}
*/
if (rVictim.IsDead())
return FALSE;
// Check Distance
// NOTE : Àû´çÈ÷ ¸Ö¸é üũ ¾ÈÇÔ
// ÇÁ·¹ÀÓ ½ºÅµ½Ã³ª ´ë»ó ¿ÀºêÁ§Æ®ÀÇ Å©±â°¡ Ŭ°æ¿ì ¹®Á¦°¡ »ý±æ ¿©Áö°¡ ÀÖÀ½
// ij¸¯ÅͰ¡ ÀÚ½ÅÀÇ Body Sphere Radius º¸´Ù ´õ Å©°Ô À̵¿Çß´ÂÁö¸¦ üũÇϰí,
// ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é °Å¸®·Î Ã¼Å©ÇØ¼ °É·¯ÁØ´Ù.
D3DXVECTOR3 v3Distance = D3DXVECTOR3(rVictim.m_x - m_x, rVictim.m_y - m_y, rVictim.m_z - m_z);
float fDistance = D3DXVec3LengthSq(&v3Distance);
if (fDistance > 800.0f*800.0f)
return FALSE;
// NOTE : °ø°Ý ÁßÀ϶§´Â Defending Sphere·Î Collision Check¸¦ ÇÕ´Ï´Ù.
// NOTE : Wait·Î ºí·»µù µÇ´Â µµÁß¿¡ ¶Õ°í µé¾î°¡´Â ¹®Á¦°¡ ÀÖ¾î¼.. - [levites]
TCollisionPointInstanceList * pMainList;
TCollisionPointInstanceList * pVictimList;
if (isAttacking() || IsWaiting())
{
pMainList = &m_DefendingPointInstanceList;
pVictimList = &rVictim.m_DefendingPointInstanceList;
}
else
{
pMainList = &m_BodyPointInstanceList;
pVictimList = &rVictim.m_BodyPointInstanceList;
}
TCollisionPointInstanceListIterator itorMain = pMainList->begin();
TCollisionPointInstanceListIterator itorVictim = pVictimList->begin();
for (; itorMain != pMainList->end(); ++itorMain)
for (; itorVictim != pVictimList->end(); ++itorVictim)
{
const CDynamicSphereInstanceVector & c_rMainSphereVector = (*itorMain).SphereInstanceVector;
const CDynamicSphereInstanceVector & c_rVictimSphereVector = (*itorVictim).SphereInstanceVector;
for (DWORD i = 0; i < c_rMainSphereVector.size(); ++i)
for (DWORD j = 0; j < c_rVictimSphereVector.size(); ++j)
{
const CDynamicSphereInstance & c_rMainSphere = c_rMainSphereVector;
const CDynamicSphereInstance & c_rVictimSphere = c_rVictimSphereVector[j];
if (DetectCollisionDynamicSphereVSDynamicSphere(c_rMainSphere, c_rVictimSphere))
{
if (GetVector3Distance(c_rMainSphere.v3Position, c_rVictimSphere.v3Position) <=
GetVector3Distance(c_rMainSphere.v3LastPosition, c_rVictimSphere.v3Position))
{
return TRUE;
}
return FALSE;
}
}
}
return FALSE;
}[/CODE]
Bilgi için teşekkür ederim bunu araştırmaya başlıyorum
- Katılım
- 5 May 2019
- Konular
- 13
- Mesajlar
- 87
- Online süresi
- 9d 12h
- Reaksiyon Skoru
- 38
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 2 Gün
- Başarım Puanı
- 80
- MmoLira
- 4,015
- DevLira
- 0
Bilgi için teşekkür ederim araştırma sırasına ekledimTam olarak nasıl yapıldığını bilmiyorum ama biraz bilgi ve mantık çerçevesinde yanıtlayacağım. Oyunda kullanılan harita ile programda kullanılan harita birebir aynı olduğu için X ve Y koordinatları da aynı, her haritada sabit karakterin düzgün yürüyebileceği rotalar tanımlı olup o rotaların da checkpointleri olabilir karakter mapin ortasında diyelim 0,0 koordinatına gidecek biliyoruz ki sol üste gitmeye çalışacak önce en yakın checkpointe gidip oradan sabit rota ile yoluna devam ederek herhangi bir engele takılmadan gidebilir. Çizim kısmına gelirsek sabit rota zaten çizilmiş olup karakterin X,Ysinden en yakın checkpointe bir çizgi bunu zaten program X,Y farkından vektörel uzunluğunu hesaplayıp nasıl bir çizgi çizeceğini bilir.
- Katılım
- 23 Ağu 2011
- Konular
- 38
- Mesajlar
- 290
- Çözüm
- 1
- Online süresi
- 1mo 6d
- Reaksiyon Skoru
- 215
- Altın Konu
- 1
- Başarım Puanı
- 146
- MmoLira
- 1,966
- DevLira
- 0
opucuk1discord ismini verirmisin reis
- Katılım
- 8 Şub 2022
- Konular
- 110
- Mesajlar
- 675
- Online süresi
- 2mo 19d
- Reaksiyon Skoru
- 767
- Altın Konu
- 5
- Başarım Puanı
- 175
- Yaş
- 29
- MmoLira
- 16,253
- DevLira
- 0
cizim islevi de sana kalmısBazı metin2 hilelerinde görüyorum haritadan herhangi biyer seçince oraya çok güzel yol çiziyor bunun muhabbeti nasıl oluyor?
Not:Yapay zeka cevapları olmasın hocamlar sadece bilenler yazarsa sevinirim
Şimdiden Teşekkür Ederim
İyi Forumlar
[CODE lang="cpp" title="Radar"]static std::vector<Vector3> mouse_rota_points;
if (ImGui::IsWindowHovered())
{
bool shiftPressed = GetAsyncKeyState(VK_SHIFT) & 0x8000;
if (shiftPressed && !shiftWasPressed)
{
ImVec2 mousePos = ImGui::GetMousePos();
float mouseMapX = (mousePos.x - mapDrawPos.x) / C_RadarZoom;
float mouseMapY = (mousePos.y - mapDrawPos.y) / C_RadarZoom;
float targetX = mouseMapX * 100.0f;
float targetY = -mouseMapY * 100.0f;
engine::RadarSetPixelPosition(Vector3(targetX, targetY, c_players.z));
}
shiftWasPressed = shiftPressed;
if (ImGui::IsMouseClicked(1))
{
ImVec2 mousePos = ImGui::GetMousePos();
float mouseMapX = (mousePos.x - mapDrawPos.x) / C_RadarZoom;
float mouseMapY = (mousePos.y - mapDrawPos.y) / C_RadarZoom;
float targetX = mouseMapX * 100.0f;
float targetY = -mouseMapY * 100.0f;
mouse_rota_points.push_back(Vector3(targetX, targetY, c_players.z));
}
}[/CODE]
- Katılım
- 5 May 2019
- Konular
- 13
- Mesajlar
- 87
- Online süresi
- 9d 12h
- Reaksiyon Skoru
- 38
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 2 Gün
- Başarım Puanı
- 80
- MmoLira
- 4,015
- DevLira
- 0
Bilgi için teşekkür ederrim peki bunun tam çalışma mantığı nedir kısaca açıklayabilirmisincizim islevi de sana kalmıs
Ekli dosyayı görüntüle 167572
[CODE lang="cpp" title="Radar"]static std::vector<Vector3> mouse_rota_points;
if (ImGui::IsWindowHovered())
{
bool shiftPressed = GetAsyncKeyState(VK_SHIFT) & 0x8000;
if (shiftPressed && !shiftWasPressed)
{
ImVec2 mousePos = ImGui::GetMousePos();
float mouseMapX = (mousePos.x - mapDrawPos.x) / C_RadarZoom;
float mouseMapY = (mousePos.y - mapDrawPos.y) / C_RadarZoom;
float targetX = mouseMapX * 100.0f;
float targetY = -mouseMapY * 100.0f;
engine::RadarSetPixelPosition(Vector3(targetX, targetY, c_players.z));
}
shiftWasPressed = shiftPressed;
if (ImGui::IsMouseClicked(1))
{
ImVec2 mousePos = ImGui::GetMousePos();
float mouseMapX = (mousePos.x - mapDrawPos.x) / C_RadarZoom;
float mouseMapY = (mousePos.y - mapDrawPos.y) / C_RadarZoom;
float targetX = mouseMapX * 100.0f;
float targetY = -mouseMapY * 100.0f;
mouse_rota_points.push_back(Vector3(targetX, targetY, c_players.z));
}
}[/CODE]
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
Metin2 Hile İstek
Hızlı koşma, slot render ve wallhack konusunda yardıma ihtiyacım var
- Cevaplar
- 17
- Görüntüleme
- 829
- Cevaplar
- 30
- Görüntüleme
- 526
- Cevaplar
- 3
- Görüntüleme
- 74




