XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Msey
????
offline
Опыт: 67,346
Активность:
проверить код на ошибки (zink)
Даммик должен (в принципе) красиво передвигаться, маневрируя ... но он почему-то начинает дергаться, иногда просто пропадать..
какую же я допустил ошибку в коде?
» раскрыть
Код:
{
            data d;
            integer i=data.N;
            
            real x;
            real y;
            real z;
            
            while (i>0)
            {
                i=i-1;
                d=data.V[i];
                
                d.s=d.s+ACCELERATION/FPS;
                d.d=d.d+d.s;
                d.t=d.t+(2*bj_PI)/(FPS/ROTATIONS);
                
                MoveLocation(tmploc, GetUnitX(d.c), GetUnitY(d.c));
                z=GetLocationZ(tmploc)+GetUnitFlyHeight(d.c);
                
                x=GetUnitX(d.c) + d.s*Cos(d.a) + d.q*Cos(d.t);
                y=GetUnitY(d.c) + d.s*Sin(d.a) + d.q*Sin(d.t);
                z=Sin(d.d/d.md*bj_PI)*d.h+DEFAULT_HEIGHT;
                
                MoveLocation(tmploc, x, y);
                z=z-GetLocationZ(tmploc);
                
                SetUnitX(d.c, x);
                SetUnitY(d.c, y);
                SetUnitFlyHeight(d.c, z, 0.);
                
                
                if (GetRandomInt(0,3)==0)
                {
                DestroyEffect(AddSpecialEffectTarget(VANISH_FX, d.c, "origin"));
                }
                
                if (d.d>=d.md)
                {
                    DestroyEffect(AddSpecialEffect(GROUND_FX, x, y));
                    
                    pass_x=x;
                    pass_y=y;
                    pass_c=d.x;
                    pass_i=d.i;
                    pass_r=Rect(x-GROUND_RADIUS, y-GROUND_RADIUS, x+GROUND_RADIUS, y+GROUND_RADIUS);
                    
                    GroupEnumUnitsInRange(g, x, y, GROUND_RADIUS, null);
                    ForGroup(g, function() 
                 

<  .  .  .  >
                    } );

Старый 25.03.2011, 02:02
J64_

offline
Опыт: 4,724
Активность:
Вроде норм но всеже попытаюсь потелепатить: дата точно содлается и добавляется в массив нормально? И где, цитирую
Диод
отладочные сообщения
?
Алсо у тя цикл независим от кол-чества...
При удалении из массива во время прохода могет произойти чп.
..
ВЫКЛАДЫВАЙ КОД
Старый 25.03.2011, 03:38
Doc

offline
Опыт: 63,163
Активность:
ты воложил слишком малую часть кода.
Старый 25.03.2011, 10:45
Msey
????
offline
Опыт: 67,346
Активность:
Часа два проверял весь код, в итоге сам нашел свою ошибку.
Код:
забыл обнулить 
d=null;

а это вообще не написал (как он вообще работал - не знаю :D )
 data.V[i]=data.V[data.N];


Тему клоуз
Старый 25.03.2011, 16:24
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:30.