мне нужно сделать систему как в РПГ тоесть ношение одного оружия
к примеру валяются меч1, меч2 и меч3 = они оба взаимоисключающие тоесть если я одену меч1 то подобрать меч2 и меч3 я не смогу
а как триггерно проверить есть ли у юнита меч1\2\3 или нет?

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

База данных. В базе будет записан каждый меч, точнее номер меча, при подборе запоминаем в custom value или в хэш-таблицу, или в переменную или еще как-нибудь. Если номер больше нуля, значит у героя есть меч.
Самое простое - при подборе меча, проверяем есть ли в инвентаре такой меч. В РО итема можно задать уровнями. Например, первый уровень - мечи и топоры, второй уровень - защита груди, ну и так далее. Циклом пробегаешь, и поверяешь предметы на уровень.
Можно логическую переменную использовать для запоминания (одна логическая переменная - мечи и топоры, вторая логическая - луки и арбалеты итд). При подборе одного меча, проверяешь логическую, если есть, то дропаешь нафиг.
В таких системах используют обычно сферу молнию, а можно ли проверять есть ли такая способность у героя? Если уровень способности > 0, значит держит меч
ищи в поиске, такое миллион раз задавали. ношение больше одного, больше одного и так далее.
0
19
7 лет назад
0
Похожие вопросы:

ответ
Проблема решена. Обнаружилась довольно неожиданно - заметил, что во время крита герой не разбивал лицо сам себе, начал искать модификаторы атаки - у героя было 3 пустышки с нулевыми значениями на основе "ракет". При всех пустых значениях вылетает невидимая ракета по самому себе.
ответ
Steal nerves:
циклом (данного юнита от 1-6 слотов, на jass от нумерация слотов начинается так 0-5) пробегаешься по каждому слоту и проверяешь тип, кол-во зарядов. я на гуи что-то не нашел эту команду UnitItemInSlot
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
кол-во итемов
ищем в каждом слоте один и тот же тип предмета. Этот код считывает кол-во итемов занимаемые в слотах
local integer id = ''//id-предмета, забудь указать в кавычках ид
local integer i=0 //для цикла
local integer c=0 //кол-во предметов
local unit u = //нужно не забыть указать юнита
//внизу начинается цикл, его блок 
loop //начало цикла
    exitwhen i > 5 //условие выхода из цикла
    if GetItemTypeId(UnitItemInSlot(u,i)) == '' then //если тип в слоте равен ....
        set c = c + 1
    endif
    set i = i + 1
endloop //конец цикла
кол-во предметов данного типа с N зарядами
local integer id = '' //id-предмета, забудь указать в кавычках ид
local integer i=0 //для цикла
local integer c=0 //кол-во предметов
local unit u = //нужно не забыть указать юнита
loop
    exitwhen i > 5

    if GetItemTypeId(UnitItemInSlot(u,i)) == id or GetItemCharges(UnitItemInSlot(u,i)) == 5 then //если тип в слоте такой, и и у этого итема зарядов равно 5
        set c = c + 1
    endif
    set i = i + 1
endloop
set u = null

0
27
7 лет назад
Отредактирован MpW
0
База данных. В базе будет записан каждый меч, точнее номер меча, при подборе запоминаем в custom value или в хэш-таблицу, или в переменную или еще как-нибудь. Если номер больше нуля, значит у героя есть меч.
Самое простое - при подборе меча, проверяем есть ли в инвентаре такой меч. В РО итема можно задать уровнями. Например, первый уровень - мечи и топоры, второй уровень - защита груди, ну и так далее. Циклом пробегаешь, и поверяешь предметы на уровень.
Можно логическую переменную использовать для запоминания (одна логическая переменная - мечи и топоры, вторая логическая - луки и арбалеты итд). При подборе одного меча, проверяешь логическую, если есть, то дропаешь нафиг.
В таких системах используют обычно сферу молнию, а можно ли проверять есть ли такая способность у героя? Если уровень способности > 0, значит держит меч
ищи в поиске, такое миллион раз задавали. ношение больше одного, больше одного и так далее.
Принятый ответ
0
26
7 лет назад
0
Можешь всем "мечам" выставить уровень "77"
При поднятии предмета считай сколько у юнита предметов такого же уровня
Если больше 1 - то выбрасываешь то, что только что подобрал, всё...
Примитив, но работает как часы
0
15
7 лет назад
0
Extremator:
Можешь всем "мечам" выставить уровень "77"
При поднятии предмета считай сколько у юнита предметов такого же уровня
Если больше 1 - то выбрасываешь то, что только что подобрал, всё...
Примитив, но работает как часы
Максимальный уровень 10
2
18
7 лет назад
2
Artyom18, зажми Shift, когда открываешь в редакторе поле с данными об уровне. Тогда можно будет написать какой угодно уровень.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.