30

» WarCraft 3 / Баг через 6000 сек

"OrderBackToLine*" желательно передавать структуру, чтобы он нормально все обрабатывал, что тут невозможно сделать.
Зачем так сложно, можно просто использовать двумерные массивы. Вот вам библиотека Spawn, которая совместима с вашим кодом и не создаёт Location. По необходимости методов можно добавить
zinc
//! zinc
library Spawn {
    rect SpawnRect[2][10];

    public {
        function IsUnitAlive(unit u) -> boolean {
            return GetUnitState(u, UNIT_STATE_LIFE) > 0.45; // именно при этом значении наступает смерть
        }
        
        function OrderBackToLine(unit u, integer diff) {
            integer data = GetUnitUserData(u);
            integer data10 = data / 10;
            integer modulus = data - (data / 10) * 10;
            rect rct;
            
            if (IsUnitAlive(u)){
                if (data10 >=1 && data10 <= 3){
                    rct = SpawnRect[data10+diff][modulus];
                } else {
                    if (udg_isTurnedOnDebug){
                        rct = SpawnRect[data10+diff][2];
                        // MakeTextTagAboveUnit нужно объявить до библиотеки Spawn
                        //MakeTextTagAboveUnit( u, "|c000000FFBack to Home!|r", 1.0, 1.0, 2.0, 0.5, 255, 255, 255, 255);
                        BJDebugMsg("Юнит побежал домой!");
                    }
                    
                }
                IssuePointOrder(u, "attack", GetRectCenterX(rct), GetRectCenterY(rct));
            }
            rct = null;
        }
        
        function OrderBackToLineB(unit u) { OrderBackToLine(u, 0); }
        function OrderBackToLineR(unit u) { OrderBackToLine(u, 3); }
    }

    function onInit(){
        //B - Линия 1
        SpawnRect[0][1] = gg_rct_WayP_1x1;
        SpawnRect[0][2] = gg_rct_WayP_1x2;
        SpawnRect[0][3] = gg_rct_WayP_1x3;
        SpawnRect[0][4] = gg_rct_WayP_1x4;
        SpawnRect[0][5] = gg_rct_WayP_1x5;
        SpawnRect[0][6] = gg_rct_WayP_1x6;
        SpawnRect[0][7] = gg_rct_RedMainBase;
        //B - Линия 2
        SpawnRect[1][1] = gg_rct_WayP_2x1;
        SpawnRect[1][2] = gg_rct_WayP_2x2;
        SpawnRect[1][3] = gg_rct_WayP_2x3;
        SpawnRect[1][4] = gg_rct_WayP_2x4;
        SpawnRect[1][5] = gg_rct_RedMainBase;
        //B - Линия 3
        SpawnRect[2][1] = gg_rct_WayP_3x1;
        SpawnRect[2][2] = gg_rct_WayP_3x2;
        SpawnRect[2][3] = gg_rct_WayP_3x3;
        SpawnRect[2][4] = gg_rct_WayP_3x4;
        SpawnRect[2][5] = gg_rct_WayP_3x5;
        SpawnRect[2][6] = gg_rct_WayP_3x6;
        SpawnRect[2][7] = gg_rct_RedMainBase;
    
         //R - Линия 1
        SpawnRect[3][1] = gg_rct_WayP_1x6;
        SpawnRect[3][2] = gg_rct_WayP_1x5;
        SpawnRect[3][3] = gg_rct_WayP_1x4;
        SpawnRect[3][4] = gg_rct_WayP_1x3;
        SpawnRect[3][5] = gg_rct_WayP_1x2;
        SpawnRect[3][6] = gg_rct_WayP_1x1;
        SpawnRect[3][7] = gg_rct_BlueMainBase;
        //R - Линия 2
        SpawnRect[4][1] = gg_rct_WayP_2x4;
        SpawnRect[4][2] = gg_rct_WayP_2x3;
        SpawnRect[4][3] = gg_rct_WayP_2x2;
        SpawnRect[4][4] = gg_rct_WayP_2x1;
        SpawnRect[4][5] = gg_rct_BlueMainBase;
        //R - Линия 3
        SpawnRect[5][1] = gg_rct_WayP_3x6;
        SpawnRect[5][2] = gg_rct_WayP_3x5;
        SpawnRect[5][3] = gg_rct_WayP_3x4;
        SpawnRect[5][4] = gg_rct_WayP_3x3;
        SpawnRect[5][5] = gg_rct_WayP_3x2;
        SpawnRect[5][6] = gg_rct_WayP_3x1;
        SpawnRect[5][7] = gg_rct_BlueMainBase;
    }
}

