turn off default equipments if needed

This commit is contained in:
Le Duc Anh
2025-11-18 22:04:56 +07:00
parent ba1e532e6d
commit 45024b5761
16 changed files with 239 additions and 271 deletions
@@ -1650,6 +1650,7 @@ GameObject:
m_Component:
- component: {fileID: 3698356007416754653}
- component: {fileID: 6067755730919934559}
- component: {fileID: 3868169875372232445}
m_Layer: 0
m_Name: "\u6B66\u4FA0\u7537"
m_TagString: Untagged
@@ -1689,6 +1690,22 @@ Animation:
m_AnimatePhysics: 0
m_UpdateMode: 0
m_CullingType: 0
--- !u!114 &3868169875372232445
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2132400081078426141}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1863d89e9a45e43febda13d0579ec149, type: 3}
m_Name:
m_EditorClassIdentifier:
DefaultUpper: {fileID: 8430371236677961775}
DefaultLower: {fileID: 6678266945479460665}
DefaultWirst: {fileID: 9001778602091940592}
DefaultFoot: {fileID: 6501297086449185112}
--- !u!1 &2170371384673563007
GameObject:
m_ObjectHideFlags: 0
@@ -7765,7 +7782,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6501297086449185112}
m_Mesh: {fileID: 4300000, guid: 945e884eb4e674b8e82612a8a0d8def1, type: 2}
m_Mesh: {fileID: 4300000, guid: 830fb1ca82e68b446a18f9bba585aaff, type: 2}
--- !u!137 &4853797815422182967
SkinnedMeshRenderer:
m_ObjectHideFlags: 0
@@ -7789,7 +7806,7 @@ SkinnedMeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: b192c7dbc771d45448c834b4b19ee0ec, type: 2}
- {fileID: 2100000, guid: d452b4350e3f0bc42b897ce43cd195e9, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -7814,7 +7831,7 @@ SkinnedMeshRenderer:
m_Quality: 0
m_UpdateWhenOffscreen: 0
m_SkinnedMotionVectors: 1
m_Mesh: {fileID: 4300000, guid: 945e884eb4e674b8e82612a8a0d8def1, type: 2}
m_Mesh: {fileID: 4300000, guid: 830fb1ca82e68b446a18f9bba585aaff, type: 2}
m_Bones:
- {fileID: 420018222253717266}
- {fileID: 6323388249193786065}
@@ -8084,7 +8101,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6678266945479460665}
m_Mesh: {fileID: 4300000, guid: 3854f4881f8494ab593fcc78341863f9, type: 2}
m_Mesh: {fileID: 4300000, guid: 0a925a00d466f9144883c16480382261, type: 2}
--- !u!137 &5798515900539372327
SkinnedMeshRenderer:
m_ObjectHideFlags: 0
@@ -8108,7 +8125,7 @@ SkinnedMeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 8a14fd68048d746618454c38ab860e83, type: 2}
- {fileID: 2100000, guid: cd397b72ff7ec2346bada1faea11369c, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -8133,7 +8150,7 @@ SkinnedMeshRenderer:
m_Quality: 0
m_UpdateWhenOffscreen: 0
m_SkinnedMotionVectors: 1
m_Mesh: {fileID: 4300000, guid: 3854f4881f8494ab593fcc78341863f9, type: 2}
m_Mesh: {fileID: 4300000, guid: 0a925a00d466f9144883c16480382261, type: 2}
m_Bones:
- {fileID: 420018222253717266}
- {fileID: 6323388249193786065}
@@ -10053,7 +10070,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8430371236677961775}
m_Mesh: {fileID: 4300000, guid: e8ab6aad2d46a4a33a67cbd498f91cd2, type: 2}
m_Mesh: {fileID: 4300000, guid: 17b5241013460ec4d894c0698279b161, type: 2}
--- !u!137 &7115614618712792175
SkinnedMeshRenderer:
m_ObjectHideFlags: 0
@@ -10077,7 +10094,7 @@ SkinnedMeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 1ed3803c8b8834e78bf4ce0237739120, type: 2}
- {fileID: 2100000, guid: 85bd2bceb7c666341880474e43db8d5b, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -10102,7 +10119,7 @@ SkinnedMeshRenderer:
m_Quality: 0
m_UpdateWhenOffscreen: 0
m_SkinnedMotionVectors: 1
m_Mesh: {fileID: 4300000, guid: e8ab6aad2d46a4a33a67cbd498f91cd2, type: 2}
m_Mesh: {fileID: 4300000, guid: 17b5241013460ec4d894c0698279b161, type: 2}
m_Bones:
- {fileID: 420018222253717266}
- {fileID: 6323388249193786065}
@@ -10697,7 +10714,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9001778602091940592}
m_Mesh: {fileID: 4300000, guid: 113bc85d93d8f402c8b99da2f35a11b5, type: 2}
m_Mesh: {fileID: 4300000, guid: dd7f01cc9e10db248893d28bd2abb7e3, type: 2}
--- !u!137 &8633905170266012228
SkinnedMeshRenderer:
m_ObjectHideFlags: 0
@@ -10721,7 +10738,7 @@ SkinnedMeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 8b5c7dfbac0134930a6436538a6b5f86, type: 2}
- {fileID: 2100000, guid: 4acebea1068de5840a7e0a5556d154a5, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -10746,7 +10763,7 @@ SkinnedMeshRenderer:
m_Quality: 0
m_UpdateWhenOffscreen: 0
m_SkinnedMotionVectors: 1
m_Mesh: {fileID: 4300000, guid: 113bc85d93d8f402c8b99da2f35a11b5, type: 2}
m_Mesh: {fileID: 4300000, guid: dd7f01cc9e10db248893d28bd2abb7e3, type: 2}
m_Bones:
- {fileID: 420018222253717266}
- {fileID: 6323388249193786065}
@@ -1,143 +0,0 @@
fileFormatVersion: 2
guid: 80241b0e5ab92c14ab291155c50abc96
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -63,7 +63,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: b2b9661888c43c34bbd96954aa4c8fee, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -63,7 +63,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: b2b9661888c43c34bbd96954aa4c8fee, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -50,7 +50,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: b02ac52609e429b4c90e9d53574cedc3, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -63,7 +63,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 080fbb07d32e9ee488b2e81f051efcae, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -50,7 +50,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 8cb741a34a51f3b469007a5e2950b1c0, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@@ -50,7 +50,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 13c7be92bd4cb6142b6b1c78475d7123, type: 3}
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
+59 -57
View File
@@ -35,6 +35,8 @@ public abstract partial class CECPlayer : CECObject
[SerializeField] internal int m_idCurHover; // ID of object under cursor
protected int m_iShape; // 聶簣礙繕ID
protected uint m_dwStates; // Player's basic states
// 敶枏餃稬 // Action type for attack animation
protected uint m_uAttackType;
protected int[] m_aEquips;
protected ROLEEXTPROP m_ExtProps; // Extend properties
@@ -199,7 +201,7 @@ public abstract partial class CECPlayer : CECObject
public static async Task<bool> LoadPlayerSkin(GameObject aSkins, int index, string szFile)
{
// these are LOD suffix
string[] suffix1 = {"一级", "二级", "三级"};
string[] suffix1 = {"蝥?", "鈭𣬚漣", "銝厩漣"};
string[] suffix2 = {"", "鈭𣬚漣", "銝厩漣"};
string szSkinFile = "";
@@ -366,72 +368,72 @@ public abstract partial class CECPlayer : CECObject
{
// 0
ACT_STAND = 0, // 廙姊g
ACT_FIGHTSTAND, // Đứng chiến đấu
ACT_WALK, // Đi b
ACT_RUN, // Chy
ACT_JUMP_START, // Bắt đầu nhy
ACT_FIGHTSTAND, // 廙姊g chi廕積 廕?u
ACT_WALK, // i b廙?
ACT_RUN, // Ch廕?y
ACT_JUMP_START, // B廕眩 廕?u nh廕?y
// 5
ACT_JUMP_LOOP, // Nhy trên không lặp lại
ACT_JUMP_LAND, // Nhy tiếp đất
ACT_JUMP_LOOP, // Nh廕?y trn khng l廕搆 l廕?i
ACT_JUMP_LAND, // Nh廕?y ti廕穆 廕?t
ACT_SWIM, // B①i
ACT_HANGINWATER, // L① l廙要g trong n⑹廙𢲷
ACT_TAKEOFF, // Ct cánh (should be ACT_TAKEOFF_WING)
ACT_TAKEOFF, // C廕?t cnh (should be ACT_TAKEOFF_WING)
// 10
ACT_HANGINAIR, // Treo tr礙n kh繫ng (should be ACT_HANGINAIR_WING)
ACT_FLY, // Bay (should be ACT_FLY_WING)
ACT_FLYDOWN, // Bay xu廙𤉋g cao (should be ACT_FLYDOWN_WING_HIGH)
ACT_FLYDOWN_WING_LOW, // Bay xuống thp (should be ACT_FLYDOWN_WING_LOW)
ACT_LANDON, // H cánh (should be ACT_LAND_WING)
ACT_FLYDOWN_WING_LOW, // Bay xu廙𤉋g th廕?p (should be ACT_FLYDOWN_WING_LOW)
ACT_LANDON, // H廕? cnh (should be ACT_LAND_WING)
// 15
ACT_TAKEOFF_SWORD, // Kiếm bay - ct cánh
ACT_TAKEOFF_SWORD, // Ki廕禦 bay - c廕?t cnh
ACT_HANGINAIR_SWORD, // Ki廕禦 bay - treo kh繫ng trung
ACT_FLY_SWORD, // Ki廕禦 bay - ti廕積 t廙𢹂
ACT_FLYDOWN_SWORD_HIGH, // Ki廕禦 bay - r①i cao
ACT_FLYDOWN_SWORD_LOW, // Kiếm bay - rơi thp
ACT_FLYDOWN_SWORD_LOW, // Ki廕禦 bay - ri th廕?p
// 20
ACT_LANDON_SWORD, // Kiếm bay - h cánh
ACT_LANDON_SWORD, // Ki廕禦 bay - h廕? cnh
ACT_SITDOWN, // Ng廙𧗽
ACT_SITDOWN_LOOP, // Ngồi lặp lại
ACT_SITDOWN_LOOP, // Ng廙𧗽 l廕搆 l廕?i
ACT_STANDUP, // 廙姊g d廕軌
ACT_WOUNDED, // B thương
ACT_WOUNDED, // B廙? th⑹①ng
// 25
ACT_GROUNDDIE, // Chết trên mặt đất
ACT_GROUNDDIE_LOOP, // Chết trên đất (loop)
ACT_GROUNDDIE, // Ch廕篙 trn m廕暗 廕?t
ACT_GROUNDDIE_LOOP, // Ch廕篙 trn 廕?t (loop)
ACT_WATERDIE, // Ch廕篙 trong n⑹廙𢲷
ACT_WATERDIE_LOOP, // Ch廕篙 trong n⑹廙𢲷 (loop)
ACT_AIRDIE_ST, // Chết trên không (bắt đầu)
ACT_AIRDIE_ST, // Ch廕篙 trn khng (b廕眩 廕?u)
// 30
ACT_AIRDIE, // Ch廕篙 tr礙n kh繫ng (loop r①i)
ACT_AIRDIE_ED, // Chết trên không (chạm đất)
ACT_AIRDIE_LAND_LOOP, // Chết rơi đất (loop)
ACT_AIRDIE_ED, // Ch廕篙 trn khng (ch廕?m 廕?t)
ACT_AIRDIE_LAND_LOOP, // Ch廕篙 ri 廕?t (loop)
ACT_REVIVE, // H廙𧗽 sinh
ACT_CUSTOMIZE, // 廙㷌g t獺c t羅y ch廙纤h
// 35
ACT_STRIKEBACK, // Bị đánh lùi
ACT_STRIKEDOWN, // Bị đánh ngã
ACT_STRIKEDOWN_LOOP, // Bị đánh ngã (loop)
ACT_STRIKEDOWN_STANDUP, // Bị đánh ngã rồi đứng dậy
ACT_PICKUP, // Nhặt đồ
ACT_STRIKEBACK, // B廙? nh li
ACT_STRIKEDOWN, // B廙? nh ng
ACT_STRIKEDOWN_LOOP, // B廙? nh ng (loop)
ACT_STRIKEDOWN_STANDUP, // B廙? nh ng r廙𧗽 廙姊g d廕軌
ACT_PICKUP, // Nh廕暗 廙?
// 40
ACT_PICKUP_LOOP, // Nhặt đồ (loop)
ACT_PICKUP_STANDUP, // Nhặt đồ đứng dậy
ACT_PICKUP_MATTER, // Nhặt vật th
ACT_PICKUP_LOOP, // Nh廕暗 廙? (loop)
ACT_PICKUP_STANDUP, // Nh廕暗 廙? 廙姊g d廕軌
ACT_PICKUP_MATTER, // Nh廕暗 v廕負 th廙?
ACT_GAPE, // H獺 mi廙𡵞g
ACT_LOOKAROUND, // Nh穫n quanh
// 45
ACT_PLAYWEAPON, // Vung v觼 kh穩
ACT_EXP_WAVE, // V廕咳 tay
ACT_EXP_NOD, // Gật đầu
ACT_EXP_SHAKEHEAD, // Lắc đầu
ACT_EXP_NOD, // G廕負 廕?u
ACT_EXP_SHAKEHEAD, // L廕畚 廕?u
ACT_EXP_SHRUG, // Nh繳n vai
// 50
@@ -442,14 +444,14 @@ public abstract partial class CECPlayer : CECObject
ACT_EXP_KISSHAND, // H繫n tay
// 55
ACT_EXP_SHY, // Ngi ngùng
ACT_EXP_SHY, // Ng廕?i ngng
ACT_EXP_SALUTE, // Cho
ACT_EXP_SITDOWN, // Ng廙𧗽 xu廙𤉋g
ACT_EXP_SITDOWN_LOOP, // Ng廙𧗽 xu廙𤉋g (loop)
ACT_EXP_SITDOWN_STANDUP, // Ng廙𧗽 xu廙𤉋g r廙𧗽 廙姊g d廕軌
// 60
ACT_EXP_ASSAULT, // Tn công
ACT_EXP_ASSAULT, // T廕?n cng
ACT_EXP_THINK, // Suy ngh藺
ACT_EXP_DEFIANCE, // Th獺ch th廙妾
ACT_EXP_VICTORY, // Chi廕積 th廕疸g
@@ -458,44 +460,44 @@ public abstract partial class CECPlayer : CECObject
// 65
ACT_EXP_KISS_LOOP, // H繫n (loop)
ACT_EXP_KISS_END, // K廕篙 th繳c h繫n
ACT_ATTACK_1, // Tn công 1
ACT_ATTACK_2, // Tn công 2
ACT_ATTACK_3, // Tn công 3
ACT_ATTACK_1, // T廕?n cng 1
ACT_ATTACK_2, // T廕?n cng 2
ACT_ATTACK_3, // T廕?n cng 3
// 70
ACT_ATTACK_4, // Tn công 4
ACT_ATTACK_4, // T廕?n cng 4
ACT_ATTACK_TOSS, // N矇m v觼 kh穩
ACT_TRICK_RUN, // Chiêu khi chy
ACT_TRICK_JUMP, // Chiêu khi nhy
ACT_FLY_GLIDE, // Lượn
ACT_TRICK_RUN, // Chiu khi ch廕?y
ACT_TRICK_JUMP, // Chiu khi nh廕?y
ACT_FLY_GLIDE, // L⑹廙?n
// 75
ACT_FLY_GLIDE_SWORD, // Kiếm bay - lượn
ACT_EXP_FIGHT, // Tư thế chiến đấu
ACT_EXP_ATTACK1, // Tn công diễn xut 1
ACT_EXP_ATTACK2, // Tn công diễn xut 2
ACT_EXP_ATTACK3, // Tn công diễn xut 3
ACT_FLY_GLIDE_SWORD, // Ki廕禦 bay - l⑹廙?n
ACT_EXP_FIGHT, // T th廕? chi廕積 廕?u
ACT_EXP_ATTACK1, // T廕?n cng di xu廕?t 1
ACT_EXP_ATTACK2, // T廕?n cng di xu廕?t 2
ACT_EXP_ATTACK3, // T廕?n cng di xu廕?t 3
// 80
ACT_EXP_ATTACK4, // Tn công diễn xut 4
ACT_EXP_DEFENCE, // Phòng th
ACT_EXP_ATTACK4, // T廕?n cng di xu廕?t 4
ACT_EXP_DEFENCE, // Phng th廙?
ACT_EXP_FALL, // T矇 ng瓊
ACT_EXP_FALLONGROUND, // Ngã xuống đất
ACT_EXP_FALLONGROUND, // Ng xu廙𤉋g 廕?t
ACT_EXP_LOOKAROUND, // Nh穫n quanh
// 85
ACT_EXP_DANCE, // Nhy múa
ACT_EXP_DANCE, // Nh廕?y ma
ACT_EXP_FASHIONWEAPON, // 廙㷌g t獺c v觼 kh穩 th廙𩥉 trang
ACT_USEITEM, // D羅ng item
ACT_USEITMELOOP, // D羅ng item (loop)
ACT_TWO_KISS, // H繫n 繫i
// 90
ACT_USING_TARGET_ITEM, // Dùng đạo c
ACT_USING_TARGET_ITEM, // Dng 廕?o c廙?
ACT_SWIM_FOR_MOVESKILL, // B①i trong l繳c d羅ng skill di chuy廙
ACT_MAX,
ACT_CASTSKILL // Ch là placeholder cho skill actions
ACT_CASTSKILL // Ch廙? l placeholder cho skill actions
}
public void PlayAttackEffect(int idTarget, int idSkill, int skillLevel, int nDamage,
@@ -655,7 +657,7 @@ public abstract partial class CECPlayer : CECObject
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
{
// “起” 动作(挥起)
// 𡏭絲? 泿韏瘀
szAct = EC_Utility.BuildActionName(action, weapon_type, "簸");
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
szAct = EC_Utility.BuildActionName(action, weapon_type, "瓣");
@@ -668,7 +670,7 @@ public abstract partial class CECPlayer : CECObject
nTime1 = _pPlayerModel.GetComActTimeSpanByName(szAct);
// “收” 动作(挥下)
// 𨀣𤣰? 泿銝页
szAct = $"{action.data.action_prefix}_{action.data.action_weapon_suffix[weapon_type].suffix}瓣";
QueueNonSkillActionWithName(iAction, szAct, 0, false, bHideFX);
@@ -690,7 +692,7 @@ public abstract partial class CECPlayer : CECObject
GetProfession() == PROF_MONK ||
GetProfession() == PROF_GHOST)
{
szActionMiddleName = "¿ÕÖгá°ò"; // tn công trên không
szActionMiddleName = "糧獺簞簷"; // t廕?n cng trn khng
}
else
{
@@ -728,7 +730,7 @@ public abstract partial class CECPlayer : CECObject
pRightHandWeapon.QueueAction(_GenWeaponActionName(szAct, m_iGender), 300, iAction, false, false, bHideFX, true);*/
// ==============================
// Điều chỉnh tốc độ phát animation theo tốc độ tấn công
// i廙 ch廙纤h t廙倴 廙? pht animation theo t廙倴 廙? t廕?n cng
// ==============================
/* if (nAttackSpeed > 0)
{
@@ -745,7 +747,7 @@ public abstract partial class CECPlayer : CECObject
attackTime = nTime1 + nTime2;*/
// ==============================
// Cập nhật vị trí weapon hanger (vũ khí)
// C廕計 nh廕負 v廙? tr weapon hanger (v kh)
// ==============================
//UpdateWeaponHangerPosByAction(iAction);
@@ -955,10 +957,10 @@ public abstract partial class CECPlayer : CECObject
int turnSpeed = 5;
if (direction.sqrMagnitude > 0.001f)
{
// To rotation mới hướng tới target
// T廕?o rotation m廙𢹂 h⑹廙𣌟g t廙𢹂 target
Quaternion targetRotation = Quaternion.LookRotation(direction, Vector3.up);
// Xoay mượt t rotation hiện tại sang rotation mc tiêu
// Xoay m⑹廙?t t廙? rotation hi廙𡵞 t廕?i sang rotation m廙?c tiu
//transform.rotation = Quaternion.Slerp(
// transform.rotation,
// targetRotation,
@@ -774,7 +774,7 @@ namespace CSNetwork.S2CCommand
TEAM_MEMBER_DATA,
TEAM_MEMBER_POS, // 65
EQUIP_DATA, // ûװݣӰ
EQUIP_DATA, // 锟矫伙拷锟斤拷装锟斤拷锟斤拷锟捷o拷影锟斤拷锟斤拷锟?
EQUIP_DATA_CHANGED,
EQUIP_DAMAGED, // 装锟斤拷锟斤拷
TEAM_MEMBER_PICKUP, // 锟斤拷锟窖硷拷锟斤拷装锟斤拷
@@ -1091,8 +1091,8 @@ namespace CSNetwork.S2CCommand
PRODUCE4_ITEM_INFO,
ONLINE_AWARD_DATA, //锟斤拷锟竭斤拷锟斤拷
TOGGLE_ONLINE_AWARD, // 330 л߽Ŀ״̬
PLAYER_PROFIT_TIME, // ʱ
TOGGLE_ONLINE_AWARD, // 330 锟斤拷锟斤拷谢锟斤拷锟斤拷锟斤拷呓锟斤拷锟斤拷目锟斤拷锟阶刺?
PLAYER_PROFIT_TIME, // 锟斤拷锟斤拷锟斤拷锟绞憋拷锟?
ENTER_NONPENALTY_PVP_STATE, // PK锟睫惩凤拷
SELF_COUNTRY_NOTIFY,
PLAYER_COUNTRY_CHANGED,
@@ -1119,12 +1119,12 @@ namespace CSNetwork.S2CCommand
PET_REBUILD_NATURE_START,
PET_REBUILD_NATURE_INFO,
PET_REBUILD_NATURE_END,
EQUIP_ADDON_UPDATE_NOTIFY, //354 ֪ͨװʯ
EQUIP_ADDON_UPDATE_NOTIFY, //354 通知装锟斤拷锟斤拷石锟斤拷锟?
SELF_KING_NOTIFY, // 355
PLAYER_KING_CHANGED,
MERIDIANS_NOTIFY, // Ϣ
MERIDIANS_RESULT, // Ѩ
MERIDIANS_NOTIFY, // 锟斤拷锟斤拷锟斤拷息锟斤拷锟?
MERIDIANS_RESULT, // 锟斤拷锟斤拷锟斤拷穴锟斤拷锟?
COUNTRYBATTLE_STRONGHOND_STATE_NOTIFY,
QUERY_TOUCH_POINT, // 360
@@ -1136,32 +1136,32 @@ namespace CSNetwork.S2CCommand
MODIFY_TITLE_NOFIFY, // 365
REFRESH_SIGNIN, // 签锟斤拷状态
PARALLEL_WORLD_INFO,
PLAYER_REINCARNATION, // ת
PLAYER_REINCARNATION, // 锟斤拷锟阶?锟斤拷
REINCARNATION_TOME_INFO, // 转锟斤拷锟斤拷锟斤拷锟斤拷息
ACTIVATE_REINCARNATION_TOME, // 370 转锟斤拷锟斤拷锟斤拷锟角否激伙拷
UNIQUE_DATA_NOTIFY, // 锟斤拷史锟狡斤拷 锟斤拷全锟斤拷锟斤拷锟斤拷
USE_GIFTCARD_RESULT,
REALM_EXP, // 锟斤拷锟界经锟斤拷
REALM_LEVEL, // ȼ
REALM_LEVEL, // 锟斤拷锟斤拷燃锟?
ENTER_TRICKBATTLE, // 375 锟斤拷锟斤拷战锟斤拷 锟斤拷锟藉含锟斤拷同锟斤拷战锟斤拷锟斤拷战锟斤拷
TRICKBATTLE_PERSONAL_SCORE, // 战锟斤拷锟皆硷拷锟矫凤拷
TRICKBATTLE_CHARIOT_INFO, // 战锟斤拷锟斤拷息
PLAYER_LEADERSHIP, // ͳ
PLAYER_LEADERSHIP, // 锟斤拷锟酵筹拷锟斤拷锟?
GENERALCARD_COLLECTION_DATA, // 锟戒将锟斤拷图锟斤拷锟斤拷锟斤拷
ADD_GENERALCARD_COLLECTION, // 380 锟秸藏匡拷锟斤拷
REFRESH_MONSTERSPIRIT_LEVEL, // 锟斤拷锟斤拷
MINE_GATHERED, // ɹɼ
PLAYER_IN_OUT_BATTLE, // ҽ/ս״̬
MINE_GATHERED, // 锟斤拷锟斤拷晒锟斤拷杉锟斤拷悴?
PLAYER_IN_OUT_BATTLE, // 锟斤拷锟斤拷锟斤拷医锟斤拷锟?/锟斤拷锟斤拷战锟斤拷状态
PLAYER_QUERY_CHARIOTS, // 战锟斤拷锟斤拷锟斤拷锟斤拷询
COUNTRYBATTLE_LIVE_SHOW_RESULT, // 385 锟斤拷战战锟斤拷rank锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
RANDOM_MALL_SHOPPING_RES, // ̳Dzѯ
RANDOM_MALL_SHOPPING_RES, // 锟斤拷锟斤拷坛遣锟窖?锟斤拷锟斤拷
FACTION_PVP_MASK_MODIFY, // 锟斤拷锟斤拷PVP状态锟侥憋拷
PLAYER_WORLD_CONTRIBUTION, // 锟斤拷锟界贡锟阶讹拷
RANDOM_MAP_ORDER, // ͼ
RANDOM_MAP_ORDER, // 锟斤拷锟斤拷锟酵?
SCENE_SERVICE_NPC_LIST, // 390锟斤拷前锟斤拷锟斤拷锟斤拷学习锟斤拷锟杰碉拷NPC锟叫憋拷
NPC_VISIBLE_TID_NOTIFY, // 锟姐播通知锟斤拷野锟斤拷npc锟戒换锟斤拷锟斤拷模锟斤拷
@@ -1170,7 +1170,7 @@ namespace CSNetwork.S2CCommand
COMBO_SKILL_PREPARE,
INSTANCE_REENTER_NOTIFY, // 395 锟斤拷锟斤拷锟斤拷锟斤拷通知
PRAY_DISTANCE_CHANGE, //
PRAY_DISTANCE_CHANGE, // 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟?
};
public struct CMD_GetAllData
@@ -1359,12 +1359,6 @@ namespace CSNetwork.S2CCommand
{
public int id;
};
public struct cmd_sevnpc_serve
{
public int service_type;
public uint len;
};
}
// Player and NPC state
@@ -545,7 +545,7 @@ namespace CSNetwork.C2SCommand
var cmd = new cmd_sevnpc_serve
{
service_type = serviceType,
len = len
len = (int)len
};
return SerializeCommand(CommandID.SEVNPC_SERVE, cmd);
}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d0c06c588e2a6442488a3542551fb243
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,13 @@
using UnityEngine;
namespace BrewMonster.Scripts
{
// this script holds reference to the default equipments for the player model
public class PlayerDefaultEquipments : MonoBehaviour
{
public GameObject DefaultUpper;
public GameObject DefaultLower;
public GameObject DefaultWirst;
public GameObject DefaultFoot;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1863d89e9a45e43febda13d0579ec149
+108 -32
View File
@@ -6,7 +6,7 @@ using BrewMonster.Scripts.Managers;
using ModelRenderer.Scripts.GameData;
using UnityEngine;
public partial class CECHostPlayer
public partial class CECPlayer
{
public const int NUM_PROFESSION = (int)Profession.NUM_PROFESSION;
public const int NUM_GENDER = (int)Gender.NUM_GENDER;
@@ -46,31 +46,31 @@ public partial class CECHostPlayer
public static readonly string[] _equipment_skin =
{
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"",
"models/players/装备/女/{0}/妖精{1}",
"models/players/装备/男/{0}/妖兽{1}",
"models/players/装å??/å¥?/{0}/妖精{1}",
"models/players/装å??/ç”?/{0}/妖兽{1}",
"",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装备/男/{0}/男通用{1}",
"models/players/装备/女/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
"models/players/装å??/ç”?/{0}/男通用{1}",
"models/players/装å??/å¥?/{0}/女通用{1}",
};
@@ -95,15 +95,37 @@ public partial class CECHostPlayer
{
WINGTYPE_WING, // é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿé…µï½æ‹·é”Ÿæ–¤æ‹·é”Ÿ??????
WINGTYPE_FLYSWORD, // é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿé…µï½æ‹·é”Ÿç¼´æ–¤æ‹·
WINGTYPE_DOUBLEWHEEL, // 锟斤拷锟斤拷锟斤拷锟斤拷锟酵o拷双锟脚凤拷锟斤拷锟斤拷
WINGTYPE_DOUBLEWHEEL, // é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹·é”Ÿé…µï½æ‹·åŒé”Ÿè„šå‡¤æ‹·é”Ÿæ–¤æ‹·é”Ÿæ–¤æ‹?
}
public int[] m_aEquips = new int[InventoryConst.IVTRSIZE_EQUIPPACK];
// 当前攻击方式 // Action type for attack animation
public uint m_uAttackType;
private static readonly SkinIndex[] _location_skin_map =
{
SkinIndex.SKIN_BODY_INDEX,
SkinIndex.SKIN_UPPER_BODY_INDEX,
SkinIndex.SKIN_WRIST_INDEX,
SkinIndex.SKIN_LOWER_INDEX,
SkinIndex.SKIN_FOOT_INDEX,
SkinIndex.SKIN_UPPER_BODY_INDEX,
SkinIndex.SKIN_UPPER_BODY_INDEX,
SkinIndex.SKIN_LOWER_INDEX,
SkinIndex.SKIN_UPPER_BODY_INDEX
};
// The skeleton builder holds the reference to the player's bones
// We use this to setup the bones for the equipment skinned mesh renderers
private SkeletonBuilder _skeletonBuilder;
private PlayerDefaultEquipments _playerDefaultEquipments;
private PlayerDefaultEquipments PlayerDefaultEquipments
{
get
{
if (_playerDefaultEquipments == null)
{
_playerDefaultEquipments = GetComponent<PlayerDefaultEquipments>();
}
return _playerDefaultEquipments;
}
}
public bool UpdateEquipSkins()
{
@@ -131,8 +153,44 @@ public partial class CECHostPlayer
DATA_TYPE DataType = default;
for (int i = 0; i < InventoryConst.IVTRSIZE_EQUIPPACK; i++)
{
//TODO: The equipment ids store the stone information, we need to extract the stone information from the equipment id.
/*
int idEquipment = pEquipmentID[i];
if((i >= EQUIPIVTR_FASHION_BODY && i <= EQUIPIVTR_FASHION_WRIST ) ||
i == EQUIPIVTR_FASHION_HEAD || i == EQUIPIVTR_FASHION_WEAPON)
{
WORD wColor = (idEquipment & 0xffff0000) >> 16;
idEquipment &= 0x0000ffff;
color = FASHION_WORDCOLOR_TO_A3DCOLOR(wColor);
}
else
{
if( i == EQUIPIVTR_WEAPON )
{
pResult->stoneWeapon = (idEquipment & 0xffff0000) >> 16;
}
if( i == EQUIPIVTR_BODY )
{
pResult->stoneUpperBody = (idEquipment & 0xffff0000) >> 16;
}
if( i == EQUIPIVTR_WRIST )
{
pResult->stoneWrist = (idEquipment & 0xffff0000) >> 16;
}
if( i == EQUIPIVTR_LEG )
{
pResult->stoneLowerBody = (idEquipment & 0xffff0000) >> 16;
}
if( i == EQUIPIVTR_FOOT )
{
pResult->stoneFoot = (idEquipment & 0xffff0000) >> 16;
}
idEquipment &= 0x0000ffff;
}
*/
if (pEquipmentID[i] != m_aEquips[i])
{
m_aEquips[i] = pEquipmentID[i]; // store the current equipment id
// new equipment. Need to load and equip to host player
var equipData = elemendataman.get_data_ptr((uint)pEquipmentID[i], ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
object subTypeData = null;
@@ -148,7 +206,7 @@ public partial class CECHostPlayer
}
string fileModelRight = AFile.NormalizePath(weaponData.FileModelRight).ToLower();
string fileModelLeft = AFile.NormalizePath(weaponData.FileModelLeft).ToLower();
BMLogger.Log($"ShowEquipments():: Weapon Essence: {fileModelRight} -- {fileModelLeft}");
// BMLogger.Log($"ShowEquipments():: Weapon Essence: {fileModelRight} -- {fileModelLeft}");
GameObject weaponPrefab = null;
if (!string.IsNullOrEmpty(fileModelRight))
{
@@ -179,10 +237,11 @@ public partial class CECHostPlayer
}
break;
case DATA_TYPE.DT_ARMOR_ESSENCE:
var armorData = (ARMOR_ESSENCE)equipData;
BMLogger.Log($"ShowEquipments():: Armor Essence: {armorData.RealName}");
var pArmor = (ARMOR_ESSENCE)equipData;
var nLocation = pArmor.equip_location;
// BMLogger.Log($"ShowEquipments():: Armor Essence: {pArmor.RealName}");
var armorSkinPath = _GenEquipmentSkinPath(UnityGameSession.Instance.GetRoleInfo().occupation, UnityGameSession.Instance.GetRoleInfo().gender, armorData.RealName);
var armorSkinPath = _GenEquipmentSkinPath(UnityGameSession.Instance.GetRoleInfo().occupation, UnityGameSession.Instance.GetRoleInfo().gender, pArmor.RealName);
if (!armorSkinPath.EndsWith(".ecm"))
{
armorSkinPath += ".ecm";
@@ -206,6 +265,23 @@ public partial class CECHostPlayer
skinnedMeshRenderereFromData._skinnedMeshRenderer.rootBone = skinnedMeshRenderereFromData._skinnedMeshRenderer.bones[^1];
}
}
// disable the default equipment
switch (nLocation)
{
case (uint)SkinIndex.SKIN_UPPER_BODY_INDEX:
PlayerDefaultEquipments.DefaultUpper.SetActive(false);
break;
case (uint)SkinIndex.SKIN_LOWER_INDEX:
PlayerDefaultEquipments.DefaultLower.SetActive(false);
break;
case (uint)SkinIndex.SKIN_WRIST_INDEX:
PlayerDefaultEquipments.DefaultWirst.SetActive(false);
break;
case (uint)SkinIndex.SKIN_FOOT_INDEX:
PlayerDefaultEquipments.DefaultFoot.SetActive(false);
break;
}
}
break;
default: