Здравствуйте.
Вопрос у меня таков: почему функция SaveStr() для hashtable может работать выборочно, то есть при одинаковой по принципу записи функций для сохранения строки одна из них работает, а другая - нет. ParentKey отличается на 5, а ChildKey одинаков.
Связано ли это с тем, что нужны разные ChildKey? Не работает та функция, которая должна сохранять строку первой.

PhysCraft, ясно ты пытаешься использовать хэш для рецептов
но лучше для этих целей использовать массивы(на каждый рецепт отводи по 6-7 ячеек)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
набыдлокодил значит
кидай пример своих попыток чтобы знать где ты ошибся
20
nvc123, вот:
call SaveStr(B0S_HT,10,'rhe2',CreateRecipe(3,'oslo','gomn','pams',0,0,0,0,0,0,0,0,0,0,0))
call SaveStr(B0S_HT,15,'rhe2',CreateRecipe(3,'oslo','rsps','pams',0,0,0,0,0,0,0,0,0,0,0))

call rec.SetReagents(LoadStr(B0S_HT,lvl+15,newitem)) // сработало
call rec.SetReagents(LoadStr(B0S_HT,lvl+10,newitem)) // не сработало,
// в обоих случаях lvl равно 0, newitem равно 'rhe2'.
CreateRecipe просто делает одну строку из всех равкодов и числа.
В некоторых случаях все срабатывает. Может дело в том, что берется lvl+10 а не просто 10?
28
дебаг добавь на все ключи
и что это за строка такая?
если там только равкод то лучше инт сохранять
просто я использовал сохранение строк только для каста скилов
и там всё работало нормально
20
Не могу инт, мне нужна последовательность равкодов одной переменной. Даже если сделать массив равкодов, то мне нужны буду строки с индексами элементов. В большинстве случаев все работает нормально, но вот такое иногда. Будем дебажыть и обходить использование lvl.

Передебажил, реально проблема в строке. Ключи на месте все. Но вот почему некоторые сохраняет, а некоторые нет - неизвестно, да и не сохраняет оно не по порядку записи в коде. Буду искать другой способ достижений нужного результата, по другому организовывать проверку рецепта.
28
PhysCraft, ясно ты пытаешься использовать хэш для рецептов
но лучше для этих целей использовать массивы(на каждый рецепт отводи по 6-7 ячеек)
Принятый ответ
20
То есть, взять огромный массив integer, отвести на каждый рецепт 7 ячеек, а в таблицу тогда сохранять для рецепта лишь количество компонентов и индекс первого из них. Тогда равкод брать как ParentKey. Но не всегда нужно отводить до 7 ячеек, ведь они все заданы наперед, в некоторых компонент лишь 2-3. Идея ясна. Попутно нашел утечки со строкой.
Но предметов куча, лучше тогда 2 массива хотя-бы, что бы индекс потом не вышел за границу при добавлении новых предметов в базу.

Базовая идея реализована, закроем вопрос.
28
взять огромный массив integer
зачем огромный?
стандартного 13 размера хватит
PhysCraft:
количество компонентов и индекс первого из них
зачем?
количество компонентов равно 7
просто те компоненты у которых равкод равен 0 не учитываем
например для предмета из 2 ингредиентов рецепт следующий
'I000','I001',0,0,0,0,0
приложу свою старую системку для 6 предметов(открывать блокнотом)
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.