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

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

Ответ
 
DiShan

offline
Опыт: 3,578
Активность:
-craft и скрещивание вещей
Собственно хочу создать систему примитивного крафта.
Мне нужно что бы когда игрок -craft , то две или больше вещей в инветаре его героя скрещивались в другую.
Как это сделать?
Старый 13.07.2011, 21:05
LOR_D
    
offline
Опыт: 8,450
Активность:
Событие - Игрок №1 пишет -craft
Условие - герой этого игрока имеет вещь типа вещи №1
герой этого игрока имеет вещь типа вещи №2
Действие - Remove item of type вещь №1
Remove item of type вещь №2
Create item of type Вещь №3 и дать её этому игроку
Старый 13.07.2011, 21:09
DiShan

offline
Опыт: 3,578
Активность:
Мне нужно для 11-ти игроков, если вписать всех 11-ти в событие то работать будет? Или только когда все напишут сработает? -_-
Старый 13.07.2011, 21:14
FlamedragoN
Song of Shadows
offline
Опыт: 6,208
Активность:
screenshot.su/show.php?img=10a89acd310b476e6a71559d3ddd068c.jpg почти так, только с событием, Событие - Игрок №1 пишет -craft
Но в такой системе нельзя скрещивать 2 одинаковых предмета.
Старый 13.07.2011, 21:15
HumanWE
Warcraft 3 <3
offline
Опыт: 1,191
Активность:
через массив
Старый 13.07.2011, 21:15
LOR_D
    
offline
Опыт: 8,450
Активность:
Всех надо писать. Сработает, когда хоть кто-то напишет и только для него.
Старый 13.07.2011, 21:15
FlamedragoN
Song of Shadows
offline
Опыт: 6,208
Активность:
Нет, при срабатывание любого из условий (1) сработает.
FlamedragoN добавил:
puh:
через массив
зачем?
Старый 13.07.2011, 21:18
DiShan

offline
Опыт: 3,578
Активность:
FlamedragoN:
screenshot.su/show.php?img=10a89acd310b476e6a71559d3ddd068c.jpg почти так, только с событием, Событие - Игрок №1 пишет -craft
Но в такой системе нельзя скрещивать 2 одинаковых предмета.
Так не работает.
Или может что не так сделал?
Старый 13.07.2011, 21:37
FlamedragoN
Song of Shadows
offline
Опыт: 6,208
Активность:
Хм, думаю для string, "hero manupulating item" не подходит, я не нашел, как обозначается тот, кто прописывает, думаю надо через переменную делать. И присваивать ей значение.
Старый 13.07.2011, 21:48
DiShan

offline
Опыт: 3,578
Активность:
Тогда может мне кто обьяснить что это , и что из этого происходит?
Код:
function enchantScrollCheck takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[0] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[1] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[2] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[3] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[4] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[5] ) ) then
        return true
    endif
    return false
endfunction

function enchantScroll_Type_One takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[1] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[4] ) ) then
        return true
    endif
    return false
endfunction



function enchantScroll_Type_Two takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[2] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[5] ) ) then
        return true
    endif
    return false
endfunction

function enchantScroll_Type_Three takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[0] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[3] ) ) then
        return true
    endif
    return false
endfunction



function enchantItem_Type_Check_One takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[3] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[4] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[5] ) ) then
        return true
    endif
    return false
endfunction

function enchantItem_Type_Check_Two takes nothing returns boolean
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[0] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[1] ) ) then
        return true
    endif
    if ( ( GetItemTypeId(GetManipulatedItem()) == udg_eN_chantScroll[2] ) ) then
        return true
    endif
    return false
endfunction

function enchantItem_ClassCheck_One takes integer tempIndex returns boolean
    if ( udg_eN_itemLevel[tempIndex] != 1 ) then
     if ( enchantItem_Type_Check_One() ) then

        return true

    endif
    endif

    return false
endfunction

function enchantItem_ClassCheck_Two takes integer tempIndex returns boolean
    if ( udg_eN_itemLevel[tempIndex] == 1 ) then
     if ( enchantItem_Type_Check_Two() ) then

        return true

    endif
    endif

    return false
endfunction

function enchantItem_ClassCheck takes integer tempIndex returns boolean
    if ( enchantItem_ClassCheck_One(tempIndex) ) then
        return true
    endif
    if ( enchantItem_ClassCheck_Two(tempIndex) ) then
        return true
    endif

    return false
endfunction

function enchantItem_Condition takes integer tempIndex, integer i returns boolean
    if ( UnitHasItemOfTypeBJ(GetManipulatingUnit(), udg_eN_itemTypes[tempIndex]) == true) then
     if ( udg_eN_itemValues[tempIndex] < ( udg_eN_itemN[i] - 1 )) then
      if ( enchantItem_ClassCheck(tempIndex) ) then

        return true

    endif
    endif
    endif

    return false
endfunction

function Trig_item_Enchant_Actions takes nothing returns nothing
    local integer itemEnchantValue = 0
    local integer itemEnchantTrueValue = 0
    local integer itemEnchantPlusPB = 0
    local integer itemIndex = 0

    local integer j = 0
    local integer i = 0

    set i = 1
    loop
        exitwhen i > udg_eN_itemGroup
        set j = 1
        loop
            exitwhen j > udg_eN_itemN[i]
            set itemIndex = ( ( ( i - 1 ) * udg_eN_itemLayer ) + j )
            if ( enchantItem_Condition(itemIndex,i) ) then
                if ( enchantScroll_Type_One() ) then
                    set itemEnchantTrueValue = ( udg_eN_itemN[i] - j )
                    if ( itemEnchantTrueValue >= udg_itemUpgradeRange ) then
                        set itemEnchantValue = GetRandomInt(1, udg_itemUpgradeRange)
                    else
                            set itemEnchantValue = GetRandomInt(1, itemEnchantTrueValue)
                    endif
                    set itemEnchantPlusPB = 10
                else
                endif
                if ( enchantScroll_Type_Two() ) then
                    set itemEnchantValue = 1
                    set itemEnchantPlusPB = 100
                else
                endif
                if ( enchantScroll_Type_Three() ) then
                    set itemEnchantValue = 1
                    set itemEnchantPlusPB = 0
                else
                endif
                if ( ( ( R2I(udg_eN_itemLife[( itemIndex + 1 )]) + itemEnchantPlusPB ) > GetRandomInt(0, 98) ) ) then
                    call DisplayTextToForce( GetForceOfPlayer(GetOwningPlayer(GetManipulatingUnit())), ( "|c00ffff00" + ( ( GetItemName(GetItemOfTypeFromUnitBJ(GetManipulatingUnit(), udg_eN_itemTypes[itemIndex])) + "(_)_ ____ ___ ____." ) + "|r" ) ) )
                    call RemoveItem( GetItemOfTypeFromUnitBJ(GetManipulatingUnit(), udg_eN_itemTypes[itemIndex]) )
                    call UnitAddItemByIdSwapped( udg_eN_itemTypes[( itemIndex + itemEnchantValue )], GetManipulatingUnit() )
                else
                    call DisplayTextToForce( GetForceOfPlayer(GetOwningPlayer(GetManipulatingUnit())), ( "|c00ffff00" + ( ( GetItemName(GetItemOfTypeFromUnitBJ(GetManipulatingUnit(), udg_eN_itemTypes[itemIndex])) + "(_)_ __ ___ __ ______." ) + "|r" ) ) )
                    call RemoveItem( GetItemOfTypeFromUnitBJ(GetManipulatingUnit(), udg_eN_itemTypes[itemIndex]) )
                endif
                return
            else
            endif
            set j = j + 1
        endloop
        set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_item_Enchant takes nothing returns nothing
    set gg_trg_item_Enchant = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_item_Enchant, EVENT_PLAYER_UNIT_USE_ITEM )
    call TriggerAddCondition( gg_trg_item_Enchant, Condition( function enchantScrollCheck ) )
    call TriggerAddAction( gg_trg_item_Enchant, function Trig_item_Enchant_Actions )
endfunction
Старый 13.07.2011, 21:55
FlamedragoN
Song of Shadows
offline
Опыт: 6,208
Активность:
Это код (длинный код-_-)
Собственно говоря, ориентирован на проверку через массивы и присвоение индексов, также проверяет наличие предметов, их индекс, и в случае совпадения уничтожает лишнее, ну я т.п он тоже сделан на просто покупку предмета, а не чатовою команду, где нашел?
Старый 13.07.2011, 22:03
DiShan

offline
Опыт: 3,578
Активность:
Цитата:
Сообщение от FlamedragoN
Это код //(длинный код-_-)//
Собственно говоря, ориентирован на проверку через массивы и присвоение индексов, также проверяет наличие предметов, их индекс, и в случае совпадения уничтожает лишнее, ну я т.п он тоже сделан на просто покупку предмета, а не чатовою команду, где нашел?

У меня шаблон RPG Maker 0.14 для создания типичной "корейской" рпг, сразу с сейв лоад системой и прочим прочим ) Так вот уже почти все разобрал но никак не могу найти здесь триггер который отвечает за команду -create ибо в Jass`e не шарю а сам создать не могу =(
Старый 13.07.2011, 22:07
FlamedragoN
Song of Shadows
offline
Опыт: 6,208
Активность:
Заюзать поиск слова create по коду не пробовал?
Старый 13.07.2011, 22:17
Ответ

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

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

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

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



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