Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с кодом на js

Влад Влад Ученик (93), на голосовании 11 месяцев назад
let Recipe = new NativeClass('Terraria', 'Recipe');
let Item = new NativeClass('Terraria', 'Item');

const SetDefaults = Item["void SetDefaults(int Type, bool noMatCheck, ItemVariant variant)"];
const SetupRecipes = Recipe['void SetupRecipes()'];
const AddRecipe = Recipe['void AddRecipe()'];

SetupRecipes.hook(original => {
SetDefaults(Recipe.currentRecipe.createItem, 5383);
Recipe.currentRecipe.createItem.stack = 1;
SetDefaults(Recipe.currentRecipe.requiredItem[0], 549);
Recipe.currentRecipe.requiredItem[0].stack = 7;
SetDefaults(Recipe.currentRecipe.requiredItem[1], 548);
Recipe.currentRecipe.requiredItem[1].stack = 7;
SetDefaults(Recipe.currentRecipe.requiredItem[2], 547);//эссенции мехов
Recipe.currentRecipe.requiredItem[2].stack = 7;
SetDefaults(Recipe.currentRecipe.requiredItem[3], 210);//лоза
Recipe.currentRecipe.requiredItem[3].stack = 11;
SetDefaults(Recipe.currentRecipe.requiredItem[4], 331);//споры
Recipe.currentRecipe.requiredItem[4].stack = 15;
SetDefaults(Recipe.currentRecipe.requiredItem[5], 209);//жало
Recipe.currentRecipe.requiredItem[5].stack = 12;
Recipe.currentRecipe.requiredTile[0] = 134;//мифриловая наковальня
AddRecipe();
original();
});
SetDefaults.hook((original, self, Type, noMatCheck, variant) => {
original(self, Type, noMatCheck, variant);

if (Type === 5383) {
self.createTile = 238;
}
});

Я вообще не бум бум что не так.
Лог выдаёт
2023-11-24 09:04:39 MOD[Plantera summon (44441949-e4a7-40ab-98c2-fc4d67d63e63 > 65d87e95-edf3-4874-a738-ecf2d695fc0d)] EXCEPTION: Uncaught Expected 4 arguments for "Terraria::Item.SetDefaults" with the first argument being the instance while 2 arguments were provided
at <no name>: line = 9, column = 2, source code = " -->SetDefaults(Recipe.currentRecipe.createItem, 5383);"
И желательно если знаете то напишет как решить
Голосование за лучший ответ
Сергей Бивис Мастер (1587) 1 год назад
Ошибка указывает на проблему с количеством аргументов в функции SetDefaults. В данном случае функция ожидает 4 аргумента, но ей передаются только 2. Согласно вашему коду, SetDefaults определен как Item["void SetDefaults(int Type, bool noMatCheck, ItemVariant variant)"], что означает, что он должен получать 3 аргумента после объекта Item (Type, noMatCheck, variant).

Однако в вызове функции SetDefaults(Recipe.currentRecipe.createItem, 5383) передаются только объект Item и Type. Вам нужно либо обновить определение функции SetDefaults, чтобы оно принимало только два аргумента (если это возможно), либо передать остальные ожидаемые аргументы при каждом вызове функции.

Если второй и третий аргументы не обязательны и могут быть пропущены, вы должны передать значения, которые указывают на то, что они не используются. Это может быть false для noMatCheck и null или undefined (или соответствующий пустой ItemVariant объект, если такой существует в вашей кодовой базе) для variant.

 SetDefaults(Recipe.currentRecipe.createItem, 5383, false, null); // Если noMatCheck и variant могут быть пропущены  
Или, если noMatCheck и variant не могут быть пропущены и должны быть конкретными значениями, вам нужно будет определить их:

 let noMatCheckValue = false; // или true, в зависимости от вашей логики 
let variantValue = new ItemVariant(); // замените на правильный способ создания ItemVariant
SetDefaults(Recipe.currentRecipe.createItem, 5383, noMatCheckValue, variantValue);
Влад ВладУченик (93) 1 год назад
Спасибо, они могли быть пропущенны, но надо было ставить false и null для каждого setdefaults (хотя наверное именно это вы и имели в виду)
Похожие вопросы