Легко осваиваем 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 – вызов ф-ии -Убить юнита и в скобках указывается юнит - Это юнит который срабатывает на событие Ну, вот я думаю, вы все поняли. Если нет спрашивайте) О функциях: Каждая функция может принимать и возвращать значения, а может этого и не делать, как функции триггера выше (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 <тип> <название> Например Где integer – тип переменной (Целочисленая) i-Имя нашей переменной по которой ее можно вызвать,например Также при создании переменной можно сразу задать ей значение Code local <тип> <название> = <значение> Например Тогда наша целочисленная будет равна 10 Также можно задать переменную по ходу кода Например Подобным образом задают глобальные переменные, но добавляют приставку udg_ Code set udg_<название> = <значение> Например: Глобальные переменные создаются в Редакторе переменных, локальные же - только в функциях Переменные бывают утечные (те, которые наследуются от типа handle), их надо обнулять: Вот несколько типов переменных 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
Статус: Не на сайте
| | |
-
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
Статус: Не на сайте
|
если чесно я почти не че не понял
|
| | |
-
Sent | Дата: Вторник, 05-04-2011, 19:01:38 | Сообщение # 8 |
#DARKSIDE
загрузка наград ...
Группа: Зам.Админа
Сообщений: 9158
Репутация: 8449
Статус: Не на сайте
|
barahluysh, тут и понимать нечего - берешь и делаешь =)
|
| | |
-
Sith | Дата: Четверг, 07-04-2011, 08:13:11 | Сообщение # 9 |
Темный рыцарь
загрузка наград ...
Группа: Пользователи
Сообщений: 205
Репутация: 233
Статус: Не на сайте
|
Я столлько Jass'а впервые вижу, прям глаза разбегаются!!
[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 это китайский ниче не понимаю
Зерги няшки
|
| | |