Если последний выброшенный предмет (находится в массиве (типов предмета)) Х
удалить его
Прилепил скрин, есть возможность вставки джасс кода в условие. Но там нету перебора всех предметов массива, а 100500 условий делать не хочется.

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

Alexey103, проверяй дебагом. Выводи числа, проверяй сработал ли блок внутри if then endif, выводи название типа предмета (не выводит, значит ошибка)
здесь ошибка в переменной, вместо Last dropped Item вставить нужно Item being manipulated - поэтому и не работает
объяснение
Item being manipulated (манипулируемый итем) - переменная срабатывает при таких событиях - юнит теряет итем/юнит получает итем/юнит использует итем. Last dropped Item - переменная на последний дропнутый айтем действием "Hero - Drop Item" (если раскрыть это действие, можно увидеть, что при дропе переменная перезаписывается). То есть это триггером дропается, если вручную дропнуть, то ничего не перезапишет. В чем отличие между двумя переменными? Первая показывает итем, который дропают сейчас, а второй показывает итем, который выбросили когда-то триггером через действие "Hero - Drop Item".
в триггерах внизу читаешь хотя бы подсказки? что за переменные и что делают и тд
объяснение работы цикла
ssbbssc, Дурацкие лупы, они в гуи бесполезны, что я тут неправильно сделал? И как ими вообще пользоваться? Переменная count это число предметов в массиве red items. Что оно подбирает?
цикл - повторение одних и тех действий. В гуи есть for each integer A - do actions. Внутрь в эту конструкцию вставляй действия, и они будут повторяться, пока не выполнится условие выхода (например, в скрине ты вписал выполнять от 0 до count). Действия повторяются, меняются разве, что номер integer A.
Внутри блока loop программа выполняет сверху вниз, дойдет до низа. Потом будет выполнять снова эти же действия (сверху-вниз), короче выполняет следующий шаг цикла, потом еще шаг, потом еще шаг и так далее.
loop
	...... //повторяющие действия, называют тело цикла
	exitwhen i > count //условие выхода
	set i = i + 1 //шаг цикла, i - своего рода счетчик цикла
endloop
integer A - в гуи счетчик цикла, который с каждым разом увеличивается на 1 единицу. В гуи так прописано, по-другому можно разве что на jass.
Когда integer A будет больше count (по условию цикла), тогда цикл прервется. Прервать также можно написав exitwhen true
способ
берете функцию quq_CCCP
function CheckItem takes item it, integer count returns boolean
local integer Itemtype = GetItemTypeId(it)
set bj_forLoopAIndex = 0
set bj_forLoopAIndexEnd = count
loop
	exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd 
	
	if udg_reditems[bj_forLoopAIndex] == Itemtype then
		return true
	endif
	
	set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
return false
endfunction
где в аргументах it - итем, count - макс. индекс массива
!) берете код вставляете в шапку карты
  1. затем прописываете его в условии. В jngp доступно CS, короче на jass прописать можно
И пример карты
Можно сделать еще легче.
Extremator Что мешает создать базу данных?
в редакторе объектов можно использовать уровни итемов в качестве подразделения на категории (красные итемы - 1 уровень, синие итемы - 2 уровень и так далее). А в триггерах есть команды проверки на уровень итема
Загруженные файлы
0
19
6 лет назад
0
Похожие вопросы:

ответ
SomeFire, Suite,
Всё. Замутил.
Без всяких переменных, и для любого героя.
ответ
вот карта
в ней у героя-паладина есть способность - неуязвимость
при использовании все союзные юниты в радиусе 500 станут неуязвимы и будут записаны в группу ИЛИ если они уже в группе - станут уязвимы и будут исключены из группы
рядом с отрядом есть 3 волчьих всадника. они могут кастовать сеть на союзные войска. сеть может быть прокастована даже на НЕУЯЗВИМЫЕ войска, НО - не на юнитов из нашей группы. Ты увидишь сообщение в игре при попытке кастануть сеть на юнита из группы.
если герой умрет - все юниты в группе станут уязвимы.
для проверки нужно было поместить несколько неуязвимых нейтралов рядом с отрядом, но да ладно - надеюсь идею ты понял
ответ
Ник игрока - это строка. Условие должно быть строковым. Например:
  • Юнит поднимает предмет
  • Условия: Name Of (Owner of (Hero manipulating item)) не равно ТЕКСТ
  • Условия: Тип предмета равен "Боевые когти"
  • Герой - Выбросить предмет (Item beign manipulatid, hero manipulating item)
Советую еще почитать вот этот ответ. Там есть про "выбрасывание предмета". Та же самая ситуация, но другое условие
ответ
гуи
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка

2
32
6 лет назад
2
На гуи нельзя в условии перебирать массив циклом.
А так это бы выглядело примерно так
local integer itemtype = GetItemTypeId(bj_lastDroppedItem)
set bj_forLoopAindex = 0
set bj_forLoopAIndexEnd = 10
loop
	exitwhen bj_forLoopAindex > bj_forLoopAindexEnd 
	
	if udg_reditems[bj_forLoopAindex] == itemtype then
		return true
	endif
	
	set bj_forLoopAindex = bj_forLoopAindex + 1
endloop
return false
endloop
Писал по памяти, это если что внутринности triggercondition, на гуях подобное можно провернуть только в дейсвтиях триггера.
0
17
6 лет назад
0
quq_CCCP, в моём новом jngp там есть возможность вставить лупы.
С этим что-то можно придумать? Или иначе зачем они нужны? Мне нужно просто чтоб условие проверило все индексы массива, как когда мы дропы назначаем только не случайный предмет, а все
Загруженные файлы
2
20
6 лет назад
2
for each integer A - do actions
найдите в поиске, элементарный перебор на гуи
что мешает применять его в массиве?
0
26
6 лет назад
0
что мешает дать всем таким предметам уровень 127 и чекать его при выбросе?
4
29
6 лет назад
4
Ну делай в действиях, а не в условии..
0
17
6 лет назад
0
ssbbssc, ну да bj loop, наконец то я смогу его освоить.
ssbbssc, Дурацкие лупы, они в гуи бесполезны, что я тут неправильно сделал? И как ими вообще пользоваться? Переменная count это число предметов в массиве red items. Что оно подбирает? Почему не работает?
Загруженные файлы
2
27
6 лет назад
Отредактирован MpW
2
Alexey103, проверяй дебагом. Выводи числа, проверяй сработал ли блок внутри if then endif, выводи название типа предмета (не выводит, значит ошибка)
здесь ошибка в переменной, вместо Last dropped Item вставить нужно Item being manipulated - поэтому и не работает
объяснение
Item being manipulated (манипулируемый итем) - переменная срабатывает при таких событиях - юнит теряет итем/юнит получает итем/юнит использует итем. Last dropped Item - переменная на последний дропнутый айтем действием "Hero - Drop Item" (если раскрыть это действие, можно увидеть, что при дропе переменная перезаписывается). То есть это триггером дропается, если вручную дропнуть, то ничего не перезапишет. В чем отличие между двумя переменными? Первая показывает итем, который дропают сейчас, а второй показывает итем, который выбросили когда-то триггером через действие "Hero - Drop Item".
в триггерах внизу читаешь хотя бы подсказки? что за переменные и что делают и тд
объяснение работы цикла
ssbbssc, Дурацкие лупы, они в гуи бесполезны, что я тут неправильно сделал? И как ими вообще пользоваться? Переменная count это число предметов в массиве red items. Что оно подбирает?
цикл - повторение одних и тех действий. В гуи есть for each integer A - do actions. Внутрь в эту конструкцию вставляй действия, и они будут повторяться, пока не выполнится условие выхода (например, в скрине ты вписал выполнять от 0 до count). Действия повторяются, меняются разве, что номер integer A.
Внутри блока loop программа выполняет сверху вниз, дойдет до низа. Потом будет выполнять снова эти же действия (сверху-вниз), короче выполняет следующий шаг цикла, потом еще шаг, потом еще шаг и так далее.
loop
	...... //повторяющие действия, называют тело цикла
	exitwhen i > count //условие выхода
	set i = i + 1 //шаг цикла, i - своего рода счетчик цикла
endloop
integer A - в гуи счетчик цикла, который с каждым разом увеличивается на 1 единицу. В гуи так прописано, по-другому можно разве что на jass.
Когда integer A будет больше count (по условию цикла), тогда цикл прервется. Прервать также можно написав exitwhen true
способ
берете функцию quq_CCCP
function CheckItem takes item it, integer count returns boolean
local integer Itemtype = GetItemTypeId(it)
set bj_forLoopAIndex = 0
set bj_forLoopAIndexEnd = count
loop
	exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd 
	
	if udg_reditems[bj_forLoopAIndex] == Itemtype then
		return true
	endif
	
	set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
return false
endfunction
где в аргументах it - итем, count - макс. индекс массива
!) берете код вставляете в шапку карты
  1. затем прописываете его в условии. В jngp доступно CS, короче на jass прописать можно
И пример карты
Можно сделать еще легче.
Extremator Что мешает создать базу данных?
в редакторе объектов можно использовать уровни итемов в качестве подразделения на категории (красные итемы - 1 уровень, синие итемы - 2 уровень и так далее). А в триггерах есть команды проверки на уровень итема
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.