mirror of
https://port.numenaute.org/aleajactaest/clientbot.git
synced 2024-11-21 22:56:13 +00:00
267 lines
10 KiB
Python
267 lines
10 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# module PropVisual
|
|
#
|
|
# Copyright (C) 2019 AleaJactaEst
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#from tools import Enum
|
|
#import logging
|
|
#import struct
|
|
#import math
|
|
#from tools import TPropIndex
|
|
#from tools import TPVPMode
|
|
#from tools import Enum
|
|
|
|
LOGGER='PropVisual'
|
|
|
|
# uint64 Sex : 1; // max: 2 current: 2
|
|
# uint64 JacketModel : 8; // max: 256 current: 93
|
|
# uint64 JacketColor : 3; // max: 8 current: 8
|
|
# uint64 TrouserModel : 8; // max: 256 current: 104
|
|
# uint64 TrouserColor : 3; // max: 8 current: 8
|
|
# uint64 WeaponRightHand : 10; // max: 1024 current: 457
|
|
# uint64 WeaponLeftHand : 8; // max: 256 current: 63
|
|
# uint64 ArmModel : 8; // max: 256 current: 94
|
|
# uint64 ArmColor : 3; // max: 8 current: 8
|
|
# uint64 HatModel : 9; // max: 512 current: 192
|
|
# uint64 HatColor : 3; // max: 8 current: 8
|
|
|
|
class PropVisualA:
|
|
# khanat-opennel-code/code/ryzom/common/src/game_share/player_visual_properties.h:32 struct SPropVisualA
|
|
def __init__(self):
|
|
self.Sex = 0
|
|
self.JacketModel = 0
|
|
self.JacketColor = 0
|
|
self.TrouserModel = 0
|
|
self.TrouserColor = 0
|
|
self.WeaponRightHand = 0
|
|
self.WeaponLeftHand = 0
|
|
self.ArmModel = 0
|
|
self.ArmColor = 0
|
|
self.HatModel = 0
|
|
self.HatColor = 0
|
|
|
|
def set_compress_data(self, value):
|
|
self.Sex = value & 1
|
|
value >>= 1
|
|
self.JacketModel = value & 0xff
|
|
value >>= 8
|
|
self.JacketColor = value & 0x07
|
|
value >>= 3
|
|
self.TrouserModel = value & 0xff
|
|
value >>= 8
|
|
self.TrouserColor = value & 0x07
|
|
value >>= 3
|
|
self.WeaponRightHand = value & 0x3ff
|
|
value >>= 10
|
|
self.WeaponLeftHand = value & 0xff
|
|
value >>= 8
|
|
self.ArmModel = value & 0xff
|
|
value >>= 8
|
|
self.ArmColor = value & 0x07
|
|
value >>= 3
|
|
self.HatModel = value & 0x1ff
|
|
value >>= 9
|
|
self.HatColor = value & 0x07
|
|
value >>= 3
|
|
|
|
def print_yaml(self, outyaml, space):
|
|
outyaml.write("{0} sex: {1}\n".format(space, self.Sex))
|
|
outyaml.write("{0} JacketModel: {1}\n".format(space, self.JacketModel))
|
|
outyaml.write("{0} JacketColor: {1}\n".format(space, self.JacketColor))
|
|
outyaml.write("{0} TrouserModel: {1}\n".format(space, self.TrouserModel))
|
|
outyaml.write("{0} TrouserColor: {1}\n".format(space, self.TrouserColor))
|
|
outyaml.write("{0} WeaponRightHand: {1}\n".format(space, self.WeaponRightHand))
|
|
outyaml.write("{0} WeaponLeftHand: {1}\n".format(space, self.WeaponLeftHand))
|
|
outyaml.write("{0} ArmModel: {1}\n".format(space, self.ArmModel))
|
|
outyaml.write("{0} ArmColor: {1}\n".format(space, self.ArmColor))
|
|
outyaml.write("{0} HatModel: {1}\n".format(space, self.HatModel))
|
|
outyaml.write("{0} HatColor: {1}\n".format(space, self.HatColor))
|
|
|
|
def get_notice(self):
|
|
ret = { 'sex': self.Sex,
|
|
'JacketModel': self.JacketModel,
|
|
'JacketColor': self.JacketColor,
|
|
'TrouserModel': self.TrouserModel,
|
|
'TrouserColor': self.TrouserColor,
|
|
'WeaponRightHand': self.WeaponRightHand,
|
|
'WeaponLeftHand': self.WeaponLeftHand,
|
|
'ArmModel': self.ArmModel,
|
|
'ArmColor': self.ArmColor,
|
|
'HatModel': self.HatModel,
|
|
'HatColor': self.HatColor
|
|
}
|
|
return ret
|
|
|
|
# uint64 Name : 16;
|
|
# uint64 HandsModel : 9; // max: 512 current: 90
|
|
# uint64 HandsColor : 3; // max: 8 current: 8
|
|
# uint64 FeetModel : 9; // max: 512 current: 94
|
|
# uint64 FeetColor : 3; // max: 8 current: 8
|
|
# uint64 RTrail : 4;
|
|
# uint64 LTrail : 3;
|
|
|
|
|
|
class PropVisualB:
|
|
# khanat-opennel-code/code/ryzom/common/src/game_share/player_visual_properties.h:105 struct SPropVisualB
|
|
def __init__(self):
|
|
self.Name = 0
|
|
self.HandsModel = 0
|
|
self.HandsColor = 0
|
|
self.FeetModel = 0
|
|
self.FeetColor = 0
|
|
self.RTrail = 0
|
|
self.LTrail = 0
|
|
|
|
def set_compress_data(self, value):
|
|
self.Name = value & 0xffff
|
|
value >>= 16
|
|
self.HandsModel = value & 0x1ff
|
|
value >>= 9
|
|
self.HandsColor = value & 0x07
|
|
value >>= 3
|
|
self.FeetModel = value & 0x1ff
|
|
value >>= 9
|
|
self.FeetColor = value & 0x07
|
|
value >>= 3
|
|
self.RTrail = value & 0x0f
|
|
value >>= 4
|
|
self.LTrail = value & 0x07
|
|
value >>= 3
|
|
|
|
def print_yaml(self, outyaml, space):
|
|
outyaml.write("{0} Name: {1}\n".format(space, self.Name))
|
|
outyaml.write("{0} HandsModel: {1}\n".format(space, self.HandsModel))
|
|
outyaml.write("{0} HandsColor: {1}\n".format(space, self.HandsColor))
|
|
outyaml.write("{0} FeetModel: {1}\n".format(space, self.FeetModel))
|
|
outyaml.write("{0} FeetColor: {1}\n".format(space, self.FeetColor))
|
|
outyaml.write("{0} RTrail: {1}\n".format(space, self.RTrail))
|
|
outyaml.write("{0} LTrail: {1}\n".format(space, self.LTrail))
|
|
|
|
def get_notice(self):
|
|
ret = { 'Name': self.Name,
|
|
'HandsModel': self.HandsModel,
|
|
'HandsColor': self.HandsColor,
|
|
'FeetModel': self.FeetModel,
|
|
'FeetColor': self.FeetColor,
|
|
'RTrail': self.RTrail,
|
|
'LTrail': self.LTrail
|
|
}
|
|
return ret
|
|
|
|
# uint64 MorphTarget1 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget2 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget3 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget4 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget5 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget6 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget7 : 3; // max: 8 current: 8
|
|
# uint64 MorphTarget8 : 3; // max: 8 current: 8
|
|
# uint64 EyesColor : 3; // max: 8 current: 8
|
|
# uint64 Tattoo : 7; // max: 128 current: 64
|
|
# uint64 CharacterHeight : 4; // max: 16 current: 16
|
|
# uint64 TorsoWidth : 4; // max: 16 current: 16
|
|
# uint64 ArmsWidth : 4; // max: 16 current: 16
|
|
# uint64 LegsWidth : 4; // max: 16 current: 16
|
|
# uint64 BreastSize : 4; // max: 16 current: 16
|
|
|
|
class PropVisualC:
|
|
# khanat-opennel-code/code/ryzom/common/src/game_share/player_visual_properties.h:163 struct SPropVisualC
|
|
def __init__(self):
|
|
self.MorphTarget1 = 0
|
|
self.MorphTarget2 = 0
|
|
self.MorphTarget3 = 0
|
|
self.MorphTarget4 = 0
|
|
self.MorphTarget5 = 0
|
|
self.MorphTarget6 = 0
|
|
self.MorphTarget7 = 0
|
|
self.MorphTarget8 = 0
|
|
self.EyesColor = 0
|
|
self.Tattoo = 0
|
|
self.CharacterHeight = 0
|
|
self.TorsoWidth = 0
|
|
self.ArmsWidth = 0
|
|
self.LegsWidth = 0
|
|
self.BreastSize = 0
|
|
|
|
def set_compress_data(self, value):
|
|
self.MorphTarget1 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget2 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget3 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget4 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget5 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget6 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget7 = value & 0x07
|
|
value >>= 3
|
|
self.MorphTarget8 = value & 0x07
|
|
value >>= 3
|
|
self.EyesColor = value & 0x07
|
|
value >>= 3
|
|
self.Tattoo = value & 0x7f
|
|
value >>= 7
|
|
self.CharacterHeight = value & 0x0f
|
|
value >>= 4
|
|
self.TorsoWidth = value & 0x0f
|
|
value >>= 4
|
|
self.ArmsWidth = value & 0x0f
|
|
value >>= 4
|
|
self.LegsWidth = value & 0x0f
|
|
value >>= 4
|
|
self.BreastSize = value & 0x0f
|
|
value >>= 4
|
|
|
|
def print_yaml(self, outyaml, space):
|
|
outyaml.write("{0} MorphTarget1: {1}\n".format(space, self.MorphTarget1))
|
|
outyaml.write("{0} MorphTarget2: {1}\n".format(space, self.MorphTarget2))
|
|
outyaml.write("{0} MorphTarget3: {1}\n".format(space, self.MorphTarget3))
|
|
outyaml.write("{0} MorphTarget4: {1}\n".format(space, self.MorphTarget4))
|
|
outyaml.write("{0} MorphTarget5: {1}\n".format(space, self.MorphTarget5))
|
|
outyaml.write("{0} MorphTarget6: {1}\n".format(space, self.MorphTarget6))
|
|
outyaml.write("{0} MorphTarget7: {1}\n".format(space, self.MorphTarget7))
|
|
outyaml.write("{0} MorphTarget8: {1}\n".format(space, self.MorphTarget8))
|
|
outyaml.write("{0} EyesColor: {1}\n".format(space, self.EyesColor))
|
|
outyaml.write("{0} Tattoo: {1}\n".format(space, self.Tattoo))
|
|
outyaml.write("{0} CharacterHeight: {1}\n".format(space, self.CharacterHeight))
|
|
outyaml.write("{0} TorsoWidth: {1}\n".format(space, self.TorsoWidth))
|
|
outyaml.write("{0} ArmsWidth: {1}\n".format(space, self.ArmsWidth))
|
|
outyaml.write("{0} LegsWidth: {1}\n".format(space, self.LegsWidth))
|
|
outyaml.write("{0} BreastSize: {1}\n".format(space, self.BreastSize))
|
|
|
|
def get_notice(self):
|
|
ret = { 'MorphTarget1': self.MorphTarget1,
|
|
'MorphTarget2': self.MorphTarget2,
|
|
'MorphTarget3': self.MorphTarget3,
|
|
'MorphTarget4': self.MorphTarget4,
|
|
'MorphTarget5': self.MorphTarget5,
|
|
'MorphTarget6': self.MorphTarget6,
|
|
'MorphTarget7': self.MorphTarget7,
|
|
'MorphTarget8': self.MorphTarget8,
|
|
'EyesColor': self.EyesColor,
|
|
'Tattoo': self.Tattoo,
|
|
'CharacterHeight': self.CharacterHeight,
|
|
'TorsoWidth': self.TorsoWidth,
|
|
'ArmsWidth': self.ArmsWidth,
|
|
'LegsWidth': self.LegsWidth,
|
|
'BreastSize': self.BreastSize
|
|
}
|
|
return ret
|