Легко осваиваем Jass - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Strateg, Melissa  
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » Легко осваиваем Jass
Легко осваиваем Jass
-
DreiiДата: Четверг, 24-03-2011, 19:14:34 | Сообщение # 1
Ополченец

загрузка наград ...
Группа: Пользователи
Сообщений: 87
Репутация: 58
Статус: Не на сайте
СТАТЬЯ ДЛЯ ГУИШНИКОВ – Учимся JASS’у

ЧАСТЬ 1
Введение:
Обойдемся бескрасочных фраз, ведь мы хотим научиться делать удивительные вещи на Jass!
И так, если ты читаешь эту статью, то ты должен иметь несколько вещей:
-Нужно иметь Warcraft 3 Frozen Thorn v1.24+
-Скачать и установить JNGP
-Иметь знания триггеров
-Логическое мышление (Хотя хз, можно и без него)
-Мозг
Мы приобрели эти легкие вещи и хотим начать изучать JASS!!!
Строение триггера:
Также как и на ГУИ, Jass состоит из Событий, Условий и Действий.
Но расположено это снизу вверх: в самом низу должна быть функция создания триггера, в который присоединяются действия условия, а также события.
Рассмотрим на примере
Есть такой триггер
Code
Событие
---Боевая единица-Событие Приводит способность в действие
Условие
---(Применяемая способность) равно Гальванизация
Действия
---Боевая единица – Убить (Переключающийся юнит)

Назовем его Lesson.
Теперь превратим его в текст «Правка – Конвертировать в текст» (Вернуть обратно можно, нажав Ctrl+Z)
Code

function Trig_Lesson_Conditions takes nothing returns boolean
         if ( not ( GetSpellAbilityId() == 'AUan' ) ) then
             return false
         endif
         return true
endfunction
function Trig_Lesson_Actions takes nothing returns nothing
         call KillUnit( GetTriggerUnit() )
endfunction

//===========================================================================
function InitTrig_Lesson takes nothing returns nothing
         set gg_trg_Lesson = CreateTrigger(  )
         call TriggerRegisterAnyUnitEventBJ( gg_trg_Lesson, EVENT_PLAYER_UNIT_SPELL_EFFECT )
         call TriggerAddCondition( gg_trg_Lesson, Condition( function Trig_Lesson_Conditions ) )
         call TriggerAddAction( gg_trg_Lesson, function Trig_Lesson_Actions )
endfunction

-функция условий
-функция действий
-функция событий
Для вас это всего лишь простой набор букв, так что разберем все по порядку .
Событие
Code
function InitTrig_Lesson takes nothing returns nothing
         set gg_trg_Lesson = CreateTrigger(  )
         call TriggerRegisterAnyUnitEventBJ( gg_trg_Lesson, EVENT_PLAYER_UNIT_SPELL_EFFECT )
         call TriggerAddCondition( gg_trg_Lesson, Condition( function Trig_Lesson_Conditions ) )
         call TriggerAddAction( gg_trg_Lesson, function Trig_Lesson_Actions )
endfunction

- InitTrig_Lesson – Название триггера
Code
set gg_trg_Lesson = CreateTrigger(  )

Создание триггера здесь он сразу привязывается к переменной gg_trg_Lesson
Code
call TriggerAddCondition( gg_trg_Lesson, Condition( function Trig_Lesson_Conditions ) )

Добавляет к нашему триггеру условия(Привязывается функция с событием)
Code
call TriggerAddAction( gg_trg_Lesson, function Trig_Lesson_Actions )

Добавляет к нашему триггеру функцию с действием
Условия
Code
function Trig_Lesson_Conditions takes nothing returns Boolean
         if ( not ( GetSpellAbilityId() == 'AUan' ) ) then
             return false
         endif
         return true
endfunction

Это стандартное условие при конвертации в текст : если не наша способность то нет, иначе да, Если функция условий возвращает правду, запускается функция действий

Действия

Code
function Trig_Lesson_Actions takes nothing returns nothing
         call KillUnit( GetTriggerUnit() )
endfunction

Здесь между function и endfunction могут быть действия
В данном случае у меня стоит убийство юнита
Code
    call KillUnit( GetTriggerUnit() )

call – вызов ф-ии
Code
KillUnit(UNIT)
-Убить юнита и в скобках указывается юнит
Code
GetTriggerUnit()
- Это юнит который срабатывает на событие
Ну, вот я думаю, вы все поняли. Если нет спрашивайте)
О функциях:
Каждая функция может принимать и возвращать значения, а может этого и не делать, как функции триггера выше (takes nothing returns nothing)
Каждое действие из редактора триггеров – функция, в которую передаются значения.
Вызывается по такому принципу:
Code
call <название функции>(   )

После вызова и названия функции в скобках указываются значения, которые она принимает, через запятую. Типы передаваемых значений должны соответствовать типам, указанным после слова takes, но названия могут быть разными.
Функция Мгновенного перемещения юнита не имеющая аналогов на ГУИ
Code
SetUnitPosition takes [color=red]unit[/color] [color=purple]whichUnit[/color], [color=red]real[/color] [color=purple]newX[/color],[color=red] real[/color] [color=purple]newY[/color] returns nothing

- Красным отмечены типы, фиолетовым –названия
Операторы
Code

set = – присвоение, например:
set int=20.
Так же можно задавать значения прямиком из функции, например:
set unit = CreateUnit( Player(0), ‘h000’, 0., 0., 0. )

// - комментарий, всё что после него ни на что кроме читателя не влияет

return – возврат значения
* return прерывает функцию, и все действия, стоящие ниже него, будут пропущены

+ - / * - сложение вычитание деление умножение

' ' – конвертирует символы внутри, если их 4 – не иначе. '1234' == 825373492
" " – конвертирует символы внутри в строку.

Условия:
if … then //между if и then помещается утверждение, которое нужно выяснить
… //действия в случае выполнения вышестоящих условий
elseif … then //иначе если, недоступный на гуи оператор

else

endif //завершение блока условий

and or not – “и” “или” “не”

Можно обходиться и без иначе, например:
if … then

endif

Операторы сравнения:
== - равно, не путать с присвоением “=”
> - больше
< - меньше
>= - больше или равно
<= - меньше или равно
!= - не равно

Задание локалок:
local – задает локальную переменную по такому принципу:
local <type> <name> = <count> //Например, так:
local integer i = 2
* Задавать значение сразу необязательно

Циклы:
loop //начало цикла
exitwhen … //условие выхода из него
… //действия внутри цикла
endloop //конец блока цикла

Пример:
set i = 2
loop
exitwhen i > 8

set i = i + 2
endloop
- Этот цикл сработает 4 раза и после его завершения i примет значение «10», где i – локальная переменная типа integer, но о локалках позже.
* на джасcе в цикле можно сделать любое условие, и изменять его как угодно

call – вызов функции

constant – добавляется к функции, чтобы сделать возвращаемое ею значение константой.
Пример:
constant function MapAreaSize takes nothing returns real
return 16777216.
endfunction
- если вам лень запоминать число или другой объект, можно запомнить название функции и получить его, это так же может сэкономить длину кода.
Пример:
set size=MapAreaSize()
//переменная size приняла значение 16777216.

Переменные
В Jass существует 2 вида переменных - локальные и глобальные. Разберём плюсы и минусы каждого из них.
Локальные:
+ Сохраняют своё значение после ожиданий.
+ Создаются уникально при каждом запуске триггера (не перезаписываются после второго запуска триггера).
+ Легко регулируемы.
+ MUI.
- Действуют только в пределах функции, где их задали.
Глобальные:
+ Действуют во всех триггерах карты.
+- MPI (Хоть и массивным способом)
- Есть риск потерять значение после ожидания (Если триггер запустится во время ожидания, переменная перезапишется).
- Каждый раз нужно писать приставку udg_
- Немного неудобны по сравнению с локальными.
Лучше использовать ТОЛЬКО локальные переменные(Хеш-таблицы исключение)
Как объявить локальную переменную
Code
local <тип> <название>

Например
Code
local integer i

Где integer – тип переменной (Целочисленая)
i-Имя нашей переменной по которой ее можно вызвать,например
Code
set i=i+1

