초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
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;
}
}
}