- เครดิต
- 1878
- สเตตัส
- 1484
- เงิน
- 17
- ชื่อเสียง
- 258
- จิตพิสัย
- 248
- โพสต์
- 136
- กระทู้
- 17
- ลงทะเบียน
- 2017-10-9
- ออนไลน์
- 157 ชั่วโมง
- ล่าสุด
- 2024-5-31
ออฟไลน์
ผู้เชี่ยวชาญ
- สเตตัส
- 1484
- เงิน
- 17
- ชื่อเสียง
- 258
- จิตพิสัย
- 248
- ติดตาม
- 1
|
แก้ไขครั้งสุดท้ายโดย skszone01 เมื่อ 2017-10-30 22:37
ผมทำแม่แล้ว แต่ติดปัญหาที่ว่า
ถ้าลูกอยู่ไกลจากแม่มากไป ถึงตีแม่ลูกก็ไม่มา (ลูกสายตาสั้น)
พอจะมีวิธีแก้ไหมคับ พอดีไปอ่านจาก Ragezone มา กระทู้นี้ http://forum.ragezone.com/f528/levedit-leader-system-1009324/
เขาบอกประมานนี้แต่ผมไม่รู ้เขาให้ปรับอะไร
Quote Originally Posted by SeiferXIII View Post
The main core system knowledge is already there. It's up to you guys how ill you do the range thing :)
But, one thing is for sure. It's doable, you only need to explore how it works.
I've been looking at the workings of the group leader,
but, where I have to add range...
void GLCrow::GroupAttackProcess( const STARGETID sTargetID )
{
if( !IsGroupMember() ) return;
// ±×·ì ¸®´õÀÏ °æ¿ì ÇØ´ç Ÿ°Ù¿¡ ÀüºÎ´Ù °ø°ÝÀ» ÇÑ´Ù
if( IsGroupLeader() )
{
// ÇöÀç ±×·ì Ÿ°ÙÀÌ Á¸ÀçÇÏ´ÂÁö üũ
if( m_pLandMan->GET_GROUPTARGET( GetGroupName() ).dwID == EMTARGET_NULL )
{
// ±×·ì Ÿ°Ù¿¡ µî·ÏÀ» ÇÑ´Ù.
m_pLandMan->SET_GROUPTARGET( GetGroupName(), sTargetID );
SETGROUPMEM setGroupMember = m_pLandMan->GET_GROUPMEMBER(GetGroupName());
SETGROUPMEM_ITER setMember_iter = setGroupMember.begin();
for( ; setMember_iter != setGroupMember.end(); ++setMember_iter )
{
// ¸â¹ö°¡ ¾Æ´Ï¸é ³Ñ¾î°£´Ù.
if( !m_pLandMan->IS_GROUPMEMBER(GetGroupName(), *setMember_iter ) ) continue;
// ÀÚ½ÅÀÌ¸é ³Ñ¾î°£´Ù.
if( m_dwGlobID == *setMember_iter ) continue;
PGLCROW pGLCrow = m_pLandMan->GetCrow(*setMember_iter);
if( !pGLCrow ) continue;
pGLCrow->NewTarget( sTargetID );
}
}
}else{
PGLCROW pGLLeader = m_pLandMan->GET_GROUPLEADER(GetGroupName());
if( pGLLeader && pGLLeader->GetTargetID().dwID == EMTARGET_NULL )
{
pGLLeader->NewTarget( sTargetID );
}
}
}
void GLCrow::NewTarget( const STARGETID &sTargetID, BOOL bCheckMember /* = FALSE */ )
{
GLACTOR* pTarget = GLGaeaServer::GetInstance().GetTarget ( m_pLandMan, sTargetID );
if ( !pTarget ) return;
m_vOrgTarPos = m_vPos;
// Note : Ÿ°ÙÀ¸·Î ÁöÁ¤.
m_TargetID.emCrow = sTargetID.emCrow;
m_TargetID.dwID = pTarget->GetCtrlID();
m_TargetID.vPos = pTarget->GetPosition();
SetFLAG(EMTARGET);
if( bCheckMember ) GroupAttackProcess(sTargetID);
}
|
<
|