The error only appears in build. I can't set a break in debug.

Options
Volk
Volk
Hello!
Sorry for my English! :)

This error only appears in a clean build.

AA.png

There is no error if the project is built in Development Build.

BB.png

I don't understand why? Please explain what could be the reason? Why does this only happen in a clean build?

Thanks! :)


THE CODE IS:

   void Start() {

            Player subject = CommunicationController.Instance.Subject;
            Info info = subject.Info;
            Model activeModel = info.GetActiveModel();

            List<Item> items = subject.GetAllDressedItemListByModel(activeModel.Uid);
            object[] allDressedItems = Utils.Instance.GetItemsByObject(items);

            PhotonSerialization_PlayerDressItems photonSerialization_PlayerDressItems = new PhotonSerialization_PlayerDressItems();

            photonSerialization_PlayerDressItems.playerUid = info.Uid;
            photonSerialization_PlayerDressItems.modelUid = activeModel.Uid;
            photonSerialization_PlayerDressItems.items = allDressedItems;
           
            _photonView.RPC(
                "RPC_UpdateSubjectItemsToAllObjects",
                RpcTarget.OthersBuffered,
                photonSerialization_PlayerDressItems
            );
    }

    [PunRPC]
    private void RPC_UpdateSubjectItemsToAllObjects(PhotonSerialization_PlayerDressItems data) {

        Player subject = CommunicationController.Instance.Subject;
        Info info = subject.Info;
        Model activeModel = info.GetActiveModel();
     
        object[] items = data.items;

        object o;

        long itemUid;
        int itemSid;
        short itemId;
        byte itemSlot;
        double durability;

        for (int i = 0; i < items.Length; i++) {

            o = items[i];

            itemUid = (long)o.GetType().GetProperty(CSymbols.ITEM_UID).GetValue(o);
            itemSid = (int)o.GetType().GetProperty(CSymbols.ITEM_SID).GetValue(o);
            itemId = (short)o.GetType().GetProperty(CSymbols.ITEM_ID).GetValue(o);
            itemSlot = (byte)o.GetType().GetProperty(CSymbols.ITEM_SLOT).GetValue(o);
            durability = (double)o.GetType().GetProperty(CSymbols.DURABILITY).GetValue(o);           
        }


THE ERROR IS (there are no null objects in class PhotonSerialization_PlayerDressItems):

--->---> [Attantion!][Object] info.Uid = 27 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

--->---> [Attantion!][Object] activeModel.Uid = 80 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

--->---> [Attantion!][Object] items = System.Collections.Generic.List`1[Item] 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

--->---> [Attantion!][Object] items.Count = 12 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

--->---> [Attantion!][Object] allDressedItems = System.Object[] 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

--->---> [Attantion!][Object] allDressedItems.Length = 12 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

NullReferenceException: Object reference not set to an instance of an object
  at PhotonSerialization_PlayerDressItems.Serialize (System.Object obj) [0x0007d] in <732d577847d5461a935eed785504aa9e>:0 
  at ExitGames.Client.Photon.Protocol18.WriteCustomTypeBody (ExitGames.Client.Photon.CustomType customType, ExitGames.Client.Photon.StreamBuffer stream, System.Object value) [0x0000f] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00072] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00130] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00028] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.WriteObjectArray (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.IList array, System.Boolean writeType) [0x0002c] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x002b0] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00028] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.WriteHashtable (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00056] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x001f3] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00028] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.WriteParameterTable (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.Generic.Dictionary`2[TKey,TValue] parameters) [0x0005b] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.Protocol18.SerializeOperationRequest (ExitGames.Client.Photon.StreamBuffer stream, System.Byte operationCode, System.Collections.Generic.Dictionary`2[TKey,TValue] parameters, System.Boolean setType) [0x0001a] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.EnetPeer.SerializeOperationToMessage (System.Byte opCode, System.Collections.Generic.Dictionary`2[TKey,TValue] parameters, ExitGames.Client.Photon.EgMessageType messageType, System.Boolean encrypt) [0x0003f] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.EnetPeer.EnqueueOperation (System.Collections.Generic.Dictionary`2[TKey,TValue] parameters, System.Byte opCode, ExitGames.Client.Photon.SendOptions sendParams, ExitGames.Client.Photon.EgMessageType messageType) [0x00145] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at ExitGames.Client.Photon.PhotonPeer.SendOperation (System.Byte operationCode, System.Collections.Generic.Dictionary`2[TKey,TValue] operationParameters, ExitGames.Client.Photon.SendOptions sendOptions) [0x00044] in <4b587e77bed14e2a8c1863b7fba8c788>:0 
  at Photon.Realtime.LoadBalancingPeer.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x0014b] in <4233eb265ca745d389f00797a19bd6e3>:0 
  at Photon.Realtime.LoadBalancingClient.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x0002a] in <4233eb265ca745d389f00797a19bd6e3>:0 
  at Photon.Pun.PhotonNetwork.RaiseEventInternal (System.Byte eventCode, System.Object eventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x0002c] in <7473329db3e14158b822039fa384df5e>:0 
  at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, Photon.Realtime.Player player, System.Boolean encrypt, System.Object[] parameters) [0x002a2] in <7473329db3e14158b822039fa384df5e>:0 
  at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, System.Boolean encrypt, System.Object[] parameters) [0x0003f] in <7473329db3e14158b822039fa384df5e>:0 
  at Photon.Pun.PhotonView.RPC (System.String methodName, Photon.Pun.RpcTarget target, System.Object[] parameters) [0x00000] in <7473329db3e14158b822039fa384df5e>:0 
  at PhotonRPCController.Update () [0x000f0] in <732d577847d5461a935eed785504aa9e>:0 
 
