26

» WarCraft 3 / Как узнать кол-во единиц атаки у юнита?

нет, только костыли
в самом редакторе есть список функций, пользуйтесь им
26

» WarCraft 3 / Иконки на заказ

EHP_Sequence:
ScopteRectuS:
EHP_Sequence, потому что нужно устанавливать две версии: включенную и отключенную.
Я установил включенную версию в строку "Графика пиктограмма используется", а выключенную в строку "графика пиктограмма не используется". Это разве не правильно?
не правильно.
26

» WarCraft 3 / Очистка локальных переменных

да, и это опять же описано в статьях, что необходимо обнулять а что нет
26

» WarCraft 3 / Модель, что с тобой не так?

ну так их же поворачивать нужно...
можете сделать кость на месте источника частиц, к ней привязать его, и поворачивать кость в мдлвисе, ибо в МЕ есть баг с вращением частиц
26

» WarCraft 3 / Триггерный бафф

как написал ссср, единого универсального решения нет и не будет, нужно делать систему нужную под конкретно твои задачи
дополню своим примером такой системы
сначала я сделал описание всех свойств бафов, затем сделал базу данных самих бафов, а затем уже к ней систему наложения и снятия
на баф делается своя структура
struct MyBuffData
        real duration, tick = 0.
        int cell, level, state, total = 0
        bool Unpause = false
        unit source, victim
        
        real effect_over_time_value, effect_over_time_delay
        bool effect_over_time_type
        string effect_over_time_sfx, effect_over_time_sfx_point
        
        int param[5]
        real param_value[5]
        
        
        
        void get_level_data(int level){
            int c = 0
                this.level = level
                    if this.level == 1 {
                        while(c++ < 5) {
                            this.param[c-1] = WhichState_1[this.cell][c]
                            this.param_value[c-1] = WhichStateValue_1[this.cell][c]
                        }
                    }
                    elseif this.level == 2 {
                        while(c++ < 5) {
                            this.param[c-1] = WhichState_2[this.cell][c]
                            this.param_value[c-1] = WhichStateValue_2[this.cell][c]
                        }
                    }
                    elseif this.level == 3 {
                        while(c++ < 5) {
                            this.param[c-1] = WhichState_3[this.cell][c]
                            this.param_value[c-1] = WhichStateValue_3[this.cell][c]
                        }
                    }
                    elseif this.level == 4 {
                       while(c++ < 5) {
                            this.param[c-1] = WhichState_4[this.cell][c]
                            this.param_value[c-1] = WhichStateValue_4[this.cell][c]
                        }
                    }
                    elseif this.level == 5 {
                        while(c++ < 5) {
                            this.param[c-1] = WhichState_5[this.cell][c]
                            this.param_value[c-1] = WhichStateValue_5[this.cell][c]
                        }
                    }
        }
        
        void set_level(int level){
            if level > 0 {
                SetUnitAbilityLevel(this.victim, BuffId[this.cell][1], level)
                SetUnitAbilityLevel(this.victim, BuffId[this.cell][2], level)
                this.get_level_data(level)
            }
        }
        
        void set_duration(real time){
                if time == -1. {
                    time = BuffTime[this.cell][this.level]
                }
            this.duration = time
        }
        
        
        static thistype create(unit a, unit b, int l){
            thistype this = thistype.allocate()
                this.level = l
                this.source = a
                this.victim = b
                this.Unpause = false
                this.tick = 0.
                this.total = 0
            return this
        }
        
    endstruct
и делается типа менеджера который учитывает все активные баффы и смотрит нужно ли им еще висеть и производить эффект
кат
private void BuffsUpdate(){
        int index = 0, C1 = 1
        UD src
        
        if Stack == 0 { return }
        
            loop {
                exitwhen index >= Stack
                index++
                    if BuffStack[index].victim == null {
                        BuffStack[index].destroy()
                        BuffStack[index] = BuffStack[Stack]
                        Stack--
                    }
            }
            
            index = 0
            loop {
                exitwhen index >= Stack
                index++
                
                src = GetData(BuffStack[index].victim)
				if (src > 0 and (BuffStack[index].duration <= 0. or GetHp(BuffStack[index].victim) <= 0.045 or GetUnitAbilityLevel(BuffStack[index].victim, BuffId[BuffStack[index].cell][2]) == 0)) {
				
				и так далее...

в итоге выглядит типа
//=================================
        // curse
            BuffId[17][1] = 'A00F'; BuffId[17][2] = 'B01E'
            BuffType[17] = TYPE_MAGICAL
            BuffPolar[17] = BUFF_TYPE_NEGATIVE
            BuffTime[17][1] = 12.
            BuffRank[17] = 5
            WhichState_1[17][1] = OUTPUT_DAMAGE_SCALE
            WhichStateValue_1[17][1] = 0.5
            DebuffChance[17][1] = 75.
        //=================================
проклятие которое уменьшает исходящий урон цели на 50%, OUTPUT_DAMAGE_SCALE описана в структуре юнита и влияется через воздействие бафа
...

там где мне нужно я делаю просто
AddBuffToUnit(target, caster,  'A00F', 1, false)

карту прикрепил если понадобится
Загруженные файлы
26

» WarCraft 3 / Как удалить способность?

8gabriel8:
ClotPh:
Custom script: set u = null в конце не забудь
без него будет действовать но будет утечка
Разве утечки не будет при обнулении переменной? Раньше читал, что только Remove избавляет от утечки.
как бы удалять объект или ссылку на объект разные вещи
26

» WarCraft 3 / Как перенести все переменные в другую карту?

в параметрах редактора можно поставить галочку "автоматически создавать неизвестные переменные"
26

» WarCraft 3 / Как удалить способность?

самый примитивный это использовать wait, но он работает неточно, и если будет несколько таких применений, начнутся оч инересные вещи, так что в другом случае учитесь работать с таймерами и параллельными массивами, хеш таблицами, локальными переменными, все есть в базе статей и тонна примеров в теме с заклинаниями на заказ
26

» WarCraft 3 / Редактор моделей

это не индивидуальные особенности, это особенность программы, про которую я еще в самом начале сказал.
в данном случае показал себя полным нулем ты, начав нести что то космическое, так что воспользуйся своим же советом
26

» WarCraft 3 / Редактор моделей

у тебя не открывает потому что путь до рабочего стола содержит русские символы, вася) как пользователь называется, а? а путь какой до рабочего стола?
26

» WarCraft 3 / Редактор моделей

какое отношение мдлвис имеет к модел эдитору?) ты написал что модели должны быть в папке с модел эдитором у версии 1.05, я тебе показал что нет.
конечно это все программы которые выбирают себе хозяина и как себя с ним вести, правда?)
26

» WarCraft 3 / Редактор моделей

Absolute:
Hate:
Модели должны находится в той же папке, где и модель эдитор.
что ты несешь, а?
В 1.05 был баг, если файл не в одной папке с вариком , то выбивает ошибку. Не умничай, если не понимаешь.
с тобой все в порядке?
Загруженные файлы
26

» WarCraft 3 / Редактор моделей

Модели должны находится в той же папке, где и модель эдитор.
что ты несешь, а?
26

» WarCraft 3 / Помощь в избавлении от BJ

PT153:
Не все BJ функции зло. Злом являются те, кто использует локации, группы, кланы, делают вызов 1-й функции без доп. аргументов.
практически все бж функции - оберточные, а значит их можно раскрыть и избежать двойных а то и тройных вызовов функций
26

» WarCraft 3 / Помощь в избавлении от BJ

Как вставить в эту формулу то, что suriken сдвигается на 20 едениц?
range = дистанция / (время полета / период срабатывания)
нахождение времени дистанции и скорости это 4 класс математики
26

» WarCraft 3 / Помощь в избавлении от BJ

я не имел ввиду буквально убрать слип не заменив ничем. все что вы делаете двумя функциями через слип должно делаться одной без него
Это я и так знал, но я запутался в формулах, а не в принципе.
a = угол направления
x + range * Cos(a * bj_DEGTORAD)
y + range * Sin(a * bj_DEGTORAD)
26

» WarCraft 3 / Редактор моделей

возможно русские символы в пути до программы или в названии модели
26

» WarCraft 3 / Помощь в избавлении от BJ

call TriggerSleepAction() 
убрать

бж функции для исследования замечательно раскрываются с зажатием ctrl и кликом по ним

обнулять реалки довольно мощно

сравнивать логические с логическими так же не нужно

вместо точек используйте координаты

это на первое время

и да, закрывайте созданные вопросы если на них дали ответ
26

» WarCraft 3 / Доп статы

пассивки таким образом не ловятся, либо делаете свои пассивки на триггерах, либо отслеживаете через эффекты орбов (это если пассивки на атаку)
26

» WarCraft 3 / Помощь с локальными переменными

изучайте как сделано, что бы делать муи на гуи вам нужно понять как работать с параллельными массивами
Загруженные файлы
26

» WarCraft 3 / LoadUnitHandle не возвращает значение функции

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

кстати вы не пересохраняете тик, так что таймер будет вечным по сути
26

» WarCraft 3 / Более трёх героев

EHP_Sequence:
Блин, опять триггеры.
без них не рассчитывайте сделать вообще что либо