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

на…
10 9 359
2
13
7 лет назад
2
TAHK90, а нафига ты это тут написал?
TAHK90:
качество падает и падает, именно поэтому вар и умирает а не потому что в него игроков мало играет.
Всем нормальным людям и всем у кого IQ выше 50 уже давно насрать на варик. Варик скатился, потому что собрал в себе всякий сброд: дотеров, школьников, дотеров-школьников, школьников-дотеров, анимешников, капрофилов, капрофаков и прочих геев.
0
8
7 лет назад
0
В последнее время всё меньше и меньше людей хотят учится мапмейкерству(ланд,моделинг,кодинг) но при этом всё больше и больше людей хотят делать карты нечего не уча и нечего не зная
получается уг,в которое играют другие игроки,которые тоже начинают делать свои мапы равняясь на это уг и в результате с каждым новым поколением мапмейкеров качество падает и падает, именно поэтому вар и умирает а не потому что в него игроков мало играет.
Я не могу завлечь игроков в варик,ибо их отталкивает движок и прочее.
этот способ используется во всех системах движения но я не нашёл на xgm не 1 статьи где он описывается.
3 6 187
0
7
8 лет назад
0
видимо у тебя другая версия jngp
Это было бы очень странно. Только что скачал его, никаких модулей не ставил, подключал только "cj_types_priv" и "cj_typesEx_priv". Попробую костыль и отпишусь.
nvc123, увы, но теперь он говорит, что я не перегрузил соответствующие операторы для своей структуры :D
Прикладываю код. Он не 100% рабочий, т.к. я как раз начал переписывать его под структуры (с хэштаблицей работал). В структурах же почти полный ноль, не смотря на опыт в сиподобных языках.
код
struct KB_data {
    unit u;
    real a;
    int times;
    KB_data MIN = 1;
    KB_data MAX = 500;
    
    void move() {
        real x = GetUnitX(.u);
        real y = GetUnitY(.u);
        x = TranslateX(x,KB_POWER,.a);
        y = TranslateY(y,KB_POWER,.a);
        SetUnitX(.u,x);
        SetUnitY(.u,y);
    }
    
    static void new(unit targ, real angle) {
        KB_data data = KB_data.create();
        if (data>MAX) {
            data.destroy();
            return;
        }
        data.times = 10;
        data.u = targ;
        data.a = angle;
    }
    
    static void delete() {
        .u = null;
        .destroy();
    }
    
    private void update() {
        KB_data data=MAX;
        loop {
            data.move()
            exitwhen (data==MIN);
            data--;
        }
    }
}
1
28
8 лет назад
1
ELB359, даже не знаю что сказать
видимо у тебя другая версия jngp
если коротко то твоя ошибка переводится следующим образом "я не могу сравнить 2 числа одного типа т.к. мне кажется что они разных типов хотя это и не так"
могу лишь предложить костыль но хз сработает он или нет
добавь ещё 1 переменную
mystruct ONE=1
и вместо
exitwhen a==1
пиши
exitwhen a==ONE
0
7
8 лет назад
0
exitwhen a==1
Ошибку выдает.
Загруженные файлы

Q/A

здесь можете задавать вопросы по jass
162 34 162
3
29
8 лет назад
Отредактирован Doc
3
Просто если я правильно понимаю все это дело происходит в стандартной системе координат т.е., и тут оно будет страдать в случае, если твой "конус" пересекает переход от 360 градусов к 0, в моем же случае этого не произойдет.
Мб я объясняю непонятно, в таком случае загугли скалярное произведение векторов, увидишь что A x B = |A| * |B| * cosAlpha (Alpha - угол между А и B), тогда если длина А = длина B = 1 -> A x B = cosAlpha, что тебе и нужно
github.com/DoctorGester/crumbling-island-arena/blob/master/game/... я реализовывал это здесь (не jass)
3
28
8 лет назад
3
GF RaiseD, док мастер объяснять все просто и понятно
но в чём он прав так это в том что можно обойтись без арктангенса
но если не хочешь учить вектора то
от енума отнимай атакера
т.е. вместо
GetUnitY(attacker)-GetUnitY(enumUnit)
пиши
GetUnitY(enumUnit)-GetUnitY(attacker)
3
29
8 лет назад
3
скалярное произведение единичных векторов равняется косинусу угла между ними, атан здесь не нужен
а = вектор от атакующего к цели
б = вектор от атакующего вперёд (cos(facing), sin(facing))
скалярное произведение нормализованных а и б нужно сравнить с половиной "ширины" нужного тебе конуса.
0
21
8 лет назад
Отредактирован Raised
0
Ещё вопрос. Пытался сделать триггерный Cleave и ограничить его действие следующим сектором:
кид
if bj_RADTODEG*Atan2(GetUnitY(attacker)-GetUnitY(enumUnit),GetUnitX(attacker)-GetUnitX(enumUnit)) >= GetUnitFacing(attacker)-65 and bj_RADTODEG*Atan2(GetUnitY(attacker)-GetUnitY(enumUnit),GetUnitX(attacker)-GetUnitX(enumUnit)) <= GetUnitFacing(attacker)+65 then

Я хотел таким образом ограничить клив сектором в 130 градусов. Но это условие никогда не действительно. Я что-то делаю не так.
5
28
8 лет назад
5
GF RaiseD, использовать библиотеки vjass
у библиотек есть initializer func_name
где func_name имя функции которая запустится при запуске карты (функция должна быть внутри библиотеки)
private func_name takes nothing returns nothing