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

JASS

Содержание:

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 являются ссылками.

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

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