Сейчас 13:50:38 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Урок] Мастер-класс по основам JASS
[DUОS]Дата: Четверг, 29 Сентября 2011, 16:59:11 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Что такое Jass

Jass (англ. Just Another Scripting Syntax) — событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft. © wikipedia
Этот язык имеет очень много возможностей, которые не могут быть реализованы через GUI. Мы будем заниматься их изучением.
Как создать первый триггер в Jass? Очень просто! Для этого откроем World Editor, нажмём F4 (Редактор триггеров), создадим новый триггер. В Редакторе триггеров нажмём Правка - Конвертировать в текст. Нам покажется Jass-код этого триггера, который можно редактировать либо через JNGP, либо через сторонний софт (Jass Shop Pro / JassCraft).

Переменные


Функции




Условия





Циклы




Интересные фишки, приёмы и факты




НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)


Сообщение отредактировал [DUОS] - Четверг, 29 Сентября 2011, 17:00:07
 

Xan4esДата: Пятница, 30 Сентября 2011, 18:31:42 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 213
Награды: 0
Репутация: 43
Блокировки:
[DUОS], а предущие темы принимать к сведению ?

done
 

[DUОS]Дата: Пятница, 30 Сентября 2011, 18:36:14 | Сообщение # 3
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Xan4es,
Более всех принимать эту.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Xan4esДата: Пятница, 30 Сентября 2011, 18:42:37 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 213
Награды: 0
Репутация: 43
Блокировки:
Quote (|DUОS|)
while while с английского переводится как "пока". Это значит, что пока условие истинно, цикл будет выполняться. Рассмотрим на примере while i < 8: Codelocal integer i = 1 loop             exitwhen i > 8             // Эта часть кода повторяется 8 раз.             set i = i + 1 endloop

Quote (|DUОS|)
Условие может быть только одинарным (без операнд, о них я писал выше). Ниже - пример простейшего цикла, где код запускается 8 раз. Codelocal integer i = 1 loop             exitwhen i > 8             // Эта часть кода повторяется 8 раз.             set i = i + 1 endloop

у тебя везде один и тот же код. ты скопировал и вставил нигде не изменив ^_^


done
 

SirNikolasДата: Пятница, 30 Сентября 2011, 18:49:04 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (|DUОS|)
(Исключение - хеш-таблицы, служащие кластерами для значений)
Что такое кластеры?
Quote (|DUОS|)
Условие может быть только одинарным (без операнд, о них я писал выше).
Почему? Я так делал, и у меня все нормально.


 

[DUОS]Дата: Пятница, 30 Сентября 2011, 19:05:17 | Сообщение # 6
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
Что такое кластеры?

Хранилища.
Quote (SirNikolas)
Почему? Я так делал, и у меня все нормально.

Покажи, как ты делал)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

SirNikolasДата: Пятница, 30 Сентября 2011, 19:13:43 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
loop
     exitwhen GetPlayerSlotState(PlayerNumber[i]) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(PlayerNumber[i]) == MAP_CONTROL_USER
     set i = i + 1
     exitwhen i > 9
endloop
set udg_Host = PlayerNumber[i]
В PlayerNumber[0..15] записаны Player(0..15)

Добавлено (30 Сентябрь 2011, 19:13:43)
---------------------------------------------
Это первый пример, который я нашел.


 

[DUОS]Дата: Пятница, 30 Сентября 2011, 19:16:42 | Сообщение # 8
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
SirNikolas,
Ну ну, здесь несколько exitwhen'ов.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

SirNikolasДата: Пятница, 30 Сентября 2011, 19:30:42 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
И что? Можно ведь несколько, можно и ни одного.
Quote (SirNikolas)
exitwhen GetPlayerSlotState(PlayerNumber[i]) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(PlayerNumber[i]) == MAP_CONTROL_USER

Добавлено (30 Сентябрь 2011, 19:30:42)
---------------------------------------------
Или вот еще:

Code
loop
     exitwhen u==s__Spells_Unit[(4)*(12)+i]and udg_SpiderCapture_Lightning[i]!=null or u==s__Spells_Unit[(14)*(12)+i]
     set i=i+1
     exitwhen i==12
endloop


 

[DUОS]Дата: Пятница, 30 Сентября 2011, 19:32:58 | Сообщение # 10
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
SirNikolas,
У меня как-то не получалось на jass2) Обесконечивался цикл.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Xan4esДата: Пятница, 30 Сентября 2011, 19:42:21 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 213
Награды: 0
Репутация: 43
Блокировки:
[DUОS], какая нибудь практика будет ?

done
 

[DUОS]Дата: Пятница, 30 Сентября 2011, 19:43:19 | Сообщение # 12
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Xan4es,
Да, будет.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

SirNikolasДата: Пятница, 30 Сентября 2011, 19:45:03 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
[DUОS], эти фрагменты я выдернул из war3map.j, а там уж точно JASS2.

 

[DUОS]Дата: Пятница, 30 Сентября 2011, 21:12:48 | Сообщение # 14
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
эти фрагменты я выдернул из war3map.j, а там уж точно JASS2.

Я попробую снова тогда сделать мультиусловие о_О


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

PraidДата: Среда, 12 Октября 2011, 19:34:44 | Сообщение # 15
6 уровень
Группа: Проверенные
Сообщений: 203
Награды: 0
Репутация: 302
Блокировки:
Очень полезный урок постараюсь выучить как лутче)

 

Blood_ElfДата: Воскресенье, 29 Января 2012, 15:49:25 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
По-моему, давать неправильные коды вместо хороших примеров правильных (а их почти не было) - это плохая идея. Изложено хорошо, но поначалу как-то чуть-чуть complicated.
Quote (|DUОS|)
все базовые типы кроме handle обнулению не подлежат

Что есть базовые типы помимо integer, real, boolean, unit и string?
 

Ty3uKДата: Воскресенье, 29 Января 2012, 15:53:21 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Юнит- не базовый тип. Хэндл базовый

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Blood_ElfДата: Воскресенье, 29 Января 2012, 16:22:22 | Сообщение # 18
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
Quote (|DUОS|)
function Func takes unit u returns integer
local unit u = GroupRandomUnit(udg_g)
return 0
set u = null
endfunction
Если вздумаете, имейте в виду - unit u НЕ ОБНУЛИТСЯ.

То есть юнит не обнуляется не из-за того, что это исходная функция, а потому что он юнит?
 

Ty3uKДата: Воскресенье, 29 Января 2012, 16:29:11 | Сообщение # 19
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Он не обнуляется, потому что перед ним написали return, то есть функция вернула значение и завершилась (без выполнения следующих действий)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Blood_ElfДата: Воскресенье, 29 Января 2012, 16:31:38 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
То есть для обнуления переменной необходимо записать соответствующую команду до команды возвращения функции?
 

Ty3uKДата: Воскресенье, 29 Января 2012, 16:36:37 | Сообщение # 21
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Офк. Иначе функция завершается на return. И все, объект безвозвратно утек в оперативную память. Да так там и остался

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DiabfallДата: Воскресенье, 29 Января 2012, 16:55:15 | Сообщение # 22
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (|DUОS|)
- Каждый раз нужно писать приставку udg_

Не всегда же.
Quote (|DUОS|)
Условия

Добавь пример с elseif.
 

Ty3uKДата: Воскресенье, 29 Января 2012, 16:57:44 | Сообщение # 23
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Всегда же. Если ты глобалки vjass не юзаешь. А Рус их не юзает. Да и статья про жасс2

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DiabfallДата: Воскресенье, 29 Января 2012, 17:04:47 | Сообщение # 24
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (Ty3uK)
Всегда же. Если ты глобалки vjass не юзаешь. А Рус их не юзает. Да и статья про жасс2

Если я объявляю глобалку в кастом коде карты, это что vjass?
 

Ty3uKДата: Воскресенье, 29 Января 2012, 17:14:20 | Сообщение # 25
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
О.о Ну как бы да

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz