Результаты (
русский) 2:
[копия]Скопировано!
MoveableGates = {}; Функция MoveableGates.prerequisitesPresent (специализации) возвращение SpecializationUtil.hasSpecialization (AnimatedVehicle, специализации); конец; функции MoveableGates: нагрузка (XMLFILE) self.moveGate = SpecializationUtil.callSpecializationsFunction ("moveGate"); self.gateControlTriggerCallback = MoveableGates. gateControlTriggerCallback; self.moveableGates = {} местный номер = 0; в то время как верно сделать локальный ключ = "vehicle.moveableGates.gate (" .. ToString (Num) .. ")"; если не hasXMLProperty (XMLFILE, ключ), то сломать; конец; местные ворота = {} gate.animationName = getXMLString (XMLFILE, ключ "# animationName" ..); gate.axisName = getXMLString (XMLFILE, ключ .. "# AxisName"); gate.helpPanelTextName = getXMLString (XMLFILE, ключ .. "# helpPanelTextName"); gate.axisIndex = InputBinding [gate.axisName]; gate.iconFilename = Utils.getFilename (getXMLString (XMLFILE, ключ .. "# IconFile"), self.baseDirectory); g_mouseControlsHelp: addIconFilename (ворота .iconFilename); gate.speedFactor = Utils.getNoNil (getXMLFloat (XMLFILE, ключ .. "# speedFactor"), 1); gate.mouseSpeedFactor = Utils.getNoNil (getXMLFloat (XMLFILE, ключ .. "# mouseSpeedFactor"), 1 ); если getXMLString (XMLFILE, ключ .. "#") steeringStickIndex ~ = ноль, то gate.steeringStick = Utils.indexToObject (self.components, getXMLString (XMLFILE, ключ .. "# steeringStickIndex")); gate.steeringStickAmplitude = математике .rad (Utils.getNoNil (getXMLFloat (XMLFILE, ключ .. "# steeringStickAmplitude"), 15)); _, _, gate.steeringStickRotZBackup = getRotation (gate.steeringStick); конец; местное действие = InputBinding.actions [ворота. axisIndex]; gate.helpText = g_i18n: GetText (gate.helpPanelTextName) .. "" ..KeyboardHelper.getKeyNames (action.keys1) .. "/" ..KeyboardHelper.getKeyNames (action.keys2); table.insert (само .moveableGates, ворота); Num = NUM + 1; END; self.gateControlTrigger = Utils.indexToObject (self.components, getXMLString (XMLFILE, "vehicle.moveableGates # controlTriggerIndex")); addTrigger (self.gateControlTrigger, "gateControlTriggerCallback", самостоятельно); self.playerIsInGateControlTrigger = True; END; функция MoveableGates: удаление () removeTrigger (self.gateControlTrigger); конец; функции MoveableGates: loadFromAttributesAndNodes (XMLFILE, ключевые, resetVehicles) местные gateTimesStr = getXMLString (XMLFILE, ключевые .. "# gateTimes "); если gateTimesStr ~ = ноль, то местные gateTimes = Utils.splitString (" ", gateTimesStr); для а = 1, table.getn (self.moveableGates) сделать местную ворота = self.moveableGates [а]; локальная animTime = ToNumber (gateTimes [а]); само: moveGate (а, animTime); конец; конец; вернуться BaseMission.VEHICLE_LOAD_OK; конец; функции MoveableGates: getSaveAttributesAndNodes (nodeIdent) локальные атрибуты = 'gateTimes = ""; при а = 1, таблицы. ГЕТН (self.moveableGates) сделать местный ворота = self.moveableGates [а]; локальная animTime = сам: getAnimationTime (gate.animationName); атрибуты = attributes..tostring (animTime) .. ""; конец; атрибуты = атрибуты .. '"'; вернуть атрибуты", "; конец; функции MoveableGates: ReadStream (StreamID, соединение) при а = 1, table.getn (self.moveableGates) сделать местные ворота = self.moveableGates [A]; локальная animTime = streamReadFloat32 ( StreamID); само: moveGate (а, animTime, правда); конец; конец; функции MoveableGates: WriteStream (StreamID, соединение) при а = 1, table.getn (self.moveableGates) сделать местный ворота = self.moveableGates [а] ; местные animTime = сам: getAnimationTime (gate.animationName); streamWriteFloat32 (StreamID, animTime); конец; конец; функции MoveableGates: MouseEvent (PosX, букет, isDown, ISUP, кнопка) конец; функции MoveableGates: KeyEvent (Unicode, сим, Модификатор, isDown) конец; функции MoveableGates: обновление (DT) местная gatesMoved = ложь; если g_currentMission.player ~ = ноль и g_currentMission.player.isEntered то местный рх, ру, рг = getWorldTranslation (g_currentMission.player.rootNode); местные TX , ты, TZ = getWorldTranslation (self.gateControlTrigger); если self.playerIsInGateControlTrigger и self.attacherVehicle ~ = ноль и Utils.vector3Length (ПВ-TX, ру-во, пз-TZ) <5, то при а = 1, таблицы. ГЕТН (self.moveableGates) сделать местный ворота = self.moveableGates [а]; локальная шаг, axisType = InputBinding.getInputAxis (gate.axisIndex); местные steeringStickAmplitude = 0; если gate.steeringStick == ноль, то steeringStickAmplitude = ноль; конец; если шаг ~ = 0, то gatesMoved = TRUE; местная скорость = DT * 0,001; если axisType == InputBinding.INPUTTYPE_MOUSE_AXIS то скорость = скорость * * шаг gate.speedFactor; еще скорость = скорость * * шаг gate.mouseSpeedFactor; конец; местные animTime = сам: getAnimationTime (gate.animationName); само: moveGate (а, animTime + скорость); g_mouseControlsHelp: setIconFilename ("", gate.iconFilename); если steeringStickAmplitude ~ = ноль, то если шаг> 0, то steeringStickAmplitude = gate.steeringStickAmplitude; еще steeringStickAmplitude = 0-gate.steeringStickAmplitude; конец; конец; ElseIf Input.isMouseButtonPressed (Input.MOUSE_BUTTON_LEFT) или Input.isMouseButtonPressed (Input.MOUSE_BUTTON_RIGHT), то gatesMoved = TRUE; если steeringStickAmplitude ~ = ноль затем steeringStickAmplitude = 0; конец; еще, если steeringStickAmplitude ~ = ноль, то steeringStickAmplitude = 0; конец; конец; если gate.steeringStick ~ = ноль затем setRotation (gate.steeringStick, 0, 0, + gate.steeringStickRotZBackup steeringStickAmplitude); конец; если self.playerIsInGateControlTrigger нет ход кулачка при использовании мыши не / геймпад, если gatesMoved то g_currentMission.isPlayerFrozen = ложь; g_currentMission.controlPlayer = TRUE; g_currentMission.isPlayerFrozenChangedByMoveableGates = TRUE; ElseIf g_currentMission.isPlayerFrozenChangedByMoveableGates то g_currentMission.isPlayerFrozen = ложь; g_currentMission.controlPlayer = TRUE; g_currentMission. isPlayerFrozenChangedByMoveableGates = False; конец; конец; функции MoveableGates: updateTick (DT) конец; функции MoveableGates: ничья () конец; функции MoveableGates: gateControlTriggerCallback (triggerId, otherId, OnEnter, OnLeave, onStay, otherShapeId), если g_currentMission.player ~ = ноль, то если g_currentMission.player.rootNode == otherId и g_currentMission.player.isEntered то, если OnEnter то self.playerIsInGateControlTrigger = TRUE; ElseIf OnLeave то self.playerIsInGateControlTrigger = ложь; конец; конец; конец; конец; функции MoveableGates: moveGate (gateIndex, animTime , noEventSend) местная ворота = self.moveableGates [gateIndex]; самостоятельно: setAnimationTime (gate.animationName, animTime, правда); для а = 1, table.getn (self.movingParts) сделать Cylindered.updateMovingPart (самостоятельно, self.movingParts [ а], ложь); конец; если не noEventSend то MoveGateEvent.sendEvent (я, gateIndex, animTime, noEventSend); конец; конец;
переводится, пожалуйста, подождите..
