From 158aea0bf760bd440b7bfc119230ad48b4189231 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 27 Jul 2024 18:11:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E8=A7=A3=E9=94=81=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=96=B0=E5=A2=9Evip=E7=AD=89=E7=BA=A7=E8=A7=A3?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 1 + data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Skin.dat | Bin 727 -> 723 bytes data/DB_Skin.json | 8 +- data/DB_Task.dat | Bin 5299 -> 5299 bytes protocol/pets/pets.pb.go | 174 ++++++++++++++++++++++----------------- protocol/pets/pets.proto | 2 + public | 2 +- worldsrv/action_pets.go | 47 ++++++----- worldsrv/petmgr.go | 34 +++++--- xlsx/DB_Skin.xlsx | Bin 11855 -> 11861 bytes 11 files changed, 156 insertions(+), 112 deletions(-) diff --git a/common/constant.go b/common/constant.go index cd0ef39..52b6ddb 100644 --- a/common/constant.go +++ b/common/constant.go @@ -815,6 +815,7 @@ const PermitAdd = 0.2 // 典藏通行证赛季积分多加,百分比 const ( SkinGetAuto = 1 SkinGetItem = 2 + SkinGetVip = 3 ) const ( diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 2907545519b3e7bed7af5e942dafdb527f78ee12..844793db0b1e8713437430388fbc7be5711f0236 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ1(m-IrEfs# zn`r98IfyVH=nk+xAdPM=%za?9kbua<2X4$|98W;vlN}f#5???Pn`0Qu F839t864w9# diff --git a/data/DB_Skin.json b/data/DB_Skin.json index cbf0da0..2556f1b 100644 --- a/data/DB_Skin.json +++ b/data/DB_Skin.json @@ -33,9 +33,9 @@ "SkinPic": "icon_300003", "SkinName": "活力-粉", "SkinType": "mg_02", - "UnlockType": 2, + "UnlockType": 3, "UnlockItem": { - "310003": 20 + "5": 0 }, "SkinSkillName": "活力满满", "SkinSkillIcon": "SkillIcon-30003", @@ -48,9 +48,9 @@ "SkinPic": "icon_300004", "SkinName": "活力-青", "SkinType": "mg_03", - "UnlockType": 2, + "UnlockType": 3, "UnlockItem": { - "310004": 20 + "2": 0 }, "SkinSkillName": "金币满满", "SkinSkillIcon": "SkillIcon-30004", diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 423c86f0a85aad7f8998c8a138d37df170319de0..76cbd1423ed92aca2cf12800602372f969724180 100644 GIT binary patch delta 244 zcmdn2xmk09p&%Q_l3q3eRxb{Yg+O}2A-Rc8rcgl8ns%w7;Z{1eZ$ zKvl{iR4z_tWD(+o7iSGdF`hj9Kx(|=$V&*V6+-9Y^!lXba|VUcCwv4V;+Lydf} fTxhdDk1#W)@Z@6t9H=N4RPlip+sz;N53>LOkuOu) diff --git a/protocol/pets/pets.pb.go b/protocol/pets/pets.pb.go index 0467ff9..815c0f3 100644 --- a/protocol/pets/pets.pb.go +++ b/protocol/pets/pets.pb.go @@ -1396,6 +1396,8 @@ type SkinInfo struct { SkillValue int32 `protobuf:"varint,13,opt,name=SkillValue,proto3" json:"SkillValue,omitempty"` //技能属性值 SkillNextValue int32 `protobuf:"varint,14,opt,name=SkillNextValue,proto3" json:"SkillNextValue,omitempty"` //技能下一级属性值 SkillType int32 `protobuf:"varint,15,opt,name=SkillType,proto3" json:"SkillType,omitempty"` // 技能生效类型 0获得后生效 1穿戴生效 + UnLockType int32 `protobuf:"varint,16,opt,name=UnLockType,proto3" json:"UnLockType,omitempty"` // 解锁类型 0默认皮肤不用解锁 1自动解锁 2道具解锁 3vip等级解锁 + NeedVip int32 `protobuf:"varint,17,opt,name=NeedVip,proto3" json:"NeedVip,omitempty"` // 解锁需要的vip等级 } func (x *SkinInfo) Reset() { @@ -1535,6 +1537,20 @@ func (x *SkinInfo) GetSkillType() int32 { return 0 } +func (x *SkinInfo) GetUnLockType() int32 { + if x != nil { + return x.UnLockType + } + return 0 +} + +func (x *SkinInfo) GetNeedVip() int32 { + if x != nil { + return x.NeedVip + } + return 0 +} + //PACKET_CS_SKIN_INFO type CSSkinInfo struct { state protoimpl.MessageState @@ -2088,7 +2104,7 @@ var file_pets_proto_rawDesc = []byte{ 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x01, 0x4e, 0x22, 0xce, 0x03, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, + 0x03, 0x52, 0x01, 0x4e, 0x22, 0x88, 0x04, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x4c, 0x65, @@ -2117,85 +2133,89 @@ var file_pets_proto_rawDesc = []byte{ 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x65, 0x78, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x1b, 0x0a, 0x09, 0x43, 0x53, 0x53, 0x6b, 0x69, - 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x09, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x4c, 0x6f, 0x63, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x56, 0x69, 0x70, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x56, 0x69, 0x70, 0x22, + 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, + 0x0a, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x05, 0x49, + 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, + 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, + 0x73, 0x22, 0x1b, 0x0a, 0x09, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x5d, + 0x0a, 0x09, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, + 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x1f, 0x0a, + 0x0d, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x61, + 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x43, 0x53, 0x53, 0x4b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, + 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, + 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x0d, 0x43, 0x53, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, - 0x73, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, - 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x43, 0x53, 0x53, 0x4b, 0x69, - 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x53, 0x43, 0x53, 0x6b, 0x69, - 0x6e, 0x55, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, - 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0xf7, 0x04, 0x0a, 0x0c, 0x50, 0x65, - 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x44, 0x59, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, - 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0xf7, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf8, 0x13, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf9, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, - 0x54, 0x41, 0x52, 0x10, 0xfa, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, - 0x54, 0x41, 0x52, 0x10, 0xfb, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, - 0x41, 0x52, 0x10, 0xfc, 0x13, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, - 0xfd, 0x13, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, 0xfe, 0x13, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, - 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0xff, 0x13, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, - 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x80, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, - 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x55, 0x50, 0x10, 0x81, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, - 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x55, 0x50, 0x10, 0x82, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0x83, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x84, 0x14, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, - 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x85, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x86, - 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, - 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x87, 0x14, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, - 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x88, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, - 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x89, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, - 0x10, 0x8a, 0x14, 0x2a, 0x67, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, - 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, - 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x4d, 0x61, 0x78, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, - 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x65, - 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x65, 0x74, 0x73, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x2a, 0xf7, 0x04, 0x0a, 0x0c, 0x50, 0x65, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x41, 0x4e, 0x44, 0x59, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0xf6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf7, 0x13, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf8, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xf9, + 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, + 0x45, 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfa, 0x13, + 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfb, 0x13, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x45, + 0x54, 0x5f, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x53, 0x54, 0x41, 0x52, 0x10, 0xfc, 0x13, 0x12, + 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x50, 0x45, 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, 0xfd, 0x13, 0x12, 0x1b, 0x0a, 0x16, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, + 0x54, 0x55, 0x53, 0x45, 0x4f, 0x50, 0x10, 0xfe, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, + 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0xff, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x50, 0x45, 0x54, 0x55, 0x4e, 0x4c, 0x4f, + 0x43, 0x4b, 0x10, 0x80, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, + 0x55, 0x50, 0x10, 0x81, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x50, 0x45, 0x54, 0x53, 0x4b, 0x49, 0x4c, 0x4c, 0x4c, 0x45, 0x56, 0x45, 0x4c, + 0x55, 0x50, 0x10, 0x82, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x83, 0x14, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, + 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x84, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, + 0x85, 0x14, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x86, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, + 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x87, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, + 0x44, 0x45, 0x10, 0x88, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x89, + 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, + 0x4b, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x8a, 0x14, 0x2a, 0x67, 0x0a, + 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, + 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, + 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x12, + 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, + 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x61, 0x78, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x04, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x65, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/pets/pets.proto b/protocol/pets/pets.proto index e51e80e..5a57d03 100644 --- a/protocol/pets/pets.proto +++ b/protocol/pets/pets.proto @@ -173,6 +173,8 @@ message SkinInfo{ int32 SkillValue = 13;//技能属性值 int32 SkillNextValue = 14;//技能下一级属性值 int32 SkillType = 15; // 技能生效类型 0获得后生效 1穿戴生效 + int32 UnLockType = 16; // 解锁类型 0默认皮肤不用解锁 1自动解锁 2道具解锁 3vip等级解锁 + int32 NeedVip = 17; // 解锁需要的vip等级 } //PACKET_CS_SKIN_INFO diff --git a/public b/public index 84def61..3a51b77 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit 84def613235479511266c5e6f331d7e81ed5cde5 +Subproject commit 3a51b7723bc64108d82735b6f707500fc7b05f1b diff --git a/worldsrv/action_pets.go b/worldsrv/action_pets.go index c7d2407..c2aca90 100644 --- a/worldsrv/action_pets.go +++ b/worldsrv/action_pets.go @@ -576,28 +576,35 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) { } var change []*Item - for _, v := range info.GetCost() { - e := BagMgrSingleton.GetItem(p.SnId, v.GetId()) - if e == nil || e.ItemNum < v.GetN() { - return nil, pets.OpResultCode_OPRC_NotEnough + if info.GetUnLockType() == common.SkinGetVip { + if p.VIP < info.GetNeedVip() { + logger.Logger.Errorf("CSSKinUnLock Unlock vip error") + return nil, pets.OpResultCode_OPRC_Error } - change = append(change, &Item{ - ItemId: v.GetId(), - ItemNum: -v.GetN(), + } else { + for _, v := range info.GetCost() { + e := BagMgrSingleton.GetItem(p.SnId, v.GetId()) + if e == nil || e.ItemNum < v.GetN() { + return nil, pets.OpResultCode_OPRC_NotEnough + } + change = append(change, &Item{ + ItemId: v.GetId(), + ItemNum: -v.GetN(), + }) + } + _, _, ok := BagMgrSingleton.AddItemsV2(&ItemParam{ + P: p, + Change: change, + Add: 0, + GainWay: common.GainWaySkinUnLock, + Operator: "system", + Remark: "皮肤解锁消耗", + noLog: false, }) - } - _, _, ok := BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, - Change: change, - Add: 0, - GainWay: common.GainWaySkinUnLock, - Operator: "system", - Remark: "皮肤解锁消耗", - noLog: false, - }) - if !ok { - logger.Logger.Errorf("CSSKinUnLock Unlock error") - return nil, pets.OpResultCode_OPRC_Error + if !ok { + logger.Logger.Errorf("CSSKinUnLock Unlock error") + return nil, pets.OpResultCode_OPRC_Error + } } p.Skin.ModUnlock[id] = 1 if p.Skin.Mod[id] == nil { diff --git a/worldsrv/petmgr.go b/worldsrv/petmgr.go index 2e2e279..ce09243 100644 --- a/worldsrv/petmgr.go +++ b/worldsrv/petmgr.go @@ -249,7 +249,7 @@ func (this *PetMgr) GetPetInfo(p *Player, modId int32) *pets.PetInfo { // 皮肤 func (this *PetMgr) GetSkinInfos(p *Player) []*pets.SkinInfo { var ret []*pets.SkinInfo - for _, v := range srvdata.PBDB_SkinMgr.Datas.GetArr() { + for _, v := range PlatformMgrSingleton.GetConfig(p.Platform).SkinConfig.GetItems() { ret = append(ret, this.GetSkinInfo(p, v.GetId())) } return ret @@ -264,14 +264,19 @@ func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo { bag := BagMgrSingleton.GetBagInfo(p.SnId) level := p.Skin.ModUnlock[id] var unLockCost, cost, have []*pets.Item + var needVip int32 for k, v := range cfg.GetUnlockParam() { unLockCost = append(unLockCost, &pets.Item{ Id: k, N: v, }) + needVip = k } if level == 0 { cost = unLockCost + if cfg.GetUnlockType() == common.SkinGetVip { + cost = cost[:0] + } } else { for k, v := range PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level+1).GetUpItem() { cost = append(cost, &pets.Item{ @@ -296,15 +301,19 @@ func (this *PetMgr) GetSkinInfo(p *Player, id int32) *pets.SkinInfo { use := unLock && p.Skin.ModId == id ret := &pets.SkinInfo{ - Id: id, - Level: level, - MaxLevel: PlatformMgrSingleton.GetSkinMaxLevel(p.Platform, id), - Cost: cost, - Have: have, - IsUsing: use, - IsUnlock: unLock, - IsUpgrade: cfg.GetIsUpgrade() == 1, - SkillType: cfg.GetSkillType(), + Id: id, + Level: level, + MaxLevel: PlatformMgrSingleton.GetSkinMaxLevel(p.Platform, id), + Cost: cost, + Have: have, + IsUsing: use, + IsUnlock: unLock, + IsUpgrade: cfg.GetIsUpgrade() == 1, + SkillType: cfg.GetSkillType(), + UnLockType: cfg.GetUnlockType(), + } + if cfg.GetUnlockType() == common.SkinGetVip { + ret.NeedVip = needVip } curLevel := PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level) nextLevel := PlatformMgrSingleton.GetSkinLevel(p.Platform, id, level+1) @@ -350,6 +359,11 @@ func (this *PetMgr) CheckSkinRed(p *Player) { p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1) continue } + // vip等级解锁 + if info.GetUnLockType() == common.SkinGetVip && p.VIP >= info.GetNeedVip() { + p.SendShowRed(hall_proto.ShowRedCode_Skin, v.Id, 1) + continue + } } // 升级 if info.GetIsUnlock() && info.GetLevel() < info.GetMaxLevel() && info.GetIsUpgrade() { diff --git a/xlsx/DB_Skin.xlsx b/xlsx/DB_Skin.xlsx index da4bf29bd0d2df5f07c21484109af0e96f59ad59..6b8a6dcfec8522c9a3d15b6fdaad1ac63df4b6de 100644 GIT binary patch delta 3910 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 delta 3917 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 ArT_o{