(Filename: <732d577847d5461a935eed785504aa9e> Line: 0)

Comments

  • JohnTube
    JohnTube ✭✭✭✭✭
    Options
    Hi @Volk,

    The exception is not in PUN code.
    This is an issue in the serialization of a registered custom type.
    Maybe share code of how you register custom type "PlayerDressItem.."? class "PhotonSerialization_PlayerPlayItemStaticMagic".
  • Volk
    Volk
    edited August 2021
    Options
    I put here the actual errors (they are happening now):
    NullReferenceException: Object reference not set to an instance of an object.
      at PhotonSerialization_PlayerDressItems.Serialize (System.Object obj) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Diagnostics.Tracing.EnumHelper`1+Transformer`1[UnderlyingType,ValueType].Invoke (ValueType value) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteObjectArray (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.IList array, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteHashtable (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteParameterTable (ExitGames.Client.Photon.StreamBuffer stream, ExitGames.Client.Photon.ParameterDictionary parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PeerBase.SerializeOperationToMessage (System.Byte opCode, ExitGames.Client.Photon.ParameterDictionary parameters, ExitGames.Client.Photon.EgMessageType messageType, System.Boolean encrypt) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PhotonPeer.SendOperation (System.Byte operationCode, ExitGames.Client.Photon.ParameterDictionary operationParameters, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingPeer.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingClient.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RaiseEventInternal (System.Byte eventCode, System.Object eventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, Photon.Realtime.Player player, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonView.RPC (System.String methodName, Photon.Pun.RpcTarget target, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at PhotonRPCController.Update () [0x00000] in <00000000000000000000000000000000>:0
    
    NullReferenceException: Object reference not set to an instance of an object.
      at PhotonSerialization_PlayerPlayItemStaticMagic.Serialize (System.Object obj) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Diagnostics.Tracing.EnumHelper`1+Transformer`1[UnderlyingType,ValueType].Invoke (ValueType value) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteObjectArray (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.IList array, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteHashtable (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteParameterTable (ExitGames.Client.Photon.StreamBuffer stream, ExitGames.Client.Photon.ParameterDictionary parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PeerBase.SerializeOperationToMessage (System.Byte opCode, ExitGames.Client.Photon.ParameterDictionary parameters, ExitGames.Client.Photon.EgMessageType messageType, System.Boolean encrypt) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PhotonPeer.SendOperation (System.Byte operationCode, ExitGames.Client.Photon.ParameterDictionary operationParameters, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingPeer.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingClient.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RaiseEventInternal (System.Byte eventCode, System.Object eventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, Photon.Realtime.Player player, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonView.RPC (System.String methodName, Photon.Pun.RpcTarget target, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at PhotonRPCController.OnHitNpcStaticMagicPostRetranslation (System.Collections.Hashtable eventParams) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Xml.Schema.XdrBuilder+XdrEndChildFunction.Invoke (System.Xml.Schema.XdrBuilder builder) [0x00000] in <00000000000000000000000000000000>:0 
      at UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) [0x00000] in <00000000000000000000000000000000>:0 
      at UnityEngine.Events.UnityEvent`1[T0].Invoke (T0 arg0) [0x00000] in <00000000000000000000000000000000>:0 
      at SDKBoyEventManager.Update () [0x00000] in <00000000000000000000000000000000>:0
    
  • Volk
    Options
    JohnTube wrote: »
    Hi @Volk,

    The exception is not in PUN code.
    This is an issue in the serialization of a registered custom type.
    Maybe share code of how you register custom type "PlayerDressItem.."? class "PhotonSerialization_PlayerPlayItemStaticMagic".

    Yes, of course, I will now show the code for PhotonSerialization_PlayerPlayItemStaticMagic. But it's strange - why is this error not in the Development Build? o:)
  • JohnTube
    JohnTube ✭✭✭✭✭
    Options
    But it's strange - why is this error not in the Development Build?
    hmm maybe you're connecting to different regions/servers.
    could you check dev region in PhotonServerSettings of development build and compare to region of the other build?
  • Volk
    Options
    JohnTube wrote: »
    But it's strange - why is this error not in the Development Build?
    hmm maybe you're connecting to different regions/servers.
    could you check dev region in PhotonServerSettings of development build and compare to region of the other build?

    Dev Region in Photon is always "ru" (in Photon Server Settings).

    Chat Region:
    _chatClient.ChatRegion = "RU";

    >>>compare to region of the other build<<<
    Which builds should I compare with?
    I run a single build for testing - the current one.
    In testing I'm alone in the room.
  • Volk
    Volk
    edited August 2021
    Options
    JohnTube wrote: »
    Hi @Volk,

    The exception is not in PUN code.
    This is an issue in the serialization of a registered custom type.
    Maybe share code of how you register custom type "PlayerDressItem.."? class "PhotonSerialization_PlayerPlayItemStaticMagic".
    Here is the data serialization/deserialization class PhotonSerialization_PlayerPlayItemStaticMagic.
    I suspect that perhaps the conflict occurs if data.info.Length = 0. IMHO. No?

    using System;
    
    public class PhotonSerialization_PlayerPlayItemStaticMagic : PhotonSerialization {
    
        public static byte[] Serialize(object obj) {
    
            PhotonSerialization_PlayerPlayItemStaticMagic data = (PhotonSerialization_PlayerPlayItemStaticMagic)obj;
    
            byte[] modelUidBytes = IsLittleEndian(BitConverter.GetBytes(data.modelUid));
            byte[] itemUidBytes = IsLittleEndian(BitConverter.GetBytes(data.itemUid));
            byte[] itemIdBytes = IsLittleEndian(BitConverter.GetBytes(data.itemId));
            
            int l = data.info.Length;
    
            byte[] lBytes = IsLittleEndian(BitConverter.GetBytes(l));
    
            byte[] all = JoinBytes(modelUidBytes, itemUidBytes, itemIdBytes, lBytes);
    
            object o;
    
            double xValue;
            double yValue;
            double zValue;
            double wValue;
    
            byte[] xBytes;
            byte[] yBytes;
            byte[] zBytes;
            byte[] wBytes;
    
            for (int i = 0; i < l; i++) {
    
                o = data.info[i];
    
                xValue = (double)o.GetType().GetProperty("x").GetValue(o);
                yValue = (double)o.GetType().GetProperty("y").GetValue(o);
                zValue = (double)o.GetType().GetProperty("z").GetValue(o);
                wValue = (double)o.GetType().GetProperty("w").GetValue(o);
    
                xBytes = IsLittleEndian(BitConverter.GetBytes(xValue));
                all = JoinBytes(all, xBytes);
    
                yBytes = IsLittleEndian(BitConverter.GetBytes(yValue));
                all = JoinBytes(all, yBytes);
    
                zBytes = IsLittleEndian(BitConverter.GetBytes(zValue));
                all = JoinBytes(all, zBytes);
    
                wBytes = IsLittleEndian(BitConverter.GetBytes(wValue));
                all = JoinBytes(all, wBytes);
            }
    
            return all;
        }
    
        public static object Deserialize(byte[] bytes) {
    
            PhotonSerialization_PlayerPlayItemStaticMagic data = new PhotonSerialization_PlayerPlayItemStaticMagic();
    
            int offset = 0;
    
            byte[] modelUidBytes = new byte[4];
            Array.Copy(bytes, offset, modelUidBytes, 0, modelUidBytes.Length);
            modelUidBytes = IsLittleEndian(modelUidBytes);
            data.modelUid = BitConverter.ToInt32(modelUidBytes, 0);
    
            offset += 4;
    
            byte[] itemUidBytes = new byte[8];
            Array.Copy(bytes, offset, itemUidBytes, 0, itemUidBytes.Length);
            itemUidBytes = IsLittleEndian(itemUidBytes);
            data.itemUid = BitConverter.ToInt64(itemUidBytes, 0);
    
            offset += 8;
    
            byte[] itemIdBytes = new byte[4];
            Array.Copy(bytes, offset, itemIdBytes, 0, itemIdBytes.Length);
            itemIdBytes = IsLittleEndian(itemIdBytes);
            data.itemId = BitConverter.ToInt32(itemIdBytes, 0);
    
            offset += 4;
    
            byte[] lBytes = new byte[4];
            Array.Copy(bytes, offset, lBytes, 0, lBytes.Length);
            lBytes = IsLittleEndian(lBytes);
            int l = BitConverter.ToInt32(lBytes, 0);
    
            offset += 4;
    
            data.info = new object[l];
    
            object o;
    
            byte[] xBytes;
            byte[] yBytes;
            byte[] zBytes;
            byte[] wBytes;
    
            double xValue;
            double yValue;
            double zValue;
            double wValue;
    
            for (int i = 0; i < l; i++) {
    
                xBytes = new byte[8];
                Array.Copy(bytes, offset, xBytes, 0, xBytes.Length);
                xBytes = IsLittleEndian(xBytes);
                xValue = BitConverter.ToDouble(xBytes, 0);
    
                offset += 8;
    
                yBytes = new byte[8];
                Array.Copy(bytes, offset, yBytes, 0, yBytes.Length);
                yBytes = IsLittleEndian(yBytes);
                yValue = BitConverter.ToDouble(yBytes, 0);
    
                offset += 8;
    
                zBytes = new byte[8];
                Array.Copy(bytes, offset, zBytes, 0, zBytes.Length);
                zBytes = IsLittleEndian(zBytes);
                zValue = BitConverter.ToDouble(zBytes, 0);
    
                offset += 8;
    
                wBytes = new byte[8];
                Array.Copy(bytes, offset, wBytes, 0, wBytes.Length);
                wBytes = IsLittleEndian(wBytes);
                wValue = BitConverter.ToDouble(wBytes, 0);
    
                offset += 8;
    
                o = new {
                    x = xValue,
                    y = yValue,
                    z = zValue,
                    w = wValue
                };
    
                data.info[i] = o;
            }
    
            return data;
        }
    
        public int modelUid;
        public long itemUid;
        public int itemId;
        public object[] info;
    }
    
    
  • Volk
    Options
    It seems that I need to come for an answer in August 2022... :Do:)
  • There is a RPC method getting called in an Update method, verify whether parameters passed to the methods are Null or not. If its not Null , check whether data or data.info is null in Serialize method
  • Volk
    Options
    There is a RPC method getting called in an Update method, verify whether parameters passed to the methods are Null or not. If its not Null , check whether data or data.info is null in Serialize method

    Ok! I can't check it in the debug (to set a breakpoint), because of this error NEVER occurs in Unity Editor. But I could print out information in Player.log in a clean version. I'll try... :)
  • Volk
    Volk
    edited August 2021
    Options
    There is a RPC method getting called in an Update method, verify whether parameters passed to the methods are Null or not. If its not Null , check whether data or data.info is null in Serialize method

    I checked on the PhotonSerialization_PlayerDressItems class - it is analog of the PhotonSerialization_PlayerPlayItemStaticMagic class. Also, the reason is that this error appears for the first time in this class. As a result, I didn't understand anything, since the program just stops at the line itemUid = (long)o.GetType().GetProperty(CSymbols.ITEM_UID).GetValue(o);. :#

    Do not forget that in the Development Build version, these errors NEVER happen ANYWHERE. :/

    Here is the place where the error occurs in the PhotonSerialization_PlayerDressItems class. I checked the entire chain - all the data is valid, the type conversion is correct.
    
    public static byte[] Serialize(object obj) {
    
            PhotonSerialization_PlayerDressItems data = (PhotonSerialization_PlayerDressItems)obj;
    
            Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data = " + data);
    
            byte[] playerUidBytes = IsLittleEndian(BitConverter.GetBytes(data.playerUid));
            byte[] modelUidBytes = IsLittleEndian(BitConverter.GetBytes(data.modelUid));
    
            Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items = " + data.items);
    
            int l = data.items.Length;
    
            Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items.Length = " + l);
    
            byte[] lBytes = IsLittleEndian(BitConverter.GetBytes(l));
    
            byte[] all = JoinBytes(playerUidBytes, modelUidBytes, lBytes);
    
            object o;
    
            long itemUid;
            int itemSid;
            int itemId;
            short itemSlot;
            double durability;
    
            byte[] itemUidBytes;
            byte[] itemSidBytes;
            byte[] itemIdBytes;
            byte[] itemSlotBytes;
            byte[] durabilityBytes;
    
            for (int i = 0; i < l; i++) {
    
                o = data.items[i];
    
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items[" + i + "] = " + o);
    
                itemUid = (long)o.GetType().GetProperty(CSymbols.ITEM_UID).GetValue(o);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] itemUid = " + itemUid);
    
    
                itemSid = (int)o.GetType().GetProperty(CSymbols.ITEM_SID).GetValue(o);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] itemSid = " + itemSid);
    
                itemId = (int)o.GetType().GetProperty(CSymbols.ITEM_ID).GetValue(o);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] itemId = " + itemId);
    
                itemSlot = (short)o.GetType().GetProperty(CSymbols.ITEM_SLOT).GetValue(o);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] itemSlot = " + itemSlot);
    
                durability = (double)o.GetType().GetProperty(CSymbols.DURABILITY).GetValue(o);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] durability = " + durability);
    
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
    
                itemUidBytes = IsLittleEndian(BitConverter.GetBytes(itemUid));
                all = JoinBytes(all, itemUidBytes);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
    
                itemSidBytes = IsLittleEndian(BitConverter.GetBytes(itemSid));
                all = JoinBytes(all, itemSidBytes);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
    
                itemIdBytes = IsLittleEndian(BitConverter.GetBytes(itemId));
                all = JoinBytes(all, itemIdBytes);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
    
                itemSlotBytes = IsLittleEndian(BitConverter.GetBytes(itemSlot));
                all = JoinBytes(all, itemSlotBytes);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
    
                durabilityBytes = IsLittleEndian(BitConverter.GetBytes(durability));
                all = JoinBytes(all, durabilityBytes);
                Debug.LogWarning("--->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] all = " + all);
            }
    
            return all;
        }
    
    

    The Player.log shows this:
    
    --->---> [Attantion!][Object] subject = Player
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] info = Info
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] info.Uid = 1038
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] activeModel = Model
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] activeModel.Uid = 16
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] items = System.Collections.Generic.List`1[Item]
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] items.Count = 14
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] allDressedItems = System.Object[]
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][Object] allDressedItems.Length = 14
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonRPCController:Update()
    
    --->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data = PhotonSerialization_PlayerDressItems
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonSerialization_PlayerDressItems:Serialize(Object)
    System.Diagnostics.Tracing.Getter:Invoke(ContainerType)
    ExitGames.Client.Photon.Protocol18:WriteCustomType(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteObjectArray(StreamBuffer, IList, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteHashtable(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteParameterTable(StreamBuffer, ParameterDictionary)
    ExitGames.Client.Photon.PeerBase:SerializeOperationToMessage(Byte, ParameterDictionary, EgMessageType, Boolean)
    ExitGames.Client.Photon.PhotonPeer:SendOperation(Byte, ParameterDictionary, SendOptions)
    Photon.Realtime.LoadBalancingPeer:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Realtime.LoadBalancingClient:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RaiseEventInternal(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Player, Boolean, Object[])
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Boolean, Object[])
    Photon.Pun.PhotonView:RPC(String, RpcTarget, Object[])
    PhotonRPCController:Update()
    
    --->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items = System.Object[]
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonSerialization_PlayerDressItems:Serialize(Object)
    System.Diagnostics.Tracing.Getter:Invoke(ContainerType)
    ExitGames.Client.Photon.Protocol18:WriteCustomType(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteObjectArray(StreamBuffer, IList, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteHashtable(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteParameterTable(StreamBuffer, ParameterDictionary)
    ExitGames.Client.Photon.PeerBase:SerializeOperationToMessage(Byte, ParameterDictionary, EgMessageType, Boolean)
    ExitGames.Client.Photon.PhotonPeer:SendOperation(Byte, ParameterDictionary, SendOptions)
    Photon.Realtime.LoadBalancingPeer:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Realtime.LoadBalancingClient:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RaiseEventInternal(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Player, Boolean, Object[])
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Boolean, Object[])
    Photon.Pun.PhotonView:RPC(String, RpcTarget, Object[])
    PhotonRPCController:Update()
    
    --->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items.Length = 14
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonSerialization_PlayerDressItems:Serialize(Object)
    System.Diagnostics.Tracing.Getter:Invoke(ContainerType)
    ExitGames.Client.Photon.Protocol18:WriteCustomType(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteObjectArray(StreamBuffer, IList, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteHashtable(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteParameterTable(StreamBuffer, ParameterDictionary)
    ExitGames.Client.Photon.PeerBase:SerializeOperationToMessage(Byte, ParameterDictionary, EgMessageType, Boolean)
    ExitGames.Client.Photon.PhotonPeer:SendOperation(Byte, ParameterDictionary, SendOptions)
    Photon.Realtime.LoadBalancingPeer:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Realtime.LoadBalancingClient:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RaiseEventInternal(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Player, Boolean, Object[])
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Boolean, Object[])
    Photon.Pun.PhotonView:RPC(String, RpcTarget, Object[])
    PhotonRPCController:Update()
    
    --->---> [Attantion!][PhotonSerialization_PlayerDressItems][Serialize] data.items[0] = { itemUid = 1614, itemSid = 0, itemId = 14000, itemSlot = 7, durability = 1 }
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogWarning(Object)
    PhotonSerialization_PlayerDressItems:Serialize(Object)
    System.Diagnostics.Tracing.Getter:Invoke(ContainerType)
    ExitGames.Client.Photon.Protocol18:WriteCustomType(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteObjectArray(StreamBuffer, IList, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteHashtable(StreamBuffer, Object, Boolean)
    ExitGames.Client.Photon.Protocol18:Write(StreamBuffer, Object, GpType, Boolean)
    ExitGames.Client.Photon.Protocol18:WriteParameterTable(StreamBuffer, ParameterDictionary)
    ExitGames.Client.Photon.PeerBase:SerializeOperationToMessage(Byte, ParameterDictionary, EgMessageType, Boolean)
    ExitGames.Client.Photon.PhotonPeer:SendOperation(Byte, ParameterDictionary, SendOptions)
    Photon.Realtime.LoadBalancingPeer:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Realtime.LoadBalancingClient:OpRaiseEvent(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RaiseEventInternal(Byte, Object, RaiseEventOptions, SendOptions)
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Player, Boolean, Object[])
    Photon.Pun.PhotonNetwork:RPC(PhotonView, String, RpcTarget, Boolean, Object[])
    Photon.Pun.PhotonView:RPC(String, RpcTarget, Object[])
    PhotonRPCController:Update()
    
    NullReferenceException: Object reference not set to an instance of an object.
      at PhotonSerialization_PlayerDressItems.Serialize (System.Object obj) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Diagnostics.Tracing.ClassPropertyWriter`2+Getter[ContainerType,ValueType].Invoke (ContainerType container) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteObjectArray (ExitGames.Client.Photon.StreamBuffer stream, System.Collections.IList array, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteHashtable (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.Write (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, ExitGames.Client.Photon.Protocol18+GpType gpType, System.Boolean writeType) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.Protocol18.WriteParameterTable (ExitGames.Client.Photon.StreamBuffer stream, ExitGames.Client.Photon.ParameterDictionary parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PeerBase.SerializeOperationToMessage (System.Byte opCode, ExitGames.Client.Photon.ParameterDictionary parameters, ExitGames.Client.Photon.EgMessageType messageType, System.Boolean encrypt) [0x00000] in <00000000000000000000000000000000>:0 
      at ExitGames.Client.Photon.PhotonPeer.SendOperation (System.Byte operationCode, ExitGames.Client.Photon.ParameterDictionary operationParameters, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingPeer.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Realtime.LoadBalancingClient.OpRaiseEvent (System.Byte eventCode, System.Object customEventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RaiseEventInternal (System.Byte eventCode, System.Object eventContent, Photon.Realtime.RaiseEventOptions raiseEventOptions, ExitGames.Client.Photon.SendOptions sendOptions) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, Photon.Realtime.Player player, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonNetwork.RPC (Photon.Pun.PhotonView view, System.String methodName, Photon.Pun.RpcTarget target, System.Boolean encrypt, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at Photon.Pun.PhotonView.RPC (System.String methodName, Photon.Pun.RpcTarget target, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0 
      at PhotonRPCController.Update () [0x00000] in <00000000000000000000000000000000>:0 
    
    
  • Volk
    Volk
    edited August 2021
    Options
    I don't understand, what kind of joke is this? :/

    Can someone explain to me what this is? At first, I thought that these variables do not have time to initialize the static properties (strings): CSymbols.ITEM_UID, CSymbols.ITEM_SID, CSymbols.ITEM_ID, CSymbols.ITEM_SLOT, CSymbols.DURABILITY... I just entered them as strings. But the error still exists. :# I don't have any nulls in my code. Everything is correct.

    As soon as I remove the Development Build mark in the build, this hell begins.

    sticker.png
  • Volk
    Volk
    edited August 2021
    Options
    It's good that everything works well in the version with the Develop Build tick, otherwise I would just shoot myself.

    3a16059643d1761eda6551730c5e30c5.jpg
  • Volk
    Volk
    edited August 2021
    Options
    Yes, yes! I'm also as surprised as you are... And what should I do?

    n-Bk-SUh-L2h-FUlnsq-Ir6-Br-NOp2-Z3z8pj20-Sn-Fh-f-H-n-KUPXua-Dy-XTj-Hou4-MVO6-BCVo-ZKf9-Gq-Ve5-Q-CPaw.jpg