БД содержит равкоды юнитов, хранится в хэше.
Какие есть варианты проверить содержится ли уже такое значение в БД, кроме перебора?

Принятый ответ

avuremybe, как тебе такой вариант?
	function HaveItem takes unit shop, integer itemid returns boolean
		return LoadBoolean(ht, GetUnitUserData(shop), itemid)
	endfunction

	function ShopAddItem takes unit shop, integer itemid returns nothing
		if not HaveItem(shop, itemid) then
			//...
			set lastItem = lastItem + 1
			call SaveInteger(ht, GetUnitUserData(shop), lastItem, itemid)
			call SaveBoolean(ht, GetUnitUserData(shop), itemid, true)
			//...
		endif
	endfunction
0
16
7 лет назад
Отредактирован avuremybe
0
Да все, спасибо за помощь, ребята! Я на основе идеи Ige построил все, что мне было нужно. Просто забыл закрыть вопрос (:
Clamp, я вспомнил, почему мне не подходят структуры.
У меня инвентарь бесконечный.
0
28
7 лет назад
0
avuremybe, у тебя оперативки на бесконечный инвентарь не хватит
+ хэштейбл тоже не бесконечный
0
30
7 лет назад
0
У меня инвентарь бесконечный.
Тебя это может сильно удивить, но при определённом подходе количество экземпляров одной структуры может оказаться сильно больше 8190 (что и так само по себе гигантское количество).
0
20
7 лет назад
0
8190 предметов? Даже если по 2 с моба собирать, неужто у вас в карте наберется 4000 мобов?
Хотя скорее 8192, но да не важно
0
16
7 лет назад
Отредактирован avuremybe
0
Я не говорил, что он будет забиваться миллионом предметов. Я сказал что инвентарь сам по себе - бесконечный.
Я понятия не имею, сколько у меня будет предметов, но т.к. карта - рпг, то всякой чепухи типа ингридиентов будет не мало. Поэтому мне нравится идея бесконечного инвентаря.
хэштейбл тоже не бесконечный
Советуешь под инвентарь выделить отдельную хэш-таблицу?
0
20
7 лет назад
0
Бесконечность - это миф. Динамическая расширяемость имеет высокую цену. Даже если реализовывать списком. Ограничивать сверхбольшими значениями (вроде макс значения uint) тоже не стоит. Просто определите достаточно высокий порог, который будет считаться недостижимым. Если кто-то скажет что этого мало - выпускай фикс.
0
28
7 лет назад
Отредактирован nvc123
0
в данном случае использовать таблицу не стоит т.к. подобные вещи удобнее представлять в объектном виде
а про слово "бесконечность" вообще лучше забудь
т.к. это абстрактный математический термин придуманный математиками для математиков и не имеющий никакого отношения к данному вопросу
и в программировании и в реальности слово "бесконечность" используется как замена слова "много"
а много это конечное значение
так что все твои аргументы вида "бесконечный инвентарь" полный бред
0
30
7 лет назад
0
Бесконечный инвентарь требует бесконечного количества памяти, а варкрафту на весь процесс выделяется только 2гб.
0
28
7 лет назад
0
Clamp, почему 2?
можно же до 3 поднять
2
30
7 лет назад
2
nvc123, НУ ЭТО ВСЁ МЕНЯЕТ
0
16
7 лет назад
0
Чего вы прицепились к слову "бесконечный"? Я прекрасно понимаю абстрактность этого термина. И в масштабах моей карты мой инвентарь - бесконечный.
0
23
7 лет назад
0
avuremybe, в том и зачем хотел чтобы нагрузку всю игру играть, сразу викинут тапками ваши карту?
0
20
7 лет назад
0
Ну так реши какое число предметов является недостижимым
0
21
7 лет назад
Отредактирован scopterectus
0
avuremybe, мы конечно понимаем, что говоря бесконечность, Вы имели ввиду большое число. Но каким может быть это большое число? Сколько времени уходит на создание одного предмета (история предмета, характеристики, описание, триггерные способности у предмета, сама идея для предмета)? Мне кажется, довольно таки много..)))
А теперь представьте, что Вы сделали 1000 предметов. Вы когда нибудь видели карту с 1000 предметов? В той же доте (мне кажется, эта карта лидер по количеству предметов) около 100 предметов, а у Вас будет аж в десять раз больше, Карл!
Думаю, что, даже если Вы поставите лимит в 128 512 предметов, этого будет более чем достаточно..))
0
28
7 лет назад
0
ScopteRectuS, Diaboliko, да тут не нужны лимиты
юзаем списки и всё
0
16
7 лет назад
Отредактирован avuremybe
0
ScopteRectuS, сравнение с дотой тут не уместно. У меня рпг и в инвентаре могут лежать пачки ингридиентов, еды и т.д.
Вместимость инвентаря не ограничивается кол-вом предметов на карте.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.