Вопросы по Jass
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 01:59:30 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Зачем обнулять переменные? Просто я новичок в Jass'е и когда конвертирую Триггеры в Jass, ничего в конце про обнуление переменных нет. И обязательна ли строка с //-------------------------------------------------- после Условий и Действий ??? И ещё, как скачать прикреплённые к статье файлы на XGM ?? ^^ Добавлено (06-01-2011, 01:59) --------------------------------------------- И вообще как там файлы скачать, написано, то что вылжено ниже, а я найти не могу
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:00:46 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (romaN-1998) //-------------------------------------------------- НЕ обязательная, Обнуление пермеенных служит удалением утечек Если будет много утечек карта будет лагатьДобавлено (06-01-2011, 02:00) ---------------------------------------------
Quote (romaN-1998) И вообще как там файлы скачать, написано, то что вылжено ниже, а я найти не могу Возможно редактирвоали сообщение и убрали ссылку
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:01:16 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| спс, я на тебя и надеялся )) Ты тут типо крутой, на форуме ??
|
|
|
|
Mihaa | Дата: Четверг, 06 Января 2011, 02:01:23 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 1070
Награды: 0
Репутация: 330
Блокировки:
| Quote (romaN-1998) И ещё, как скачать прикреплённые к статье файлы на XGM ?? ^^ если картинки копипастни, если карта то в конце должо написано "к статье прикреплен файл" Quote (romaN-1998) Зачем обнулять переменные? Просто я новичок в Jass'е и когда конвертирую Триггеры в Jass, ничего в конце про обнуление переменных нет. И обязательна ли строка с //-------------------------------------------------- после Условий и Действий ??? джасом не владею
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:01:44 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Просто, ты видимо неплохо шаришь в Jass
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:01:50 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (romaN-1998) Ты тут типо крутой, на форуме ?? Нет я тут типо нупъ^^
|
|
|
|
Denialsan | Дата: Четверг, 06 Января 2011, 02:02:07 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1225
Награды: 0
Репутация: 48
Блокировки:
| Quote (romaN-1998) Зачем обнулять переменные? Просто я новичок в Jass'е и когда конвертирую Триггеры в Jass, ничего в конце про обнуление переменных нет. И обязательна ли строка с //-------------------------------------------------- после Условий и Действий ??? некоторые умы утверждают что если не обнулить переменную то это будет "страшная при страшная" утечка памяти!!! строка //---------------------------------------// это разделяющая строка, она ничего не означает, просто так проще просматривать "сложные" триггеры.
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:02:52 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (Denialsan) утверждают что если не обнулить переменную то это будет "страшная при страшная" утечка памяти!!! Оно так и есть, точки,группы,юниты,текстаги текут еще как
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:03:31 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Quote (Denialsan) некоторые умы утверждают что если не обнулить переменную то это будет "страшная при страшная" утечка памяти!!! строка //---------------------------------------// это разделяющая строка, она ничего не означает, просто так проще просматривать "сложные" триггеры. Ясно, то есть, когда мало переменных, можно не обнулять, а когда много можно обнулить (дабы избежать утечки) или вообще можно не обнулять ??
|
|
|
|
Denialsan | Дата: Четверг, 06 Января 2011, 02:03:37 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1225
Награды: 0
Репутация: 48
Блокировки:
| Quote (Dreii) Оно так и есть, точки,группы,юниты,текстаги текут еще как как они текут? может мне ведро подставить под системник?
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:04:34 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Подробнее в замечательной статье Уменьшаем лаги в карте by [DUOS] Добавлено (06-01-2011, 02:04) ---------------------------------------------
Quote (Denialsan) как они текут? может мне ведро подставить под системник? Не знаешь не говориДобавлено (06-01-2011, 02:04) ---------------------------------------------
Quote (romaN-1998) Ясно, то есть, когда мало переменных, можно не обнулять, а когда много можно обнулить (дабы избежать утечки) или вообще можно не обнулять ?? Обнулять нужно все переменные котрые вызывают утечки
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:05:11 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Dreii, спс, просто что-то я озадачился с Jass'ом....А можешь ты привести пример, то что можно сделать на Jass, но на триггерах вообще нереально ?? (в прямом смысле)
|
|
|
|
Denialsan | Дата: Четверг, 06 Января 2011, 02:05:37 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 1225
Награды: 0
Репутация: 48
Блокировки:
| Quote (romaN-1998) Ясно, то есть, когда мало переменных, можно не обнулять, а когда много можно обнулить (дабы избежать утечки) или вообще можно не обнулять ?? я лично еще не видел ни одной карты которая бы лагала изза каких-то утечек. Я играл в плохо сделанную карту в которой даже спец эффекты не удаляли с юнитов, и когда они умирали то спец эффекты так и лежали. и ничего, все гуд.
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:06:19 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (romaN-1998) то что можно сделать на Jass Даже не знаю ^^Я могу дать пример с утечкой))
|
|
|
|
Denialsan | Дата: Четверг, 06 Января 2011, 02:06:21 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1225
Награды: 0
Репутация: 48
Блокировки:
| Quote (Dreii) Обнулять нужно все переменные котрые вызывают утечки и почему это они должны вызывать утечки? я впервые такой бред слышу.
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:08:05 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Dreii, есть у тебя какие-нибудь лёгкие наработки Jass для новчиков ^^ чтобы поучиться там.. немного.
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:16:08 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| romaN-1998, вот маленький пример способности, когда герой применяет молот бурь, то юнит на которого применли мгновенно движеться к применяющему юниту Code function Trig_trig_Actions takes nothing returns nothing local unit c//Создаем локальную переменную типа юнит,почему не задаем сразу?Потому-чтоона должна задаваться когда выполняеться условие local unit t//Создаем локальную переменную типа юнит,почему не задаем сразу?Потому-чтоона должна задаваться когда выполняеться условие local location loc//Создаем локальную переменную типа точка,аналогично выше сказанному не задаем if GetSpellAbilityId() == 'AHtb' then//Проверяем какая способность была применена set c=GetSpellAbilityUnit()//Устанавливаем кастера set t=GetSpellTargetUnit()//Устанваливаем цель set loc=GetUnitLoc(c)//Устанаваливаем локацию (Позиция юнита(с)) call SetUnitPositionLoc(t,loc)//Двигаем t в позицию loc endif//Конец условия //Обнулять переменныее только полсле endif call RemoveLocation(loc)//Удаляем точку set c=null//обнуляем с set t=null// обнуляем t endfunction
//=========================================================================== function InitTrig_trig takes nothing returns nothing local integer index=0 local trigger trig=CreateTrigger()// созадем локальный триггер т.к он занимает меньше места в памяти loop//начало цикла // результат раскрытия BJ функции TriggerRegisterAnyUnitEventBJ call TriggerRegisterPlayerUnitEvent(trig, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)//Реакция на событие применения способности set index = index + 1 exitwhen index == 15//количество игроков endloop//конец цикла call TriggerAddAction(trig, function Trig_trig_Actions) set trig=null//Обнуляем триггер endfunction
Опытные кодеры могут возразить что нужно удалять юнита call RemoveUnit© и call RemoveUnit(t)
Сообщение отредактировал Dreii - Четверг, 06 Января 2011, 02:17:57 |
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:18:41 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| ОК! Не все надо переменные обнулять, ведь так ? Просто вычитал токо что, только Глобальные, т.к. Локальные сами удаляются при завершении триггера, ведь так ?Добавлено (06-01-2011, 02:17) ---------------------------------------------
Quote (Dreii) Опытные кодеры могут возразить что нужно удалять юнита call RemoveUnit© и call RemoveUnit(t) Расскажи разницу..Добавлено (06-01-2011, 02:18) --------------------------------------------- Думаю, этот топик, будет служить Справочником по Jass.. Возможно ли такое ?? Если тема разрастётся, можно будет тему закрепить попросить ?
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:18:57 | Сообщение # 19 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (romaN-1998) Расскажи разницу.. Ну в этом случае вроде не нужно,вообще не знаю ^^Видел гдето в крутых нарарботка ремували юнитов,но в этом случаее бред
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:21:11 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Вообще, интересно, если разобраться, всё не сложнее триггеров... даже легче..
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:21:16 | Сообщение # 21 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| romaN-1998, чем хорош Jass тем что можно не создовать кучу тригегров чтобы каждую секунду двигать юнита кудато,достаточно просто юзать хеш и таймер ^^ + Есть локлальные переменные
Сообщение отредактировал Dreii - Четверг, 06 Января 2011, 02:21:42 |
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:22:30 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Да! Локальные переменные - это хорошая вещь, этого нету в триггерах..А локалки облегчают работу )
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:22:52 | Сообщение # 23 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Так же в Jass глобальные переменные пишуться с удродливой приставкой udg_ например set udg_hero=GetTriggerUnit()
|
|
|
|
romaN-1998 | Дата: Четверг, 06 Января 2011, 02:24:08 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Ппц.. Какой же примитив ^^ Создаём локалку Проверяем... Устанавлием переменную мм... Добавлено (06-01-2011, 02:24) ---------------------------------------------
Quote (Dreii) Так же в Jass глобальные переменные пишуться с удродливой приставкой udg_ например set udg_hero=GetTriggerUnit() Скоко ты Jass учился ? Ему надо долго поклоняться? ^^
|
|
|
|
Dreii | Дата: Четверг, 06 Января 2011, 02:26:13 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Локальные переменные работатют в пределах одной функции например function Trig_trig_Actions takes nothing returns nothing local unit u=GetTriggerUnit() endfunction function Trig_trig2_Actions takes nothing returns nothing //тут переменная u не будет работать ее можно перенести с помощью хеша endfunctionДобавлено (06-01-2011, 02:24) ---------------------------------------------
Quote (romaN-1998) Скоко ты Jass учился ? Ему надо долго поклоняться? ^^ скоро буде 10 днейДобавлено (06-01-2011, 02:26) --------------------------------------------- когда есть возможность то лучше сразу установить локалку например local unit u=GetTriggerUnit() call KillUnit( u) set u=null
|
|
|
|