diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat
index 90627e2..eab78e7 100644
Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ
diff --git a/data/DB_RankReward.dat b/data/DB_RankReward.dat
index 403ebd4..db7321a 100644
--- a/data/DB_RankReward.dat
+++ b/data/DB_RankReward.dat
@@ -1,8 +1,9 @@
 
-$08�@H���
-08�@H���	
-08�@H���
-08�@H��0
-08�@H��
-08d@H�
-082@H��
\ No newline at end of file
+$08�@H���
+08d@H���	
+08<@H���
+08(@H��0
+08@H��
+08@H�
+08
+@H��
\ No newline at end of file
diff --git a/data/DB_RankReward.json b/data/DB_RankReward.json
index 3e27f5f..6de6430 100644
--- a/data/DB_RankReward.json
+++ b/data/DB_RankReward.json
@@ -5,7 +5,7 @@
 			"RankType": 1,
 			"Level": 36,
 			"Award2Id": 2,
-			"Award2Num": 1000,
+			"Award2Num": 200,
 			"Award3Id": 1,
 			"Award3Num": 30000000
 		},
@@ -14,7 +14,7 @@
 			"RankType": 1,
 			"Level": 31,
 			"Award2Id": 2,
-			"Award2Num": 500,
+			"Award2Num": 100,
 			"Award3Id": 1,
 			"Award3Num": 20000000
 		},
@@ -23,7 +23,7 @@
 			"RankType": 1,
 			"Level": 26,
 			"Award2Id": 2,
-			"Award2Num": 300,
+			"Award2Num": 60,
 			"Award3Id": 1,
 			"Award3Num": 10000000
 		},
@@ -32,7 +32,7 @@
 			"RankType": 1,
 			"Level": 21,
 			"Award2Id": 2,
-			"Award2Num": 200,
+			"Award2Num": 40,
 			"Award3Id": 1,
 			"Award3Num": 800000
 		},
@@ -41,7 +41,7 @@
 			"RankType": 1,
 			"Level": 16,
 			"Award2Id": 2,
-			"Award2Num": 150,
+			"Award2Num": 30,
 			"Award3Id": 1,
 			"Award3Num": 500000
 		},
@@ -50,7 +50,7 @@
 			"RankType": 1,
 			"Level": 11,
 			"Award2Id": 2,
-			"Award2Num": 100,
+			"Award2Num": 20,
 			"Award3Id": 1,
 			"Award3Num": 300000
 		},
@@ -59,7 +59,7 @@
 			"RankType": 1,
 			"Level": 6,
 			"Award2Id": 2,
-			"Award2Num": 50,
+			"Award2Num": 10,
 			"Award3Id": 1,
 			"Award3Num": 200000
 		}
diff --git a/data/DB_Task.dat b/data/DB_Task.dat
index 37be7cc..ec74cda 100644
Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ
diff --git a/gamerule/clawdoll/constants.go b/gamerule/clawdoll/constants.go
index b1c0813..e855368 100644
--- a/gamerule/clawdoll/constants.go
+++ b/gamerule/clawdoll/constants.go
@@ -19,6 +19,7 @@ const (
 	ClawDollPlayerStatePlayGame              //游戏中
 	ClawDollPlayerStateBilled                //结算
 	ClawDollPlayerWaitPayCoin                //等待下一局投币
+	ClawDollPlayerAudience                   //观众状态
 	ClawDollPlayerStateMax
 )
 
@@ -58,3 +59,15 @@ const (
 	ClawStrong            //强力抓
 	ClawGain              //必出抓
 )
+
+const (
+	RoomStat_Audience = iota //观众旁观者
+	RoomStat_Wait            //等待状态
+)
+
+// actionType : 1 禁止推流 ForbidRTCStream
+// actionType : 2 恢复推流 ResumeRTCStream
+const (
+	Zego_ForbidRTCStream = iota + 1
+	Zego_ResumeRTCStream = iota + 1
+)
diff --git a/gamerule/clawdoll/logic.go b/gamerule/clawdoll/logic.go
index 78f1018..45f603d 100644
--- a/gamerule/clawdoll/logic.go
+++ b/gamerule/clawdoll/logic.go
@@ -2,3 +2,11 @@ package clawdoll
 
 type Logic struct {
 }
