Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Wurst
Тип:
Наработка
Версия Warcraft:
1.26 (default) +
Решил создать наработку для крафта предметов. Она безумно проста, но очень эффективна.
Код
import Tier2
import Tier1
import RegisterEvents
import Tier3

public tuple itemMap(int itemId, int craft1, int craft2, int craft3, int craft4, int craft5)

public let ITEMS = [itemMap(T2_ITEM_1, T1_ITEM_1, T1_ITEM_4, 0, 0, 0),
                    itemMap(T2_ITEM_2, T1_ITEM_2, T1_ITEM_3, 0, 0, 0),
                    itemMap(T3_ITEM_1, T2_ITEM_1, T2_ITEM_2, 0, 0, 0)]


function getSize() returns int
    int index = 0
    bool _stop = false
    while _stop == false
        if ITEMS[index].itemId == 0
            _stop = true
            return index - 1
        index += 1
    return 0


init
    registerPlayerUnitEvent(EVENT_PLAYER_UNIT_PICKUP_ITEM) ->
        let u = GetTriggerUnit()
        for i = 0 to getSize()
            if (u.hasItemById(ITEMS[i].craft1) or ITEMS[i].craft1 == 0) and (u.hasItemById(ITEMS[i].craft2) or ITEMS[i].craft2 == 0) and (u.hasItemById(ITEMS[i].craft3) or ITEMS[i].craft3 == 0) and (u.hasItemById(ITEMS[i].craft4) or ITEMS[i].craft4 == 0) and (u.hasItemById(ITEMS[i].craft5) or ITEMS[i].craft5 == 0)
                u.getItemById(ITEMS[i].craft1).remove()
                u.getItemById(ITEMS[i].craft2).remove()
                u.getItemById(ITEMS[i].craft3).remove()
                u.getItemById(ITEMS[i].craft4).remove()
                u.getItemById(ITEMS[i].craft5).remove()
                u.addItemById(ITEMS[i].itemId)
Как работает:
Я создал кортеж, с переменными itemId - id предмета и craft1 - craft5 - id предметов из которых он собирается. Их может быть от 2 до 5 и располагаться не по порядку.
Чтобы добавить свои предметы необходимо в массив ITEMS добавить id своих предметов по примеру в коде. Если вам нужно чтобы предмет собирался меньше чем из 5 предметов, нужно поставить в оставшихся craft нули.
`
ОЖИДАНИЕ РЕКЛАМЫ...