Урок 3. Раскраска API для Notepad++

Введение

В этой статье речь пойдёт лишь про удобство использования Notepad++ при создании скриптов Lua для Tabletop Simulator.
ОглавлениеУрок 1. Скприты Lua для TTS Урок 2. Инструменты
Урок 3. Раскраска API для Notepad++

Как использовать Notepad++

Notepad++ - это просто редактор текста. Не самый лучший редактор, но один из самых быстрых и лёгких в освоении. Вы просто устанавливаете его, - и сразу можете редактировать любой текст или код программы, как в обычном блокноте.
Основная мощь Notepad++ по сравнению с простым блокнотом - в подсветке синтаксиса. Чтобы заработала подсветка для Lua, нужно создать файл с расширением "lua". Ещё один вариант (более грубый) - в меню "Синтаксисы" выбрать L->Lua.
Теперь при редактировании у тебя подсвечиваются ключевые слова "function", "end", "for", "local" и т.п. Но как добавить подсветку API игры? По умолчанию Notepad++ ничего не знает об этом API, поэтому нам придётся вручную вбить (скопипастить отсюда) все ключевые слова. Их не так много.
  1. Перейди в меню Опции->Определение стилей...
  2. Выбери язык Lua
Справа ты увидишь различные языковые категории. Например, для категории "INSTRUCTION WORD" коротенько перечислены ключевые слова: and break do else elseif и т.д. (через пробел).
Нас интересуют категории FUNC1, FUNC2 и FUNC3. Для этих категорий (как и для всех остальных) ты можешь задать цвет, приятный глазу, а также в окошке "Пользовательские" перечислить свои ключевые слова.
Например, попробуй вбить туда слово "getObjectFromGUID" - и в твоём скрипте оно сразу перекрасится в другой цвет и станет более заметным. Это очень полезно а) для красоты б) чтобы быть уверенным, что это длинное слово без опечаток.
Далее я просто перечислю все ключевые слова из официального API, а ты уж сам решай, где и каким цветом тебе удобнее их видеть. Лично я предпочитаю все функции и переменные API выделять одним цветом, системные функции (типа os.clock) - другим цветом, а свои кастомные любимые названия (например, SAVED) - третьим цветом.
Получается довольно пёстро и красиво, и в коде удобно ориентироваться.

Глобальные функции и переменные

Когда будешь копипастить, следи, чтобы слова не склеились. Они должны быть разделены пробелом. Можешь добавить сколько угодно пробелов и переходов на новую строку. Можно даже добавить пустые строки. Но если слова будут склеены или обрезаны, то цвет у них останется обычный в коде программы.
Глобальные обработчики событий (Events)onCollisionEnter onCollisionExit onCollisionStay onDestroy onDropped onObjectDestroyed onObjectDropped onObjectEnterScriptingZone onObjectLeaveScriptingZone onObjectPickedUp onPickedUp onPlayerChangedColor onPlayerTurnEnd onPlayerTurnStart onSave update onload
Глобальные функцииЗдесь есть некоторые устаревшие функции на всякий случай.
addNotebookTab broadcastToAll broadcastToColor clearPixelPaint clearVectorPaint copy destroyObject editNotebookTab flipTable getAllObjects getNotebookTabs getNotes getObjectFromGUID getSeatedPlayers paste print printToAll printToColor removeNotebookTab setNotes spawnObject startLuaCoroutine stringColorToRGB getGlobalScriptVar setGlobalScriptVar getGlobalScriptTable setGlobalScriptTable getPlayer colorToPlayerName getPlayerHandPositionAndRotation callLuaFunctionOtherScript callLuaFunctionOtherScriptWithParams
Глобальные объектыДля Player здесь перечислены все популярные цвета. Глупо выглядит, но приходится так делать.
Global Player Timer Player.White Player.Brown Player.Red Player.Orange Player.Yellow Player.Green Player.Teal Player.Blue Player.Purple Player.Pink Player.Grey Player.Black
Прочие функции объектовgetDescription getGUID getLuaScript getName getTable getVar setDescription setLuaScript setName setTable setVar addForce addTorque flip getAngularVelocity getPosition getRotation getScale getVelocity isSmoothMoving rotate scale setPosition setPositionSmooth setRotation setRotationSmooth setScale translate getColorTint setColorTint clearButtons createButton editButton getButtons removeButton call clone cut dealToAll dealToColor dealToColorWithOffset destruct getCustomObject getLock getObjects getQuantity getStatesCount getValue highlightOn highlightOff lock reset roll setCustomObject setLock setState setValue shuffle shuffleStates takeObject unlock pauseStart showCurrentTime startStopwatch clear decrement increment attack changeMode die onAttack onHit getFontColor getFontSize setFontColor setFontSize attachCameraToObject blind getHandObjects getPlayerHand getPointerPosition getPointerRotation kick lookAt mute promote unblind create destroy
Tabletop Simulator позволяет обращаться к функциям объектов как через точку ".", так и через двоеточие ":". Лучше использовать доветочие, потому что так функции будут выделяться цветом в Notepad++. Например, так:
local color = obj:getColorTint() --двоеточие

Свойства объектов

Свойства указываются через точку. Это беда Notepad++, потому что точка считается частью ключевого слова. Так что нужно перечислить все ключевые слова целиком.
Я беру самые популярные, на мой взгляд, названия для объектов - obj и o. Чисто для себя ещё беру inst.obj. Для объекта игрока - player. Но ты можешь добавить свои варианты.
angular_drag auto_raise bounciness Clock Counter drag dynamic_friction guid held_by_color interactable mass name resting RPGFigurine script_code script_state static_friction sticky tag tooltip TextTool use_gravity use_grid use_snap_points paused admin blindfolded color lift_height promoted seated steam_id steam_name team obj.angular_drag obj.auto_raise obj.bounciness obj.Clock obj.Counter obj.drag obj.dynamic_friction obj.guid obj.held_by_color obj.interactable obj.mass obj.name obj.resting obj.RPGFigurine obj.script_code obj.script_state obj.static_friction obj.sticky obj.tag obj.tooltip obj.TextTool obj.use_gravity obj.use_grid obj.use_snap_points obj.paused obj.admin obj.blindfolded obj.color obj.lift_height obj.promoted obj.seated obj.steam_id obj.steam_name obj.team player.admin player.blindfolded player.color player.lift_height player.promoted player.seated player.steam_id player.steam_name player.team player_obj.admin player_obj.blindfolded player_obj.color player_obj.lift_height player_obj.promoted player_obj.seated player_obj.steam_id player_obj.steam_name player_obj.team inst.obj.angular_drag inst.obj.auto_raise inst.obj.bounciness inst.obj.Clock inst.obj.Counter inst.obj.drag inst.obj.dynamic_friction inst.obj.guid inst.obj.held_by_color inst.obj.interactable inst.obj.mass inst.obj.name inst.obj.resting inst.obj.RPGFigurine inst.obj.script_code inst.obj.script_state inst.obj.static_friction inst.obj.sticky inst.obj.tag inst.obj.tooltip inst.obj.TextTool inst.obj.use_gravity inst.obj.use_grid inst.obj.use_snap_points inst.obj.paused inst.obj.admin inst.obj.blindfolded inst.obj.color inst.obj.lift_height inst.obj.promoted inst.obj.seated inst.obj.steam_id inst.obj.steam_name inst.obj.team o.angular_drag o.auto_raise o.bounciness o.Clock o.Counter o.drag o.dynamic_friction o.guid o.held_by_color o.interactable o.mass o.name o.resting o.RPGFigurine o.script_code o.script_state o.static_friction o.sticky o.tag o.tooltip o.TextTool o.use_gravity o.use_grid o.use_snap_points o.paused o.admin o.blindfolded o.color o.lift_height o.promoted o.seated o.steam_id o.steam_name o.team p.admin p.blindfolded p.color p.lift_height p.promoted p.seated p.steam_id p.steam_name p.team

Свои названия

Когда редактор подсвечивает твои собственные названия в коде, это особо приятно и красиво для тебя самого. У тебя наверняка будут какие-то часто используемые функции или переменные. Добавляй их в свой список тоже. Лучше (имхо), если они будут выделены своим цветом (FUNC3).
Например, это могут быть такие слова:
SAVED SAVED.CARDS SAVED.PLAYERS PLAYERS CACHE CACHE_CURSOR CACHE_TYPE UpdateCache inst.obj inst.pos inst.active inst.type card.obj card.pos card.active card.zone DoTaskInTime DoPeriodicTask CancelTask TASKS time_now
Оценка
- 0 +
0 голосов
Поделиться
VK Telegram