ryzom / ryzomcore

Ryzom Core is the open-source project related to the Ryzom game. This community repository is synchronized with the Ryzom Forge repository, based on the Core branch.
https://wiki.ryzom.dev
GNU Affero General Public License v3.0
331 stars 89 forks source link

Item Equipment Error #590

Closed Argez closed 4 years ago

Argez commented 4 years ago

Ryzom Core technology seems very interesting to me and I like it

When I try to equip a character with any item, the system shows that it is charging, however, it is not equipped. I have been debugging the client code and I see that these errors are generated in the client log

03/12 21:40:48 INF 5f64 ryzom_client_r.exe net_manager.cpp 517 impulseShardId : WEB: Received SHARD_ID 302, web hosted at 'http://localhost:55555/', using 'http://localhost:55555/' 2020/03/12 21:40:48 WRN 5f64 ryzom_client_r.exe entities.cpp 1268 CEntityManager::remove : CEntityManager::remove : Cannot remove the entity in the slot 0 (user slot). 2020/03/12 21:40:48 WRN 5f64 ryzom_client_r.exe net_manager.cpp 3847 CNetManager::update : CNetManager::update : entity in the slot '0' has not been created. 2020/03/12 21:40:48 WRN 5f64 ryzom_client_r.exe user_entity.cpp 776 CUserEntity::mode : Invalid behaviour change. 2020/03/12 21:40:48 WRN 5f64 ryzom_client_r.exe player_cl.cpp 665 CPlayerCL::computeAnimSet : PL:computeAnimSet:0: not a male or a female (gender=3). 2020/03/12 21:40:55 WRN 5f64 ryzom_client_r.exe skill_manager.cpp 1019 CSkillManager::blockTitleFromServer : server tries to block a title that is not reserved 2020/03/12 21:40:56 INF 5f64 ryzom_client_r.exe net_manager.cpp 2884 impulseInitInventory : DB_INIT:INV done (258 bytes) 2020/03/12 21:41:02 INF 5f64 ryzom_client_r.exe common.cpp 827 NLMISC::Exception::Exception : Exception will be launched: idx 31 > _Nodes.size() 28 2020/03/12 21:41:02 WRN 5f64 ryzom_client_r.exe net_manager.cpp 176 impulseDatabaseInitPlayer : Problem while decoding a DB_INIT:PLR msg, skipped: idx 31 > _Nodes.size() 28 2020/03/12 21:41:23 WRN 5f64 ryzom_client_r.exe action_handler.cpp 282 NLGUI::CAHManager::runActionHandler : no action handler 2020/03/12 21:42:10 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:10 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:10 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:11 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:11 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:11 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226 NL3D::CTextureDrvInfosGL::initFrameBufferObject : Framebuffer incomplete attachment 2020/03/12 21:42:11 WRN 5f64 ryzom_client_r.exe driver_opengl_texture.cpp 226

2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 588 CCharacterCL::buildEquipment : This is a reference on an item (the file is store with an UPPER case so check in UPPER CASE). 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 593 CCharacterCL::buildEquipment : IS the item a valid one ? 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 597 CCharacterCL::buildEquipment : Is it stored in the database ? 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 588 CCharacterCL::buildEquipment : This is a reference on an item (the file is store with an UPPER case so check in UPPER CASE). 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 593 CCharacterCL::buildEquipment : IS the item a valid one ? 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 597 CCharacterCL::buildEquipment : Is it stored in the database ? 2020/03/13 20:34:21 WRN 4f68 ryzom_client_r.exe character_cl.cpp 652 CCharacterCL::buildEquipment : CH::buildEquipment: the sheet 'light_slashing_arms.item' is not stored in the database. 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 588 CCharacterCL::buildEquipment : This is a reference on an item (the file is store with an UPPER case so check in UPPER CASE). 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 593 CCharacterCL::buildEquipment : IS the item a valid one ? 2020/03/13 20:34:21 INF 4f68 ryzom_client_r.exe character_cl.cpp 597 CCharacterCL::buildEquipment : Is it stored in the database ?

I have these questions: What can be the cause of this? I do not know if I am missing something in the configuration of the game data. In which client files is the information related to the items stored? Which server service is responsible for receiving the item data from the client?

Greetings and attentive to your comments

Argez commented 4 years ago

I also get this error

2020/03/13 20:34:20 WRN 4f68 ryzom_client_r.exe character_cl.cpp 652 CCharacterCL::buildEquipment : CH::buildEquipment: the sheet 'light_slashing_arms.item' is not stored in the database.

kaetemi commented 4 years ago

Sounds like your leveldesign sheets are mismatching or not fully built?

Argez commented 4 years ago

Good morning, I have another question:

What method do you suggest that allows verifying that the sheets match?

The procedure I did to generate the game data was as follows: Download the data from the urls: https://bitbucket.org/ryzom/ryzomcore-data http://dl.kaetemi.be/ryzom/assets/ryzom_assets_rev4.7z http://dl.kaetemi.be/ryzom/bin/ryzom_assets_export_rev4.7z

I built the game data, with the guidance of https://wiki.ryzom.dev/en/building_game_data. Just run all_dev.bat

After everything was generated, I went to the path T: \ client_dev \ data and copied all the package_sheets inside the client

greetings and attentive to your comments.

kaetemi commented 4 years ago

Rule of thumb. If you're copying things by hand, you're either fixing some bug, or doing something wrong.

Script b1_client_dev.py generates the client folder with config pointing at the necessary data already. You can run that as-is, or use it as a working dir for a debug client.

Argez commented 4 years ago

Thanks for the info.

I'm going to try again by generating the game data.

In the data generation process, the .bnp files are also generated, or are only the package_sheets ?.

When executing the process, notice that only the sheets_package are generated for me.

greetings and attentive to your comments.

kaetemi commented 4 years ago

BNP files are generated as part of client patch process, not necessary for development client. Packed sheets and regular assets are good.

Argez commented 4 years ago

Good evening,

I made the configuration in dev without using bnp, it still doesn't work for me I have been testing and debugging the code using log to better understand the operation, and I had these questions:

What is the difference between files ending with extension .item and those ending with extension .sitem? I was seeing that every time the item information is loaded it always compares with the data in sheet_id.bin. What is sheet_id.bin for? Are there files of type light_slashing_head.item that are loaded that have none.shape ?, what is none.shape for?

greetings and attentive to your comments.

Argez commented 4 years ago

Good night.

I was doing tests and observed that the data and all the information of the item if they load me well.

The problem I have is in the player_cl.cpp class in the updateVisualPropertyVpa method. There is a variable (visualA) that is obtained from the prop parameter. When that variable is used to get the index (which is used to search for the item in visualSlot) I always get 0.

The question I have is where does that prop data come from?

This is the method

void CPlayerCL :: updateVisualPropertyVpa (const NLMISC :: TGameCycle & / gameCycle /, const sint64 & prop)

greetings and attentive to your comments.

kaetemi commented 4 years ago

There's a file, I think it's called visual_slot.tab. It contains the mapping from slot id to sheet id. It's generated by the build tools. It must be the same on server and client.

Argez commented 4 years ago

Thank you very much for the information, I am going to test and review how I have that file.

greetings and attentive to your comments.

Argez commented 4 years ago

A question:

How this line of code works: SPropVisualA visualA = (SPropVisualA ) (& prop); located in void CPlayerCL :: updateVisualPropertyVpa (const NLMISC :: TGameCycle & / gameCycle /, const sint64 & prop)

During debugging, I am observing that prop has a value 1049089 and after passing it in SPropVisualA visualA = (SPropVisualA ) (& prop); visualA obtains the following values:

visualA.PropertySubData.Sex = 1 visualA.PropertySubData.JacketModel = 0 visualA.PropertySubData.JacketColor = 1 visualA.PropertySubData.TrouserModel = 0 visualA.PropertySubData.TrouserColor = 1 visualA.PropertySubData.WeaponRightHand = 0

As SPropVisualA visualA = (SPropVisualA ) (& prop); does this assignment?

greetings and attentive to your comments.

Argez commented 4 years ago

Good afternoon, thank you very much for the help, it works well for me. I did what you told me and also made some modifications to the code to make it easier to handle the visual_slot.tab

kaetemi commented 4 years ago

Great. Feel free to share any improvements you have.