0
13
3 года назад
0

» WarCraft 3 / CreateImage артефакты

PT153, аналогично ловлю краш.
В итоге получил не совсем то что хотел но для моих нужд, должно хватить. Если image наползают друг на друга - получает черные полосы на стыках, если не доходят - светло голубые
Изображение 128x128, заполнена центральная часть 64х64, DXT5
Загруженные файлы
0
13
3 года назад
Отредактирован Nelloy
0

» WarCraft 3 / CreateImage артефакты

PT153, вытащил из Casc архива атлас текстур Ashenvale_Dirt. Открыл в paint.net, Скопировал часть из атласа 64х64 и вставил в д новый файл 64х64. Удалил рамку в 1px (0 opacity). Сохранил в формате DXT5 sRGB с параметрами оптимизация сжатия оценочная, генерация текстур бикубический метод.

Vlod, Что-то ловлю краши при создании больше одного ubersplat, а тот что создается не отображается
    let x = 0
    let t = new hTimer()
    t.addAction(()=>{
        let u = CreateUbersplat(x, 0, 'Adrt', 255, 255, 255, 255, false, false)
        SetUbersplatRenderAlways(u, true)
        x += 128
    })
    t.start(1, true)
0
13
3 года назад
0

» WarCraft 3 / CreateImage артефакты

Bergi_Bear, эх, задумка была именно обойти ограничение SetTerrainType с их помощью. Если не предложат чего-то стоящего, придется делать так как есть и тупо лочить камеру.
1
13
3 года назад
1

» WarCraft 3 / Lua в TypeScript

Преобразовывает .ts файлы в .lua, затем все надо объединить в один файл war3map.lua.
0
13
3 года назад
0

» WarCraft 3 / Еще одна глупая идея про оптимизацию

SсRealm, wurst - обертка для jass, как typescript для lua (в реалиях wc3)
2
13
3 года назад
Отредактирован Nelloy
2

» WarCraft 3 / Обладая framehandle можно ли узнать, что лежит внутри?

Нет, ничего путного из них не получится вытащить. Мне хватает такого для определения списка выбранных юнитов. TypeScript, _groups - хеш-таблица, хранящая выбранных юнитов конкретного игрока.
    function _runActios(pl: jplayer, event: 'SELECT' | 'DESELECT'){
        let u = GetTriggerUnit()
        let gr = _groups.get(pl)
        if (!gr || !u){return}

        let found = gr.indexOf(u)

        if (_lock){
            if (found < 0 && pl == GetLocalPlayer()){
                SelectUnit(u, event == 'DESELECT')
            }
        } else {
            if (event == 'SELECT' && found < 0){
                gr.push(u)
            } else if (event == 'DESELECT' && found >= 0){
                gr.splice(found, 1)
            }
            _actions.run(pl, Object.assign([], gr))
        }
    }

    function _checkDied(this: void){
        let u = GetTriggerUnit()

        for (let [pl, gr] of _groups){
            if (gr.indexOf(u) >= 0){_runActios(pl, 'DESELECT')}
        }
    }
		...
        _trigger_select = CreateTrigger()
        _trigger_deselect = CreateTrigger()
        _trigger_died = CreateTrigger()
        TriggerAddAction(_trigger_select, (() => {_runActios(GetTriggerPlayer(), 'SELECT')}))
        TriggerAddAction(_trigger_deselect, (() => {_runActios(GetTriggerPlayer(), 'DESELECT')}))
        TriggerAddAction(_trigger_died, _checkDied)

        for (let i = 0; i < bj_MAX_PLAYER_SLOTS; i++){
            let pl = Player(i)
            if (GetPlayerController(pl) == MAP_CONTROL_USER &&
                GetPlayerSlotState(pl) == PLAYER_SLOT_STATE_PLAYING){

                _groups.set(pl, [])
                TriggerRegisterPlayerUnitEvent(_trigger_select, pl, EVENT_PLAYER_UNIT_SELECTED)
                TriggerRegisterPlayerUnitEvent(_trigger_deselect, pl, EVENT_PLAYER_UNIT_DESELECTED)
                TriggerRegisterPlayerUnitEvent(_trigger_died, pl, EVENT_PLAYER_UNIT_DEATH)
            } 
        }
		...
1
13
3 года назад
Отредактирован Nelloy
1

» WarCraft 3 / Как лучше организовать обработку кастов?

