diff --git a/docs/ru/beamng/dev/modding/ui-apps.md b/docs/ru/beamng/dev/modding/ui-apps.md
index 36a932d3..88d2bc49 100644
--- a/docs/ru/beamng/dev/modding/ui-apps.md
+++ b/docs/ru/beamng/dev/modding/ui-apps.md
@@ -39,14 +39,14 @@ ui\modules\apps\ExampleApp\app.html
Messages:
-
+
-
+
-
{{ message }}
-
+
delete
@@ -56,7 +56,7 @@ ui\modules\apps\ExampleApp\app.html
```
-Здесь вы можете увидеть тег `` , отображающий передачу вашего транспортного средства, входные данные, используемые для отправки сообщения функции `sendMessage()` в Javascript, и повторяющийся тег `
- ` использующий ng-repeat для переменной `messages` , расположенной в Javascript.
+Здесь вы можете увидеть тег ``, отображающий передачу вашего транспортного средства, входные данные, используемые для отправки сообщения функции `sendMessage()` в Javascript, и повторяющийся тег `
- ` использующий ng-repeat для переменной `messages`, расположенной в Javascript.
ui\modules\apps\ExampleApp\app.js
@@ -74,7 +74,8 @@ angular.module('beamng.apps')
$scope.message = ''
$scope.messages = []
- // Setup the streams we want. For now, we only want the engine information. You can add more, you'll just have to look around to find the different streams
+ // Настраиваем потоки, которые нам нужны. Пока что нам нужна только информация о двигателе.
+ // Можно добавить больше, нужно будет просто поискать доступные потоки.
let steamList = ['engineInfo']
StreamsManager.add(steamList)
@@ -82,16 +83,16 @@ angular.module('beamng.apps')
StreamsManager.remove(steamList)
})
- // Do I even need to put this comment here explaining what this function does?
- // Well, I have done it for a lot of other things when they weren't needed. I'll leave this one be...
+ // Нужно ли вообще писать этот комментарий, объясняя, что делает эта функция?
+ // Ну, я писал комментарии для многих других вещей, даже когда это было не нужно. Пусть уж этот останется...
$scope.$on('streamsUpdate', function(event, streams) {
- if (!streams.engineInfo) // Early return... You probably noticed that without this useless comment though
+ if (!streams.engineInfo) // Ранний выход... Наверное, ты и без этого бесполезного комментария понял
return;
- // `lua/vehicle/controller/vehicleController.lua:538` (or use console.log)
+ // `lua/vehicle/controller/vehicleController.lua:538` (или можно использовать console.log)
let gear = streams.engineInfo[5]
- // Update the gear name in HTML if needed
+ // Обновляем название передачи в HTML при необходимости
if ($scope.gearName !== gear)
$scope.gearName = gear
})
@@ -103,7 +104,7 @@ angular.module('beamng.apps')
if ($scope.message == '')
return
- // Forward the message to the Lua extension to modify it
+ // Передаём сообщение в Lua-расширение, чтобы оно его изменило
bngApi.engineLua('extensions.exampleMod.modifyMessage("' + $scope.message + '")')
$scope.message = ''
}
@@ -112,7 +113,7 @@ angular.module('beamng.apps')
$scope.messages.splice(idx, 1)
}
- // The `modifyMessage` function will call this hook with the modified data
+ // Функция `modifyMessage` вызовет этот хук с изменёнными данными
$scope.$on('MessageReady', function(_, modifiedMessage) {
$scope.messages.push(modifiedMessage)
});
@@ -121,7 +122,7 @@ angular.module('beamng.apps')
}])
```
-Обратите внимание на использование $scope{/b0} . Это очень важно, поскольку вам нужно будет определить переменные и функции в {b1}$scope , чтобы иметь возможность доступа к ним из Html внутри любого тега ng-* . Таким образом, в этом примере после выполнения функции `sendMessage()` из Html она отправит его в файл lua, расположенный в каталоге расширений мода, и выполнит функцию `modifyMessage()` внутри этого файла lua.
+Обратите внимание на использование $scope{/b0}. Это очень важно, поскольку вам нужно будет определить переменные и функции в {b1}$scope, чтобы иметь возможность доступа к ним из Html внутри любого тега ng-*. Таким образом, в этом примере после выполнения функции `sendMessage()` из Html она отправит его в файл lua, расположенный в каталоге расширений мода, и выполнит функцию `modifyMessage()` внутри этого файла lua.
Пример того, как может выглядеть сторона lua:
@@ -134,7 +135,7 @@ end
^ Это упрощенная версия lua, просто показывающая функцию.
-Основное внимание здесь уделяется использованию guihooks.trigger , который запускает событие AngularJS, определенное с помощью `$scope.$on()` . Как вы можете видеть в самом низу файла Javascript, событие называется MessageReady и будет выполнено функцией guihooks.trigger с полезной нагрузкой сообщения, а затем будет помещено в переменную `$scope.messages` для отображения тегом li с помощью ng-repeat в файле Html.
+Основное внимание здесь уделяется использованию guihooks.trigger, который запускает событие AngularJS, определенное с помощью `$scope.$on()`. Как вы можете видеть в самом низу файла Javascript, событие называется MessageReady и будет выполнено функцией guihooks.trigger с полезной нагрузкой сообщения, а затем будет помещено в переменную `$scope.messages` для отображения тегом li с помощью ng-repeat в файле Html.
Полный файл lua находится ниже
@@ -144,64 +145,64 @@ lua\ge\extensions\exampleMod.lua
local M = {}
--[[
- This is the entry point of our extension, this is what the game loads from our `modScript.lua`.
- In the modScript file, you can load more extensions and put them in the same directory as this file.
+ Это точка входа нашего расширения — именно её загружает игра из файла `modScript.lua`.
+ В файле modScript можно загружать больше расширений и помещать их в ту же директорию, что и этот файл.
- In this file, we will communicate with the following:
- 1. Our vehicle extension. That extension tells this extension when to send it data, and we send it. Take a look at `vehicle/extensions/auto/exampleVehicleExtension.lua`
- 2. Input. Take a look at `core/input/actions/myActions.json`. When the bounded key is pressed, it will call `onActionKeyDown` (a function we export below)
+ В этом файле мы будем взаимодействовать со следующими компонентами:
+ 1. Наше расширение для автомобиля. Оно сообщает этому расширению, когда нужно отправить данные, и мы их отправляем. См. `vehicle/extensions/auto/exampleVehicleExtension.lua`
+ 2. Ввод. См. `core/input/actions/myActions.json`. Когда привязанная клавиша нажата, вызывается `onActionKeyDown` (функция, экспортируемая ниже)
]]
--- Game Function Hooks
+-- Хуки игровых функций
--------------------------------------------
local function onExtensionLoaded()
- log('D', "onExtensionLoaded", "Called")
+ log('D', "onExtensionLoaded", "Called")
end
local function onExtensionUnloaded()
- log('D', "onExtensionUnloaded", "Called")
+ log('D', "onExtensionUnloaded", "Called")
end
--- Custom Functions
+-- Пользовательские функции
--------------------------------------------
local function onActionKeyDown()
- log('D', "onActionKeyDown", "Pressed!")
+ log('D', "onActionKeyDown", "Pressed!")
end
local function onVehicleExtensionLoaded(vehID)
- log('D', "onVehicleExtensionLoaded", "Sending some data to the vehicle")
+ log('D', "onVehicleExtensionLoaded", "Sending some data to the vehicle")
- local veh = be:getObjectByID(vehID) -- If you don't have the ID, you can also use `be:getPlayerVehicle(0)` to get the current vehicle.
- if not veh then return end -- The usual error checking
+ local veh = be:getObjectByID(vehID) -- Если у вас нет ID, можно также использовать `be:getPlayerVehicle(0)`, чтобы получить текущий автомобиль.
+ if not veh then return end -- Обычная проверка на ошибки
- local data = {
- ["name"] = "Daniel W"
- }
+ local data = {
+ ["name"] = "Daniel W"
+ }
- veh:queueLuaCommand("extensions.exampleVehicleExtension.onDataReceived('" .. jsonEncode(data) .. "')")
+ veh:queueLuaCommand("extensions.exampleVehicleExtension.onDataReceived('" .. jsonEncode(data) .. "')")
end
local function modifyMessage(message)
- message = message .. " [Modified!]"
- guihooks.trigger('MessageReady', message)
+ message = message .. " [Modified!]"
+ guihooks.trigger('MessageReady', message)
end
--- Export Interface
+-- Экспорт интерфейса
--------------------------------------------
-M.onExtensionLoaded = onExtensionLoaded
-M.onExtensionUnloaded = onExtensionUnloaded
+M.onExtensionLoaded = onExtensionLoaded
+M.onExtensionUnloaded = onExtensionUnloaded
-M.onActionKeyDown = onActionKeyDown
+M.onActionKeyDown = onActionKeyDown
M.onVehicleExtensionLoaded = onVehicleExtensionLoaded
-M.modifyMessage = modifyMessage
+M.modifyMessage = modifyMessage
---[[ Other functions could include:
- - onPreRender(dtReal, dtSim, dtRaw)
- - onUpdate(dtReal, dtSim, dtRaw)
- - onClientPreStartMission(levelPath)
- - onClientPostStartMission(levelPath)
+--[[ Другие функции могут включать:
+ - onPreRender(dtReal, dtSim, dtRaw)
+ - onUpdate(dtReal, dtSim, dtRaw)
+ - onClientPreStartMission(levelPath)
+ - onClientPostStartMission(levelPath)
- To find all of these, search the following in `BeamNG.Drive/lua`: `extensions.hook(`
+ Чтобы найти все возможные функции, выполните поиск в `BeamNG.Drive/lua` по следующему выражению: `extensions.hook(`
--]]
return M
@@ -252,7 +253,7 @@ ui\modules\apps\ExampleApp\app.json
}
```
-Директива должна быть такой же, как в файле Javascript.
+Директива должна быть такой же, как в файле Javascript
# Функции Javascript, предоставляемые BeamNG для UI-приложений
@@ -260,7 +261,7 @@ ui\modules\apps\ExampleApp\app.json
bngApi.engineLua("lua_path.function()")
```
-Полезно для запуска функции lua с аргументами или без них.
+Полезно для запуска функции lua с аргументами или без них
# Функции Lua, предоставляемые BeamNG для UI-приложений