JavaScript - передача одного значения из массива в переменную - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь модифицировать игру. Это двумерная игра, в которой вы перемещаетесь вверх, вниз, влево и вправо (вид сверху вниз). В частности, я пытаюсь создать разные звуковые эффекты, в зависимости от поднятого предмета.

Я попытался ввести новую переменную (var itemIdd), которая сохранит имя предмета, которое был подобран, и в зависимости от этой переменной будет генерироваться соответствующий звук. Это не сработало.

Я добавил var itemIdd перед функцией и itemIdd === player().inventory[itm.id]; внутри // обновления инвентаря игрока. Я предполагаю, что это может не сработать, поскольку это как массив, но я не знаю, как получить из него только соответствующий идентификатор.

Я хотел бы отметить, что я не могу отлаживать то и то after и function movePlayer находятся в разных тегах <script>. Было бы лучше, если бы я не модифицировал часть function movePlayer, так как это исходный код, а after - мод.

after('onInventoryChanged', function () {
    if (itemIdd === "beer")
    { 
        sounds.inventory1();
    }
    if (itemIdd === "booz")
    {
        sounds.inventory2();
    }
    
});

var input = null;
var itemIdd = ""; //i have added this
function movePlayer(direction) {

    var ext = getExit( player().room, player().x, player().y );
    var end = getEnding( player().room, player().x, player().y );
    var itmIndex = getItemIndex( player().room, player().x, player().y );

    // do items first, because you can pick up an item AND go through a door
    if (itmIndex > -1) {
        var itm = room[player().room].items[itmIndex];
        var itemRoom = player().room;

        startItemDialog(itm.id, function() {
            // remove item from room
            room[itemRoom].items.splice(itmIndex, 1);

            // update player inventory
            if (player().inventory[itm.id]) {
                player().inventory[itm.id] += 1;
                itemIdd = player().inventory[itm.id]; //and this
            }
            else {
                player().inventory[itm.id] = 1;
            }

            // show inventory change in UI
            if (onInventoryChanged != null) {
                onInventoryChanged(itm.id);
            }
        });
    }
}

Я тоже пробовал это:


            if (player().inventory[itm.id]) {
                player().inventory[itm.id] += 1;
                itemIdd = player().inventory[itm.id].name; //this
            }

И это код для предметов:

    item[id] = {
        id : id,
        drw : drwId, //drawing id
        col : colorIndex,
        dlg : dialogId,
        animation : {
            isAnimated : (renderer.GetFrameCount(drwId) > 1),
            frameIndex : 0,
            frameCount : renderer.GetFrameCount(drwId)
        },
        name : name
    };

Любая помощь будет принята с благодарностью.

Игра называется bity и i Пытаюсь дополнительно модифицировать этот мод basi c -sfx

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...