Если на луа, то можно что-то вроде
local id2callback = []
function registerSpell(id, callback){
	id2callback[id] = callback
}
...
function runSpell(id){
	local callback = id2callback[id[
	if (type(callback) == 'function){
		callback()
	}
}
0
13
3 года назад
Отредактирован Nelloy
0

» WarCraft 3 / Custom hero: Revival

Obelick, где-то большие проблемы с утечками. Играл один режим PVE, берсом. На ~25 волне заметил проблемы с фпс на арене (~40), и 75 в магазе. К 40 волне упало до 9 на арене и 40 в магазе. К 46 на арене - 4 фпс
poison weapon, corrosive aura,rotting flesh, lifedrain, master of poison, blood storm, executioner, arena gold
Предметы:
tormentor, spirit arrows, blades of terror
0
13
3 года назад
0

» WarCraft 3 / Режим графики игрока SD или HD?


function IsReforged takes nothing returns boolean
   return GetLocalizedString("REFORGED") != "REFORGED"
endfunction
Не работает
0
13
3 года назад
0

» WarCraft 3 / Custom hero: Revival

Obelick, честно говоря, меня отсутствие иконок больше всего расстроило) Но простого пути решения проблемы не знаю.
0
13
3 года назад
Отредактирован Nelloy
0

» WarCraft 3 / Custom hero: Revival

Obelick,
Там выходит всего-то 8 (слоты) * 12 (игроки) = 96, Правда, если в канале нельзя на лету менять тип цели, то еще х4))
Можно выдвинуть кнопки с панели приказов за пределы экрана и нарисовать свои, но тоже гемора много.
У меня тестовая панель параметров выглядит так:
Загруженные файлы
0
13
3 года назад
0

» WarCraft 3 / Custom hero: Revival

Obelick,
По поводу интерфейса:
  1. нет иконок у способностей после изучения;
  2. кривое отображение % бонусов в описании, на мой вкус, так и вообще неудобное решение, можно было бы сделать отдельной скрываемой панелькой, как, например в SunkenCity;
  3. один раз пропал плавающий текст на магазинами;
  4. описание способностей после покупки лучше бы отображало текущие показатели, а не за лвл. Никто не любит лишний раз пересчитывать в уме без необходимости.
По поводу юнитов сложилось впечатление, что их всего 5-10 видов. Не считаю боссов.
Дело вкуса, но я бы сделал более заметное разделение противников по классам. А то что маг, что милишник имеют очень близкие параметры выживаемости и урона. Это позволит несколько разнообразить геймплей.
0
13
3 года назад
0

» WarCraft 3 / Custom hero: Revival

Понравилось. Но пока видно множество недоработок. К очевидным вещам, как недоделанный интерфейс, хотел бы добавить отсутствие разнообразия волн, унылость ландшафта и явное доминирование пассивок (по крайней мере в некоторых билдах). Отличный потенциал у карты.
PS: эффект одинаковых артефактов должен стакаться? Не заметил такого с топорами на кровотечение.
1
13
3 года назад
1

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

Дашь человеку рыбу, он будет сыт один день,. Научишь рыбачить - будет сыт всегда. CascView в помощь.

Открываешь архив игры и ищешь то что нужно
0
13
3 года назад
0

» WarCraft 3 / Как нанести урон 1 раз, дамми юнитом который летит

Наносить урон триггерно (дамми можно на эффект заменить). Создаешь массив тех, кто уже получил урон. В таймере берешь всех юнитов рядом со снарядом, если юнита нет в списке - наносишь урон и добавляешь в список
0
13
3 года назад
0

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

МрачныйВорон, только курсор просто так не поменять. Придется использовать image, который будет отставать, потому что криво работает отслеживание мыши.
0
13
3 года назад
0

» WarCraft 3 / Проверка типа переменной

NazarPunk, подразобрался, это прямо то, чего не хватало! Спасибо
0
13
3 года назад
0

» WarCraft 3 / Проверка типа переменной

NazarPunk, с typescript не знаком, но выглядит интересно.
2
13
3 года назад
Отредактирован Nelloy
2

» WarCraft 3 / Проверка типа переменной

Оригинал функции был предназначен для работы с моими классами ООП с проверками наследования. В таком духе:
---@type ColorClass
local Color = ...

function public:setColor(color)
    isTypeErr(color, Color, 'color')
    ...
end

NazarPunk, очень рад, если Вы гений-кодер и никогда не ошибаетесь. Мне, увы, этого не дано и приходится везде делать проверки, чтобы не искать потом ошибки принтами.
0
13
4 года назад
Отредактирован Nelloy
0

» WarCraft 3 / Триггерно заменить призываемого юнита (в ро)

Roy Mustang, интересное решение, но, к сожалению, поля, которые можно менять триггерно ограничены. Можно сделать отображение модели при использовании заклинания, но это задача не из простых.
0
0
13
4 года назад
0

» WarCraft 3 / Не могу найти в WarCraft 3 Reforged файл WorldEditStrings.txt

Никогда не пользовался, но может ищете этот файл "war3map.wts"?
0
13
4 года назад
Отредактирован Nelloy
0

» WarCraft 3 / Как создать воду через триггеры?

Или использовать эффект с моделью воды.
0
13
4 года назад
Отредактирован Nelloy
0

» WarCraft 3 / Спрятать хп/мп бар героя + его уровень в Reforged

Теоритически можно сделать круг выделения очень большим или очень маленьким, но не пробовал.
Upd: перечитал текст над картинкой...
0
13
4 года назад
0

» WarCraft 3 / Как "запаузить" любые действия с юнитом. (Не в прямом смысле)

С мышью не знаю как, а заблокировать клавиатуру вот: