Если последний выброшенный предмет (находится в массиве (типов предмета)) Х
удалить его
Прилепил скрин, есть возможность вставки джасс кода в условие. Но там нету перебора всех предметов массива, а 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
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 уровень и так далее). А в триггерах есть команды проверки на уровень итема
Загруженные файлы
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.