public APIReturn 出牌([FromForm] string id, [FromForm] string playerId, [FromForm] int[] poker) { var ddz = DDZGet(id); ddz.Play(playerId, poker); object[] gpdb = null; using (var pipe = redis.StartPipe()) { pipe.HGet <Player[]>($"ddz_gameplay_ht{ddz.Id}", "players"); pipe.HGet <Desk>($"ddz_gameplay_ht{ddz.Id}", "desk"); gpdb = pipe.EndPipe(); } var players = gpdb[0] as Player[]; var desk = gpdb[1] as Desk; SendGameMessage(ddz, gpdb[0] as Player[]); if (ddz.Data.stage == GameStage.游戏结束) { ImHelper.LeaveChan(players[0].Id, desk.Title); ImHelper.LeaveChan(players[1].Id, desk.Title); ImHelper.LeaveChan(players[2].Id, desk.Title); } return(APIReturn.成功); }
public static void OnGameOver(GamePlay game) { object[] gpdb = null; using (var pipe = redis.StartPipe()) { pipe.HGet <Player[]>($"ddz_gameplay_ht{game.Id}", "players"); pipe.HGet <Desk>($"ddz_gameplay_ht{game.Id}", "desk"); gpdb = pipe.EndPipe(); } var players = gpdb[0] as Player[]; var desk = gpdb[1] as Desk; ImHelper.LeaveChan(players[0].Id, desk.Title); ImHelper.LeaveChan(players[1].Id, desk.Title); ImHelper.LeaveChan(players[2].Id, desk.Title); using (var pipe = redis.StartPipe()) { pipe.HDel($"ddz_gameplay_ht{game.Id}", "players", "desk"); pipe.HDel("ddz_gameplay_player_ht", players[0].Id.ToString(), players[1].Id.ToString(), players[2].Id.ToString(), players[0].Nick, players[1].Nick, players[2].Nick); pipe.HDel("sitdown_ht", new[] { $"{desk.Id}_1", $"{desk.Id}_2", $"{desk.Id}_3" }); pipe.HDel("sitdown_player_ht", players[0].Id.ToString(), players[1].Id.ToString(), players[2].Id.ToString()); pipe.EndPipe(); } Func <GamePlayer, string> getPlayerStats = pl => $"{pl.id}({pl.score})"; var playerScoreIncr = game.Data.players.Select(a => (long)a.score).ToArray(); lock (updateScoreLock) { BaseEntity.Orm.Update <Player>(players[0]).Set(a => a.Score + playerScoreIncr[0]).ExecuteAffrows(); BaseEntity.Orm.Update <Player>(players[1]).Set(a => a.Score + playerScoreIncr[1]).ExecuteAffrows(); BaseEntity.Orm.Update <Player>(players[2]).Set(a => a.Score + playerScoreIncr[2]).ExecuteAffrows(); } players[0].Score += playerScoreIncr[0]; players[1].Score += playerScoreIncr[1]; players[2].Score += playerScoreIncr[2]; ImHelper.SendChanMessage(Guid.Empty, "ddz_chan", new { type = "GameOvered", deskId = desk.Id, players = players, msg = $"{desk.Title} 【游戏结束】,本局炸弹 {game.Data.bong}个,{game.Data.players[0].id}({game.Data.players[0].score}),{game.Data.players[1].id}({game.Data.players[1].score}),{game.Data.players[2].id}({game.Data.players[2].score})" }); SendGameMessage(game, players); }
public async Task <AjaxResult <object> > unSubscrChannel([FromForm] Guid accid, [FromForm] Guid channel) { if (!await _userManager.CheckAccid(accid.ToString(), Appid)) { return(new AjaxResult <object>("accid不存在")); } //判断群是否存在 if (!await _channelManager.CheckChannel(channel.ToString(), Appid)) { return(new AjaxResult <object>("channel不存在")); } ImHelper.LeaveChan(accid, channel.ToString()); return(new AjaxResult <object> { code = 0 }); }
public APIReturn 出牌([FromForm] string id, [FromForm] string playerId, [FromForm] int[] poker) { var ddz = DDZGet(id); ddz.Play(playerId, poker); var gpdb = RedisHelper.StartPipe(a => a .HGet <Player[]>($"ddz_gameplay_ht{ddz.Id}", "players") .HGet <Desk>($"ddz_gameplay_ht{ddz.Id}", "desk")); var players = gpdb[0] as Player[]; var desk = gpdb[1] as Desk; SendGameMessage(ddz, gpdb[0] as Player[]); if (ddz.Data.stage == GameStage.游戏结束) { ImHelper.LeaveChan(players[0].Id, desk.Title); ImHelper.LeaveChan(players[1].Id, desk.Title); ImHelper.LeaveChan(players[2].Id, desk.Title); } return(APIReturn.成功); }