Jump to content


  • Content count

  • Posts on chatbox

  • Joined

  • Last visited

  • Days Won


MxCool last won the day on September 24

MxCool had the most liked content!

Community Reputation

826 M2tec Professional

About MxCool

  • Rank
    M2tec Pro

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Another pumpkinhead? The rest are nice.
  2. Yes, because these files dev files only, mostly serverside, quests and so on. It's not a whole source with everything if you thought that, I'm sorry. But if you or anyone else have something in his/her head, he/she can learn some techniques, tricks from it.
  3. This is the correct "distance calculator" for the reef attack skill for wolfman. New motion event types what came with the wolfman content: Group Event09 { MotionEventType 11 StartingTime 0.122161 BaseVelocity 230 } Group Event10 { MotionEventType 12 StartingTime 1.115590 } Probably the public wolfman sources don't contain this. Easier to delete the event :D
  4. Hey! Today I'm gonna share this reversed stuff from the official binary by named "Relative Move" for the reef_attack skill. If you have any problem, just post it into this thread. 1.) GameLib/RaceMotionDataEvent.h -> Add to the bottom of the file: // RelativeMoveOn typedef struct SMotionEventDataRelativeMoveOn : public SMotionEventData { int baseVelocity; SMotionEventDataRelativeMoveOn() : baseVelocity(0) {} virtual ~SMotionEventDataRelativeMoveOn() {} void Save(FILE* File, int iTabs){} bool Load(CTextFileLoader& rTextFileLoader) { if (!rTextFileLoader.GetTokenInteger("basevelocity", &baseVelocity)) { return false; } return true; } } TMotionEventDataRelativeMoveOn; // RelativeMoveOff typedef struct SMotionEventDataRelativeMoveOff : public SMotionEventData { SMotionEventDataRelativeMoveOff() {} virtual ~SMotionEventDataRelativeMoveOff() {} void Save(FILE* File, int iTabs) {} bool Load(CTextFileLoader& rTextFileLoader) { return true; } } TMotionEventDataRelativeMoveOff; 2.) GameLib/RaceMotionData.h 2.1.) Extend the "EMotionEventType" enum with these(b4 the maxnum): MOTION_EVENT_TYPE_RELATIVE_MOVE_ON, MOTION_EVENT_TYPE_RELATIVE_MOVE_OFF, 2.2.) Jump to this: "TMotionEffectToTargetEventData" and add below: typedef struct NMotionEvent::SMotionEventDataRelativeMoveOn TMotionRelativeMoveOn; typedef struct NMotionEvent::SMotionEventDataRelativeMoveOff TMotionRelativeMoveOff; 3.) GameLib/RaceMotionData.cpp -> Extend the switch statement in the function: "CRaceMotionData::LoadMotionData" with these: case MOTION_EVENT_TYPE_RELATIVE_MOVE_ON: pData = new TMotionRelativeMoveOn; break; case MOTION_EVENT_TYPE_RELATIVE_MOVE_OFF: pData = new TMotionRelativeMoveOff; break; 4.) GameLib/ActorInstance.h 4.1.) Add the followings below of this declaration: "void ProcessMotionEventWarp(const CRaceMotionData::TMotionEventData * c_pData);" void ProcessMotionEventRelativeMoveOn(const CRaceMotionData::TMotionEventData * c_pData); void ProcessMotionEventRelativeMoveOff(const CRaceMotionData::TMotionEventData * c_pData); 4.2.) Define the next variables as protected at the bottom: protected: bool m_bIsRelativeMoveMode; float m_fRelativeMoveMul; 5.) GameLib/ActorInstance.cpp 5.1.) Add the initial values above of this: "memset(&m_kCurMotNode, 0, sizeof(m_kCurMotNode));" in the "CActorInstance::__InitializeMotionData()" function: m_fRelativeMoveMul = 0.0f; m_bIsRelativeMoveMode = false; 5.2.) Replace the whole function: void "CActorInstance::__AccumulationMovement(float fRot)" with this: void CActorInstance::__AccumulationMovement(float fRot) { // NOTE - ŔĎ´ÜŔş WAIT·Î ąĚ˛ô·ŻÁü ąćÁö // ĂßČÄżˇ´Â RaceMotionData°ˇ Ŕ̵żµÇ´Â ¸đĽÇŔÎÁöżˇ ´ëÇŃ Flag¸¦ °®°í ŔÖ°Ô˛ű ÇŃ´Ů. - [levites] if (CRaceMotionData::NAME_WAIT == __GetCurrentMotionIndex()) return; D3DXMATRIX s_matRotationZ; D3DXMatrixRotationZ(&s_matRotationZ, D3DXToRadian(fRot)); UpdateTransform(&s_matRotationZ, GetAverageSecondElapsed()); if (m_bIsRelativeMoveMode) AddMovement(m_fRelativeMoveMul * s_matRotationZ._41, m_fRelativeMoveMul * s_matRotationZ._42, m_fRelativeMoveMul * s_matRotationZ._43); else AddMovement(s_matRotationZ._41, s_matRotationZ._42, s_matRotationZ._43); } 6.) GameLib/ActorInstanceMotion.cpp 6.1.) Set the relative move mode variable to false in the "void CActorInstance::__MotionEventProcess(BOOL isPC)" function like this: void CActorInstance::__MotionEventProcess(BOOL isPC) { if (isAttacking()) { DWORD dwNextFrame = DWORD(GetAttackingElapsedTime() * g_fGameFPS); for (; m_kCurMotNode.dwcurFrame < dwNextFrame; ++m_kCurMotNode.dwcurFrame) { MotionEventProcess(); SoundEventProcess(!isPC); } } else { m_bIsRelativeMoveMode = false; MotionEventProcess(); SoundEventProcess(!isPC); ++m_kCurMotNode.dwcurFrame; } } 6.2.) Extend the if statements in the "CActorInstance::__IsNeedFlyTargetMotion" function with this: if (c_pData->iType == CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_ON) return true; 6.3.) Do the same in the "CActorInstance::__HasMotionFlyEvent" function as well: if (c_pData->iType == CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_ON) return true; 7.) GameLib/ActorInstanceMotionEvent.cpp 7.1.) Extend the switch statement in this function: "CActorInstance::MotionEventProcess" with these: case CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_ON: #ifndef WORLD_EDITOR ProcessMotionEventRelativeMoveOn(c_pData); #endif break; case CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_OFF: #ifndef WORLD_EDITOR ProcessMotionEventRelativeMoveOff(c_pData); #endif break; 7.2.) Add the following functions to the bottom of the file: void CActorInstance::ProcessMotionEventRelativeMoveOn(const CRaceMotionData::TMotionEventData * c_pData) { if (CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_ON != c_pData->iType) return; const CRaceMotionData::TMotionRelativeMoveOn * c_pRelativeMoveOnData = (const CRaceMotionData::TMotionRelativeMoveOn *)c_pData; static const float sc_fDistanceFromTarget = 270.0f; if (m_kFlyTarget.IsValidTarget()) { D3DXVECTOR3 v3MainPosition(m_x, m_y, m_z); const D3DXVECTOR3 & c_rv3TargetPosition = __GetFlyTargetPosition(); D3DXVECTOR3 v3Distance = c_rv3TargetPosition - v3MainPosition; D3DXVECTOR3 v3DistanceNormal(0.0f, 0.0f, 0.0f); D3DXVec3Normalize(&v3DistanceNormal, &v3Distance); float fDot = D3DXVec3Dot(&v3DistanceNormal, &v3Distance); m_fRelativeMoveMul = (fDot - sc_fDistanceFromTarget) / static_cast<float>(c_pRelativeMoveOnData->baseVelocity); m_bIsRelativeMoveMode = true; } } void CActorInstance::ProcessMotionEventRelativeMoveOff(const CRaceMotionData::TMotionEventData * c_pData) { if (CRaceMotionData::MOTION_EVENT_TYPE_RELATIVE_MOVE_OFF != c_pData->iType) return; m_bIsRelativeMoveMode = false; } I hope I didn't miss any part of it :D Have fun.
  5. Thank you, this is it what I was looking for.
  6. Ofc, you can solve it however you want, but I prefer the official version (:
  7. By the way, there is no need server side modification for this.
  8. Here is a tutorial how to compile the cryptopp: [Hidden Content]
  9. I think David has it all, so who the fuck are you?
  10. Which change you want to see? These kiddos are stupid. As I said there is no virus inside, just virtualized codes and compression, both with cracked tools, without license, this why the antiviruses mark it as a virus. Without knowledge keep your mouths in shut, kids.
  11. I do not know what are you talking about. Btw, you can also make it in c++ with a basic knowledge.
  12. If anyone has it, would be kind to share it with me? Thank you in advance.