kharlashkin Posted February 18, 2014 Share Posted February 18, 2014 После обновления 0.8.11 при использовании "вибромода", стали сыпаться ошибки: 'python.log' [EXCEPTION] (scripts/client/VehicleAppearance.py, 1098):Traceback (most recent call last):File "scripts/client/VehicleAppearance.py", line 1096, in __onPeriodicTimerFile "scripts/client/VehicleAppearance.py", line 1405, in __updateVibrationsFile "scripts/client/Vibroeffects/ControllersManager.py", line 41, in updateFile "scripts/client/Vibroeffects/Controllers/TrackBreakingController.py", line 94, in updateFile "scripts/client/Vibroeffects/Controllers/TrackBreakingController.py", line 35, in __breakWithDirectionAttributeError: 'BigWorld.HomingCamera' object has no attribute 'source' Декомпилировав игровые скрипты - выкладываю код. 'VehicleAppearance' def __onPeriodicTimer(self): self.__periodicTimerID = None try: self.__update Vibrations() except Exception: LOG_CURRENT_EXCEPTION() try: if self.__lightFxCtrl is not None: self.__lightFxCtrl.update(self.__vehicle) if self.__auxiliaryFxCtrl is not None: self.__auxiliaryFxCtrl.update(self.__vehicle) self.__updateWaterStatus() except: LOG_CURRENT_EXCEPTION() if not self.__vehicle.isAlive(): self.__periodicTimerID = BigWorld.callback(_PERIODIC_TIME, self.__onPeriodicTimer) return else: try: self.__distanceFromPlayer = (BigWorld.camera().position - self.__vehicle.position).length for extraData in self.__vehicle.extras.values(): extra = extraData.get('extra', None) if isinstance(extra, vehicle_extras.Fire): extra.checkUnderwater(extraData, self.__vehicle, self.isUnderwater) break self.__updateCurrTerrainMatKinds() self.__updateMovementSounds() self.__updateBlockedMovement() self.__updateEffectsLOD() self.__trailEffects.update() except: LOG_CURRENT_EXCEPTION() self.__periodicTimerID = BigWorld.callback(_PERIODIC_TIME, self.__onPeriodicTimer) return 'VehicleAppearance' def __updateVibrations(self): if self.__vibrationsCtrl is None: return else: vehicle = self.__vehicle crashedTrackCtrl = self.__crashedTracksCtrl self.__vibrationsCtrl.update(vehicle, crashedTrackCtrl.isLeftTrackBroken(), crashedTrackCtrl.isRightTrackBroken()) return 'ControllersManager' def update(self, vehicle, isLeftTrackBroken, isRightTrackBroken): if self._TrackBreakingController__wasLeftTrackBroken == False and isLeftTrackBroken: self._TrackBreakingController__breakWithDirection(vehicle, True) elif self._TrackBreakingController__wasRightTrackBroken == False and isRightTrackBroken: self._TrackBreakingController__breakWithDirection(vehicle, False) self._TrackBreakingController__wasLeftTrackBroken = isLeftTrackBroken self._TrackBreakingController__wasRightTrackBroken = isRightTrackBroken 'TrackBreakingController' def _TrackBreakingController__breakWithDirection(self, vehicle, isLeftTrackBroken): directionMatrix = Math.Matrix(BigWorld.camera().source) directionMatrix.setElement(3, 0, 0) directionMatrix.setElement(3, 1, 0) directionMatrix.setElement(3, 2, 0) cameraDirection = directionMatrix.applyToAxis(0) cameraDirection.y = 0 vehicleMatrix = Math.Matrix(vehicle.matrix) vehicleMatrix.setElement(3, 0, 0) vehicleMatrix.setElement(3, 1, 0) vehicleMatrix.setElement(3, 2, 0) vehicleMatrix.invert() cameraDirection = vehicleMatrix.applyVector(cameraDirection) brokenTrackAngle = 0 if isLeftTrackBroken: brokenTrackAngle = math.pi dirAngleRelative = math.atan2(cameraDirection.z, cameraDirection.x) minDirDelta = math.pi * 2 vibrationToPlay = '' for angleVibration in TrackBreakingController._TrackBreakingController__ANGLES_VIBRATIONS: curAngle = angleVibration[0] curAngle += dirAngleRelative if curAngle > math.pi * 2: curAngle -= math.pi * 2 if curAngle < 0: curAngle += math.pi * 2 curDirDelta = abs(curAngle - brokenTrackAngle) if curDirDelta > math.pi: curDirDelta = math.pi * 2 - curDirDelta if curDirDelta < minDirDelta: minDirDelta = curDirDelta vibrationToPlay = angleVibration[1] continue OnceController(vibrationToPlay) 'TrackBreakingController' def update(self, vehicle, isLeftTrackBroken, isRightTrackBroken): if self._TrackBreakingController__wasLeftTrackBroken == False and isLeftTrackBroken: self._TrackBreakingController__breakWithDirection(vehicle, True) elif self._TrackBreakingController__wasRightTrackBroken == False and isRightTrackBroken: self._TrackBreakingController__breakWithDirection(vehicle, False) self._TrackBreakingController__wasLeftTrackBroken = isLeftTrackBroken self._TrackBreakingController__wasRightTrackBroken = isRightTrackBroken Ошибки на вибрацию в игре никак не влияют, но мое мнение что это не есть хорошо. Может кто-то из форума откликнется и укажет нубу в python как и что сделать для правильной работы "вибромода". Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted February 18, 2014 Share Posted February 18, 2014 Ошибки на вибрацию в игре никак не влияют, но мое мнение что это не есть хорошо. Может кто-то из форума откликнется и укажет нубу в python как и что сделать для правильной работы "вибромода". А к картохе в саппорт не писал? Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted February 18, 2014 Author Share Posted February 18, 2014 А к картохе в саппорт не писал? Вибрация не вибронакидки, вибрация для геймпада - пошлют они меня "за картошкой". Насколько я понимаю, они поменяли какой-то метод, но понять что именно пока умишком слаб. Вот код из версии 0.8.09 def update(self, vehicle, isLeftTrackBroken, isRightTrackBroken): if not VibroManager.g_instance.canWork(): return self.__deathVibrationCtrl.update(vehicle.isAlive()) self.__updateEngine(vehicle) if vehicle.isAlive(): self.__trackBreakingVibrationCtrl.update(vehicle, isLeftTrackBroken, isRightTrackBroken) else: self.__fireVibrationCtrl.switch(False) VibroManager.g_instance.update() Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted March 23, 2014 Author Share Posted March 23, 2014 Неужели ни у кого нет никаких идей? Link to comment Short link Share on other sites More sharing options...
lportii Posted March 24, 2014 Share Posted March 24, 2014 def _TrackBreakingController__breakWithDirection(self, vehicle, isLeftTrackBroken): directionMatrix = Math.Matrix(BigWorld.camera().source) ------------------- def _TrackBreakingController__breakWithDirection(self, vehicle, isLeftTrackBroken): directionMatrix = Math.Matrix(BigWorld.camera().matrix) 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted March 24, 2014 Author Share Posted March 24, 2014 (edited) def _TrackBreakingController__breakWithDirection(self, vehicle, isLeftTrackBroken): directionMatrix = Math.Matrix(BigWorld.camera().source) ------------------- def _TrackBreakingController__breakWithDirection(self, vehicle, isLeftTrackBroken): directionMatrix = Math.Matrix(BigWorld.camera().matrix) Очень хочется пояснений. Потому как это "картохины" скрипты. Edited March 24, 2014 by kharlashkin Link to comment Short link Share on other sites More sharing options...
lportii Posted March 24, 2014 Share Posted March 24, 2014 Не знаю, что такое сюрс, но матрикс провайдер определяется через матрикс. 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted April 22, 2014 Author Share Posted April 22, 2014 Доброе время суток! Вопрос по прежнему актуален... Очень нужна помощь! Link to comment Short link Share on other sites More sharing options...
MakcT40 Posted April 22, 2014 Share Posted April 22, 2014 Ну а ради интереса не пробовали изменить и перекомпилировать trackbreakingcontroller.pyс, как выше советовал lportii? 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted April 22, 2014 Author Share Posted April 22, 2014 (edited) Ну а ради интереса не пробовали изменить и перекомпилировать trackbreakingcontroller.pyс, как выше советовал lportii? Как бэ да... Моя ошибка - сразу тогда не попробовал, попробовал сейчас. 'python' [ERROR] (scripts/client/gui/shared/utils/requesters/__init__.py, 973): Server return error for stat request: responseCode=-10 [ERROR] (scripts/client/gui/shared/utils/requesters/__init__.py, 1002): frames stack dumping -------------- (scripts/client/gui/shared/utils/requesters/__init__.py, 999): __dumpStack (scripts/client/gui/shared/utils/requesters/__init__.py, 974): __valueResponse (scripts/client/account_helpers/BattleResultsCache.py, 90): __onGetResponse (scripts/client/Account.py, 289): onCmdResponse За картошкой все скрипты теперь исправлять? Прошу прощения что так долго не пробовал этого решения - не до игр мне сейчас. А обновлял версию по просьбе до 0.9.0 и выскочили те же ошибки, вот и вспомнил про темку. Завтра раскомпилирую скрипты на которые ссылаются ошибки, посмотрим что там будет. Исправлять так исправлять ;) Edited April 22, 2014 by kharlashkin Link to comment Short link Share on other sites More sharing options...
MakcT40 Posted April 22, 2014 Share Posted April 22, 2014 Как-то указанные ошибки, на мой взгляд, не очень вяжутся с изменением trackbreakingcontroller.pyс ... 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted April 23, 2014 Author Share Posted April 23, 2014 Как-то указанные ошибки, на мой взгляд, не очень вяжутся с изменением trackbreakingcontroller.pyс ... Мне изначально так же показалось, но как говорится "Одна голова хорошо, а форум лучше". Более того - сейчас вообще нет никаких ошибок ;) 'python' Checking ./res_mods/0.9.0: mods found [XPM] preloader gui.Scaleform.locale [XPM] Working dir: ./res_mods/0.9.0/scripts/client/gui/mods [XPM] Loading mod: gpvibromanager 1.2.0 (http://www.koreanrandom.com/forum/user/16753-inj3ct0r/) urllib2.URLError (connect): <urlopen error [Errno 10061] Подключение не установлено,> [NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 4 was selected. [NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 3 was selected. [SPACE] Loading space: spaces/hangar_v2 [SPACE] Loading space: spaces/86_himmelsdorf_winter [SPACE] Loading space: spaces/hangar_v2 [SPACE] Loading space: spaces/01_karelia [SPACE] Loading space: spaces/hangar_v2 PostProcessing.Phases.fini() Link to comment Short link Share on other sites More sharing options...
jeroohn Posted April 23, 2014 Share Posted April 23, 2014 [ERROR] (scripts/client/gui/shared/utils/requesters/__init__.py, 973): Server return error for stat request: responseCode=-10 Не ошибка, вы попытались просмотреть результат боя который был сыгран в прошлой сессии. В игре появляется сообщение что результат боя не доступен в питоне такой лог 1 @ Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted April 23, 2014 Author Share Posted April 23, 2014 (edited) Не ошибка, вы попытались просмотреть результат боя который был сыгран в прошлой сессии. В игре появляется сообщение что результат боя не доступен в питоне такой лог Буду теперь знать что это такое. Спасибо!!! Закрываю темку. Edited April 23, 2014 by kharlashkin Link to comment Short link Share on other sites More sharing options...
Recommended Posts