//! endzinc
В глобальных переменных объявить двумерный массив нельзя.
В JASS нет двумерных массивов, просто препроцессоры zinc,vJass,cJass добавляют синтаксический сахар и используют одномерные.
поскольку нужно передавать массив, либо писать дикий костыль на определение массивов, что я не люблю делать.
Можно и двумерным справиться без костылей.
30

» WarCraft 3 / Баг через 6000 сек

OrderBackToLineB, OrderBackToLineR
ForceLineBlue1, ForceLineBlue2, ForceLineBlue3
ForceLineRed1, ForceLineRed2, ForceLineRed3
Line1, Line2, Line3
Триггеры Types * где в каждом событие Map Initalization что-бы задать несколько переменных.
Притом, что я карту даже сохранить не смог ибо JGNP ругается
local are only supported at the top function
но хочу работать только с нативными инструментами
если нативные инструменты замедляют разработку, то почему бы не использовать нормальные, где такую кашу можно написать проще
раскрыть
if ( ( GetUnitUserData(pickedUnit) / 10 ) == 1 ) then
            local location orderLoc = Location(GetRectCenterX(udg_arrRRegions_WayP1[modulus]), GetRectCenterY(udg_arrRRegions_WayP1[modulus]))
            call IssuePointOrderLoc( pickedUnit, "attack", orderLoc )
            call RemoveLocation( orderLoc )
        
        elseif ( ( GetUnitUserData(pickedUnit) / 10 ) == 2 ) then
            local location orderLoc = Location(GetRectCenterX(udg_arrRRegions_WayP2[modulus]), GetRectCenterY(udg_arrRRegions_WayP2[modulus]))
            call IssuePointOrderLoc( pickedUnit, "attack", orderLoc )
            call RemoveLocation( orderLoc )
            
        elseif ( ( GetUnitUserData(pickedUnit) / 10 ) == 3 ) then
            local location orderLoc = Location(GetRectCenterX(udg_arrRRegions_WayP3[modulus]), GetRectCenterY(udg_arrRRegions_WayP3[modulus]))
            call IssuePointOrderLoc( pickedUnit, "attack", orderLoc )
            call RemoveLocation( orderLoc )
// Гдето в при инициализации
real SpawnRectR[][];
real SpawnRectB[][];

SpawnRectB[0][0] = udg_rct_SpawnRectB_0_0;
SpawnRectB[0][1] = udg_rct_SpawnRectB_0_1;
SpawnRectR[1][0] = udg_rct_SpawnRectR_1_0;
SpawnRectR[1][1] = udg_rct_SpawnRectR_1_1;

// и.т.д
function SpawnRectGet(boolean isB, integer r1, integer r2){
 	if (isB) {
		return SpawnRectB[r1][r2];
	}
	return SpawnRectR[r1][r2];
}

function SpawnOrder(unit u, boolean isB, integer r1, integer r2) {
	rect rct = SpawnRectGet(isB, r1, r2);

	IssuePointOrder( pickedUnit, "attack", GetRectCenterX(rct), GetRectCenterY(rct) );
	rct = null;
}

// где-то в событиях

integer data = GetUnitUserData(pickedUnit) ;
integer modulus = data - (data / 10) * 10
integer data10 = data / 10;

if (data10 >= 1 || data10 <=3){
	SpawnOrder(pickedUnit, data10, modulus);
}

30

» WarCraft 3 / Инвентарь персонажа

Вау, реально крутая
Правда при использовании нельзя двигать камеру, если вам это критично, можете использовать попроще
30

» WarCraft 3 / Инвентарь персонажа

Принятый ответ
вот , на мой взгляд самаю лучшая, только вот нужно JASS знать, что разобраться.
30

» WarCraft 3 / Баг через 6000 сек

Та же дота написана на JASS и у нее каждая способность создает временный триггер. Попробую во всяком случае.
JASS автоматически не делает весь код хорошим, а популярность карты не залог оптимального решения.
Порылся я в вашем коде и это ужасно. Копирование триггера, чтобы сделать теже действия, но с другими параметрами повеселило.
Лучше переделать всё пока не позно, а то потом в этой каше ничего не разберёте.
30

» WarCraft 3 / Баг через 6000 сек

Поподробнее пожалуйста. Что за баги?
В подробностях уже не помню, а гугл нашёл только xgm.guru/p/wc3/165628?postid=313095
для отлова урона можно использовать system-physical-damage-detection , там можно модифицировать урон.
30

» WarCraft 3 / Баг через 6000 сек

8gabriel8:
У меня работает на 1.26а. NazarPunk, может из редактора запускал?
И из игры тоже, а карта оказывается для 1.2.4e.
А там насколько помню были баги в TriggerAddAction, из-за чего я досих пор в условиях действия пишу.
30

» WarCraft 3 / Баг через 6000 сек

А какая версия warcraft'a нужна? У меня на 1.26a даже не запускается.
30

» WarCraft 3 / Три коридора v1.2

8gabriel8:
Коридоры Плети мне больше зашли, эта версия не столь атмосферная.
Было две идеи по коридорам и чтоб узнать, какая лучше, решил воплотить обе.
30

» WarCraft 3 / Heavensfall

Дизайн выше всяких похвал. Но что не понравилось.
  • инвентарь итак маленький, так ещё однотипные предметы не складываются.
  • в катсцене гг может превращаться в летучих мышей, а игроку это недоступно.
  • бессмертные курицы
  • не все катсцены можно пропустить
  • избитое клише с бутылками в бочках (кто их туда кладёт то?)
  • невидимые стены
30

» XGM Team / XGM — Премия 2018 года

Работа снимается с номинации: лучший проект для WarCraft 3

Ссылка на работу: xgm.guru/p/wc3/corridors-of-scouge

Работа снимается с номинации: Лучший разработчик

Ссылка на работу: xgm.guru/p/wc3/corridors-of-scouge

Работа для номинации: лучший проект для WarCraft 3

Дата создания/Глобального изменения: 30.09.2018
Ссылка на работу: xgm.guru/p/wc3/three-corridors

Работа для номинации: Лучший разработчик

Дата создания/Глобального изменения: 30.09.2018
Ссылка на работу: xgm.guru/p/wc3/three-corridors
30

» Game Dev / Игра как сущность

Вот например сверхсовременная RPG с векторной графикой, она подходит под ваши критерии игр?
30

» Game Dev / Игра как сущность

Цель - понять, когда отвечающему приходится пересчитывать предметы для ответа, а когда он отвечает не задумываясь.
Пять рядов по пять яблок можно ответить не пересчитывая.
подавать игроку один и тот же геймплей
тут уже всё размыто донельзя. Если гэймплэй это способ взаимодействия игрой, то я бы выделил:
  • рефлексы и быструю реакцию как в шутерах, слэшерах
  • сюжет как в RPG
  • пошаговые игры как шахматы или герои
А ваш пример с Транзистором некорректен, потому что всё всёравно сводится к затыкиванию кнопок, с тем же успехом жанр файтингов вообще можно называть самым разнообразным по гэйплэю ибо количество комбинаций там просто зашкаливает.
30

» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)

Предлагаю

  • Разрешить каждой способности менять ид приказа как у "Канал"
  • Добавить каждому предмету опцию сложения зарядов при подборе/покупке
  • Добавить альтернативнй синтаксис для JASS
  • Разрешить уменьшать уровень улучшений
  • Разрешить динамическую смену модели
  • Добавить возможность управлять требованиями к предметам/юнитам/способностям
  • Сделать глобальное событие "юнит получает урон"
30

» Storm The Castle / Storm The Castle.v.0.3

Начал играть один за фиолетового игрока, пока ждал когда красный игрок настроит игру тыкал курсором в магическую лавку - варкарафт повис. Рестартанул за красного игрока, вместо того, чтоб выбрать сложность игры, тыкал курсором в магическую лавку - варкрафт повис.
30

» XGM Team / Spotlight

Заголовок: Три коридора Плети
Краткое описание: AOS навеянный ностальгией.
Ссылка на ресурс: xgm.guru/p/wc3/corridors-of-scouge
Ссылка на изображение или гифку: xgm.guru/files/402/97665/comments/402569/Add.jpg
30

» XGM Team / XGM — Премия 2018 года

Работа для номинации: лучший проект для WarCraft 3

Дата создания/Глобального изменения: 30.09.2018
Ссылка на работу: xgm.guru/p/wc3/corridors-of-scouge

Работа для номинации: Лучший разработчик

Дата создания/Глобального изменения: 30.09.2018
Ссылка на работу: xgm.guru/p/wc3/corridors-of-scouge
30

» WarCraft 3 / Три коридора Плети v1.1

Версия 1.0

Карта приведена в играбельный вид и перешла в стадию добавления интересных вещей и подкручивания балланса.

Загруженные файлы
30

» WarCraft 3 / Три коридора Плети v1.1

Версия 0.07 beta

  • Исправлен баг с воскрешением героя
  • Изменена модель воина
  • Изменена система отображения нанесённого урона
  • Добавлено описание и ребалансированы навыки: Вапиризм, Демоническая сила, Смертельный удар, Сильный удар

30

» WarCraft 3 / Три коридора Плети v1.1

Можно поставить герою игрока такую проходимость, чтобы ходил сквозь крипов
Тогда пробитые герои не смогут прятаться за толпой крипов, что порушит балланс.
8gabriel8:
Есть тимколор, в груди волка свечение нужного цвета.
Модель мне самому нравится, но суммоны у меня отсутствуют как класс.
30

» WarCraft 3 / Три коридора Плети v1.1

Убери физический размер крипам, чтобы не застревал герой среди них.
Застревание в крипах нужно, чтоб убивать вражеских героев. Просто ещё не добавлены предметы, которые позволяют выбраться из крипов. На данный момент можно использовать Стремительность, Скачок или купить Кинжал убийцы.
Выбрал мага с иллюзиями, когда таймер воскрешения истёк, то иллюзии пропали, а герой так и не воскрес
Значит я где-то забыл проверку на "иллюзорность". Перепроверю обязательно.
Стоит больше добавить способностей, например, Трансмутация, Божественный щит, Призыв волка...
Трансмутацию и Щит добавлю, а вот с сумонерами печаль ибо есть же ещё Трупоеды, Инфернал, Чёрная стрела, Водяной|Огненный элементаль и балансировать этот зоопарк мне как-то нехочется. Пока что можно использовать Подчинение, в будущем ещё думаю предметов с подчинением добавить.
Модель волка-скелета
Я хотел добавить эту модель, но у неё нет тимколора, а для АоS он очень важен.
На днях добавлю контента, пофикшу баги и выложу версию.
30

» WarCraft 3 / Три коридора Плети v1.1

Версия 0.06 beta

  • Добавлена специализация магов
  • Добавлены новые предметы
  • Изменены модели героев
  • Ребалансированы крипы и добавлены башни

Загруженные файлы