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

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

Ответ
 
DearFear

offline
Опыт: 1,299
Активность:
Движение. Как избежать утечки?

Проблема


Я использую функцию move to point with polar offset. Но при её использовании на многих боевых еденицах, то игра начинает сильно лагать.

Решение которое не подходит


Именно эту функцию надо поместить на ботов. Тоесть чтобы они двигались ускоренно. Помогите пожалуйста.
Старый 26.06.2007, 12:16
S

offline
Опыт: 43,833
Активность:
записывай все точки в переменные а потом
call RemoveLocation(твоя переменная с точкой)
Старый 26.06.2007, 12:21
DearFear

offline
Опыт: 1,299
Активность:
Забыл добавить: я в jassе нифига не понимаю. Как это в тригах сделать?

DearFear добавил:
Воть, сделал карту. Проверьте на утечку. А то не умею.
Та вроде после двух минут езды, она не глючила. Только иногда подглюкивало. Чуть-чуть.
Прикрепленные файлы
Тип файла: w3m Проверьте на утечку.w3m (13.3 Кбайт, 10 просмотров )
Старый 26.06.2007, 13:04
Mczak
Нубищще
offline
Опыт: 700
Активность:
DearFear Блин, вообще глумная карта=)) Меня прикалывает. Никогда не додумался б как такой триггер сделать.
Старый 26.06.2007, 13:24
adic3x

offline
Опыт: 108,439
Активность:
http://xgm.guru/articles.php?section=wc3&name=optimisations
http://xgm.guru/articles.php?section=wc3&name=jass_polar_coordinates
вот статиь, посвященные данному вопросу. от себя скажу что делать подобное без жасса нормально - невозможно.
Старый 26.06.2007, 13:25
DearFear

offline
Опыт: 1,299
Активность:
ADOLF в глубине души я догадывался...

DearFear добавил:
Походу их надо удалять?
Но в costum script как я только не прописывал:
set u[1] = none
set u[1] = null
Но при включении, триггер отрубаеться. И пишит ошибку. Обьясните что не так?
А лучше переделайте мою карту как надо. :)
Старый 27.06.2007, 22:04
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Если переменная u - типа юнит, то
Код:
set u = null

Если типа точка (point, location)
Код:
call RemoveLocation(u)
set u = null
Старый 27.06.2007, 22:59
DearFear

offline
Опыт: 1,299
Активность:
DFlyer Пасиб. Щас попробую. А если массив то u[1], да?

DearFear добавил:
Ещё вопрос: перед переменой надо писать udg_?
переменная u[1]
call RemoveLocation(udg_u[1])
Старый 27.06.2007, 23:14
J
expert
offline
Опыт: 48,447
Активность:
DearFear если это Глобольная переменная, то надо, если нет то нет
Старый 27.06.2007, 23:16
DearFear

offline
Опыт: 1,299
Активность:
Цитата:
Every 0.02 seconds of game time

Set u[1] = ((Position of Bot[1]) offset by 25.00 towards (Facing of Bot[1]) degrees)
Move Bot[1] instantly to u[1]
Custom script: call RemoveLocation(udg_u[1])
Custom script: set udg_u[1] = null


Где:
Bot[1] - unit
u[1] - точка

DearFear добавил:
Правильно?
Jon - обьясни что такое глобальная.

P.S: Спасибо всем что вы есть, и всегда сможете помочь.

DearFear добавил:
Эх.. Придёться стать джаззером...
Старый 27.06.2007, 23:19
J
expert
offline
Опыт: 48,447
Активность:
Position of Bot[1] - это точка, ее тоже надо удалить

Jon добавил:
используй координаты, так будет меньше замороков с удалением и обнулением, да и код будет понятнее

Jon добавил:
однако это онли джаз
Старый 27.06.2007, 23:21
DearFear

offline
Опыт: 1,299
Активность:
Jon напиши как надо. спс

P.S. только что отчаялся что глючит. Думал, всё. Хана. А тут вы помогаете :). Это не флуд. Это такое "спасибо". :)
Старый 27.06.2007, 23:22
J
expert
offline
Опыт: 48,447
Активность:
Код:
SetUnitPosition(udg_Bot[1], GetUnitX(udg_Bot[1])+25*Cos(GetUnitFacing(udg_Bot[1])*bj_DEGTORAD), GetUnitY(udg_Bot[1])+25*Sin(GetUnitFacing(udg_Bot[1])*bj_DEGTORAD))

вот и все
Старый 27.06.2007, 23:25
DearFear

offline
Опыт: 1,299
Активность:
А я в джаззе нифига не понимаю.
Пишу
call RemoveLocation(Position of Bot[1])
Не идет. Напишите как правильно.

DearFear добавил:
Мдя... оч легко и понятно... :)
Старый 27.06.2007, 23:26
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Код:
set Loc = Position of Bot[1]
... действия ...
call RemoveLocation(Loc)

// т.е. сначала нада записать точу в переменную, а потом её удалять
Старый 27.06.2007, 23:29
J
expert
offline
Опыт: 48,447
Активность:
DearFear я подредактировал верхнюю строчку... скопируй заного, и через Custom script: вставь в код, и все
Старый 27.06.2007, 23:30
DearFear

offline
Опыт: 1,299
Активность:
Jon вставил. Спасибо ОГРОМНЕЙШОЕ. Сейчас проверю на лаги.

DearFear добавил:
Jon всё равно лаги
Старый 27.06.2007, 23:40
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Every 0.02 seconds of game time

поставь 0.04, только тогда две цыфры 25 в той строчке замени на 50


у тебя еще ченить выполняется периодически? или в этом тригере еще есть какиенибудь действия?
Старый 27.06.2007, 23:42
DearFear

offline
Опыт: 1,299
Активность:
Блин. Лоханулся. Bot'ов то 4. А я только для 1 написал. Щас заново проверю

DearFear добавил:
Нету

DearFear добавил:
Если 0.05 то скорость упадет. Не навредит если я добавлю так

Код:
Every 0.04 seconds of game time

Set u[1] = ((Position of Bot[1]) offset by 50.00 towards (Facing of Bot[1]) degrees)
Move Bot[1] instantly to u[1]
и скрипты


P.S. я заменил точку 25 на 50. Походу и в скрипте менять надо.

DearFear добавил:
Я догадался. Не дурак всё таки.

P.S. Чую стану джаззером...
Старый 27.06.2007, 23:45
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
P.S. Чую стану джаззером...

удачи
хотя даже при 0,02 недолжно лагать.. чтото там у тебя значит всеже не то..
Старый 27.06.2007, 23:46
Ответ

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

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

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

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



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