ai traffic. Фары

Discussion in 'Russian - русский' started by Gonzo_, Oct 19, 2024.

  1. Gonzo_

    Gonzo_
    Expand Collapse

    Joined:
    Oct 18, 2013
    Messages:
    74
    Всем доброго времени суток. Подскажите как трафику включить ближний свет днём?
     
  2. ArsPro

    ArsPro
    Expand Collapse

    Joined:
    Oct 13, 2022
    Messages:
    1,110
    Скорее всего это придется делать для каждой машины трафика в ручную (переключаться на каждый автомобиль чтобы там переключить свет)
    А так, это непредусмотренно, ведь трафик включает фары только когда темнеет
     
  3. Gonzo_

    Gonzo_
    Expand Collapse

    Joined:
    Oct 18, 2013
    Messages:
    74
    не) так не пойдет.. если при респауне нужно будет переключаться - это дичь. попробую на неделе приложение для трафика допилить.
     
  4. Gonzo_

    Gonzo_
    Expand Collapse

    Joined:
    Oct 18, 2013
    Messages:
    74
    В общем все просто оказалось. Если нужно, могу чуть позже доделать цивильно и оформить в моды. Сейчас оно просто включает ближний свет, на всех машинах...
    Первый вариант: просто вставлять в консоль
    Code:
    bngApi.engineLua(`for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(1)") end`)
    Второй вариант:
    Нужно вставить функцию в ui app Traffic(можно в любой, просто я этот использую)
    Code:
          this.headlights = function () {
            bngApi.engineLua(`for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(1)") end`)
          }
    затем в app.hml
    Code:
    <md-button class="md-raised button-alt" ng-click="ctrl.headlights()"></md-button>
    Code:
    angular.module('beamng.apps')
    
    .directive('traffic', [function () {
      return {
        templateUrl: '/ui/modules/apps/traffic/app.html',
        replace: false,
        restrict: 'E',
        scope: false,
        controller: function ($scope, $element, $attrs) {
          $scope.unit = 'km/h'
          $scope.conversions = [2.2369, 3.6]
          $scope.metric = true
          $scope.legalSpeed = true
          $scope.amount = 1
          $scope.speedLimit = 70
          $scope.spawnValue = 1
          $scope.aggression = 0.3
    
          $scope.aiModeOptions = ['Traffic', 'Random', 'Flee', 'Chase', 'Follow', 'Stop']
          $scope.debugOptions = ['Off', 'Traffic', 'Target', 'Speeds', 'Trajectory', 'Route']
          $scope.awareOptions = ['Auto', 'Off', 'On']
          this.aiModeOptions = $scope.aiModeOptions[0]
          this.debugOptions = $scope.debugOptions[0]
          this.awareOptions = $scope.awareOptions[0]
    
          this.amount = $scope.amount
    
          this.setAiMode = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiMode: this.aiModeOptions})} )`)
            bngApi.engineLua(`extensions.hook("trackAIAllVeh", ${bngApi.serializeToLua(this.aiModeOptions)} )`)
          }
    
          this.setDebugMode = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiDebug: this.debugOptions})} )`)
          }
    
          this.setAwareMode = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiAware: this.awareOptions})} )`)
          }
    
          this.setSpeedLimit = function () {
            var value = !$scope.legalSpeed ? this.speedLimit / $scope.conversions[Number($scope.metric)] : -1
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({speedLimit: value})} )`)
          }
    
          this.toggleUnits = function () {
            $scope.metric = !$scope.metric
            $scope.unit = $scope.metric ? 'km/h' : 'mph'
            this.setSpeedLimit()
          }
    
          this.setSpawnValue = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({spawnValue: this.spawnValue})} )`)
          }
    
          this.setAggression = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({baseAggression: this.aggression})} )`)
          }
    
          this.spawn = function () {
            bngApi.engineLua(`extensions.core_multiSpawn.spawnGroup(extensions.gameplay_traffic.createTrafficGroup(20), ${bngApi.serializeToLua(this.amount)})`)
            
          }
    
          this.delete = function () {
            bngApi.engineLua(`extensions.core_multiSpawn.deleteVehicles( ${bngApi.serializeToLua(this.amount)} )`)
            bngApi.engineLua(`extensions.hook("stopTracking", {Name = "TrafficEnabled"})`)
          }
    
          this.activate = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.activate()`)
            bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars({enableRandomEvents = true})`)
            if (bngApi.engineLua(`gameplay_traffic.getNumOfTraffic()`) > 0) {
              bngApi.engineLua(`extensions.hook("startTracking", {Name = "TrafficEnabled"})`)
            }
          }
    
          this.deactivate = function () {
            bngApi.engineLua(`extensions.gameplay_traffic.deactivate(true)`)
            bngApi.engineLua(`extensions.hook("stopTracking", {Name = "TrafficEnabled"})`)
          }
    
          this.refresh = function () {
            bngApi.engineLua(`core_vehicle_manager.reloadAllVehicles()`)
            bngApi.engineLua(`be:queueAllObjectLua("recovery.loadHome(false)")`)
          }
          this.headlights = function () {
            bngApi.engineLua(`for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(1)") end`)
          }
        },
        controllerAs: 'ctrl'
      }
    }])

    Code:
    <style>
      .traffic table {
        width: 100%;
      }
      .traffic td {
        vertical-align: middle;
        padding-bottom: 0.125em;
      }
      .traffic td:first-child {
        width: 40%;
      }
      .traffic input[type=number] {
        width: 50px;
        margin-right: 4px;
      }
      .traffic md-select {
        width: 140px;
        height: auto;
      }
      .traffic .checkbox-alt {
        display: inline-block;
        margin: 0px 4px;
      }
      .traffic .button-alt {
        display: inline-block;
        height: 2em;
        min-width: 50px;
        min-height: 2em;
        margin: 0 4px 0 0;
        padding: 0 8px;
        line-height: 1.5em;
        text-align: center;
      }
      .traffic .pad-bottom td {
        padding-bottom: 0.6em;
      }
      .traffic .disabled-option {
        opacity: 0.8;
        pointer-events: none;
      }
    </style>
    
    <div class="bngApp traffic" style="width: 100%; height: 100%">
      <table>
        <tr>
          <td>{{:: "ui.apps.traffic.NumberofCars" | translate}}:</td>
          <td>
            <input class="input-light" flex type="number" min="0" max="150" step="1" ng-value="amount" ng-model="ctrl.amount" aria-label="_">
            <md-button class="md-raised button-alt" ng-click="ctrl.spawn()">{{:: "ui.apps.traffic.Spawn" | translate}}</md-button>
            <md-button class="md-raised button-alt" ng-click="ctrl.delete()">{{:: "ui.apps.traffic.Delete" | translate}}</md-button>
          </td>
        </tr>
    
        <tr class="pad-bottom">
          <td></td>
          <td>
            <md-button class="md-raised button-alt">
              <md-icon class="material-icons" ng-click="ctrl.activate()">play_arrow</md-icon>
            </md-button>
            <md-button class="md-raised button-alt">
              <md-icon class="material-icons" ng-click="ctrl.deactivate()">stop</md-icon>
            </md-button>
            <md-button class="md-raised button-alt">
              <md-icon class="material-icons" ng-click="ctrl.refresh()">refresh</md-icon>
            </md-button>
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.SpeedLimit" | translate}}:</td>
          <td>
            <input class="input-light" ng-class="{'disabled-option': legalSpeed == true}" flex type="number" min="0" max="300" step="5" ng-value="speedLimit" ng-model="ctrl.speedLimit" ng-change="ctrl.setSpeedLimit()" aria-label="_">
            <md-button class="md-raised button-alt" ng-click="ctrl.toggleUnits()">{{unit}}</md-button>
            <md-checkbox class="checkbox-alt" ng-model="legalSpeed" ng-change="ctrl.setSpeedLimit()" aria-label="_">{{:: "ui.apps.traffic.Auto" | translate}}</md-checkbox>
            <md-button class="md-raised button-alt" ng-click="ctrl.headlights()"></md-button>
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.RespawnRate" | translate}}:</td>
          <td>
            <input class="input-light" flex type="number" min="0" max="3" step="0.1" ng-value="spawnValue" ng-model="ctrl.spawnValue" ng-change="ctrl.setSpawnValue()" aria-label="_">
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.Risk" | translate}}:</td>
          <td>
            <input class="input-light" flex type="number" min="0.2" max="2" step="0.1" ng-value="aggression" ng-model="ctrl.aggression" ng-change="ctrl.setAggression()" aria-label="_">
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.AIMode" | translate}}:</td>
          <td>
            <md-select flex ng-model="ctrl.aiModeOptions" ng-change="ctrl.setAiMode()" aria-label="_">
              <md-option ng-value="value" ng-repeat="value in aiModeOptions" aria-label="_">{{value}}</md-option>
            </md-select>
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.AwarenessMode" | translate}}:</td>
          <td>
            <md-select flex ng-model="ctrl.awareOptions" ng-change="ctrl.setAwareMode()" aria-label="_">
              <md-option ng-value="value" ng-repeat="value in awareOptions" aria-label="_">{{value}}</md-option>
            </md-select>
          </td>
        </tr>
    
        <tr>
          <td>{{:: "ui.apps.traffic.DebugMode" | translate}}:</td>
          <td>
            <md-select flex ng-model="ctrl.debugOptions" ng-change="ctrl.setDebugMode()" aria-label="_">
              <md-option ng-value="value" ng-repeat="value in debugOptions" aria-label="_">{{value}}</md-option>
            </md-select>
          </td>
        </tr>
      </table>
    </div>
    
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice