1. Hi again, i need to add codelock on Door if player have it in his inventory, when he placed a door, what i do:

    Code (Text):
    void OnEntityBuilt(Planner plan, GameObject go)
            {
                var player = plan.GetOwnerPlayer();
                var door = go.ToBaseEntity();
                if (door.PrefabName.StartsWith("assets/prefabs/building/door"))
                {
                    if (player.inventory.containerMain.FindItemByItemID(-975723312).amount>0)
                    {
                        player.inventory.containerMain.Take(null, -975723312, 1); //take it from his inventory

                        BaseEntity x = GameManager.server.CreateEntity("assets/prefabs/locks/keypad/lock.code.prefab"); // creating entity
                        door.SetSlot(BaseEntity.Slot.Lock, x); // set this parent like child for door
                        x.Spawn(); // spawn object

                        SendReply(player, $"{door.GetSlot(BaseEntity.Slot.Lock)}"); //check, all is right?
                    }
                }
            }
    No errors in consol, after placing door i see in chat: lock.code[5215215(i mean uid of this code)], but i dont see this code on door.

    So, question, how to create objects/entities and set them on door's for example?
     
  2. Sanlerus

    Sanlerus Scavenger

    Try it:
    Code (Text):
    var codeLock = GameManager.server.CreateEntity("assets/prefabs/locks/keypad/lock.code.prefab", new Vector3(), new Quaternion(), true);
    if (codeLock == null) return;
    codeLock.gameObject.Identity();
    codeLock.SetParent(door, door.GetSlotAnchorName(BaseEntity.Slot.Lock));
    codeLock.OnDeployed(door);
    codeLock.Spawn();
    door.SetSlot(deployable.slot, codeLock);
    Most likely the problem is that the door has not yet been fully initialized.
    Скорее всего проблема в том что дверь ещё не до конца инициализировалась.
     
  3. Yes, that helped.
    But i want to undestand, what u did and what helped me, because our algorithms arent very difficult.

    How it affected the work? (codeLock.gameObject.Identity();) When i should use it?
    How it affected the work? (codeLock.OnDeployed(door);) When i should use it? I can't find info about this hook.

    -------

    Спасибо, действительно помог.
    Но я хочу именно разобраться, что конкретно здесь повлияло на работу? Ибо методом научного тыка я всё таки заставил замок появляться, но он появлялся в нижнем углу и я не мог изменить его положение. Наши алгоритмы отличаются:
    Вы объявляете: new Vector3(), new Quaternion(), true
    Также вы используете codeLock.gameObject.Identity(); Когда и зачем мне следует её использовать?
    И что за хук OnDepoyed(door)?

    Спасибо заранее.
     
  4. Sanlerus

    Sanlerus Scavenger

    I do not know, I just took the algorithm of the spawned object from the game source.

    Я не знаю, просто взял алгоритм спавна прикрепляемых объекта из исходников игры. Пиши плагины в Microsoft Visual Studio и прикрепи к нему библиотеки раста, будет намного легче писать.
    --- Double Post Merged, Jun 19, 2017 ---
    http://i.imgur.com/1n4d5fc.png

    П.С. Создание объекта точно тут не причём, скорее всего просто приоритет спавна и установка parent сыграла главную роль.