Также при создании переменной можно сразу задать ей значение
Code
local <тип> <название> = <значение>

Например
Code
local integer i=10

Тогда наша целочисленная будет равна 10
Также можно задать переменную по ходу кода
Code
set <имя>=<значение>

Например
Code
set i=15

Подобным образом задают глобальные переменные, но добавляют приставку udg_
Code
set udg_<название> = <значение>

Например:
Code
set udg_integer = 0

Глобальные переменные создаются в Редакторе переменных, локальные же - только в функциях
Переменные бывают утечные (те, которые наследуются от типа handle), их надо обнулять:
Code
set u=null

Вот несколько типов переменных
Code
hashtable      
handle      
event      
player      
widget      
unit      
destructable      
item      
ability      
buff      
force      
g roup      
t rigger       
triggerc ondition      
triggeraction      
timer      
location      
region

Работа с кодом.
Наш код, который показан в примере выглядит некрасиво
Давайте приведем его к хорошему виду.
Начнем с условий
Code
function Trig_Lesson_Conditions takes nothing returns boolean
         if ( not ( GetSpellAbilityId() == 'AUan' ) ) then
             return false
         endif
         return true
endfunction

Приведем к такому виду
Code
function Trig_Lesson_Conditions takes nothing returns boolean
return  GetSpellAbilityId() == 'AUan'  then
endfunction

Видите, как сократилось? Также убрались эти некрасивые скобки(Скобки лучше убирать,но только в тех случаях где они не играют важных ролей)
Например нам нужно поставить условие на уровень способности.
Если уровень способности равен 4-5-9-10 то делать наши действия
Можно сделать так
Code
return GetUnitAbilityLeve (unit,'AUan') ==4 or GetUnitAbilityLevel (unit,'AUan') ==5 or GetUnitAbilityLevel (unit,'AUan')  ==9 or GetUnitAbilityLevel (unit,'AUan')==10

Громоздко,лучше сделать так
Создадим локальную переменную lvl

Code
local  integer lvl= GetUnitAbilityLevel (unit,'AUan')
if lvl==4 or lvl ==5 lvl ==9 or lvl ==10  then
//Действия
endif
 
-
wetalqДата: Пятница, 25-03-2011, 13:59:53 | Сообщение # 2
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
насколько я понял на Jass в условиях и событиях пишеться не названия способности а её код ?
и тогда получаеться можно использовать характеристики способностей прописывая их код, DATA1 и т.д. ?

Кстате а есть статья по MUI ?



Покупка предметов через способность
 
-
DreiiДата: Понедельник, 28-03-2011, 11:49:40 | Сообщение # 3
Ополченец

загрузка наград ...
Группа: Пользователи
Сообщений: 87
Репутация: 58
Статус: Не на сайте
Quote (wetalq)
Кстате а есть статья по MUI ?

Нет. Но когда делаешь спелл на Jass он сразу муи буит)) в некоторых случаях
 
-
wetalqДата: Понедельник, 28-03-2011, 16:38:46 | Сообщение # 4
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (Dreii)
Нет. Но когда делаешь спелл на Jass он сразу муи буит)) в некоторых случаях

Заинтриговало, надо будет поучиться Jass


Покупка предметов через способность
 
-
SmiLeДата: Воскресенье, 03-04-2011, 17:53:15 | Сообщение # 5
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 14
Репутация: 4
Статус: Не на сайте
Dreii
Обезательно писать с пробелами разве незя зделать так:
function Trig_Lesson_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'AUan' ) ) then
return false
endif
return true
endfunction
function Trig_Lesson_Actions takes nothing returns nothing
call KillUnit( GetTriggerUnit() )
endfunction
Отличий нет или есть?
И еще как узнать какой спелл ты делаеш('AUan') это через Ctrl +D делать?

Creator a map of the CD!!!
 
-
SentДата: Воскресенье, 03-04-2011, 19:28:18 | Сообщение # 6
#DARKSIDE

загрузка наград ...
Группа: Зам.Админа
Сообщений: 9158
Репутация: 8449
Статус: Не на сайте
Dreii, Вижу ты и правда хорошо разбираешся в Jass. Прости что я называл тебя ламером
 
-
barahluyshДата: Вторник, 05-04-2011, 06:55:24 | Сообщение # 7
Гражданин

загрузка наград ...
Группа: Пользователи
Сообщений: 40
Репутация: 19
Статус: Не на сайте
если чесно я почти не че не понял surprised
 
-
SentДата: Вторник, 05-04-2011, 19:01:38 | Сообщение # 8
#DARKSIDE

загрузка наград ...
Группа: Зам.Админа
Сообщений: 9158
Репутация: 8449
Статус: Не на сайте
barahluysh, тут и понимать нечего - берешь и делаешь =)
 
-
SithДата: Четверг, 07-04-2011, 08:13:11 | Сообщение # 9
Темный рыцарь

загрузка наград ...
Группа: Пользователи
Сообщений: 205
Репутация: 233
Статус: Не на сайте
Я столлько Jass'а впервые вижу, прям глаза разбегаются!! wacko
[url=/load/karty_dlja_warcraft_3/arena/mortal_tournament_smertelnyj_turnir_v_2_3/187-1-0-16130][img]http://wc3-maps.ru/_ld/161/66006376.jpg[/img][/url]

Жанр:Арена
ИИ: Да
Убивайте мертвецов, не дайте голему набрать больше чем вы!
 
-
SentДата: Четверг, 07-04-2011, 08:52:55 | Сообщение # 10
#DARKSIDE

загрузка наград ...
Группа: Зам.Админа
Сообщений: 9158
Репутация: 8449
Статус: Не на сайте
Sith, я уже и не такое видел
 
-
SithДата: Четверг, 07-04-2011, 17:22:10 | Сообщение # 11
Темный рыцарь

загрузка наград ...
Группа: Пользователи
Сообщений: 205
Репутация: 233
Статус: Не на сайте
...
[url=/load/karty_dlja_warcraft_3/arena/mortal_tournament_smertelnyj_turnir_v_2_3/187-1-0-16130][img]http://wc3-maps.ru/_ld/161/66006376.jpg[/img][/url]

Жанр:Арена
ИИ: Да
Убивайте мертвецов, не дайте голему набрать больше чем вы!
 
-
7LeXuS7Дата: Среда, 20-04-2011, 14:48:06 | Сообщение # 12
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 1
Репутация: 7
Статус: Не на сайте
Я вон какой спелл с Jass сделал
function spell takes nothing returns nothing
local integer array i
local string c = "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl"
set i[1] = 0
set i[2] = 1
local unit u = GetTriggerUnit()
local effect array e
local real array d
set d[1] = 150.0
set d[2] = 9.00
set d[3] = 50.00
local location y
local real array g
set g[1] = 0.001
set g[2] = 0
set udg_type[1] = ATTACK_TYPE_NORMAL
loop
exitwhen i[1] >= 30
set i[1] = i[1] + 1

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2])))
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ(y, c)
set e[1] = GetLastCreatedEffectBJ()

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 90.00))
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ(y, c)
set e[2] = GetLastCreatedEffectBJ()

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 180.00))
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ(y, c)
set e[3] = GetLastCreatedEffectBJ()

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 270.00))
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )
call AddSpecialEffectLocBJ(y, c)
set e[4] = GetLastCreatedEffectBJ()

call PolledWait(g[1])
call DestroyEffectBJ(e[1])
call DestroyEffectBJ(e[2])
call DestroyEffectBJ(e[3])
call DestroyEffectBJ(e[4])
set i[2] = i[2] + 1
set d[3] = d[3] + 15.00
endloop
endfunction

Попробуйте понять что он делает
Конечно я ещё не доконца его оптеммизировал, но ещё буду его делать проще.

 
-
FkoFFДата: Суббота, 07-05-2011, 08:50:13 | Сообщение # 13
Раб