+
+type ZegoForbidRTCResp struct {
+	Code      int64
+	Message   string
+	RequestId string
+	Data      any
+	Error     int
+}
diff --git a/gamesrv/clawdoll/scene_clawdoll.go b/gamesrv/clawdoll/scene_clawdoll.go
index 8c3070d..fd0fbd7 100644
--- a/gamesrv/clawdoll/scene_clawdoll.go
+++ b/gamesrv/clawdoll/scene_clawdoll.go
@@ -2,15 +2,28 @@ package clawdoll
 
 import (
 	"container/list"
+	"crypto/md5"
+	"encoding/hex"
+	"encoding/json"
+	"fmt"
+	"io/ioutil"
+	"math/rand"
 	"mongo.games.com/game/common"
 	rule "mongo.games.com/game/gamerule/clawdoll"
 	"mongo.games.com/game/gamesrv/base"
 	"mongo.games.com/game/proto"
 	"mongo.games.com/game/protocol/clawdoll"
 	"mongo.games.com/game/protocol/machine"
+	"mongo.games.com/game/protocol/webapi"
+	"mongo.games.com/goserver/core/basic"
 	"mongo.games.com/goserver/core/logger"
 	"mongo.games.com/goserver/core/netlib"
+	"mongo.games.com/goserver/core/task"
+	"mongo.games.com/goserver/core/timer"
 	"mongo.games.com/goserver/srvlib"
+	"net/http"
+	"net/url"
+	"time"
 )
 
 type PlayerData struct {
@@ -84,6 +97,10 @@ func (this *SceneEx) BroadcastPlayerEnter(p *base.Player, reason int) {
 	pack.Data.HeadUrl = p.HeadUrl
 	pack.Data.Name = p.Name
 
+	if playerEx, ok := p.ExtraData.(*PlayerEx); ok {
+		pack.Data.Stat = playerEx.clawDollState
+	}
+
 	proto.SetDefaults(pack)
 
 	this.Broadcast(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_PlayerEnter), pack, p.GetSid())
@@ -109,9 +126,9 @@ func (this *SceneEx) OnPlayerEnter(p *base.Player, reason int) {
 		return
 	}
 
-	if this.GetPlayerNum() > 0 {
-		// 发送http Get请求	打开直播间流
-
+	if this.GetPlayerNum() >= 1 && this.GetPlayerNum() <= 3 {
+		// 发送http Get请求	恢复直播间流
+		//operateTask(this, 2, rule.Zego_ResumeRTCStream, p.Platform)
 	}
 }
 
@@ -126,9 +143,9 @@ func (this *SceneEx) OnPlayerLeave(p *base.Player, reason int) {
 		return
 	}
 
-	if this.GetPlayerNum() <= 0 {
+	if len(this.players) <= 0 {
 		// 发送http Get请求	关闭直播间流
-
+		//operateTask(this, 2, rule.Zego_ForbidRTCStream, p.Platform)
 	}
 
 }
@@ -413,3 +430,110 @@ func (this *SceneEx) SendToMachine(pid int, msg interface{}) {
 		logger.Logger.Error("MachineConn is nil !")
 	}
 }
