using System; using System.Collections.Generic; using System.Net; namespace ET { [ActorMessageHandler] public class C2M_GetMapCoinHandler : AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_GetMapCoin request, M2C_GetMapCoin response, Action reply) { if (!unit.IsTeamLeader) { response.Message = "你不是队长!"; reply(); return; } UnitScene unitScene = unit.GetComponent(); if (!MapCoinComponent.instance.HasCoinMonster(unitScene.MapId)) { response.Message = "金币怪消失"; reply(); return; } Team team = TeamComponent.Instance.Get(unit.TeamLeaderId); LinkedList list = team.GetUnits(); bool hasCount = false; foreach (Unit u in list) { PlayerData data = u.GetComponent(); hasCount = hasCount || data.mapCoinCount > 0; } if (!hasCount) { response.Message = "没有次数了"; reply(); return; } MapCoinComponent.instance.RemoveMonster(unit.Id, unitScene.MapId); foreach (Unit u in list) { PlayerData data = u.GetComponent(); if (data.mapCoinCount <= 0) continue; data.mapCoinCount--; int count = RandomHelper.RandomArray_Len2(ConstDefine.MapCoinArr); CharacterHelper.AddMoney(u, CharacterHelper.MoneyType.Coin, count); MessageHelper.SendActor(u, new M2C_SendTip { Message = $"恭喜你获得{count}铜币" }); } reply(); await ETTask.CompletedTask; } } }