Добавлен , опубликован

JASS - Just Another Scripting Syntax

Содержание:

Переезд

Начат переезд на новый движок документации. Актуальная статья находится здесь.

nothing

Не совсем тип, а синтаксическая конструкция для указания того, что функция ничего не принимает или не возвращает.
function myFunc takes nothing returns nothing
endfunction

boolean

Логический тип, представлен как true и false.

integer

Целые числа представлены в диапазоне от -2,147,483,648 до 2,147,483,647.
globals
	integer a = 100500
	integer b = -100500
endglobals

Восьмеричная запись

Запись числа в восьмеричной системе счисления начинается с ноля:
globals
	integer a = 07
	integer b = -012
endglobals

Шестнадцатеричная запись

Запись в шестнадцатеричной системе счисления начинается с 0x (ноль икс) или c $:
globals
	integer a = 0xFF
	integer b = -$ff
endglobals
Запись регистронезависима. Тобишь большие и маленькие буквы равноправны.

Равкоды

Знаки между одинарными кавычками в простонародии зовутся равкодами. Особо одарённые причисляют их к ASCII, другие к ISO 8859-1, ну а третьи к UTF-8. На самом деле это строковое представление байт, которое более подробно описано в статье.
Рассматриваются как беззнаковые целые в диапазоне от 0 до 4,294,967,295.
globals
	integer a = 'a'
	integer b = -'abcd'
endglobals
Допустим один или четыре символа.

real

Числа с плавающей точкой представлены в диапазоне +/- 3.402823466e+38 с минимальным положительным числом равным 1.175494351e-38.
globals
	real a = 1.1
	real b = -1.
	real c = -.1
endglobals

string

Строки хранятся в виде массива байтов интерпретируемого как UTF-8. На самом деле, там всё немного сложнее. Главное запомнить, что каждая уникальная строка останется в памяти до конца игры.
Лимит отдельной строки 1024 однобайтных символа. При помощи конкатенации можно создать строку длинной 4096 однобайтных символа. Напоминаю, что символы, не входящие в ASCII имеют более одного байта на символ.
Для снятия этого и многих других лимитов рекомендую использовать UjAPI.
Экранирование устроено следующим образом:
Последовательнось Значение Описание
\\ 92 обратный слеш
\" 34 двойная кавычка
Помимо экранирования существуют специальные последовательности:
Последовательнось Описание Пример
|cAARRGGBB Цветовой код |CFF00FF00Зелёный
|r Сброс цвета Белый|CFF00FF00Зелёный|rБелый
|n Новая строка Первая строка|nВторая строка
TRIGSTR_1234567890 Вставка из .wts TRIGSTR_1

code

Указатель на функцию для передачи её аргументом. Самый частый пример, это передача функции в таймер:
native TimerStart takes timer whichTimer, real timeout, boolean periodic, code handlerFunc returns nothing
function myTimerCallback takes nothing returns nothing
	//...
endfunction

function main takes nothing returns nothing
	call TimerStart(CreateTimer(), 1. false, function myTimerCallback)
endfunction
Игра не предоставляет возможности собственноручно вызывать функции из переменных с типом code, но благо существует UjAPI, в котором реализована специальная функция:
native ExecuteCode takes code c returns nothing

null

Специально обученный ноль, под который выделен специальный токен. Поэтому такой код не вызывает ошибку:
globals
	integer i = null
	real r = null
	handle h = null
	string s = null
endglobals
Правда есть нюанс, если вы используете одну из сборок JNGP то написанный ногами pjass не даст вам скомпилировать такой код.

handle

Если не вдаваться в подробности, то это ссылка на объект в таблице объектов. Все типы, объявленные в common.j являются ссылками.

`
ОЖИДАНИЕ РЕКЛАМЫ...
25
Вот огонь! Неужели нас ждут полноценные статейки в 24 году по jass :D
С системным подходом и хорошим оформлением. С рекомендациями и со ссылками.
Ответы (1)
18
Эх упущен опыт варкрафтеров по хранению нескольких малых чисел внутри большого числа

Тут кстати можно добавить функцию как выводить числа с плавающей точкой больше сколько-то знаков чем выводит стандартная функция вывода, помнится PT153 скидывал
Ответы (1)
30
Эх упущен опыт варкрафтеров по хранению нескольких малых чисел внутри большого числа
Буквально в основной статье дана ссылка.
Тут кстати можно добавить функцию как выводить числа с плавающей точкой больше сколько-то знаков чем выводит стандартная функция вывода
Можно хоть один адекватный пример её применения?
30
Последние новости!

Переезд

Начат переезд на новый движок документации. Актуальная статья находится здесь.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.