jmkl009 / PalworldCharacterTransfer

This script transfers character between worlds in Palworld, which allows friends to transfer their characters to each other's server without losing one's progress.
121 stars 7 forks source link

Guild issue #6

Closed uythoang closed 7 months ago

uythoang commented 7 months ago

I was able to use this to transfer my character from one dedicated server to another. However, in the new server I am no longer associated with my guild so I do not have access to my base.

jmkl009 commented 7 months ago

Right, please use other script for your specific purpose. This script is meant to transfer character only and is not compatible with the way you have transferred your base. I apologize, but the main purpose of the script is to cause minmal effect to the existing new world. As a result, the transferred character takes on the guild ID of the new character to account for the case where the new character already joined a guild. This new guild ID is different from the guild your base belongs to and thus you can no longer access your base. To transfer both your base and character, please use other scripts available.

uythoang commented 7 months ago

Ah okay. Could you suggest any scripts that might work for my purposes? Thanks.

BrotherCal commented 7 months ago

Ah okay. Could you suggest any scripts that might work for my purposes? Thanks. https://github.com/xNul/palworld-host-save-fix

however, you can fix this yourself as I've just done.

within the level.sav you will have the guild information, you need to replace this with your new character information and find the associated group_ID and attach that to your character e.g.

If you search your guild name you will find the following - the key is your (Group_ID), Guild name - self explanatory, admin/player uid should be copied from your player info as detailed later, ensure you replace the group_name with your new UID as well as the individual_character_handle_ids:

                            "key": "c0f56c50-b3bc-41c4-ab9b-041a17e6dd0b",
                            "value": {
                                "GroupType": {
                                    "id": null,
                                    "value": {
                                        "type": "EPalGroupType",
                                        "value": "EPalGroupType::Guild"
                                    },
                                    "type": "EnumProperty"
                                },
                                "RawData": {
                                    "array_type": "ByteProperty",
                                    "id": null,
                                    "value": {
                                        "group_type": "EPalGroupType::Guild",
                                        "group_id": "c0f56c50-b3bc-41c4-ab9b-041a17e6dd0b",
                                        "group_name": "86612e2c000000000000000000000000",
                                        "individual_character_handle_ids": [
                                            {
                                                "guid": "86612e2c-0000-0000-0000-000000000000",
                                                "instance_id": "6dcbc7e3-fa25-416b-b194-4e7b1299ff5c"
                                            },
"org_type": 0,
                                        "base_ids": [
                                            "b7f8ff46-fcf4-486e-9ee7-5c26b65fbdcb",
                                            "29d72add-9af5-466a-a391-a2cb76905d60"
                                        ],
                                        "base_camp_level": 20,
                                        "map_object_instance_ids_base_camp_points": [
                                            "2c725ef0-7c17-4825-8814-8c74556d5e54",
                                            "5ae50443-2336-4206-a165-977f6d9dec30"
                                        ],
                                        "guild_name": "your guild name",
                                        "admin_player_uid": "your User_ID code-0000-0000-0000-000000000000",
                                        "players": [
                                            {
                                                "player_uid": "your User_ID code-0000-0000-0000-000000000000",
                                                "player_info": {
                                                    "last_online_real_time": 10574212330000,
                                                    "player_name": "insert player name"

for the character association with the group look within "struct_type": "PalIndividualCharacterSaveParameter", or search for "NickName" until you find yours, you want your old character to have the value of your new under the "PlayerUId"

                            "key": {
                                "PlayerUId": {
                                    "struct_type": "Guid",
                                    "struct_id": "00000000-0000-0000-0000-000000000000",
                                    "id": null,
                                    "value": "86612e2c-0000-0000-0000-000000000000",
                                    "type": "StructProperty"
                                },
                                "InstanceId": {
                                    "struct_type": "Guid",
                                    "struct_id": "00000000-0000-0000-0000-000000000000",
                                    "id": null,
                                    "value": "e4e7a8af-4e32-241e-f06f-ea8b431c3194",
                                    "type": "StructProperty"
                                },
                                "DebugName": {
                                    "id": null,
                                    "value": "",
                                    "type": "StrProperty"
                                }
                            },
                            "value": {
                                "RawData": {
                                    "array_type": "ByteProperty",
                                    "id": null,
                                    "value": {
                                        "object": {
                                            "SaveParameter": {
                                                "struct_type": "PalIndividualCharacterSaveParameter",
                                                "struct_id": "00000000-0000-0000-0000-000000000000",
                                                "id": null,
                                                "value": {
                                                    "Level": {
                                                        "id": null,
                                                        "value": 20,
                                                        "type": "IntProperty"
                                                    },
                                                    "Exp": {
                                                        "id": null,
                                                        "value": 40381,
                                                        "type": "IntProperty"
                                                    },
                                                    "NickName": {
                                                        "id": null,
                                                        "value": "BrotherCal",
                                                        "type": "StrProperty"

there will be towards the bottom "group_id": "ensure this matches your guilds Group_ID as found previously"

                                        "group_id": "c0f56c50-b3bc-41c4-ab9b-041a17e6dd0b"
                                    },
                                    "type": "ArrayProperty",
                                    "custom_type": ".worldSaveData.CharacterSaveParameterMap.Value.RawData"
                                }
                            }
                        },
uythoang commented 7 months ago

@BrotherCal That worked perfectly, thanks!