загрузка наград ...
Группа: Заблокирован
Сообщений: 24
Репутация: -19
Статус: Не на сайте
Quote (7LeXuS7)
Я вон какой спелл с Jass сделал
Code
function spell takes nothing returns nothing      
local integer array i      
local string c = "Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl"      
set i[1] = 0      
set i[2] = 1      
local unit u = GetTriggerUnit()      
local effect array e      
local real array d      
set d[1] = 150.0      
set d[2] = 9.00      
set d[3] = 50.00      
local location y      
local real array g      
set g[1] = 0.001      
set g[2] = 0      
set udg_type[1] = ATTACK_TYPE_NORMAL      
loop      
exitwhen i[1] >= 30      
set i[1] = i[1] + 1      

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2])))      
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )      
call AddSpecialEffectLocBJ(y, c)      
set e[1] = GetLastCreatedEffectBJ()      

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 90.00))      
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )      
call AddSpecialEffectLocBJ(y, c)      
set e[2] = GetLastCreatedEffectBJ()      

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 180.00))      
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )      
call AddSpecialEffectLocBJ(y, c)      
set e[3] = GetLastCreatedEffectBJ()      

set y = PolarProjectionBJ(GetUnitLoc(u), d[3], (12.00 * I2R(i[2]) + 270.00))      
call UnitDamagePointLoc(u, g[2], d[1], y, d[2], udg_type[1], DAMAGE_TYPE_NORMAL )      
call AddSpecialEffectLocBJ(y, c)      
set e[4] = GetLastCreatedEffectBJ()      

call PolledWait(g[1])      
call DestroyEffectBJ(e[1])      
call DestroyEffectBJ(e[2])      
call DestroyEffectBJ(e[3])      
call DestroyEffectBJ(e[4])      
set i[2] = i[2] + 1      
set d[3] = d[3] + 15.00      
endloop      
endfunction

Попробуйте понять что он делает Конечно я ещё не доконца его оптеммизировал, но ещё буду его делать проще.

Пункт 1 - этот код не работает (объявление локальных переменных в момент исполнения кода.
Пункт 2 - куча БЖ и использование локаций == утечки и неоптимизированный "долгий" код.
Пункт 3 - PolledWait(t) не работает на периодах ниже 0.1, по этому у тебя там будет большая задержка в исполнении кода, а скорее всего код просто не будет выполнятся.
Пункт 4 - Урон наносится так же и самому герою и союзникам героя, и врагам.
Спелл создает по спирали в четыре стороны эффект электрического "шока" и в каждой из точек наносит урон равный 9 ед.

На самом деле то что ты хотел сделать должно выглядеть вот так:

Code

function Noobiespell takes nothing returns nothing
local unit u = GetTriggerUnit()
local real x=GetWidgetX(u)
local real y=GetWidgetY(u)
local integer i=1
local integer i2=1
local real x1=0
local real y1=0

loop
exitwhen i>30
set i2=0
loop
exitwhen i2>3
set x1 = x + I2R(15*i) * Cos(I2R((3*i+i2*90)) * bj_DEGTORAD)
set y1 = y + I2R(15*i) * Sin(I2R((3*i+i2*90)) * bj_DEGTORAD)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl",x1,y1))
call UnitDamagePoint(u,0.06,25,x1,y1,6,true,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_MAGIC,WEAPON_TYPE_WHOKNOWS)
set i2=i2+1
endloop
set i = i+1
endloop
set u =null
 
-
granderproДата: Суббота, 07-05-2011, 08:55:30 | Сообщение # 14
Темный маг

загрузка наград ...
Группа: Избранные
Сообщений: 414
Репутация: 541
Статус: Не на сайте
статью я где-то видел , линкануть не могу
 
-
AncientPenguinДата: Вторник, 10-05-2011, 21:06:17 | Сообщение # 15

загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
В жпнг необязательно писать local set call....

Quote (7LeXuS7)
call AddSpecialEffectLocBJ(y, c)
set e[3] = GetLastCreatedEffectBJ()

set e[3] = AddSpecialEffectLoc(y, c) - нэ?

Quote (Dreii)
' ' – конвертирует символы внутри, если их 4 – не иначе. '1234' == 825373492

из 256-ричной(могу ошибится в циферках малец) в 10-ричную. Добавь а то непоймут люди чего куда конвертирует

Quote (Dreii)
Лучше использовать ТОЛЬКО локальные переменные(Хеш-таблицы исключение)

Шо? лучше использовать глобальные структуры vjass'a (ака многомерные массивы) быстрее хеша и удобнее (ну кпримеру к записи в хеше неприклеиш функцию)

Quote (Dreii)
Глобальные переменные создаются в Редакторе переменных, локальные же - только в функциях

globals
integer i
real a
endglobals

без всяких удг и редакторов переменных.... опять таки vjass рулит

Quote (Dreii)
Переменные бывают утечные (те, которые наследуются от типа handle), их надо обнулять:
u=null

если переменная u это кпримеру эффект который более не нужен, то надо так:
DestroyEffect(u)
u=null
если сначало обнулить то потом никак не удалишь.

Quote (FkoFF)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl",x1,y1))

define SpecialEffect(text,xx,yy)={DestroyEffect(AddSpecialEffect(text,xx,yy))}

cjass тож рулит, и непридется постоянно писать по 2 функции. Лучше кстати так чем лишнюю функцию писать ибо любая функция занимат время на вызов.

Я вот думаю может мне каких статей написать, по тому же vjass и cjass. Хотя в инете и так есть куча (на одном трехбуквенном сайтике особенно), да и писавшие их люди наверняка поумнее меня. Вообщем скажите надо или нет

 
-
†ŇΣŖΖϋλ†121†Дата: Вторник, 24-05-2011, 21:10:58 | Сообщение # 16
Король Мертвых

загрузка наград ...
Группа: Заблокирован
Сообщений: 440
Репутация: 262
Статус: Не на сайте
З.Ы. а я видел мапу, которая вся на Jass написана, при этом в ней 1 триггер, и мапа улёт))
Боло. Хочешь болосмайлы? их много xD пиши в ЛС!
 
