Novaline mount ütés (k)

Indította mikee0121, 2015-11-21, 14:08:13

Sziasztok egy olyan problémába akadtam hogy nem tudok bár mountról ütni.
Gyorsan fordítottam egy indítót melyben engedélyeztem a instancebase.cpp-ben hogy lehessen ütni azokról is amit eddig nem lehetet. Jelen pillanatban ott tartok hogy fele jó fele nem legalább már 3-4 fajta variációt kipróbáltam de még minding nem tudok mindegyikről ütni.  Fordításkor sosincs hiba egy két warningot leszámítva. Visual 2013-al fordítom.

Hol a gond kérdezném én?:


UINT CInstanceBase::SHORSE::GetLevel()
{
if (m_pkActor)
{
DWORD mount = m_pkActor->GetRace();
switch (mount)
{
case 20101:
case 20102:
case 20103:
return 1;
case 20104:
case 20105:
case 20106:
return 2;
case 20107:
case 20108:
case 20109:
case 20110: // #0000673: [M2EU] 새로운 탈것 타고 공격 안됨
case 20111: // #0000673: [M2EU] 새로운 탈것 타고 공격 안됨
case 20112: // #0000673: [M2EU] 새로운 탈것 타고 공격 안됨
case 20113: // #0000673: [M2EU] 새로운 탈것 타고 공격 안됨
case 20114:
case 20115:
case 20116:
case 20117:
case 20118:
case 20120:
case 20121:
case 20122:
case 20123:
case 20124:
case 20125:
return 3;
case 20119: // 라마단 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정
case 20219: // 할로윈 이벤트용 흑마는 스킬불가, 공격가능한 레벨2로 설정 (=라마단 흑마 클론)
case 20220:
case 20221:
case 20222:
case 20201:
case 20202:
case 20203:
case 20204:
case 20205:
case 20206:
case 20207:
case 20208:
case 20209:
case 20210:
case 20211:
case 20212:
case 20213:
case 20214:
case 20215:
case 20216:
case 20217:
case 20218:
case 20223:
case 20224:
case 20225:
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)
)
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)
)
return true;

return false;
}


2015-11-21, 14:53:52 #1 Utolsó szerkesztés: 2015-11-21, 14:58:14 Szerző: TheSLZ
Mivel nem mondtad pontosan melyik mount a rossz, így leírom általánosságba..

Szerveroldal: Sebzésért felelős.
Kliensoldal: Ütésért.
Ha kliensbe bent van, szerverbe nincs, akkor ütni tudsz, de nem sebez.
Ha kliensbe nincs bent, akkor nem tudsz ütni, hiába van bent szerver oldalon, mert nem fut le maga az akció.

Kliensbe return 3; előtti értékekről lehet ütni, skillezni,
return 2; előtti értékekről már csak ütni,
return 1; előtti értékekről már semmit.

Szerk:

Ezt tedd kommentbe:

{
// 중급 탈것은 레벨2 (공격 가능, 스킬 불가)
if ((20205 <= mount &&  20208 >= mount) ||
(20214 == mount) || (20217 == mount) // 난폭한 전갑순순록, 난폭한 전갑암순록
)
return 2;

// 고급 탈것은 레벨3 (공격 가능, 스킬 가능)
if ((20209 <= mount &&  20212 >= mount) ||
(20215 == mount) || (20218 == mount) || // 용맹한 전갑순순록, 용맹한 전갑암순록
(20220 == mount)
)
return 3;
}


Mert így kétszer próbálná beállítani. Nálam is kommentbe vannak, szerintem alapból úgy volt.