Реалезуем ли дроп определённых предметов с каждого типа юнита.Допустим с паука падает либо лапа паука,либо мясо паука.А с скелета кости либо оружие.С учетом того что карта 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) //водка
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
Для твоего уровня хорошим вариантом будут параллельные массивы.
Не будут, ибо двумерные он не потянет.
8
nazarpunk, факт

Так почему по системе со скринов выше делать не стоит?
27
anton1623, ну у тебя список не привязан к типу. Как триггер это определяет?
30
Как триггер это определяет?
На каждый тип создаётся триггер Лут_Копировать_Копировать_Копировать_Копировать_Копировать.
27
База данных равкодов юнитов. Или можно другим способом добывать номер итемпула. Ну тут число завязано на тип, то проще сделать свою базу в ро. Или повторно инициируйте бд в таблицах или где то еще
//Можно бд равкодов юнита. Тут можно узнвть номер итемпула.
U000-U000=0
U001-U000=1
U002-U000=2
Создаем списки (итемпул)
//Ну пример, бд итемпула:
It[0] = CreateItemPool() //создаем список для U000
It[1] = CreateItemPool() //создаем список для U001

//добавляем итемы в список 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)
Узнаем номер списка. Если нужно рандомить случайный предмет из списка it[0]. Где x,y - координаты умирающего юнита
function CreateRandomItemForUnit takes integer num, unit u return nothing
call PlaceRandomItem(it[num], GetUnitX(u),GetUnitY(u))
endfunction

А если нужно удалить из списка итем
ItemPoolRemoveItemType(it[0],'I001')
8
МрачныйВорон, Воу,кажется маленько дошло.Кажется это мой вариант,спасибо!

anton1623, ну у тебя список не привязан к типу. Как триггер это определяет?
Ну я бы добавил условие триггеру какой именно юнит погиб
27
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
anton1623, там точки, двоеточие и пр приняты после цифр в таблице, а потом буквы. Символы нумеруются в таблице Asscil. Возми любой конвертер и посмотри. Например сейчас из ныне работающих это моб приложения. При создании объекта ты можешь прописать 'I00;' - точка с запятой
8
МрачныйВорон, спасибо еще раз,постараюсь разобраться во всем этом.
8
Бог дал человеку хэштаблицы, чтобы таким не заниматься хитрой массивной арифметикой.
Создаем итемпул для каждого типа юнита, сохраняем его в хэштаблицу:
	//....
	//hpea
	set pool = CreateItemPool()
	call ItemPoolAddItemType(pool,'I000',1)
	//.....	
	call SaveItemPoolHandle(ht,'hpea',0,pool)
	//Hblm
	set pool = CreateItemPool()
	call ItemPoolAddItemType(pool,'I001',1)
	call ItemPoolAddItemType(pool,'I002',1)
	//.....	
	call SaveItemPoolHandle(ht,'Hblm',0,pool)
	//.....
В случае смерти юнита загружаем итемпул, создаем айтем:
	set pool = LoadItemPoolHandle(ht,GetUnitTypeId(GetDyingUnit()),0)
	call PlaceRandomItem(pool,GetWidgetX(GetDyingUnit()),GetWidgetY(GetDyingUnit()))
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.