XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Slider

offline
Опыт: 373
Активность:
Провека жизни предмета
Ку всем! У меня огромная просьба помочь мне с триггером.
Мне нужно, чтобы, к примеру, 2 кинжала герой не мог носить.
И я хочу сделать именно по проверке жизней.
К примеру, все кинжалы у этих предметов будут 1 ед здоровья.
Так вот, я хочу, чтобы герой мог носить только 1 предмет, у которого 1 здоровья.
Что я только не пробовал сделать - не знаю как.
[+] 1 пункт от alexkill: 1.2 (учим русский язык) пунктуация

Отредактировано alexkill, 20.11.2010 в 22:52.
Старый 18.11.2010, 19:03
granderpro

offline
Опыт: 12,165
Активность:
Slider, на сколько я знаю у предмета нет здоровья , а есть прочность , а вот как проверить не знаю...только jass вроде
Старый 18.11.2010, 19:16
Slider

offline
Опыт: 373
Активность:
Ну прочность это и есть его здоровье к чему тогда триггер состояние здоровья у предмета я видел такой триггер я просто незнаю как сопоставить эту системуи прошу помочь а не Флудить=)
Старый 18.11.2010, 19:42
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
если я правильно понимаю то
GetWidgetLife(widgethandle)
на GUI это
Real - Предмет - Item Life
FKoFF добавил:
Тоесть сопоставить? Сравнивай через цикл здоровье
loop 1 - 6
if:
Real Comparison - Предмет - Item Life (Item Carried by Hero Manipulating Item in slot [loop]) == Item Life of [Item Being Manipulated]
Item Comparison - Item Carried By Hero Manipulating Item in slot [loop] != Item Being Manipulated
then
Order Hero Manipulating Item выбросить Item Being Manipulated
else
endloop
Старый 18.11.2010, 19:54
Slider

offline
Опыт: 373
Активность:
Огромная просьба выложить наработку где взял первый предмет он возьмется а второй если система увидит что у этого предмета тоже 1 единица прочности то она выкинет этот подобранный предмет
Думаю наработку легче прикрепить чем писать это все=)))~FKoFF, Выложи оч прошу
Slider добавил:
Что трудно помочь кому-то?
Старый 18.11.2010, 20:48
granderpro

offline
Опыт: 12,165
Активность:
FKoFF, loop - это что за переманная? название
Старый 18.11.2010, 20:50
Klop
Папа римский
offline
Опыт: 13,006
Активность:
FKoFF:
loop 1 - 6
if:
это цикл For
и проверка IF,только в джаззе
Старый 19.11.2010, 15:33
TYRans_ShaRhy
Welcome to the World
offline
Опыт: 4,653
Активность:
А чем не устраивает обычная проверка на наличия идентичного предмета в инвентаре?
Как-бы, это и так, и так придется проверять.
Старый 19.11.2010, 17:53
Klop
Папа римский
offline
Опыт: 13,006
Активность:
ShaRhaN, задумка автора такоя,что бы сделать типы предметов по их здоровью,т.е
Мечи 1ед.здоровья
Перчатки 2ед.здоровья
и.т.д
Mr_KLOP добавил:
нужно использовать что то типа этого
переменной i присваиваем прочность предмета и это будет нужный нам слот,проверяем если в слоте есть предмет тогда выкидываем если нет,то перемещаем в нужный,код не тестировался и полностью не готов,наработку делать не буду,мне лень
    local item it = GetManipulatedItem()
    local unit u = GetManipulatingUnit()
    local integer i = R2I(GetWidgetLife(it))
    if UnitItemInSlot(u,i-1) != null then
    call UnitDropItemPoint(u,it,GetUnitX(u),GetUnitY(u))
    else
    call UnitDropItemSlot(u,it,i-1)
    endif
    set it = null
    set u = null
Старый 19.11.2010, 18:48
granderpro

offline
Опыт: 12,165
Активность:
Mr_KLOP, ему надо карту , так он всёравно не поймёт
Старый 19.11.2010, 18:51
Slider

offline
Опыт: 373
Активность:
Mr_KLOP, Сделай плиз не на джассе
Вот ты меня правильно понял. Что у каждого типа предмета будет определенное количество жизней к примеру мечи 1 щиты 2 итд это оч удобно, принцип заключается в том что 1 раз делаешь систему а потом только в предметах меняешь.
Капец всем лень, а мне не лень узнавать все с нуля сидеть париться, когда даже помочь не хотят наработкой так трепаться легко я ж говорю я знаю принцип просто не могу это воссоздать все уже перепробовал помогите уже кто-нить.

Отредактировано Slider, 19.11.2010 в 19:54.
Старый 19.11.2010, 19:37
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Slider, мне лень юзать триггеры,после того как перешёл на джазз в этом всё дело,темболее сделать пример та я сделаю,а дальше ты сам разберёшся??
Уточни детали сколько типов предмета будет,если 6 тогда я буду юзать на основе перемещения по слотам и проверкай,так как написал или же больше тогда принцип будет немного другой
Старый 19.11.2010, 21:07
Dragon_S
где-то там..
offline
Опыт: 3,603
Активность:
ещё пару особенностей:
хп предметов - это реальная переменная ( real 45.000)
также хп предмета триггерно нельзя сделать выше, чем указано в редакторе объектов
ограничение можно сделать или через цикл(как предлагалось ранее), так и через присвоение глобальной переменной значения, с последующей проверкой этого значения при поднятии предмета
лучше делать ограничение через лвл предмета, тк иначе придётся делать предметы неуязвимыми, тк простая атака предмета может изменить его хп(если не уничтожит)
Старый 19.11.2010, 21:15
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Dragon_S:
это реальная переменная ( real 45.000)
перевести проблем не составляет
Dragon_S:
хп предмета триггерно нельзя сделать выше, чем указано в редакторе объектов
это делать и ненадо,так как он не будет менять свой тип
Dragon_S:
ограничение можно сделать или через цикл(как предлагалось ранее), так и через присвоение глобальной переменной значения, с последующей проверкой этого значения при поднятии предмета
если делать по слотам,то тогда простая проверка наличия предмета в нужном слоте
Dragon_S:
лучше делать ограничение через лвл предмета, тк иначе придётся делать предметы неуязвимыми, тк простая атака предмета может изменить его хп(если не уничтожит)
Все хп будут не больше 15,поэтому уменьшить хп я думаю невозможно,а предмет долго жить после ударов и не должен
Старый 19.11.2010, 21:20
granderpro

offline
Опыт: 12,165
Активность:
Mr_KLOP, нормальный человек и не будет атаковать предмет...
Старый 19.11.2010, 21:33
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Создай триггер ItemsType,затем правка конвертировать текст и полностью замени вставь этот код и можеш задавать типы предметам
function ItemsType_Actions takes nothing returns nothing
    local item it = GetManipulatedItem()
    local unit u = GetManipulatingUnit()
    local integer Ilife = R2I(GetWidgetLife(it))
    local integer i = 0
    local integer Ilife2 = 0
    loop
    exitwhen i == 6
    set it = UnitItemInSlot(u,i)
    if it != null and it != GetManipulatedItem() then
    set Ilife2 = R2I(GetWidgetLife(it))
    else
    set Ilife2 = 0
    endif
    if Ilife == Ilife2 then
    call UnitDropItemPoint(u,GetManipulatedItem(),GetUnitX(u),GetUnitY(u))
    endif
    set i = i + 1
    endloop
    set it = null
    set u = null
endfunction

//===========================================================================
function InitTrig_ItemsType takes nothing returns nothing
    local integer i = 0
    local trigger t = CreateTrigger()
    loop
    exitwhen i == 16
    call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_PICKUP_ITEM,null)
    set i = i + 1
    endloop
    call TriggerAddAction(t, function ItemsType_Actions)
    set t = null
endfunction
Старый 19.11.2010, 22:49
Slider

offline
Опыт: 373
Активность:
Mr_KLOP, Я не хочу на тебя давить, но если ты столько тут расписал а не проще тебе было бы накидать триггы сохранить карту и я бы разобрался сам уже. Чем вот столько париться писав код тут. Но всеравно спасибо что хоть как-то помогаешь а не флудишь как некоторые.
Slider добавил:
Mr_KLOP
Вообщем, я так понял: система сама до определенных типов считает я ничего в ней не менял, она если видит одинаковые предметы по жизням, то выбрасывает и оставляет только 1 такой тип, а ограничение там это 16 цифра? То есть ее можно менять?
Пробовал брать часто предметы и система твоя нарушается - он все-равно берет, если быстро брать предметы и че делать теперь?
[+] 3 пункта от alexkill: 1.1 (ненормативная лексика) + не игнорируем знаки пунктуации

Отредактировано alexkill, 20.11.2010 в 22:55.
Старый 20.11.2010, 08:10
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Slider:
В общем я так понял система сама до определенных типов считает я ниче в ней не менял она если видит одинаковые предметы по жизням то выбрасывает и оставляет только 1 такой тип а ограничение там это 16 цифра? ее можно тоесть менять?
именно так,ограничения нет
Slider:
БЛИН=(((( Пробовал брать часто предметы и система твоя нарушается он все-равно берет, если быстро брать предметы и че делать теперь?
щас попробую что нить сделать,это потому что цикл наверно не успевает закончится и запускается новый из-за частого клацанья
Mr_KLOP добавил:
function ItemsType_Actions takes nothing returns nothing
    local item it
    local unit u = GetManipulatingUnit()
    local integer Ilife = R2I(GetWidgetLife(GetManipulatedItem()))
    local integer i = 0
    local integer Ilife2
    local real a = GetRandomInt(1,360)*0.0174
    local real x = GetUnitX(u)+100*Cos(a)
    local real y = GetUnitY(u)+100*Sin(a)
    loop
    exitwhen i == 6
    set it = UnitItemInSlot(u,i)
    if it != null and it != GetManipulatedItem() then
    set Ilife2 = R2I(GetWidgetLife(it))
    else
    set Ilife2 = 0
    endif
    if Ilife == Ilife2 then
    call UnitDropItemPoint(u,GetManipulatedItem(),x,y)
    endif
    set i = i + 1
    endloop
    set it = null
    set u = null
endfunction

//===========================================================================
function InitTrig_ItemsType takes nothing returns nothing
    local integer i = 0
    local trigger t = CreateTrigger()
    loop
    exitwhen i == 16
    call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_PICKUP_ITEM,null)
    set i = i + 1
    endloop
    call TriggerAddAction(t, function ItemsType_Actions)
    set t = null
endfunction
Вот делай так будет выкидвать предмет на растоянии 100 под случайнм углом это не позвоилит всёвремя клацать
Mr_KLOP добавил:
Slider:
Я не хочу на тебя давить, но если ты столько тут расписал а не проще тебе было бы накидать триггы сохранить карту и я бы разобрался сам уже
Триггеры утечки,на Джаззе мне писать легче,в данном случае не нужны глобалки,если ты не нашёл условие проверки жизней предмета в триггерах,ещё раз в триггерах делать нечё нехочу

Отредактировано Mr_KLOP, 20.11.2010 в 12:05.
Старый 20.11.2010, 12:20
Slider

offline
Опыт: 373
Активность:
Mr_KLOP, Не помогает все-равно успеваю взять. Я одно не могу понять почему вообще он берет? Вот к примеру у меня есть другая система по уровню предмета и там сделана такая функция
Боевая единица получает предмет
если предмет уровня 0
то
если у героя нету способности к примеру маг
то выбросить предмет
Так вот суть в том что если вещи на мага взял герой у которого нету способности маг то она выброситься и скоко бы я там не пытался все работает четко, а в твоей системе почему-то можно при быстром клацании взять=(((
Я незнаю как свой триггер сделать с жизнями
мне надо в условии если сделать чтобы если у предмета есть предмет с жизнью 1 то выбросить такой-же блин у меня уже голова кругом как такое сотворить помоги плиз чтоб четко работало и игроки немогли перехитрить как в моем первом случае
А можно сделать так чтобы он не брал предмет а когда хочешь взять то проверялись твои вещи и вещь на которую ты тыкаешь если они идентичны то он будет делать команду отставить и даже не брать предмет ну и там сообщение нельзя типо возможно такое и как сделать тока через джасс?Вот если бы такое сделать то вообще супер было бы низкий поклон тебе=)) хоттабыч=)(Прочитай)
Аналогично тому когда у героя полный рюкзак вещей то выходит сообщение и звук вы не можете взять на подобе тока если у тебя есть такой же выводилось также

Отредактировано Slider, 20.11.2010 в 14:41.
Старый 20.11.2010, 14:31
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Slider, понимаеш так как тебе надо проверить каждый предмет в инветаре это происходит 6 раз и пока он проверяет каждый предмет на жизни ыт берёш следующий и он нарушает пред систему и начинает проверять новый подобраный предмет а старая проверка сбивается,хм может попробовать через хеш сделать,щас ещё что нить попробую
Mr_KLOP добавил:
Вот решил проблему держи код,проблума заключалась в том что при отдаче приказа выбросить предмет и получении подбора не успевал выбросить,теперь предмет удаляется у героя и создаётся рядом,всё работает,теперь надо ыб на утечки протестировать
function ItemsType_Actions takes nothing returns nothing
    local item it = GetManipulatedItem()
    local unit u = GetTriggerUnit()
    local real r = GetWidgetLife(it)
    local integer i = 0
    local item it2
    local real life = 0
    local integer id
    loop
    exitwhen i == 6
    set it2 = UnitItemInSlot(u,i)
    if it2 != null and it2 != it then
    set life = GetWidgetLife(it2)
    else
    set life = 0
    endif
    if life == r then
    set id = GetItemTypeId(it)
    call UnitRemoveItem(u,it)
    set it = CreateItem(id,GetUnitX(u),GetUnitY(u))
    endif
    set i = i + 1
    endloop
    set it2 = null
    set u = null
    set it = null
endfunction

//===========================================================================
function InitTrig_ItemsType takes nothing returns nothing
    local integer i = 0
    local trigger t = CreateTrigger()
    loop
    exitwhen i == 16
    call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_PICKUP_ITEM,null)
    set i = i + 1
    endloop
    call TriggerAddAction(t, function ItemsType_Actions)
    set t = null
endfunction
Старый 20.11.2010, 15:20
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 11:14.