-
DreiiДата: Среда, 06-07-2011, 02:22:52 | Сообщение # 17
Ополченец

загрузка наград ...
Группа: Пользователи
Сообщений: 87
Репутация: 58
Статус: Не на сайте
AncientPenguin, Причем тут сJass и уж тем более vJass
Статья писалась для тех,кто ничего не понимает в Jass(Jass2)
ты считаешь что новички которые слезли с гуи разберуться в макросах,маколсах с аргументами,структурах,библиотеках,облостях?
Мне кажеться они кастум ф-ию даже не напишут.
Quote (AncientPenguin)
быстрее хеша и удобнее

В отдельных случаях,когда в хеше много значений.
 
-
AncientPenguinДата: Среда, 06-07-2011, 08:28:39 | Сообщение # 18

загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
Quote (Dreii)
AncientPenguin, Причем тут сJass и уж тем более vJass Статья писалась для тех,кто ничего не понимает в Jass(Jass2) ты считаешь что новички которые слезли с гуи разберуться в макросах,маколсах с аргументами,структурах,библиотеках,облостях? Мне кажеться они кастум ф-ию даже не напишут.


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

Quote (Dreii)
В отдельных случаях,когда в хеше много значений.


ну быстрее они в любом случае, а насчет удобства это кому как конечно =)
 
-
wetalqДата: Среда, 06-07-2011, 13:04:43 | Сообщение # 19
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (Dreii)
Мне кажеться они кастум ф-ию даже не напишут.


хотя я и в Jass нуб, на кастум функции писать умею)

Добавлено (06.07.2011, 13:04)
---------------------------------------------

Quote (†ŇΣŖΖϋλ†121†)
З.Ы. а я видел мапу, которая вся на Jass написана, при этом в ней 1 триггер, и мапа улёт))


взломал, да ?

P.S. при взломе мапы тригеры приобразуються в 1 масивный Jass код


Покупка предметов через способность
 
-
grey341Дата: Пятница, 08-07-2011, 14:54:10 | Сообщение # 20
Ополченец

загрузка наград ...
Группа: Пользователи
Сообщений: 54
Репутация: 50
Статус: Не на сайте
для меня JASS это китайский wacko ниче не понимаю
Зерги няшки
 
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » Легко осваиваем Jass
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat