Browse Source

fixes boss战

gwang 3 years ago
parent
commit
faffe10abd

+ 1 - 1
CSserver/BossServer/server/Boss.cs

@@ -71,7 +71,7 @@ namespace BossServer.server
             this.Hp = this.MaxHp = maxHp;
             this.CountDownSecs = Config.Ins.CountDownTimes;
             var roomName = Room.Instance.Name ?? "Room";
-            var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(ZoneId), roomName);
+            var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(ZoneId), Id, roomName);
             var rdb = Redis.Ins.GetDatabase(0);
             rdb.KeyDelete(redis_key);
             this.Peers = new Dictionary<int, Peer>();

+ 3 - 2
CSserver/BossServer/server/Peer.cs

@@ -135,7 +135,7 @@ namespace BossServer.server
                     && Properties.TryGetValue(PropertyName.Zoneid, out var zoneid))
                 {
                     var roomName = Room.Instance.Name ?? "Room";
-                    var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(zoneid), roomName);
+                    var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(zoneid), bossId, roomName);
                     var who = UID + "__" + name.ToString();
                     rdb.SortedSetIncrement(redis_key, who, damage);
                 }
@@ -144,7 +144,8 @@ namespace BossServer.server
                     Console.WriteLine("uid/zoneid 为空.");
                 }
             }
-            catch (RedisTimeoutException te) {
+            catch (RedisTimeoutException te)
+            {
                 Console.WriteLine("redis操作超时");
             }
         }

+ 7 - 6
CSserver/BossServer/server/Room.cs

@@ -127,9 +127,10 @@ namespace BossServer.server
             if (this.ClientPeers.TryGetValue(peerId, out var peer))
             {
                 var msg = CSEnterFight.Parser.ParseFrom(data._data);
-                peer.Properties.Add(nameof(msg.Uid), msg.Uid);
-                peer.Properties.Add(nameof(msg.Zoneid), msg.Zoneid);
-                peer.Properties.Add(PropertyName.Name, msg.Name);
+                peer.Properties[nameof(msg.Uid)] = msg.Uid;
+
+                peer.Properties[nameof(msg.Zoneid)] = msg.Zoneid;
+                peer.Properties[PropertyName.Name] = msg.Name;
                 peer.bossId = msg.BossId;
                 lock (Boss_dict)
                 {
@@ -156,7 +157,7 @@ namespace BossServer.server
                                 if (oldPeer.Properties.TryGetValue(PropertyName.Hp, out var hisHp))
                                 {
                                     peerHp = int.Parse(hisHp.ToString());
-                                    peer.Properties.Add(PropertyName.Hp, peerHp);
+                                    peer.Properties[PropertyName.Hp] = peerHp;
                                     Console.WriteLine($" 玩家记录血量:{peerHp} ");
                                 }
                                 boss.Peers.Remove(oldPeer.Id);
@@ -181,7 +182,7 @@ namespace BossServer.server
         void BossSettle(Boss boss)
         {
             WriteLine($"结算Boss {boss.UID}");
-            
+
             if (Boss_dict.ContainsKey(boss.UID))
             {
                 var data = $"zoneid={boss.ZoneId}&bossid={boss.Id}";
@@ -267,7 +268,7 @@ namespace BossServer.server
             }
             else
             {
-               
+
                 WriteLine("游戏结束2 // 这里不应该执行到!!!");
                 p.SendEvent(eProtocalCommand.ScGameOver, new SCGameOver() { BossHp = 0, CountDown = 9999 });
                 p.Close();

+ 1 - 1
CSserver/Lib1/Config.cs

@@ -5,7 +5,7 @@ using StackExchange.Redis;
    public class Config
     {
 
-        public const bool GameOnline = true;  
+        public const bool GameOnline = false;  
 
         public ConfigurationOptions redis;
 

+ 2 - 2
CSserver/Lib1/MemKey_User.cs

@@ -17,9 +17,9 @@ public class MemKey_Game
     /// <param name="zoneid"></param>
     /// <param name="uid"></param>
     /// <returns></returns>
-    public static string BossFight_Damage_byDateHour_zset(int zoneid, string dateHour)
+    public static string BossFight_Damage_byDateHour_zset(int zoneid,int  bossid, string dateHour)
     {
-        return $"gamerun-BossFight-byDateHour-zone{zoneid}-{dateHour}";
+        return $"gamerun-BossFight-byDateHour-zone{zoneid}-boss{bossid}-{dateHour}";
     }
 
     #endregion

+ 14 - 1
Gameserver/Amfphp/process/FightProc.php

@@ -63,9 +63,11 @@ class FightProc {
                 return PVPProc::pvpShopRefresh();
             // </editor-fold>
 
+            case CmdCode::fight_worldBoss_enter:                                # 6831 世界BOSS战 - 进入
+                return self::WorldBossEnter();
             case CmdCode::fight_worldBoss_refresh_rank :                        # 6834 查询世界boss伤害输出榜
                 return self::GetWorldBossRank();
-
+// ---------- 无尽塔相关 -------------------------
             case CmdCode::fight_endlessTower_Get:                               # 6841 查询无尽塔的进度
                 return self::EndlessTower_Get();
             case CmdCode::fight_endlessTower_Up:                                # 6842 无尽塔升级
@@ -80,6 +82,13 @@ class FightProc {
 //
 // <editor-fold defaultstate="collapsed" desc="  世界boss  ">
 
+    static function WorldBossEnter() {
+        list($bossid) = req()->paras;
+        $gateId = 506000 + $bossid;
+        TaskProc::OnPassWorldBoss($gateId);
+        return Resp::ok();
+    }
+
     /**
      * [6834] 查询世界boss伤害输出榜
      */
@@ -87,6 +96,9 @@ class FightProc {
         $zoneid = req()->zoneid;
         list($bossId) = req()->paras;                                           # 提取参数bossid.
         $key = MemKey_GameRun::Game_WorldBoss_X_Rank($zoneid, $bossId);
+        var_dump($key);
+        var_dump($bossId);
+        var_dump(req()->paras);
         $rank = gMem()->zrange($key, 0, 50, true);
         return Resp::ok(array('rank' => $rank));
     }
@@ -100,6 +112,7 @@ class FightProc {
             $uid = substr($uid_name, 0, strpos($uid_name, "__"));
             EmailProc::SendWorldBossReward($zoneId, $uid, $i++, $rwd->rankName, $rwd->reward);
         }
+
         CLog::info("世界Boss($bossid)已结算,未更新结算标记(防止重复发放).");
     }