+
+// actionType : 1 禁止推流 ForbidRTCStream
+// actionType : 2 恢复推流 ResumeRTCStream
+func operateTask(sceneEx *SceneEx, times int, actionType int, platform string) {
+
+	machineId := sceneEx.GetDBGameFree().GetId() % 6080000
+	machineInfo := sceneEx.GetMachineServerInfo(machineId, platform)
+	if machineInfo == nil {
+		logger.Logger.Errorf("ZegoRTCStreamAction machineId: %v, platform: %v", machineId, platform)
+		return
+	}
+
+	actionTypeStr := "NoneAction"
+	if actionType == rule.Zego_ForbidRTCStream {
+		actionTypeStr = "ForbidRTCStream"
+	} else {
+		actionTypeStr = "ResumeRTCStream"
+	}
+
+	logger.Logger.Tracef("ZegoRTCStreamAction: actionTypeStr: %v, machineId: %v, machineInfo: %v", actionTypeStr, machineId, machineInfo)
+
+	var resp rule.ZegoForbidRTCResp
+	task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
+		resp = ZegoRTCStreamAction(actionTypeStr, machineInfo)
+		return nil
+	}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
+		if resp.Error == 0 && resp.Code == 0 && resp.Message == "ok" {
+
+		} else {
+			logger.Logger.Errorf("ZegoForbidRTCResp Code: %v, Error: %v, Message: %v", resp.Code, resp.Error, resp.Message)
+			if times > 0 {
+				timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
+					operateTask(sceneEx, times-1, actionType, platform)
+					return true
+				}), nil, time.Second*5, 1)
+			}
+		}
+	}), "ZegoRTCStream_Action").Start()
+}
+
+func ZegoRTCStreamAction(Action string, machineInfo *webapi.MachineInfo) rule.ZegoForbidRTCResp {
+
+	var zegoForbidRTCResp = rule.ZegoForbidRTCResp{
+		Error: 1,
+	}
+
+	timestamp := time.Now().Unix()
+	queryParams := url.Values{}
+
+	queryParams.Set("StreamId", "test")
+	queryParams.Set("Sequence", fmt.Sprintf("%d", timestamp))
+
+	// 生成16进制随机字符串(16位)
+	nonce := make([]byte, 8)
+	rand.Read(nonce)
+	hexNonce := hex.EncodeToString(nonce)
+	// 生成签名
+	signature := generateSignature(uint32(machineInfo.AppId), machineInfo.ServerSecret, hexNonce, timestamp)
+	authParams := url.Values{}
+	authParams.Set("AppId", fmt.Sprintf("%d", uint32(machineInfo.AppId)))
+	//公共参数中的随机数和生成签名的随机数要一致
+	authParams.Set("SignatureNonce", hexNonce)
+	authParams.Set("SignatureVersion", "2.0")
+	//公共参数中的时间戳和生成签名的时间戳要一致
+	authParams.Set("Timestamp", fmt.Sprintf("%d", timestamp))
+	authParams.Set("Signature", signature)
+
+	//authParams.Set("IsTest", "true")
+	// rtc-api.zego.im 表示使用的产品是云通讯产品，包括了实时音视频（Express Video）、实时音频（Express Audio）、低延迟直播（L3）
+	addr := fmt.Sprintf("https://rtc-api.zego.im/?Action=%s&%s&%s", Action, authParams.Encode(), queryParams.Encode())
+
+	logger.Logger.Tracef("ZegoRTCStreamAction Get addr: %+v", addr)
+
+	rsp, err := http.Get(addr)
+	if err != nil {
+		logger.Logger.Errorf("ZegoRTCStreamAction Get err： %v", err)
+		return zegoForbidRTCResp
+	}
+	defer rsp.Body.Close()
+	body, err := ioutil.ReadAll(rsp.Body)
+	if err != nil {
+		logger.Logger.Errorf("ZegoRTCStreamAction ioutil.ReadAll err： %v", err)
+		return zegoForbidRTCResp
+	}
+	logger.Logger.Tracef("ZegoRTCStreamAction Action: %+v, body: %+v", Action, string(body))
+
+	err = json.Unmarshal(body, &zegoForbidRTCResp)
+	if err != nil {
+		zegoForbidRTCResp.Error = 5
+		logger.Logger.Errorf("ZegoRTCStreamAction %v %v", zegoForbidRTCResp, err.Error())
+		return zegoForbidRTCResp
+	}
+
+	zegoForbidRTCResp.Error = 0
+
+	return zegoForbidRTCResp
+}
+
+// 生成签名
+// Signature=md5(AppId + SignatureNonce + ServerSecret + Timestamp)
+func generateSignature(appId uint32, serverSecret, signatureNonce string, timeStamp int64) string {
+	data := fmt.Sprintf("%d%s%s%d", appId, signatureNonce, serverSecret, timeStamp)
+
+	h := md5.New()
+	h.Write([]byte(data))
+	return hex.EncodeToString(h.Sum(nil))
+}
diff --git a/gamesrv/clawdoll/scenepolicy_clawdoll.go b/gamesrv/clawdoll/scenepolicy_clawdoll.go
index 3d31f96..9bfb767 100644
--- a/gamesrv/clawdoll/scenepolicy_clawdoll.go
+++ b/gamesrv/clawdoll/scenepolicy_clawdoll.go
@@ -103,10 +103,7 @@ func (this *PolicyClawdoll) OnPlayerEnter(s *base.Scene, p *base.Player) {
 		baseScore := sceneEx.GetBaseScore()
 		p.ExtraData = playerEx
 		playerEx.Clear(baseScore)
-
-		if sceneEx.playingSnid == 0 {
-			//sceneEx.playingSnid = p.GetSnId()
-		}
+		//playerEx.clawDollState = rule.ClawDollPlayerAudience
 
 		p.MarkFlag(base.PlayerState_WaitNext)
 		p.UnmarkFlag(base.PlayerState_Ready)
@@ -114,7 +111,7 @@ func (this *PolicyClawdoll) OnPlayerEnter(s *base.Scene, p *base.Player) {
 		//给自己发送房间信息
 		this.SendRoomInfo(s, p, sceneEx)
 
-		ClawdollBroadcastRoomWaitPlayers(s)
+		ClawdollSendRoomWaitPlayers(s, p)
 		ClawdollBroadcastPlayingInfo(s)
 
 		// 玩家数据发送
@@ -175,7 +172,7 @@ func (this *PolicyClawdoll) OnPlayerRehold(s *base.Scene, p *base.Player) {
 				p.MarkFlag(base.PlayerState_Ready)
 			}
 			this.SendRoomInfo(s, p, sceneEx)
-			ClawdollBroadcastRoomWaitPlayers(s)
+			ClawdollSendRoomWaitPlayers(s, p)
 			ClawdollBroadcastPlayingInfo(s)
 
 			this.SendGetVideoToken(s, p, sceneEx)
@@ -196,7 +193,7 @@ func (this *PolicyClawdoll) OnPlayerReturn(s *base.Scene, p *base.Player) {
 				p.MarkFlag(base.PlayerState_Ready)
 			}
 			this.SendRoomInfo(s, p, sceneEx)
-			ClawdollBroadcastRoomWaitPlayers(s)
+			ClawdollSendRoomWaitPlayers(s, p)
 			ClawdollBroadcastPlayingInfo(s)
 
 			this.SendGetVideoToken(s, p, sceneEx)
@@ -329,7 +326,7 @@ func ClawdollSendPlayerInfo(s *base.Scene) {
 }
 
 // 广播房间里所有等待玩家信息
-func ClawdollBroadcastRoomWaitPlayers(s *base.Scene) {
+func ClawdollSendRoomWaitPlayers(s *base.Scene, p *base.Player) {
 	pack := &clawdoll.CLAWDOLLWaitPlayers{}
 
 	if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
@@ -341,13 +338,14 @@ func ClawdollBroadcastRoomWaitPlayers(s *base.Scene) {
 					Head:    proto.Int32(playerEx.Head),
 					HeadUrl: proto.String(playerEx.HeadUrl),
 					Name:    proto.String(playerEx.Name),
+					Stat:    proto.Int32(playerEx.clawDollState),
 				}
 
 				pack.WaitPlayersInfo = append(pack.WaitPlayersInfo, pd)
 			}
 		}
 
-		s.Broadcast(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_WAITPLAYERS), pack, 0)
+		p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_WAITPLAYERS), pack)
 	}
 }
 
diff --git a/gamesrv/transact/trascate_gamesrv.go b/gamesrv/transact/trascate_gamesrv.go
index 1149976..1cdca9d 100644
--- a/gamesrv/transact/trascate_gamesrv.go
+++ b/gamesrv/transact/trascate_gamesrv.go
@@ -118,7 +118,7 @@ func init() {
 			}
 
 			switch d := scene.ExtraData.(type) {
-			case tienlen.TienLenSceneData:
+			case *tienlen.TienLenSceneData:
 				for k := range d.BilledList {
 					pack.SnId = append(pack.SnId, k)
 				}
diff --git a/protocol/clawdoll/clawdoll.pb.go b/protocol/clawdoll/clawdoll.pb.go
index 098f4ca..7f6bfba 100644
--- a/protocol/clawdoll/clawdoll.pb.go
+++ b/protocol/clawdoll/clawdoll.pb.go
@@ -1004,6 +1004,7 @@ type CLAWDOLLPlayerDigestInfo struct {
 	Head    int32  `protobuf:"varint,2,opt,name=Head,proto3" json:"Head,omitempty"`      //头像
 	HeadUrl string `protobuf:"bytes,3,opt,name=HeadUrl,proto3" json:"HeadUrl,omitempty"` //头像
 	Name    string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`       //名字
+	Stat    int32  `protobuf:"varint,5,opt,name=Stat,proto3" json:"Stat,omitempty"`      //玩家状态  0：排队状态  5:大厅观众状态
 }
 
 func (x *CLAWDOLLPlayerDigestInfo) Reset() {
@@ -1066,6 +1067,13 @@ func (x *CLAWDOLLPlayerDigestInfo) GetName() string {
 	return ""
 }
 
+func (x *CLAWDOLLPlayerDigestInfo) GetStat() int32 {
+	if x != nil {
+		return x.Stat
+	}
+	return 0
+}
+
 var File_clawdoll_proto protoreflect.FileDescriptor
 
 var file_clawdoll_proto_rawDesc = []byte{
@@ -1167,47 +1175,48 @@ var file_clawdoll_proto_rawDesc = []byte{
 	0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c,
 	0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f,
 	0x52, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66,
-	0x6f, 0x22, 0x70, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, 0x61,
-	0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a,
-	0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49,
-	0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12,
-	0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
-	0x61, 0x6d, 0x65, 0x2a, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c,
-	0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x43, 0x4b,
-	0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
-	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10,
-	0xe1, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
-	0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50,
-	0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f,
-	0x50, 0x10, 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
-	0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe4, 0x2b, 0x12, 0x19,
-	0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45,
-	0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
-	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74,
-	0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
-	0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xe7,
-	0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50,
-	0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x2b, 0x12, 0x17, 0x0a, 0x12,
-	0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x4f, 0x4b,
-	0x45, 0x4e, 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
-	0x53, 0x43, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xea, 0x2b, 0x12,
-	0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x41, 0x49,
-	0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50,
-	0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41,
-	0x59, 0x45, 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
-	0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e, 0x47, 0x49, 0x4e, 0x46, 0x4f,
-	0x10, 0xed, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
-	0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63,
-	0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72,
-	0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f,
-	0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x1a, 0x0a,
-	0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79,
-	0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x28, 0x5a, 0x26, 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, 0x63, 0x6c, 0x61, 0x77, 0x64,
-	0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x6f, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c,
+	0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
+	0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
+	0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72,
+	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c,
+	0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x74, 0x2a, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x4c, 0x41,
+	0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, 0x0a,
+	0x0b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17,
+	0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d,
+	0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45,
+	0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, 0x2b,
+	0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c,
+	0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45,
+	0x10, 0xe4, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
+	0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, 0x1a,
+	0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79,
+	0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65,
+	0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
+	0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8,
+	0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47,
+	0x45, 0x54, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, 0x45,
+	0x4e, 0x10, 0xea, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
+	0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, 0x2b,
+	0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x41,
+	0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, 0x15,
+	0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e,
+	0x47, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xed, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43,
+	0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50,
+	0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50,
+	0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
+	0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, 0x6c,
+	0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x28,
+	0x5a, 0x26, 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,
+	0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/protocol/clawdoll/clawdoll.proto b/protocol/clawdoll/clawdoll.proto
index 2dea4f0..b8dd5c9 100644
--- a/protocol/clawdoll/clawdoll.proto
+++ b/protocol/clawdoll/clawdoll.proto
@@ -130,4 +130,5 @@ message CLAWDOLLPlayerDigestInfo {
     int32 Head = 2;        //头像
     string HeadUrl = 3;     //头像
     string Name = 4;       //名字
+    int32  Stat = 5;        //玩家状态  0：排队状态  5:大厅观众状态
 }
diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go
index 702bc49..185f3f5 100644
--- a/worldsrv/scenemgr.go
+++ b/worldsrv/scenemgr.go
@@ -183,9 +183,9 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode
 			((s.gameId == gameId && s.gameMode == gameMode) || gameId == 0) &&
 			(s.sceneId == sceneId || sceneId == 0) && (s.groupId == int32(groupId) || groupId == 0) &&
 			(s.dbGameFree.GetId() == gameFreeId || gameFreeId == 0) &&
-			(s.sceneMode == sceneMode || sceneMode == -1)) || isNeedFindAll &&
+			(s.sceneMode == sceneMode || sceneMode == -1) &&
 			((s.IsCustom() && isCustom) || !isCustom) &&
-			(s.GetRoomConfigId() == roomConfigId || roomConfigId == 0) {
+			(s.GetRoomConfigId() == roomConfigId || roomConfigId == 0)) || isNeedFindAll {
 			var platformName string
 			if s.limitPlatform != nil {
 				platformName = s.limitPlatform.IdStr
diff --git a/xlsx/DB_RankReward.xlsx b/xlsx/DB_RankReward.xlsx
index 05a594e..cd64d1b 100644
Binary files a/xlsx/DB_RankReward.xlsx and b/xlsx/DB_RankReward.xlsx differ
