Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!
ÇÖZÜM İÇİN ClientSRC / InstanceBase.cpp
'bool CInstanceBase::SHORSE::IsNewMount() bloğunu resimdeki gibi ayarla
############ SORUN #############
Merhaba fileste birçok bineğin üzerinden vurmuyor
mob vnumlar ClientSRC/instantbase.cpp de ve GameSRC/pvp.cpp de eklidir.
Ne yapmak gereklidir?
[CODE title="InstanceBase.cpp"]UINT CInstanceBase::SHORSE::GetLevel()
{
if (m_pkActor)
{
DWORD mount = m_pkActor->GetRace();
switch (mount)
{
case 20101:
case 20102:
case 20103:
case 20104:
case 20105:
case 20106:
return 2;
case 20107: // BU BINEKTEN
case 20108:
case 20109:
case 20110:
case 20111:
case 20112:
case 20113:
case 20114:
case 20115:
case 20116:
case 20117:
case 20118:
case 20120:
case 20121:
case 20122:
case 20123:
case 20124:
case 20125:// BU BINEGE KADAR VURUYOR
case 20254:
case 20255:
case 20256:
case 20257:
case 20258:
case 20259:
case 20260:
case 20261:
case 20262:
case 20263:
case 20264:
case 20265:
case 20266:
case 20267:
case 20268:
case 20269:
case 20270:
case 20271:
case 20272:
case 20273:
case 20274:
case 20275:
case 20276:
case 20277:
case 20278:
case 20279:
case 20280:
case 20281:
case 20282:
case 20283:
case 20284:
case 20285:
case 20286:
case 20287:
case 20600:
case 20601:
case 20602:
case 20603:
case 20604:
case 20605:
case 20606:
case 20607:
case 20608:
case 20609:
case 20610:
case 20611:
case 20612:
case 20613:
case 20614:
case 20615:
case 20616:
case 20617:
case 20618:
case 20619:
case 20620:
case 20621:
case 20622:
case 20623:
case 20624:
return 3;
case 20119: // 라마단 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정
case 20219: // 할로윈 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정 (=라마단 흑마 클론)
case 20220: //
case 20221: //
case 20222: //
return 2;
}
// 마운트 확장 시스템용 특수 처리 (20201 ~ 20212 대역을 사용하고 순서대로 4개씩 나눠서 초급, 중급, 고급임)
// -- 탈것 레벨을 클라에서 측정하고 공격/스킬 사용가능 여부도 클라에서 처리하는 것 자체에 문제가 있는 듯.. [hyo]
{
// 중급 탈것은 레벨2 (공격 가능, 스킬 불가)
if ((20205 <= mount && 20208 >= mount) ||
(20214 == mount) || (20217 == mount))
return 2;
// 고급 탈것은 레벨3 (공격 가능, 스킬 가능)
if ((20209 <= mount && 20212 >= mount) ||
(20215 == mount) || (20218 == mount) || // 용맹한 전갑순순록, 용맹한 전갑암순록
(20220 == mount) ||
(20254 <= mount && 20287 >= mount) ||
(20600 <= mount && 20624 >= mount))
return 3;
}
}
return 0;
}
bool CInstanceBase::SHORSE::IsNewMount()
{
if (!m_pkActor)
return false;
DWORD mount = m_pkActor->GetRace();
if ((20205 <= mount && 20208 >= mount) ||
(20214 == mount) || (20217 == mount) // 난폭한 전갑순순록, 난폭한 전갑암순록
)
return true;
// 고급 탈것
if ((20209 <= mount && 20212 >= mount) ||
(20215 == mount) || (20218 == mount) || // 용맹한 전갑순순록, 용맹한 전갑암순록
(20220 == mount) ||
(20254 <= mount && 20287 >= mount) ||
(20600 <= mount && 20624 >= mount))
return true;
return false;
}[/CODE]
[CODE title="pvp.cpp"] if (pkVictim->IsNPC() && pkChr->IsNPC() && !pkChr->IsGuardNPC())
return false;
if( true == pkChr->IsHorseRiding() )
{
if( pkChr->GetHorseLevel() == 0 )
return false;
}
else
{
switch( pkChr->GetMountVnum() )
{
case 0:
case 20101:
case 20102:
case 20103:
case 20030:
case 20110:
case 20111:
case 20112:
case 20113:
case 20114:
case 20115:
case 20116:
case 20117:
case 20118:
//신규 탈것 고급
case 20205:
case 20206:
case 20207:
case 20208:
case 20209:
case 20210:
case 20211:
case 20212:
case 20119: // 라마단 흑마
case 20219: // 라마단 흑마 클론 (할로윈용)
case 20220: // 크리스마스 탈것
case 20221: // 전갑 백웅
case 20222: // 전갑 팬더
case 20120:
case 20121:
case 20122:
case 20123:
case 20124:
case 20125:
case 20214: // 난폭한 전갑순순록
case 20215: // 용맹한 전갑순순록
case 20217: // 난폭한 전갑암순록
case 20218: // 용맹한 전갑암순록
case 20254:
case 20255:
case 20256:
case 20257:
case 20258:
case 20259:
case 20260:
case 20261:
case 20262:
case 20263:
case 20264:
case 20265:
case 20266:
case 20267:
case 20268:
case 20269:
case 20270:
case 20271:
case 20272:
case 20273:
case 20274:
case 20275:
case 20276:
case 20277:
case 20278:
case 20279:
case 20280:
case 20281:
case 20282:
case 20283:
case 20284:
case 20285:
case 20286:
case 20287:
case 20600:
case 20601:
case 20602:
case 20603:
case 20604:
case 20605:
case 20606:
case 20607:
case 20608:
case 20609:
case 20610:
case 20611:
case 20612:
case 20613:
case 20614:
case 20615:
case 20616:
case 20617:
case 20618:
case 20619:
case 20620:
case 20621:
case 20622:
case 20623:
case 20624:
break;
default:
return false;
}
}
[/CODE]
## EDİT:
100+ binek içerisinden sadece 20110>20125 arasındaki binekler atak yapabiliyordu.
root/npclist.txt
içerisinden 20110-20125 arasındaki bineklerin msmleriyle atak yapmasını istediğim binekleri değiştirdim.
Örnek; ''20114 lion_white'' Beyaz Aslan ben bunu ''20114 christmas_2018_horse_01'' Manu ile değiştirdim.
Sorunsuz çalışıyor. Fakat böyle sadece 16 binekle sınırlı kalıyorum.
Diğer bineklerin vurmasını nasıl sağlayacağım?
'bool CInstanceBase::SHORSE::IsNewMount() bloğunu resimdeki gibi ayarla
############ SORUN #############
Merhaba fileste birçok bineğin üzerinden vurmuyor
mob vnumlar ClientSRC/instantbase.cpp de ve GameSRC/pvp.cpp de eklidir.
Ne yapmak gereklidir?
[CODE title="InstanceBase.cpp"]UINT CInstanceBase::SHORSE::GetLevel()
{
if (m_pkActor)
{
DWORD mount = m_pkActor->GetRace();
switch (mount)
{
case 20101:
case 20102:
case 20103:
case 20104:
case 20105:
case 20106:
return 2;
case 20107: // BU BINEKTEN
case 20108:
case 20109:
case 20110:
case 20111:
case 20112:
case 20113:
case 20114:
case 20115:
case 20116:
case 20117:
case 20118:
case 20120:
case 20121:
case 20122:
case 20123:
case 20124:
case 20125:// BU BINEGE KADAR VURUYOR
case 20254:
case 20255:
case 20256:
case 20257:
case 20258:
case 20259:
case 20260:
case 20261:
case 20262:
case 20263:
case 20264:
case 20265:
case 20266:
case 20267:
case 20268:
case 20269:
case 20270:
case 20271:
case 20272:
case 20273:
case 20274:
case 20275:
case 20276:
case 20277:
case 20278:
case 20279:
case 20280:
case 20281:
case 20282:
case 20283:
case 20284:
case 20285:
case 20286:
case 20287:
case 20600:
case 20601:
case 20602:
case 20603:
case 20604:
case 20605:
case 20606:
case 20607:
case 20608:
case 20609:
case 20610:
case 20611:
case 20612:
case 20613:
case 20614:
case 20615:
case 20616:
case 20617:
case 20618:
case 20619:
case 20620:
case 20621:
case 20622:
case 20623:
case 20624:
return 3;
case 20119: // 라마단 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정
case 20219: // 할로윈 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정 (=라마단 흑마 클론)
case 20220: //
case 20221: //
case 20222: //
return 2;
}
// 마운트 확장 시스템용 특수 처리 (20201 ~ 20212 대역을 사용하고 순서대로 4개씩 나눠서 초급, 중급, 고급임)
// -- 탈것 레벨을 클라에서 측정하고 공격/스킬 사용가능 여부도 클라에서 처리하는 것 자체에 문제가 있는 듯.. [hyo]
{
// 중급 탈것은 레벨2 (공격 가능, 스킬 불가)
if ((20205 <= mount && 20208 >= mount) ||
(20214 == mount) || (20217 == mount))
return 2;
// 고급 탈것은 레벨3 (공격 가능, 스킬 가능)
if ((20209 <= mount && 20212 >= mount) ||
(20215 == mount) || (20218 == mount) || // 용맹한 전갑순순록, 용맹한 전갑암순록
(20220 == mount) ||
(20254 <= mount && 20287 >= mount) ||
(20600 <= mount && 20624 >= mount))
return 3;
}
}
return 0;
}
bool CInstanceBase::SHORSE::IsNewMount()
{
if (!m_pkActor)
return false;
DWORD mount = m_pkActor->GetRace();
if ((20205 <= mount && 20208 >= mount) ||
(20214 == mount) || (20217 == mount) // 난폭한 전갑순순록, 난폭한 전갑암순록
)
return true;
// 고급 탈것
if ((20209 <= mount && 20212 >= mount) ||
(20215 == mount) || (20218 == mount) || // 용맹한 전갑순순록, 용맹한 전갑암순록
(20220 == mount) ||
(20254 <= mount && 20287 >= mount) ||
(20600 <= mount && 20624 >= mount))
return true;
return false;
}[/CODE]
[CODE title="pvp.cpp"] if (pkVictim->IsNPC() && pkChr->IsNPC() && !pkChr->IsGuardNPC())
return false;
if( true == pkChr->IsHorseRiding() )
{
if( pkChr->GetHorseLevel() == 0 )
return false;
}
else
{
switch( pkChr->GetMountVnum() )
{
case 0:
case 20101:
case 20102:
case 20103:
case 20030:
case 20110:
case 20111:
case 20112:
case 20113:
case 20114:
case 20115:
case 20116:
case 20117:
case 20118:
//신규 탈것 고급
case 20205:
case 20206:
case 20207:
case 20208:
case 20209:
case 20210:
case 20211:
case 20212:
case 20119: // 라마단 흑마
case 20219: // 라마단 흑마 클론 (할로윈용)
case 20220: // 크리스마스 탈것
case 20221: // 전갑 백웅
case 20222: // 전갑 팬더
case 20120:
case 20121:
case 20122:
case 20123:
case 20124:
case 20125:
case 20214: // 난폭한 전갑순순록
case 20215: // 용맹한 전갑순순록
case 20217: // 난폭한 전갑암순록
case 20218: // 용맹한 전갑암순록
case 20254:
case 20255:
case 20256:
case 20257:
case 20258:
case 20259:
case 20260:
case 20261:
case 20262:
case 20263:
case 20264:
case 20265:
case 20266:
case 20267:
case 20268:
case 20269:
case 20270:
case 20271:
case 20272:
case 20273:
case 20274:
case 20275:
case 20276:
case 20277:
case 20278:
case 20279:
case 20280:
case 20281:
case 20282:
case 20283:
case 20284:
case 20285:
case 20286:
case 20287:
case 20600:
case 20601:
case 20602:
case 20603:
case 20604:
case 20605:
case 20606:
case 20607:
case 20608:
case 20609:
case 20610:
case 20611:
case 20612:
case 20613:
case 20614:
case 20615:
case 20616:
case 20617:
case 20618:
case 20619:
case 20620:
case 20621:
case 20622:
case 20623:
case 20624:
break;
default:
return false;
}
}
[/CODE]
## EDİT:
100+ binek içerisinden sadece 20110>20125 arasındaki binekler atak yapabiliyordu.
root/npclist.txt
içerisinden 20110-20125 arasındaki bineklerin msmleriyle atak yapmasını istediğim binekleri değiştirdim.
Örnek; ''20114 lion_white'' Beyaz Aslan ben bunu ''20114 christmas_2018_horse_01'' Manu ile değiştirdim.
Sorunsuz çalışıyor. Fakat böyle sadece 16 binekle sınırlı kalıyorum.
Diğer bineklerin vurmasını nasıl sağlayacağım?
Son düzenleme:
