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

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

Ответ
 
Daemonik

offline
Опыт: 5,084
Активность:
Помогите создать пета
Я новичок в Jass и хочу создать пета(ящик), который будет привязан к герою и у него будет возможность собирать вещи.
Старый 19.06.2009, 13:30
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Daemonik, посмотри эту наработку, вроде тут тоже про прикрепление.
Старый 19.06.2009, 14:19
Daemonik

offline
Опыт: 5,084
Активность:
Спасибо)
Старый 19.06.2009, 14:28
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
Спрашивается для кого я это делал? )

Pets System by Gres
Старый 19.06.2009, 15:45
Daemonik

offline
Опыт: 5,084
Активность:
Эхх не то((
Я имею ввиду пета который шмот таскает.
Он не должен ничего делать кроме как таскать вещи и постоянно бегать за героем.
Кстати триггер по первой ссылке у меня не пашет. Пишет кучу ошибок((
Старый 19.06.2009, 18:12
SRes
1110101000
offline
Опыт: 9,997
Активность:
Daemonik, наверняка потому-что у тебя нету JNGP, читай внимательно раздел "Импорт" в "прикрепление юнита к юниту".
Старый 19.06.2009, 18:17
Daemonik

offline
Опыт: 5,084
Активность:
Воспользовался JNGP. Результат точно такой же.
Да и мне кажется что в той наработке не совсем то что мне надо.
Мне нужен ходячий инвертарь как в Black Road, GoH или Final Fantasy epic RPG.
PS получилось приучить инвентарь следовать за героем после его появления, но при попытке отправить сундук куда-либо он перестает следовать за героем

Отредактировано Daemonik, 19.06.2009 в 19:40.
Старый 19.06.2009, 19:04
SRes
1110101000
offline
Опыт: 9,997
Активность:
Переодически приказывай инвентарю (пету, светляку) следовать на героя. Каждые 0.5 сек, должно, хватить.
Старый 19.06.2009, 19:58
Daemonik

offline
Опыт: 5,084
Активность:
Я в принципе так и решил сделать
Старый 19.06.2009, 19:59
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
Daemonik, создай еще триггер на событие <Пет> поднимает предмет и отправляй его следовать за гером. Так же тебе понадобится триггер следующего содержания:

Событие - <Пет> Получает приказ атака
Событие - <Пет> Получает приказ движение
//Ну и все остальные приказы, типо патрулировать и стоп, просто не все помню.
//Это все ОДИН триггер.

Условие - Переменная CHECK = 0

set CHECK = 1
Действие - Боевая еденица - Issue Order Targeting A Unit <следовать за героем>
set CHECK = 0

CHECK это целочисленная глобальная перменная.
Тоесть в событиях должны быть все возможные отлынивания от следования за героем.
Старый 19.06.2009, 20:19
Daemonik

offline
Опыт: 5,084
Активность:
Спасибо))
Старый 19.06.2009, 20:44
SRes
1110101000
offline
Опыт: 9,997
Активность:
Я боюсь что способ Hellfim'а будет перебивать приказ "smart" (когда ты нажимаешь правой на предмет юниту именно этот приказ дается) и юнит предмет не поднимет, проверяй еще чтобы целью движения был предмет...
Старый 19.06.2009, 21:02
Daemonik

offline
Опыт: 5,084
Активность:
Теперь у меня остался вопрос(((
Раз в собития у меня идет:
Событие - <Пет> Получает приказ атака
Событие - <Пет> Получает приказ движение; итд
Получается пет уже должен быть на карте.
А он у меня появляется после выбора героя.
Или мне стоит его засунуть в отдельный уголок карты?
Старый 19.06.2009, 21:44
SRes
1110101000
offline
Опыт: 9,997
Активность:
Самый легкий вариант - засунуть в отдельный уголок и скрыть, другой вариант динамически добавлять события.
Старый 19.06.2009, 21:59
Daemonik

offline
Опыт: 5,084
Активность:
мда...
так простой мне понятен, а вот второй не очень
Старый 19.06.2009, 22:00
SRes
1110101000
offline
Опыт: 9,997
Активность:
Trigger - Add to (trigger) the event (Unit - (unit) Is issued an order with no target)
Код:
native TriggerRegisterUnitEvent takes trigger whichTrigger, unit whichUnit, unitevent whichEvent returns event
Старый 19.06.2009, 22:03
Daemonik

offline
Опыт: 5,084
Активность:
(Unit - (unit) Is issued an order with no target) у меня этого event'a нету((
Все нашел. Просто на русском не сразу понял где он

Daemonik добавил:
Так))
Все работает, но когда пытаюсь двигаться сташем меня выкидывает)
Старый 19.06.2009, 22:24
SRes
1110101000
offline
Опыт: 9,997
Активность:
Значит ты неправильно сделал, мы не телепаты.
Старый 19.06.2009, 22:37
Daemonik

offline
Опыт: 5,084
Активность:
А если на код взглянуть?
вот код триггера одного
Код:
//===========================================================================
// Trigger: herochose
//===========================================================================
function Trig_herochose_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetEnteringUnit()) == 'ewsp' ) ) then
        return false
    endif
    return true
endfunction

function Trig_herochose_Actions takes nothing returns nothing
    call CreateNUnitsAtLoc( 1, 'Hpal', Player(0), GetRectCenter(gg_rct________________002), bj_UNIT_FACING )
    set udg_unit1 = GetLastCreatedUnit()
    set udg_x = GetUnitLoc(GetLastCreatedUnit())
    call CreateNUnitsAtLoc( 1, 'h000', Player(0), GetRectCenter(gg_rct________________002), bj_UNIT_FACING )
    set udg_unit2 = GetLastCreatedUnit()
    call SetUnitInvulnerable( udg_unit2, true )
    call IssueTargetOrderBJ( udg_unit2, "move", udg_unit1 )
    call TriggerRegisterUnitEvent( gg_trg_stash, udg_unit2, EVENT_UNIT_ISSUED_ORDER )
    call TriggerRegisterUnitEvent( gg_trg_stash, udg_unit2, EVENT_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterUnitEvent( gg_trg_stash, udg_unit2, EVENT_UNIT_ISSUED_POINT_ORDER )
    call RemoveUnit( GetEnteringUnit() )
endfunction

//===========================================================================
function InitTrig_herochose takes nothing returns nothing
    set gg_trg_herochose = CreateTrigger(  )
    call TriggerRegisterEnterRectSimple( gg_trg_herochose, gg_rct________________000 )
    call TriggerAddCondition( gg_trg_herochose, Condition( function Trig_herochose_Conditions ) )
    call TriggerAddAction( gg_trg_herochose, function Trig_herochose_Actions )
endfunction

//===========================================================================
// Trigger: stash
//===========================================================================
function Trig_stash_Actions takes nothing returns nothing
    call IssueTargetOrderBJ( udg_unit2, "move", udg_unit1 )
endfunction

//===========================================================================
function InitTrig_stash takes nothing returns nothing
    set gg_trg_stash = CreateTrigger(  )
    call TriggerAddAction( gg_trg_stash, function Trig_stash_Actions )
endfunction

//===========================================================================
function InitCustomTriggers takes nothing returns nothing
    call InitTrig_herochose(  )
    call InitTrig_stash(  )
endfunction

Отредактировано Daemonik, 19.06.2009 в 22:49.
Старый 19.06.2009, 22:42
Deviator
Feel the purification...
offline
Опыт: 10,276
Активность:
Какой ты новичёк в джассе это самые обычные триггеры я когда редактор осваивал сразу этому научился, ты не только в джассе новичёк. Что сложного:

Create unit ПЕТ at point (position of your HERO)
Set variable PET = last created unit
Move PET to position of unit (HERO)

второй триггер
Every 0.5 sec of game time
If HERO is alive
Issue order targeting a HERO with Двигатся to position of HERO

Писал от руки мож чё из надписей не правильно, но должно быть понятно

Deviator добавил:
Всё остальное делай как Hellfim написал

Deviator добавил:
О БОЖЕ такой гигантский триггер на такую безделушку. Оптимизируй
Старый 19.06.2009, 22:50
Ответ

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

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

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

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



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