Название:Full-Inventory Crafting System Авторы:bowser499 aka [DUOS] and SirNikolas Тип исполнения:JASS2 and cJass Тестовая карта:Присутствует Минимальный патч:Любой
Одна из нашумевших наработок, которую мало кто доводил до конца конкретно на JASS2. Из-за крайней сложности её создания решил выложить, так как это решит много вопросов, с этим связанных.
Возможности:
Сбор при полном инвентаре (рецепты максимум до 7 слотов);
Сбор с участием идентичных предметов;
Смена иконки предмета из магазина и предмета в инвентаре (покупаешь рецепт с иконкой сборного предмета - в инвентарь идет свиток);
Смена предмета на деактивированный предмет (любой, кто берет предмет, не принадлежащий ему, не получает свойств предмета);
Сложение "зарядов" предметов (банка с 3 зарядами + банка с 8 зарядами = банка с 11 зарядами).
База данных предметов и рецептов формируется по следующему принципу:
1. Создаются в РО три копии одного и того же предмета:
Normal (обычный предмет, находится у купившего)
Rune (используется мгновенно, находится в магазине и лежит на земле)
Disabled (находится у того, кто "украл" предмет)
Обратите внимание: Все предметы должны быть нестандартными! 2. Rune-копии добавляются в магазины. 3. В триггере инициализации регистрируются предметы путем вызова для каждого FICS_Register(rawNormal, rawRune, rawDisabled, goldCost, lumberCost). Каждому предмету дается порядковый номер, начиная с единицы. 4. Наконец, составляется список рецептов. Вызывается функция FICS_RegisterN(resultId, id0, id1, ..., idN), где N - количество ингредиентов, а resultId, id0, id1, ..., id6 - порядковые номера предметов.
Импорт наработки:
Версия JASS2: 1. Скопируйте основной код карты FICS v1.6.w3x в основной код своей карты. 2. Скопируйте триггер "FICS". 3. Скопируйте все переменные (для облегчения задачи можно скопировать, а затем удалить триггер "FICS variables", если включено автоматическое создание переменных).
Версия cJass: 1. Скопируйте триггер "FICS cJass" (и разблокируйте его).
private constant timer T = CreateTimer(); private item Dropped[ ]; private int DropNum[ ], Temp[21]; private int DropCount = 0; private int ItemMap[ITEM_MAP_SIZE]; private int Items[500][5], Recipes[256][8]; private int ItemCount = 0, RecipeCount = 0; private int FirstList[ ], LastList[ ]; private int Recipe[ ], Next[ ], ListCount = 0; private int CallbackArgument = 0; private trigger Callbacks[500][2]; private bool Flag = true;
public int GetIndexById(int id) { return ItemMap[id - 'I000']; }
public int GetNormalByIndex(int index) { return Items[index][0]; }
public int GetRuneByIndex(int index) { return Items[index][1]; }
public int GetDisabledByIndex(int index) { return Items[index][2]; }
public int GetGoldCostByIndex(int index) { return Items[index][3]; }
public int GetLumberCostByIndex(int index) { return Items[index][4]; }
public trigger GetPickupCallbackByIndex(int index) { return Callbacks[index][0]; }
public trigger GetDropCallbackByIndex(int index) { return Callbacks[index][1]; }
public int GetManipulatedItemIndex() { return CallbackArgument; }
public int Register(int id, int rune, int dis, int gcost, int lcost) { ItemCount++; static if DEBUG_MODE { if id - 'I000' > ITEM_MAP_SIZE || rune - 'I000' > ITEM_MAP_SIZE || dis - 'I000' > ITEM_MAP_SIZE || id - 'I000' < 0 || rune - 'I000' < 0 || dis - 'I000' < 0 { BJDebugMsg("|cffff0000CRITICAL ERROR in FICS: Too many items. Increase the ITEM_MAP_SIZE constant. This message also may be shown if you are trying to register a standard item. Use only custom items instead.|r"); return 0; } } ItemMap[id - 'I000'] = ItemCount; ItemMap[rune - 'I000'] = ItemCount; ItemMap[dis - 'I000'] = ItemCount; Items[ItemCount][0] = id; Items[ItemCount][1] = rune; Items[ItemCount][2] = dis; Items[ItemCount][3] = gcost; Items[ItemCount][4] = lcost; return ItemCount; }
Есть подобная система на GUI, только без 2 и 4 пунктов. Если кому интересно могу выложить, как альтернативу, для не шарящих в jass'е
BossFight_Arena. (Hero vs Boss) Общая готовность демки: [||||||______] 35% - верменно заброшена *без названия* зборник мини игр (на данный момент 8 in 1 ) Общая готовность [|||||||_____] 50%
Как сказать, с точки зрения настраивомости она не сложна, нужно только заменять предметы в триггерах, но она немного грамозкая, 3 триггера для каждого предмета, если он входит в "рецепт". Вобшемто я использовал туже систему на основе рун, что и здесь.
Quote (SirNikolas)
не надоело делать такое на GUI.
Мне чисто физически за 2-3 месяца не могло это надоесть. Планирую изучать jass, но не могу найти учителя.
По сабжу: если купить предмет с полным инвентаёрм, то купленый итем исчезнит.
BossFight_Arena. (Hero vs Boss) Общая готовность демки: [||||||______] 35% - верменно заброшена *без названия* зборник мини игр (на данный момент 8 in 1 ) Общая готовность [|||||||_____] 50%
BossFight_Arena. (Hero vs Boss) Общая готовность демки: [||||||______] 35% - верменно заброшена *без названия* зборник мини игр (на данный момент 8 in 1 ) Общая готовность [|||||||_____] 50%
Добавлено (11-05-2011, 11:52) --------------------------------------------- я видал в одной мапе такое, когда герой покупает/подбирает предмет, то у него 6 слот становится пустым. Мапа это - AoN.
а вообще я думаю что у каждого уважающего себя картостроителя есть подобная система
Интересно... однако. (Ушёл делать себе такую)
Мир - Игра с непонятным сюжетом и странной графой. Карта которую делаю: Fight of Shinoby Taskete Hime v1.43b Ландшафт: 50% Триггеры: 70% Итемы: 85% Герои: 95% (для первый тест) Оптимизация: 30%
Извините, может за глупый вопрос, но что такое равкод?
Добавлено (29 Декабрь 2011, 09:52:29) --------------------------------------------- Да и еще вопрос почему после добавления в карту наработки все нестандартное в мапе называется TRIGSTR_'число' Это можно исправить
Да и еще вопрос почему после добавления в карту наработки все нестандартное в мапе называется TRIGSTR_'число' Это можно исправить
непонял вопрос, что нестандартное? равкод = CTRL+D в редакторе обьектов, вместо имени обьектов будет 4-значное hex-значение, называемое рав-кодом аля raw-code
Добавлено (29 Декабрь 2011, 11:45:39) --------------------------------------------- [DUОS], ну ты зверь))) на jass2)