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

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

Закрытая тема
 
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Jon не то ты сказал! DFlyer переводишь в джазз тригер, копируешь что нада, переводишь назад, всавляешь! Вот токаприкол в том что близзы не сделали действия удаления точек и т.д и поэтому нада юзать джасс!

имено поэтому у тебя все плохо получилось...
НЕНАДО юзать стандырные BJ функции которые используются действиями в GUI.
надо более расширять кругозор, для этого тебе поможет jasscraft, т.к. отуда ты сможеш узнать все функции, и раскрытьо старые на более простые.

ведь функции которые используются в GUI только половина и то и меньше всех фунций в общем
Старый 09.01.2007, 14:53
Krol

offline
Опыт: 17,884
Активность:
Jon так если они не порусски, как я пойму что из них что:(

Krol добавил:
Jon неполучается:( Я пишу в тригере С вот это и неработает:( RemoveLocation (udg_tochka)
Старый 09.01.2007, 14:57
J
expert
offline
Опыт: 48,447
Активность:
Krol практика... все только практика...
некоторые функции можно всеже понять по названию, некоторые нет, для этого существуют статьи и правкика... а также смекалка...
вот у тебя есть одна BJ функция... которая юзает 2 другие функция... ты знаеш что делает одна из этих функция, лехко тогда догодатся что делает другая методом взаимново исключения, если ты знаеш что делает вся эта общая функция
Старый 09.01.2007, 14:57
Krol

offline
Опыт: 17,884
Активность:
Ааааа получилось!!! Я додумался сам что нада поставить перед всем этим саll!
Старый 09.01.2007, 14:58
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Jon неполучается:( Я пишу в тригере С вот это и неработает:( RemoveLocation (udg_tochka)

ну блин... а кто "call" бкдет перед названием функции писать?

Jon добавил:
Поздравляю
Старый 09.01.2007, 14:59
Krol

offline
Опыт: 17,884
Активность:
Цитата:
DestroyEffect (ef)

А если у меня эфект не занесён в переменную? Что писать тогда в скобках?
Старый 09.01.2007, 15:02
J
expert
offline
Опыт: 48,447
Активность:
Krol а тогда ты его никак не удалиш... тебе нужно обязательно иметь его в переменой... потому такая конструкция НИКАК не прокатит:
Код:
call SetUnitPositionLoc (udg_unit, GetUnitLoc(udg_unit))

т.к. сылка на переменую теряется, и ты не сможеш ее удалить.. нодо делать так:
Код:
local location loc = GetUnitLoc(udg_unit)                                
call SetUnitPositionLoc (udg_unit, loc)
call RemoveLocation (loc)
set loc = null

тогда все норм

и обовсем этом я писал в своей статье: http://xgm.guru/articles.php?section=wc3&name=optimisations
почитай...
Старый 09.01.2007, 15:05
Krol

offline
Опыт: 17,884
Активность:
Вот, теперь есть ещё утечки?
Прикрепленные файлы
Тип файла: w3x Хм__лол.w3x (18.8 Кбайт, 11 просмотров )
Старый 09.01.2007, 15:23
J
expert
offline
Опыт: 48,447
Активность:
Krol в тригере D забыл удалить точку p1

Jon добавил:
но через глабалки работать ОЧЕНЬ неудобно.. работай через локальные переменые...

Jon добавил:
зачем ты используеш функцию DestroyEffectBJ ???
Смотри из чего она
Код:
function DestroyEffectBJ takes effect whichEffect returns nothing
    call DestroyEffect(whichEffect)
endfunction

онга состоит из одной функции... какой тогда смысл юзать DestroyEffectBJ ? если можно сразуже юзать DestroyEffect...
Старый 09.01.2007, 15:30
Krol

offline
Опыт: 17,884
Активность:
Угу, всё сделал! теперь это супер мего карта без утечек:) Про твою статью забыл, всчера к концу статей Сергея уже мозг неработал! Я твою статью читал но давно, нада ещё раз прочитать. Короче спасибо большое!
Старый 09.01.2007, 16:27
adic3x

offline
Опыт: 108,439
Активность:
Krol, или просто переменная, приравнивать необязательно:
Код:
local real r1
local real r2 = 0
Старый 09.01.2007, 21:31
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Проверьте теперь на утечки у меня, как у Krol'а, плз.
Прикрепленные файлы
Тип файла: w3x df_tmp1.w3x (12.8 Кбайт, 12 просмотров )
Старый 09.01.2007, 22:06
J
expert
offline
Опыт: 48,447
Активность:
DFlyer много утечек!
в тригере MapStart:
создается точка - Центр Игровой карты которая не удаляется

В тригере CreateLocal:
создается "группа" юнитов, которая не удаляется

В тригере CreateEffects:
создается 20 "групп" юнитов которые не удаляется
и еще ты создаеш новый спец эфект, и удалееш его после, но перед его создаением, не удаляеш предыдущий.

далее четок об оптимальности:
зачем ты в тригере CreateEffects в конце проигрываеш 2 одинаковых цыкла, не лу3чше ли их внести в один?
но тут еще достаточно много не оптимальных моментов, но обьеснить их сложно, раз вы пишете не на в текстовом виде а в cs...
Старый 10.01.2007, 03:43
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Цитата:
создается точка - Центр Игровой карты которая не удаляется

Т.е., даже есди не CreatePoint, а просто указываеца ссылка на какое-то место карты, то создаёца переменная? И как удалять, надо обязательно в переменную вносить? Или можно так:
call RemoveLocation(GetRectCenter(GetPlayableMapRect()))

Цитата:
создается 20 "групп" юнитов которые не удаляется

Удаляеца, ведь! В первом цикле:
Код:
Unit - Remove moskit[i] from the game
Set moskit[i] = No unit


А про отсальные да, забыл.
Старый 10.01.2007, 11:08
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
на какое-то место карты, то создаёца переменная

создается не переменая... создается обьект.
Цитата:
Удаляеца, ведь! В первом цикле:

удаляются юниты, а не группы
а ты юзаеш такое действие которое создает юниты и заносит их всех в группу, потому после него нужно удалять и групы и юнитов!
Цитата:
call RemoveLocation(GetRectCenter(GetPlayableMapRect()))

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

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

Jon добавил:
ЗЫ
обнуление глабалок в борбе с утечками необязательно

Отредактировано Jon, 10.01.2007 в 11:45.
Старый 10.01.2007, 11:52
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Цитата:
удаляются юниты, а не группы

А как группу удалить, как её "отловить", GetLastCreatedGroup?
Старый 10.01.2007, 12:21
J
expert
offline
Опыт: 48,447
Активность:
DFlyer да, удалять так: RemoveGroup(gr)
но на твоем месте я бы не удалял групу, а просто не создавал ее, а создавал юнита обычной нативе функцией CreateUnit()
Старый 10.01.2007, 12:29
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Вот, вроде, всё исправил.
Или ещё не всё?
Прикрепленные файлы
Тип файла: w3x df_tmp1.w3x (13.1 Кбайт, 13 просмотров )
Старый 10.01.2007, 13:14
Krol

offline
Опыт: 17,884
Активность:
DFlyer пишешь короче во всех тригерах в конце вот наподобии этого RemoveGroup(gr)! И усё будет круть, главное не заучивай! Так же нада где то приравнивать к 0! И чё то приравниать к null!
Старый 10.01.2007, 13:25
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Krol
Я знаю, что надо приравнивать 0, null, ремувить группы, локации.
Выкладываю, ибо, знаю, что что-то забыл.
Старый 10.01.2007, 14:00
Закрытая тема

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

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

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

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



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