Jump to content

Roxas07

Banned
  • Posts

    101
  • Joined

  • Last visited

  • Days Won

    9
  • Feedback

    0%

Everything posted by Roxas07

  1. can you share maybe .cpp and .h files %90 have failed sry for my english.. Sorry I share any source file.
  2. I test my proper tutorial in other source launcher of mine and he work without problem:
  3. try this model: [Hidden Content] Of course this system is not the official and don't work like the official. I simply add a skeleton to the model sash . And I edit some part of playersettingmodule.py for example: chrmgr.RegisterAttachingBoneName(chr.PART_WING, "equip_right_hand") so I change the bone name "equip_right_hand" .
  4. Up, In NetworkActorManager.cpp search this function: void CNetworkActorManager::UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData) and replace it by: void CNetworkActorManager::UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData) { std::map<DWORD, SNetworkActorData>::iterator f=m_kNetActorDict.find(c_rkNetUpdateActorData.m_dwVID); if (m_kNetActorDict.end()==f) { #ifdef _DEBUG TraceError("CNetworkActorManager::UpdateActor(dwVID=%d) - NOT EXIST VID", c_rkNetUpdateActorData.m_dwVID); #endif return; } SNetworkActorData& rkNetActorData=f->second; CInstanceBase* pkInstFind=__FindActor(rkNetActorData); if (pkInstFind) { pkInstFind->ChangeArmor(c_rkNetUpdateActorData.m_dwArmor); pkInstFind->ChangeWeapon(c_rkNetUpdateActorData.m_dwWeapon); pkInstFind->ChangeHair(c_rkNetUpdateActorData.m_dwHair); pkInstFind->ChangeWing(c_rkNetUpdateActorData.m_dwWing); pkInstFind->ChangeGuild(c_rkNetUpdateActorData.m_dwGuildID); pkInstFind->SetAffectFlagContainer(c_rkNetUpdateActorData.m_kAffectFlags); pkInstFind->SetMoveSpeed(c_rkNetUpdateActorData.m_dwMovSpd); pkInstFind->SetAttackSpeed(c_rkNetUpdateActorData.m_dwAtkSpd); pkInstFind->SetAlignment(c_rkNetUpdateActorData.m_sAlignment); pkInstFind->SetPKMode(c_rkNetUpdateActorData.m_byPKMode); pkInstFind->SetStateFlags(c_rkNetUpdateActorData.m_dwStateFlags); //if( c_rkNetUpdateActorData.m_dwMountVnum != 0 ) //{ // pkInstFind->MountHorse(c_rkNetUpdateActorData.m_dwMountVnum); //} //else //{ // if( pkInstFind->IsMountingHorse() ) // { // pkInstFind->DismountHorse(); // } //} } rkNetActorData.m_kAffectFlags=c_rkNetUpdateActorData.m_kAffectFlags; rkNetActorData.m_dwGuildID=c_rkNetUpdateActorData.m_dwGuildID; //rkNetActorData.m_dwLevel=c_rkNetUpdateActorData.m_dwLevel; rkNetActorData.m_dwMovSpd=c_rkNetUpdateActorData.m_dwMovSpd; rkNetActorData.m_dwAtkSpd=c_rkNetUpdateActorData.m_dwAtkSpd; rkNetActorData.m_dwArmor=c_rkNetUpdateActorData.m_dwArmor; rkNetActorData.m_dwWeapon=c_rkNetUpdateActorData.m_dwWeapon; rkNetActorData.m_dwHair=c_rkNetUpdateActorData.m_dwHair; rkNetActorData.m_dwWing=c_rkNetUpdateActorData.m_dwWing; rkNetActorData.m_sAlignment=c_rkNetUpdateActorData.m_sAlignment; rkNetActorData.m_byPKMode=c_rkNetUpdateActorData.m_byPKMode; } void CNetworkActorManager::MoveActor(const SNetworkMoveActorData& c_rkNetMoveActorData) { std::map<DWORD, SNetworkActorData>::iterator f=m_kNetActorDict.find(c_rkNetMoveActorData.m_dwVID); if (m_kNetActorDict.end()==f) { #ifdef _DEBUG TraceError("CNetworkActorManager::MoveActor(dwVID=%d) - NOT EXIST VID", c_rkNetMoveActorData.m_dwVID); #endif return; } SNetworkActorData& rkNetActorData=f->second; CInstanceBase* pkInstFind=__FindActor(rkNetActorData, c_rkNetMoveActorData.m_lPosX, c_rkNetMoveActorData.m_lPosY); if (pkInstFind) { TPixelPosition kPPosDst; kPPosDst.x=float(c_rkNetMoveActorData.m_lPosX); kPPosDst.y=float(c_rkNetMoveActorData.m_lPosY); kPPosDst.z=0.0f; pkInstFind->PushTCPState(c_rkNetMoveActorData.m_dwTime, kPPosDst, c_rkNetMoveActorData.m_fRot, c_rkNetMoveActorData.m_dwFunc, c_rkNetMoveActorData.m_dwArg); } rkNetActorData.SetDstPosition(c_rkNetMoveActorData.m_dwTime, c_rkNetMoveActorData.m_lPosX, c_rkNetMoveActorData.m_lPosY, c_rkNetMoveActorData.m_dwDuration); rkNetActorData.m_fRot=c_rkNetMoveActorData.m_fRot; }
  5. In ItemData.cpp search the Getter function : BOOL CItemData::IsEquipment() const Replace the function by that: BOOL CItemData::IsEquipment() const { switch (GetType()) { case ITEM_TYPE_USE: if (GetSubType() == ITEM_TYPE_SPECIAL){ switch (m_ItemTable.dwVnum){ case 85001: case 85002: case 85003: case 85004: case 85005: case 85006: case 85007: case 85008: case 85009: case 85010: case 85011: case 85012: case 85013: case 85014: case 85015: case 85016: return TRUE; } } break; case ITEM_TYPE_WEAPON: case ITEM_TYPE_ARMOR: return TRUE; break; } return FALSE; } And now open PythonCharacterModule.cpp replace the function : PyObject * chrCreateInstance(PyObject* poSelf, PyObject* poArgs) by that: PyObject * chrCreateInstance(PyObject* poSelf, PyObject* poArgs) { int iVirtualID; if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID)) return Py_BuildException(); if (PyTuple_Size(poArgs)==2) { PyObject* poDict=PyTuple_GetItem(poArgs, 1); if (!PyDict_Check(poDict)) return Py_BuildException(); CInstanceBase::SCreateData kCreateData; kCreateData.m_bType=CActorInstance::TYPE_PC; kCreateData.m_dwLevel = 0; kCreateData.m_dwGuildID=0; kCreateData.m_dwEmpireID=0; kCreateData.m_dwVID=iVirtualID; kCreateData.m_dwMountVnum=0; kCreateData.m_dwRace=0; kCreateData.m_fRot=CInstanceBase::DIR_NORTH; kCreateData.m_lPosX=0; kCreateData.m_lPosY=0; kCreateData.m_stName="NONAME"; kCreateData.m_dwStateFlags=0; kCreateData.m_dwMovSpd=100; kCreateData.m_dwAtkSpd=100; kCreateData.m_sAlignment=0; kCreateData.m_byPKMode=0; kCreateData.m_kAffectFlags.Clear(); kCreateData.m_dwArmor=8; kCreateData.m_dwWeapon=0; kCreateData.m_dwHair=0; kCreateData.m_dwWing = 0; kCreateData.m_isMain=false; PyObject* poHorse=PyDict_GetItemString(poDict, "horse"); if (poHorse) kCreateData.m_dwMountVnum=PyLong_AsLong(poHorse); PyObject* poX=PyDict_GetItemString(poDict, "x"); if (poX) kCreateData.m_lPosX=PyLong_AsLong(poX); PyObject* poY=PyDict_GetItemString(poDict, "y"); if (poY) kCreateData.m_lPosX=PyLong_AsLong(poY); CPythonCharacterManager::Instance().CreateInstance(kCreateData); } else { CPythonCharacterManager::Instance().RegisterInstance(iVirtualID); } return Py_BuildNone(); }
  6. No problem, I don't share the part of combinaison acce, I sell it and bonus part also , but is very easy to program it.
  7. Do not forgot to add WEAR_SHOULDER on the ItemData.h file enum EWearPositions { WEAR_BODY, // 0 WEAR_HEAD, // 1 WEAR_FOOTS, // 2 WEAR_WRIST, // 3 WEAR_WEAPON, // 4 WEAR_NECK, // 5 WEAR_EAR, // 6 WEAR_UNIQUE1, // 7 WEAR_UNIQUE2, // 8 WEAR_ARROW, // 9 WEAR_SHIELD, // 10 WEAR_SHOULDER, WEAR_MAX_NUM, };
  8. Open WeaponTrace.h and add bool SetWingInstance(CGraphicThingInstance * pInstance, DWORD dwModelIndex, const char * c_szBoneName); Open WeaponTrace.cpp and add bool CWeaponTrace::SetWingInstance(CGraphicThingInstance * pInstance, DWORD dwModelIndex, const char * c_szBoneName) { pInstance->Update(); pInstance->DeformNoSkin(); D3DXVECTOR3 v3Min; D3DXVECTOR3 v3Max; if (!pInstance->GetBoundBox(dwModelIndex, &v3Min, &v3Max)) return false; m_iBoneIndex = 0; m_dwModelInstanceIndex = dwModelIndex; m_pInstance = pInstance; D3DXMATRIX * pmat; pInstance->GetBoneMatrix(dwModelIndex, 0, &pmat); D3DXVECTOR3 v3Bone(pmat->_41, pmat->_42, pmat->_43); m_fLength = sqrtf( fMAX( D3DXVec3LengthSq(&(v3Bone - v3Min)), D3DXVec3LengthSq(&(v3Bone - v3Max)) ) ); return true; } Do not forgot the playermodulesetting.py part
  9. Open PythonItemModule.cpp replace the Costume Part slot by that: #ifdef ENABLE_COSTUME_SYSTEM PyModule_AddIntConstant(poModule, "ITEM_TYPE_COSTUME", CItemData::ITEM_TYPE_COSTUME); // Item Sub Type PyModule_AddIntConstant(poModule, "COSTUME_TYPE_BODY", CItemData::COSTUME_BODY); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_HAIR", CItemData::COSTUME_HAIR); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_MOUNT", CItemData::USE_SPECIAL); // Àκ¥Å丮 ¹× Àåºñâ¿¡¼­ÀÇ ½½·Ô ¹øÈ£ PyModule_AddIntConstant(poModule, "COSTUME_SLOT_START", c_Costume_Slot_Start); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_COUNT", c_Costume_Slot_Count); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_BODY", c_Costume_Slot_Body); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_HAIR", c_Costume_Slot_Hair); PyModule_AddIntConstant(poModule, "COSTUME_MOUNT_SLOT_START", c_Costume_Mount_Slot_Start); PyModule_AddIntConstant(poModule, "COSTUME_MOUNT_SLOT_COUNT", c_Costume_Mount_Slot_Count); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_MOUNT", c_Costume_Mount_Slot_Shoulder); PyModule_AddIntConstant(poModule, "COSTUME_MOUNT_SLOT_END", c_Costume_Mount_Slot_End); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_END", c_Costume_Slot_End); #endif Open GameType.h add after the #ifdef ENABLE_COSTUME_SYSTEM #endinf that: #ifdef ENABLE_MOUNT_COSTUME_SYSTEM const DWORD c_Costume_Mount_Slot_Start = c_Equipment_Start + 24; // [ÁÖÀÇ] ¼ýÀÚ(19) ÇϵåÄÚµù ÁÖÀÇ. ÇöÀç ¼­¹ö¿¡¼­ ÄÚ½ºÃõ ½½·ÔÀº 19ºÎÅÍÀÓ. ¼­¹ö common/length.h ÆÄÀÏÀÇ EWearPositions ¿­°ÅÇü Âü°í. const DWORD c_Costume_Mount_Slot_Shoulder = c_Costume_Slot_Start + 0; const DWORD c_Costume_Mount_Slot_Count = 1; const DWORD c_Costume_Mount_Slot_End = c_Costume_Mount_Slot_Start + c_Costume_Mount_Slot_Count; #endif
  10. Up I forgot something: -PythonCharacterModule.cpp Search : PyModule_AddIntConstant(poModule, "PART_HEAD", CRaceData::PART_HEAD); Add after that PyModule_AddIntConstant(poModule, "PART_WING", CRaceData::PART_WING); In playersettingmodule.py of root Add on all LoadRace chrmgr.RegisterAttachingBoneName(chr.PART_WING, "equip_right_hand") equip_right_hand is an example you can add other Bone for attach the Sash item.
  11. Up, I prepare the combinaison System of the sash system, this system of combinaison is not free. Follow my market post :
  12. No problem if you need perfect files go to my other post of my market:
  13. Hello everybody , I share for you a tutoriel by me for install Shoulder System . This is not the official System Shoulder so , do not use in live version, this system is stable but all risk's is yours. [Hidden Content] This system is made quickly by me, if you want New System who not exist or powerfull Game Files you can contact me At my skype: roxasledieutoutpuissant You can see more information of my market in my website: [Hidden Content] Summary: I. Part Server: -Implement new Part of the body player, -Equipment Part of the player. -Implement function equipment of item Sash. -Communication for receive/send part of the Shoulder System. II. Part Client: -Implement new Part of the body player. -Equipment Part of the player. -Communication for receive/send part of the Shoulder System. -Implement new Part MSM for all race. Let's Start now ! 1.Implement new Part of the body player: -Open Header file on the folder Common/lenght.h. -Search: enum EWearPositions . -Add Before WEAR_MAX --> WEAR_SHOULDER, // 24 - Shoulder System Like that: - Now search on header file Lenght.h : enum EParts - Add before PART_MAX_NUM, --> PART_WING, Like that: 2. Equippment part of the body player - Now go to your source of your game. - Open Packet.h and search that --> enum ECharacterEquipmentPart - Add before CHR_EQUIPPART_NUM --> CHR_EQUIPPART_WING, Like that: -Now we open char.cpp for packet communication. -Search all [CHR_EQUIPPART_HAIR] = GetPart(PART_HAIR); -Add after : addPacket.awPart[CHR_EQUIPPART_WING] = GetPart(PART_WING); Like that: -Open char_item.cpp -Search that function : bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) -Search in that function: case USE_SPECIAL: switch (item->GetVnum()) { and add this part of code: Now all of part server is implemented: Lets start client part ! - Open your packet.h - Search the enumeration and add CHR_EQUIPPART_WING, before CHR_EQUIPPART_NUM like that: - Open RaceData.h in GameLib solution - Add the PART_WING like that: On this Header file search the Structure SHair Add the Struc SWing after : On this header file search the void function SetHairSkin: Add after: Already in this header file search this function: Add after that the new function FindWing: Already in this header file XD search that variable: Add after : Now i'm too busy for explain other part so I share for you the cpp file: RaceDateFile.cpp NetworkActorManager.h: ActorInstanceData.cpp: ActorInstanceAttach.cpp: PythonNetworkStreamPhaseGameActor.cpp In ItemData.cpp search the Getter function : BOOL CItemData::IsEquipment() const Replace the function by that: And now open PythonCharacterModule.cpp replace the function : PyObject * chrCreateInstance(PyObject* poSelf, PyObject* poArgs) by that: In NetworkActorManager.cpp search this function: void CNetworkActorManager::UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData) and replace it by: -PythonCharacterModule.cpp Search : PyModule_AddIntConstant(poModule, "PART_HEAD", CRaceData::PART_HEAD); Add after that PyModule_AddIntConstant(poModule, "PART_WING", CRaceData::PART_WING); In playersettingmodule.py of root Add on all LoadRace chrmgr.RegisterAttachingBoneName(chr.PART_WING, "equip_right_hand") equip_right_hand is an example you can add other Bone for attach the Sash item. And now MSM code , you need add it on all msm of race character: Now the result Ingame: Ah yes I forgot the uiscript file and root file The link: [Hidden Content]/produit/sash_system.tgz Model link: [Hidden Content]/produit/UpdateSash.tgz This system is made quickly, if you want New System who not exist or Game Files you can contact me At my skype: roxasledieutoutpuissant You can see more information of my market in my website: [Hidden Content] Have a fun
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.