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

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

Ответ
 
Kenshi245

offline
Опыт: 2,252
Активность:
Отладка скриптов
Собственно простейший скритп, но почему-то при первом юзании на карте вызывает мелкое подвисание. В чем может быть проблема?


Цитата:
function Spell_Holy_Light takes nothing returns nothing
local unit targetA = GetSpellTargetUnit()
local unit Dummy = CreateUnit(GetOwningPlayer(targetA),'u003',GetUnitX(targetA),GetUnitY(targetA),2 70)
call UnitApplyTimedLife(Dummy, 'BTLF', 1.00)
call UnitAddAbility(Dummy,'A003')
call IssueTargetOrderById(Dummy,OrderId("rejuvination"),targetA)
set targetA = null
set Dummy = null
endfunction
Старый 01.04.2008, 15:45
J
expert
offline
Опыт: 48,447
Активность:
если подвисание наступает только пи первом выполнении функции, то это нормально
Старый 01.04.2008, 15:51
ArchWorm
Матрица незалежности
offline
Опыт: 4,675
Активность:
Если хочешь избавиться от спецэффекта, то поставь на карту юнита со сппособностью A003, а в инициализации - убери его. Совсеµ. =)
Старый 01.04.2008, 19:55
J
expert
offline
Опыт: 48,447
Активность:
можно делать более экономичнее, не в редакторе ставить юнита, а прям в триггере инициализации, ставить и потом сразу удалять
Старый 01.04.2008, 19:58
Kenshi245

offline
Опыт: 2,252
Активность:
Как можно это привести в нормальный вид через Select Case?

Код:
if ( GetUnitAbilityLevel(unitA, 'B00H') > 0 )  then
   call UnitRemoveAbility (unitA,'B00H')
   return 'I000'
   endif
   if ( GetUnitAbilityLevel(unitA, 'B00I') > 0 )  then
   call UnitRemoveAbility (unitA,'B00I')
   return 'I002'
   endif
   if ( GetUnitAbilityLevel(unitA, 'B00J') > 0 )  then
   call UnitRemoveAbility (unitA,'B00J')
   return 'I003'
   endif
   if ( GetUnitAbilityLevel(unitA, 'B00K') > 0 )  then
   call UnitRemoveAbility (unitA,'B00K')
   return 'I004'
   endif
   if ( GetUnitAbilityLevel(unitA, 'B00L') > 0 )  then
   return 0
   endif


И еще вопрос - чтобы карта не тормозила в самом начале можно юзать функцию preload, так вот мне нужно сделать чтобы подгружать не модельки, а итемы, ибо при первой передаче их герою игра подвисает?

Отредактировано Kenshi245, 03.04.2008 в 23:51.
Старый 03.04.2008, 22:55
Toadcop

offline
Опыт: 54,313
Активность:
Kenshi245 в jass нету Select Case =)
Старый 04.04.2008, 00:54
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
в jass нету Select Case =)

^^ есть елсеиф
Код:
if a then
 если а тру
elseif b then
 если а не тру, но б тру
elseif c then
 если не а и не б, но с тру
...

else
 если ничего не тру (т.е. дефалт), можно не ставить
endif
Старый 04.04.2008, 10:19
J
expert
offline
Опыт: 48,447
Активность:
...

Kenshi245 в jass нету Select Case...

если у тебя это весь код функции оставь так как и сделал, если нет то можеш сделать как говорит адольф через elseif

Jon добавил:
хотя нет всеравно переаправь на elseif влюбом случае)
Старый 04.04.2008, 12:59
adic3x

offline
Опыт: 108,439
Активность:
елсе иф и просто куча ифоф это не одно и тоже, надеюсь вы это осознаете
Старый 04.04.2008, 14:34
J
expert
offline
Опыт: 48,447
Активность:
нашел кого спросить...
Старый 04.04.2008, 15:58
Kenshi245

offline
Опыт: 2,252
Активность:
Вопрос - здесь локальные переменные работают внутри функции, как во всех языках, или внутри триггера, как почему-то написано на сайте? Всмысле если у меня есть триггер и в нем куча функций, каждая из которых создает и удаляет локальные переменные, притом многие из них имеют одинаковые названия и тип, не произойдет так, что одна функция создаст переменную а другая ее изменит и в результате скрипт будет неправильно работать?
Старый 04.04.2008, 16:20
J
expert
offline
Опыт: 48,447
Активность:
Старый 04.04.2008, 16:35
Kenshi245

offline
Опыт: 2,252
Активность:
Короче только внутри функции.. ясно, спс
Старый 04.04.2008, 16:42
Kenshi245

offline
Опыт: 2,252
Активность:
Еще пара вопросов по отладке
1)Кто знает как делать preload модельки, чтоб при первом юзании не лагало?
2)Во избежании утечек памяти обнулять в конце скрипта надо только handle переменные или вообще все?
Старый 09.04.2008, 14:57
adic3x

offline
Опыт: 108,439
Активность:
  1. только хендлы но не все (не надо обнулять текстаги, игроков кажеться и т.д.)
Старый 09.04.2008, 16:38
Toadcop

offline
Опыт: 54,313
Активность:
ну обнулять игроков которое константное число это просто анонизм. ТТ
Цитата:
1)Кто знает как делать preload модельки, чтоб при первом юзании не лагало?

call Preload("PathTo\\YourModel.mdl") ну вроде так можно.
Старый 09.04.2008, 20:43
Kenshi245

offline
Опыт: 2,252
Активность:
А есть команда на очищение ненужных данных из кеша?
Старый 11.04.2008, 19:52
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
native FlushGameCache(gamecache)
native FlushStoredMission(gamecache,string)
native FlushStored*Type*(gamecache,string mission, string key)

Пора бы обзавестись Jass API browser-ом
Старый 11.04.2008, 20:34
Kenshi245

offline
Опыт: 2,252
Активность:
Цитата:
Сообщение от Toadcop
ну обнулять игроков которое константное число это просто анонизм. ТТ
call Preload("PathTo\\YourModel.mdl") ну вроде так можно.


Че-то не помогает, всеравно при первом юзании скилл лагает.
Старый 11.04.2008, 20:45
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
Че-то не помогает, всеравно при первом юзании скилл лагает.
скил или модель ? ну близы так прелоадят иконки еффекты и в милли как я помню не лагает =)
Старый 11.04.2008, 20:53
Ответ

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

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

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

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



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