189 lines
7.2 KiB
C#
189 lines
7.2 KiB
C#
using System.Collections.Concurrent;
|
|
|
|
|
|
using Amazon.S3.Model;
|
|
|
|
|
|
using ServerCore; using ServerBase;
|
|
using ServerCommon;
|
|
|
|
|
|
using static ClientToGameReq.Types;
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
|
|
[ChatCommandAttribute("charappearcustom", typeof(ChatCharacterCustomize), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
|
public class ChatCharacterCustomize : ChatCommandBase
|
|
{
|
|
public override async Task invoke(Player player, string token, string[] args)
|
|
{
|
|
Log.getLogger().info($"Call charappearcustom !!! - {player.toBasicString()}");
|
|
|
|
var result = new Result();
|
|
var err_msg = string.Empty;
|
|
|
|
if (args.Length < 3)
|
|
{
|
|
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 1 - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
var read_params = new List<int>();
|
|
for (var i = 0; i < 3; i++)
|
|
{
|
|
var param = args[i];
|
|
if (true == param.isNullOrWhiteSpace())
|
|
{
|
|
err_msg = $"Arg {i} is Empty !!! - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
if (false == int.TryParse(param, out var value))
|
|
{
|
|
err_msg = $"Failed to TryParse() !!! - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
read_params.Add(value);
|
|
}
|
|
|
|
var player_action = player.getEntityAction<PlayerAction>();
|
|
NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
|
|
|
|
var selected_character = player_action.getSelectedCharacter();
|
|
NullReferenceCheckHelper.throwIfNull(selected_character, () => $"selected_character is null !!!");
|
|
|
|
var character_attribute = selected_character.getEntityAttribute<CharacterAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(character_attribute, () => $"character_attribute is null !!!");
|
|
|
|
var to_change_character_guid = character_attribute.CharacterGuid;
|
|
|
|
var appearance_customize = new AppearanceCustomization();
|
|
appearance_customize.BasicStyle = read_params[0];
|
|
appearance_customize.BodyShape = read_params[1];
|
|
appearance_customize.HairStyle = read_params[2];
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
|
|
|
|
var session = player as IEntityWithSession;
|
|
NullReferenceCheckHelper.throwIfNull(session, () => $"session is null !!! - {player.toBasicString()}");
|
|
|
|
//=====================================================================================
|
|
// 패킷 구성
|
|
//=====================================================================================
|
|
var packet = new ClientToGame();
|
|
packet.Request = new ClientToGameReq();
|
|
var req_msg = new C2GS_REQ_CHARACTER_APPEARANCE_CUSTOMIZE();
|
|
packet.Request.ReqCharacterAppearanceCustomize = req_msg;
|
|
|
|
req_msg.ToChangeCharacterGuid = to_change_character_guid;
|
|
req_msg.ToApplyAppearCustomize = appearance_customize;
|
|
|
|
result = await server_logic.onCallProtocolHandler(session, packet);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to onCallProtocolHandler() !!! : {result.toBasicString()} - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[ChatCommandAttribute("beaconappearcustom", typeof(BeaconCharacterCustomize), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
|
public class BeaconCharacterCustomize : ChatCommandBase
|
|
{
|
|
public override async Task invoke(Player player, string token, string[] args)
|
|
{
|
|
Log.getLogger().info($"Call beaconappearcustom !!! - {player.toBasicString()}");
|
|
|
|
var result = new Result();
|
|
var err_msg = string.Empty;
|
|
|
|
if (args.Length < 3)
|
|
{
|
|
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 1 - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
var read_params = new List<int>();
|
|
for (var i = 0; i < 3; i++)
|
|
{
|
|
var param = args[i];
|
|
if (true == param.isNullOrWhiteSpace())
|
|
{
|
|
err_msg = $"Arg {i} is Empty !!! - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
if (false == int.TryParse(param, out var value))
|
|
{
|
|
err_msg = $"Failed to TryParse() !!! - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
read_params.Add(value);
|
|
}
|
|
|
|
var player_action = player.getEntityAction<PlayerAction>();
|
|
NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
|
|
|
|
var had_ugc_npcs = player_action.getHadUgcNpcs().Values.ToList();
|
|
NullReferenceCheckHelper.throwIfNull(had_ugc_npcs, () => $"had_ugc_npcs is null !!!");
|
|
|
|
if(0 >= had_ugc_npcs.Count)
|
|
{
|
|
err_msg = $"Had not Beacon !!! : 0 < hadCount:{had_ugc_npcs.Count} - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
|
|
var selected_seq = RandomHelper.next(0, had_ugc_npcs.Count() - 1);
|
|
|
|
var selected_ugc_npc = had_ugc_npcs[selected_seq];
|
|
|
|
var beacon_attribute = selected_ugc_npc.getEntityAttribute<UgcNpcAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!");
|
|
|
|
var to_change_beacon_meta_guid = beacon_attribute.UgcNpcMetaGuid;
|
|
|
|
var appearance_customize = new AppearanceCustomization();
|
|
appearance_customize.BasicStyle = read_params[0];
|
|
appearance_customize.BodyShape = read_params[1];
|
|
appearance_customize.HairStyle = read_params[2];
|
|
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
|
|
|
|
var session = player as IEntityWithSession;
|
|
NullReferenceCheckHelper.throwIfNull(session, () => $"session is null !!! - {player.toBasicString()}");
|
|
|
|
//=====================================================================================
|
|
// 패킷 구성
|
|
//=====================================================================================
|
|
var packet = new ClientToGame();
|
|
packet.Request = new ClientToGameReq();
|
|
var req_msg = new C2GS_REQ_BEACON_APPEARANCE_CUSTOMIZE();
|
|
packet.Request.ReqBeaconAppearanceCustomize = req_msg;
|
|
|
|
req_msg.ToChangeUgcNpcMetaGuid = to_change_beacon_meta_guid;
|
|
req_msg.ToApplyAppearCustomize = appearance_customize;
|
|
|
|
result = await server_logic.onCallProtocolHandler(session, packet);
|
|
if (result.isFail())
|
|
{
|
|
err_msg = $"Failed to onCallProtocolHandler() !!! : {result.toBasicString()} - {player.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return;
|
|
}
|
|
}
|
|
} |