Итак, во время написания сценариев я столкнулся с проблемой, которую нигде не видел, и ничего из того, что я пробовал, еще не устранило это, вот краткое изложение того, что я пытаюсь сделать:
Я программирую менеджера для системы сражений в создаваемой мной игре, он создает объект с определенными свойствами и информацией, необходимой ему для того, чтобы можно было проверить, действует ли состояние по-прежнему.это структура объекта и функция, которая создает объекты:
function state(sId, mId, trns, trn){
this.stateId = sId
this.memberId = mId
this.turns = trns
this.turn = trn
}
function makeState(n, sId, mId, trns, trn) {
var states = {}
for (var i = 0; i < n; ++i) {
states[i] = new state(sId, mId, trns, trn)
}
return states
}
Это функция, которая вызывается в игровом движке всякий раз, когда к одному из участников битвы добавляется состояние ($gameVariables.value (197) возвращает что-то вроде 1 * 1 * 1 * 1 * 1, $ gameVariables.value (196) возвращает число выше 0):
$.updateStates = function() {
if ($gameVariables.value(197) != 0){
var listCreated = false;
var unformatedData = $gameVariables.value(197);
var stateData = unformatedData.split("*");
console.log(stateData);
}
if (listCreated == false){
if ($gameVariables.value(197) != 0){
var statesobj = makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]);
$gameVariables.setValue(197, 0);
listCreated = true;
console.log(statesobj);
}
} else {
if ($gameVariables.value(197) != 0){
statesobj.push(makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]));
$gameVariables.setValue(197, 0);
}
for (Object.entries(statesobj)) { //check/remove expired states
console.log(p);
if ((p.turns + p.turn) <= $gameVariables.value(196)){
$gameParty.members()[p.memberId - 1].removeState(p.stateId);
statesobj.splice(p, 1);
}
}
}
};
( note «проверка / удаление просроченных состояний» полностью испорчена, я пробовал несколько вещей, и это не работает для справки, в этой части кода P будет текущий объект в главном объекте, который для(...) часть этого в настоящее время рассматривается.)
Проблема в том, что «проверка / удаление состояний с истекшим сроком действия» вообще не работает, и я не смог выяснить, какзаставить его работать, часть об удалении состояний работает, просто код не будет проходить через каждый объект в объекте statesobj и получать необходимые значения от каждого объекта состояния в этом объекте, любой из вас знает, как я это сделаюбуду делать это?(движок - rpg maker mv, но он использует javascript.)