XObedient
Advanced members-
Content Count
13 -
Joined
-
Last visited
-
Days Won
3
XObedient last won the day on October 4 2021
XObedient had the most liked content!
Community Reputation
5 NeutralAbout XObedient
-
Rank
Cabin Boy
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Yes I will share the whole client source code with the mount fixes included, I will do so when I reach home.
-
Yes, fix is in making, I will share this week hover/carsise bug fix, hover is so you can't attack mobs while you are using the mount but you can only hover to see it's names.
-
You don't need to make the changes in the gameserver source, you have to do it in client source.
-
Soon enough 1.3x sources(exes) with all exploit fixes will be released, I hope more people will be motivated in opening again servers and not be scared that someone is going to ruin their server.
-
For the people that got issues while building. (this one got the camera fixed) Skills fix: UISkillCommand.cpp Line 184 if( pCha->GetIsOnMount()) { g_pGameApp->ShowMidText("Cannot use skills while Mount is in use"); return false; } https://mega.nz/file/K3gnzQJJ#J9s9M4qKdXsBE5acyf3S7KIINA-DoE-ZffyVuF57yms
-
You can show here what's wrong, i'll help.
-
Can you even think a bit? I said the code got shared because it got leaked.
-
Code is done by @mkhzaleh & @Snre3n, I do not own it, it was shared because it got leaked. All credits for the code going to the truly owners.
-
Code was shared because it got leaked, we don't want people to profit from other's work.
-
Remove the "++", I added those to mark what I added in the function.
-
#include <string> #include <sstream>
-
Hi, Those errors are easy to fix, shouldn't ask for help but there we go: Change from pCha->IsPlayer to this->IsPlayer() at the line || if (nItem > 0 && !GetIsPK() && pCha->IsPlayer() ) || Before switch(nLink) Add CCharacter* pCha = this;
-
Hi, I decided to share the mounts code since everyone who has it is taking advantage of it and sell it. (Corsairs Online based) Character.cpp CCharacter::CCharacter() pMount(0), oldmount(0), mountboneID(0), --------------------------------- void CCharacter::_UpdateValid(BOOL bValid) { if(bValid == FALSE) { ++ if (pMount) { ++ pMount->SetValid(false); ++ pMount->removeLink(); ++ pMount = NULL; ++ this->oldmount = 0; } setSideID( 0 ); if( GetDrunkState() ) CCharacterModel::SetDrunkState( FALSE ); _pChaState->ChaDestroy(); DieTime(); if( _pEvent ) { _pEvent->SetIsValid( false ); _pEvent = NULL; } _DetachAllItem(); for( int i=0; i<enumEQUIP_NUM; i++ ) { if( _pHandItem[i] ) { _pHandItem[i]->SetValid( FALSE ); _pHandItem[i] = NULL; } } for( int i=0; i<ITEM_FACE_MAX; i++ ) { if( _pItemFaceEff[i] ) { _pItemFaceEff[i]->SetValid( FALSE ); _pItemFaceEff[i] = NULL; } } memset( _ItemFace,0,sizeof(_ItemFace) ); GetScene()->HandleSceneMsg(SCENEMSG_CHA_DESTROY, getID()); } else { SetPoseKeyFrameProc( __keyframe_proc, (void*)this ); } } ---------------------------------------- bool CCharacter::PlayPose( DWORD pose, DWORD type, int time, int fps, bool isBlend ) if (GetIsOnMount()) { if (pMount) { pMount->setYaw(3); pMount->PlayPose(pose, type, time, fps, isBlend); int chatype = (this->GetDefaultChaInfo()->lID); pose = ((chatype == 1 || chatype == 2 || chatype == 3 || chatype == 4) ? POSE_SEAT2 : POSE_SEAT); } } ------------------------------------------ bool CCharacter::UpdataItem( int nItem, DWORD nLink ) switch(nLink){ case enumEQUIP_MOUNT:{ if (dynamic_cast<CWorldScene*>(_pScene)) { int ID = GetPart().SLink[nLink].sID; CItemRecord* pInfo = GetItemRecordInfo( ID); if(pMount && ID!=oldmount ){ setHeightOff(GetDefaultChaInfo()->fHeight); pMount->SetValid(FALSE); pMount->removeLink(); pMount = NULL; PlayPose(POSE_SHOW); this->oldmount = 0; } if (nItem > 0 && !GetIsPK() && pCha->IsPlayer() ) { if (!pMount && pInfo ) { int mountid = pInfo->sItemEffect[0]; int mHeight = pInfo->sItemEffect[1]; pMount = _pScene->AddCharacter(mountid); pMount->setName(pInfo->szName); setHeightOff(mHeight); int chatype = (this->GetDefaultChaInfo()->lID); std::string model = pInfo->chModule[chatype]; std::istringstream mountbone(model); mountbone >> std::hex >> mountboneID; pMount->linkTo(this, mountboneID); pMount->setChaCtrlType(8); pMount->setMobID(mountid); pMount->_Attr.set(ATTR_LV, 10); } } else { if (pMount) { setHeightOff(GetDefaultChaInfo()->fHeight); pMount->SetValid(FALSE); pMount->removeLink(); pMount = NULL; PlayPose(POSE_WAITING); this->oldmount = 0; } } } } ---------------------------- bool CCharacter::GetIsOnMount(){ if(!g_stUIBoat.GetHuman()){ return false; } if(GetIsForUI()){ return false; } return static_cast<bool>(pMount); } Character.h Line 548 protected: CCharacter* pMount; int mountboneID; int oldmount; How to add a mount? Iteminfo: 9624 Cuddly Lamb Mount n1774 10130005 0 0 0 0 0 0 90 0 0 0 0 0 1 1 1 1 1 1 0 -1 0 -1 0 0 18 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 60,60 0,0 0,0 0 1000,1000 1000,1000 3 0 0 0 0 0 0 0 0 0 0 0 0 125,85 0 0 Your personal pet. Double Click To Ride 1 125 = monster model(you can find it in characterinfo.txt) 85 = height(you can modify it depending on the mount height) Note: It's not complete yet, character is not attached properly to the mount bone. You will notice the animation is pretty static, however if anyone finds a solution for it, you can share it here.