180 lines
6.1 KiB
C#
180 lines
6.1 KiB
C#
using Nettention.Proud;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
|
|
|
|
|
|
[ChatCommandAttribute("battleinstanceinit", typeof(CheatBattleInstanceInit), AuthAdminLevelType.Developer,
|
|
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
|
public class CheatBattleInstanceInit : ChatCommandBase
|
|
{
|
|
public override async Task invoke(Player player, string token, string[] args)
|
|
{
|
|
Log.getLogger().info($"battleinstanceinit");
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
|
|
var room_id = player.getCurrentInstanceRoomId();
|
|
if (room_id.Equals(string.Empty))
|
|
{
|
|
Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only use in instance");
|
|
return;
|
|
}
|
|
|
|
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
|
|
if (battle_instance_room is null)
|
|
{
|
|
Log.getLogger().error($"cheat:battleinstanceinit.... battle_instance_room is null room_id : {room_id}");
|
|
return;
|
|
}
|
|
|
|
using (var releaser = await battle_instance_room.getAsyncLock())
|
|
{
|
|
var attribute = battle_instance_room.getEntityAttribute<BattleInstanceSnapshotAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!");
|
|
|
|
if (false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) &&
|
|
false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.Destroyed))
|
|
{
|
|
Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only RoundEndAll room_id : {room_id}");
|
|
return;
|
|
}
|
|
|
|
var now = DateTimeHelper.Current;
|
|
battle_instance_room.setEventStartTime(now);
|
|
|
|
attribute.m_combat_pod_mode.m_round_state_type = BattleRoundStateType.Rounding;
|
|
attribute.m_combat_pod_mode.m_current_state_start_time = now;
|
|
attribute.m_combat_pod_mode.m_current_round = 1;
|
|
attribute.m_combat_pod_mode.m_charged_step = 0;
|
|
attribute.m_combat_pod_mode.m_rewarded_step = 0;
|
|
|
|
attribute.m_combat_pod_mode.m_pod_combat.setActive(now);
|
|
|
|
|
|
(Result result, var anchor_guid) =
|
|
BattleRoomHelper.getRandomCombatPodAnchorGuid(attribute, battle_instance_room);
|
|
if (result.isFail())
|
|
{
|
|
Log.getLogger().error("get Random pod combat anchor guid faile !!! ");
|
|
return;
|
|
}
|
|
|
|
attribute.m_combat_pod_mode.m_pod_combat.m_source_storage_anchor_guid = anchor_guid;
|
|
|
|
BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(battle_instance_room);
|
|
|
|
var update_action = battle_instance_room.getEntityAction<BattleInstanceUpdateAction>();
|
|
NullReferenceCheckHelper.throwIfNull(update_action, () => $"attribute is null !!!");
|
|
update_action.battleObjectStateInitAndNotify(battle_instance_room, attribute);
|
|
|
|
BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(battle_instance_room);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ChatCommandAttribute("gamemodeoccupyhost", typeof(BattleHostOccupy), AuthAdminLevelType.Developer,
|
|
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
|
public class BattleHostOccupy : ChatCommandBase
|
|
{
|
|
public override async Task invoke(Player player, string token, string[] args)
|
|
{
|
|
//Log.getLogger().info($"battleinstanceinit");
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
|
|
var room_id = player.getCurrentInstanceRoomId();
|
|
if (room_id.Equals(string.Empty))
|
|
{
|
|
Log.getLogger().error($"cheat:gamemodeoccupyhost.... this cheat only use in instance");
|
|
return;
|
|
}
|
|
|
|
|
|
//kihoon todo : 임시 분기 처리
|
|
//나중에 게임모드로 분리되면 그때 재작업
|
|
if (room_id.Contains("battle"))
|
|
{
|
|
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
|
|
if (battle_instance_room is null)
|
|
{
|
|
Log.getLogger().error($"cheat:gamemodeoccupyhost.... battle_instance_room is null room_id : {room_id}");
|
|
return;
|
|
}
|
|
|
|
using (var releaser = await battle_instance_room.getAsyncLock())
|
|
{
|
|
battle_instance_room.m_host_migrator.modifyHost(player.getUserGuid());
|
|
}
|
|
|
|
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battle_instance_room.m_instance_room,
|
|
player.getUserGuid());
|
|
}
|
|
else if (room_id.Contains("1017101"))
|
|
{
|
|
var instance_room = InstanceRoomManager.Instance.getInstanceRoomByRoomId(room_id);
|
|
if (instance_room is null)
|
|
{
|
|
Log.getLogger().error($"cheat:gamemodeoccupyhost.... instance_room is null room_id : {room_id}");
|
|
return;
|
|
}
|
|
|
|
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(instance_room, player.getUserGuid());
|
|
}
|
|
}
|
|
}
|
|
|
|
//======================================================================================================================
|
|
//
|
|
//======================================================================================================================
|
|
[ChatCommandAttribute("gamehostmigration", typeof(BattleHostMigration), AuthAdminLevelType.Developer,
|
|
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
|
public class BattleHostMigration : ChatCommandBase
|
|
{
|
|
public override async Task invoke(Player player, string token, string[] args)
|
|
{
|
|
Log.getLogger().info($"gamehostmigration");
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
|
|
var room_id = player.getCurrentInstanceRoomId();
|
|
if (room_id.Equals(string.Empty))
|
|
{
|
|
Log.getLogger().error($"cheat:gamehostmigration.... this cheat only use in instance");
|
|
return;
|
|
}
|
|
|
|
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
|
|
if (battle_instance_room is null)
|
|
{
|
|
Log.getLogger().error($"cheat:gamehostmigration.... battle_instance_room is null room_id : {room_id}");
|
|
return;
|
|
}
|
|
|
|
using var releaser = await battle_instance_room.getAsyncLock();
|
|
if (battle_instance_room.m_host_migrator is CommonHostMigrator common_hot_migrator)
|
|
{
|
|
common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(true);
|
|
common_hot_migrator.migrateCheck(true);
|
|
var super_peer_guid_id = common_hot_migrator.getHostUserGuid();
|
|
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(
|
|
battle_instance_room.m_instance_room, super_peer_guid_id);
|
|
common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(false);
|
|
}
|
|
else
|
|
{
|
|
Log.getLogger()
|
|
.error(
|
|
$"cheat:gamehostmigration.... battle_instance_room is not CommonHostMigrator room_id : {room_id}");
|
|
}
|
|
}
|
|
}
|