Добавлен avuremybe
БД содержит равкоды юнитов, хранится в хэше.
Какие есть варианты проверить содержится ли уже такое значение в БД, кроме перебора?
Какие есть варианты проверить содержится ли уже такое значение в БД, кроме перебора?
Принятый ответ
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
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. avuremybe
Кроме того, функция StringHash() весьма медленная, лучше использовать GetHandleId() от контекстной сущности.
и потом проверяй его
ну а вообще кламп дело говорит
бд в студию
Ред. avuremybe
Т.е. у меня есть какие-то данные
Как и указал нвц
Ред. avuremybe
Иначе у меня страница магазина будет формироваться туеву хучу времени.
Делай структурами и храни данные в них, это будет и удобнее, и проще.
Кроме того, при заполнении можно создавать каждому магазину/инвентарю свой пул всех доступных предметов и переносить предметы из него, а не копировать.
Ред. avuremybe
Там же parentKey - GetUnitUserData().
А чем удобнее и проще то?
То есть единственное преимущество структуры над хэш-таблицей - это разница в скорости обращения к глобалке и к хэшу. И на сколько я знаю, она не велика.
Циклом легче подбирать если такого есть хеша счетчик
Подбор цико вот как выглядит...