Реалезуем ли дроп определённых предметов с каждого типа юнита.Допустим с паука падает либо лапа паука,либо мясо паука.А с скелета кости либо оружие.С учетом того что карта RPG жанра (Помимо этой механики есть еще куча всего),и в карте присутствует +-20 типов юнитов.Если возможно,то как это скажется на оптимизации?

anton1623, qне забудь про это. Там равкоды с калькулятором проверяй, для точности
казалось бы все правильно, равкод числа на одну единицу меньше. Но как оказалось, где-то допустил ошибку. Берем любой онлайн-калькулятор ASCII , и переводим 10-чную систему, проверяя насколько отличается.
I008=1227894840
I009=1227894841
I00A=1227894849 Тут отличается на целых 8 знаков, короче сбивается база данных
Давайте

жаль отреддактировать выше
//добавляем итемы в список it[0]
call ItemPoolAddItemType(it[0], 'I000',0) //нога Берги
call ItemPoolAddItemType(it[0], 'I001',0) //карта пеонов
call ItemPoolAddItemType(it[0], 'I002',0) //бкговые кроссовки Берги
//добавляем итемы в список it[1]
call ItemPoolAddItemType(it[1], 'I003',0) //маска Тыщи
call ItemPoolAddItemType(it[1], 'I004',0) //пистолет начальника
call ItemPoolAddItemType(it[1], 'I005',0) //мясо тюленя
call ItemPoolAddItemType(it[1], 'I006',0) //водка
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
27
Да это легче свою систему дропа написать =) она проще пишется. Нужно бд итемов прописать, на каждый тип пишешь свою пачку итемов. И при смерти юнита дропаешь рандомный. В игре есть своя система рандома, но никогда ей не пользовался. Посмотри.
Ну насчет оптимизации. Не сказал бы, что это сильно нвгрузит, чтобы так оптимизировать. Вряд ли. Вы же не циклы гоняете, как в древнем 1.26 патче. И там тоже вряд ли возможна лаги, с чего бы. Но вот луа самый шедевр в плане удобства
27
Ну, и в 1.26 можно использовать бд. Помню, там минус в том, что в табличку можно прописать индекс макс 8192. А вот равкоды юнитов нельзя использовать, тк числа превышают 8192.
Как обойти: 1) используй в качестве бд равкоды, пример U000 и U001 ртличаются на единицу. Так можно получить номер массива. Пример, умер юнит с типом U007, так могу узнать, номер индекса юнита U007-U000=7 Ну а двльше думайте, как строить вашу структуру. Типа для чего вам нужен был индекс 2) ну а дальше используй отдельную хэш таблицу, для заполнения [I000+7] [max] = 7 [I000+7] [1] = rawcode 1 [I000+7] [2] = rawcode 2 [I000+7] [3] = rawcode 3 [I000+7] [4] = rawcode 4 [I000+7] [5] = rawcode 5 [I000+7] [6] = rawcode 6 [I000+7] [7] = rawcode 7 max это типа кэширование строки в число GetStringHash или GetHashString Можно вместо I000+7 сразу использовать равкод юнита U007. Ранее I000+7 был просто ключ и примером работы бд с равкодами, правда бесполезный
Ну далее рандомим число от 1 до max и вауу

anton1623, мемхак переходи на сторону зла
8
Итемпулы - вот ваше решение. Они именно для этого и придуманы.
native CreateItemPool           takes nothing returns itempool
native DestroyItemPool          takes itempool whichItemPool returns nothing
native ItemPoolAddItemType      takes itempool whichItemPool, integer itemId, real weight returns nothing
native ItemPoolRemoveItemType   takes itempool whichItemPool, integer itemId returns nothing
native PlaceRandomItem          takes itempool whichItemPool, real x, real y returns item
30
Но вот луа самый шедевр в плане удобства
На хт можно то же самое реализовать.

Итемпулы - вот ваше решение.
Итемпул всегда отдаёт предмет и не слишком тонко настраивается. Хотя для примитивного дропа подойдёт.
10
Реализуем.
Для твоего уровня хорошим вариантом будут параллельные массивы.
Об оптимизации опять же на твоем уровне вообще думать не стоит
30
Для твоего уровня хорошим вариантом будут параллельные массивы.
Не будут, ибо двумерные он не потянет.
8
nazarpunk, факт

Так почему по системе со скринов выше делать не стоит?
27
anton1623, ну у тебя список не привязан к типу. Как триггер это определяет?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.