kharlashkin 239 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 как и что сделать для правильной работы "вибромода". Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #156644 Posted February 18, 2014 Ошибки на вибрацию в игре никак не влияют, но мое мнение что это не есть хорошо. Может кто-то из форума откликнется и укажет нубу в python как и что сделать для правильной работы "вибромода". А к картохе в саппорт не писал? Share this post Link to post Short link Share on other sites
kharlashkin 239 #156651 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() Share this post Link to post Short link Share on other sites
kharlashkin 239 #164072 Posted March 23, 2014 Неужели ни у кого нет никаких идей? Share this post Link to post Short link Share on other sites
lportii 14 #164436 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 Share this post Link to post Short link Share on other sites
kharlashkin 239 #164439 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 Share this post Link to post Short link Share on other sites
lportii 14 #164442 Posted March 24, 2014 Не знаю, что такое сюрс, но матрикс провайдер определяется через матрикс. 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #175344 Posted April 22, 2014 Доброе время суток! Вопрос по прежнему актуален... Очень нужна помощь! Share this post Link to post Short link Share on other sites
MakcT40 331 #175360 Posted April 22, 2014 Ну а ради интереса не пробовали изменить и перекомпилировать trackbreakingcontroller.pyс, как выше советовал lportii? 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #175372 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 Share this post Link to post Short link Share on other sites
MakcT40 331 #175379 Posted April 22, 2014 Как-то указанные ошибки, на мой взгляд, не очень вяжутся с изменением trackbreakingcontroller.pyс ... 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #175449 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() Share this post Link to post Short link Share on other sites
jeroohn 285 #175480 Posted April 23, 2014 [ERROR] (scripts/client/gui/shared/utils/requesters/__init__.py, 973): Server return error for stat request: responseCode=-10 Не ошибка, вы попытались просмотреть результат боя который был сыгран в прошлой сессии. В игре появляется сообщение что результат боя не доступен в питоне такой лог 1 Share this post Link to post Short link Share on other sites
kharlashkin 239 #175508 Posted April 23, 2014 (edited) Не ошибка, вы попытались просмотреть результат боя который был сыгран в прошлой сессии. В игре появляется сообщение что результат боя не доступен в питоне такой лог Буду теперь знать что это такое. Спасибо!!! Закрываю темку. Edited April 23, 2014 by kharlashkin Share this post Link to post Short link Share on other sites