|
@@ -1,31 +1,122 @@
|
|
|
using System;
|
|
|
+using System.Security.AccessControl;
|
|
|
|
|
|
|
|
|
namespace ET.Server
|
|
|
{
|
|
|
- [MessageHandler(SceneType.Gate)]
|
|
|
- public class C2G_EnterMapHandler : AMRpcHandler<C2G_EnterMap, G2C_EnterMap>
|
|
|
- {
|
|
|
- protected override async ETTask Run(Session session, C2G_EnterMap request, G2C_EnterMap response, Action reply)
|
|
|
- {
|
|
|
- Player player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
|
|
|
-
|
|
|
-
|
|
|
- GateMapComponent gateMapComponent = player.AddComponent<GateMapComponent>();
|
|
|
- gateMapComponent.Scene = await SceneFactory.CreateServerScene(gateMapComponent, player.Id, IdGenerater.Instance.GenerateInstanceId(), gateMapComponent.DomainZone(), "GateMap", SceneType.Map);
|
|
|
-
|
|
|
- Scene scene = gateMapComponent.Scene;
|
|
|
-
|
|
|
-
|
|
|
- Unit unit = Server.UnitFactory.Create(scene, player.Id, UnitType.Player);
|
|
|
- unit.AddComponent<UnitGateComponent, long>(session.InstanceId);
|
|
|
-
|
|
|
- StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.GetBySceneName(session.DomainZone(), "Map1");
|
|
|
- response.MyId = player.Id;
|
|
|
- reply();
|
|
|
-
|
|
|
-
|
|
|
- await TransferHelper.Transfer(unit, startSceneConfig.InstanceId, startSceneConfig.Name);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+ [MessageHandler(SceneType.Gate)]
|
|
|
+ [FriendOfAttribute(typeof(ET.Server.BattleIceAgentComponent))]
|
|
|
+ public class C2G_EnterMapHandler : AMRpcHandler<C2G_EnterMap, G2C_EnterMap>
|
|
|
+ {
|
|
|
+ protected override async ETTask Run(Session session, C2G_EnterMap request, G2C_EnterMap response, Action reply)
|
|
|
+ {
|
|
|
+ if(BattleIceAgentComponent.Instance == null)
|
|
|
+ {
|
|
|
+ response.Error = (int)ErrorCode.EnterMap.BattleSvrErr;
|
|
|
+ reply();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.GetBySceneName(session.DomainZone(), request.MapName);
|
|
|
+ if (startSceneConfig == null)
|
|
|
+ {
|
|
|
+ response.Error = (int)ErrorCode.EnterMap.MapNotExist;
|
|
|
+ reply();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Player player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
|
|
|
+
|
|
|
+
|
|
|
+ GateMapComponent gateMapComponent = player.AddComponent<GateMapComponent>();
|
|
|
+ gateMapComponent.Scene = await SceneFactory.CreateServerScene(gateMapComponent, player.Id, IdGenerater.Instance.GenerateInstanceId(), gateMapComponent.DomainZone(), "GateMap", SceneType.Map);
|
|
|
+ Scene scene = gateMapComponent.Scene;
|
|
|
+
|
|
|
+
|
|
|
+ Unit unit = Server.UnitFactory.Create(scene, player.Id, UnitType.Player);
|
|
|
+ unit.AddComponent<UnitGateComponent, long>(session.InstanceId);
|
|
|
+
|
|
|
+ var scnInstance = scene.InstanceId.ToString();
|
|
|
+
|
|
|
+
|
|
|
+ var IceZone = BattleIceAgentComponent.Instance.IceZoneManager;
|
|
|
+ var ret = IceZone.createZoneRequest("", Global.GameServerId.ToString(), startSceneConfig.TemplateId, scnInstance, false, toJSON4CreateZone());
|
|
|
+ Log.Info($"Battle ice createZoneRequest ret: {ret}");
|
|
|
+
|
|
|
+
|
|
|
+ if (BattleIceAgentComponent.Instance == null)
|
|
|
+ {
|
|
|
+ Log.Error("Battle ice is null");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ IceZone.begin_playerEnterRequest(player.Id.ToString(), scnInstance, toJSON4EnterScene(ref player)).whenCompleted((Ice.Exception ex) => {
|
|
|
+ Log.Error(ex.Message);
|
|
|
+ });
|
|
|
+
|
|
|
+ response.MyId = player.Id;
|
|
|
+ reply();
|
|
|
+
|
|
|
+
|
|
|
+ await TransferHelper.Transfer(unit, startSceneConfig.InstanceId, startSceneConfig.Name);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private string toJSON4CreateZone()
|
|
|
+ {
|
|
|
+
|
|
|
+ var json = new
|
|
|
+ {
|
|
|
+ monsterHard = "",
|
|
|
+ calPKValue = false,
|
|
|
+ allowAutoGuard = 1,
|
|
|
+ usespaceDiv = false,
|
|
|
+ sceneType = 1,
|
|
|
+ areaType = 0,
|
|
|
+ canRiding = false,
|
|
|
+ killInterval = 5000,
|
|
|
+ killFullNum = 0,
|
|
|
+ killFullCollSec = 0,
|
|
|
+ averageLevel = 0,
|
|
|
+ };
|
|
|
+ return System.Text.Json.JsonSerializer.Serialize(json);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private string toJSON4EnterScene(ref Player info)
|
|
|
+ {
|
|
|
+ var json = new
|
|
|
+ {
|
|
|
+ effects = "",
|
|
|
+ effectsExt = "",
|
|
|
+ skills = "",
|
|
|
+ basic = new
|
|
|
+ {
|
|
|
+ name = "nickname",
|
|
|
+ alliesForce = 0,
|
|
|
+ force = 0,
|
|
|
+ pro = 1,
|
|
|
+ serverId = 0,
|
|
|
+ level = 1,
|
|
|
+ vip = 0,
|
|
|
+ upLevel = 1,
|
|
|
+ sex = 0,
|
|
|
+ uuid = info.Id.ToString(),
|
|
|
+ },
|
|
|
+ connectServerId = "bs-" + Global.GameServerId.ToString(),
|
|
|
+ avatars = "",
|
|
|
+ uid = info.Id.ToString(),
|
|
|
+ unitTemplateID = 1,
|
|
|
+
|
|
|
+ hp = 1000,
|
|
|
+ mp = 0,
|
|
|
+
|
|
|
+ sceneData = new
|
|
|
+ {
|
|
|
+ allowAutoGuard = 1,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ return System.Text.Json.JsonSerializer.Serialize(json);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|