초기커밋
This commit is contained in:
324
GameServer/Contents/UgcNpc/UgcNpcCheat.cs
Normal file
324
GameServer/Contents/UgcNpc/UgcNpcCheat.cs
Normal file
@@ -0,0 +1,324 @@
|
||||
using ServerCommon;
|
||||
using ServerCore; using ServerBase;
|
||||
using META_ID = System.UInt32;
|
||||
using ITEM_GUID = System.String;
|
||||
using static ClientToGameReq.Types;
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
[ChatCommandAttribute("ugcnpccreate", typeof(ChatCommandUgcNpcCreate), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandUgcNpcCreate : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call ugcnpccreate !!! - {player.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (args.Length < 3)
|
||||
{
|
||||
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 3 - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( false == int.TryParse(args[1], out int body_item_meta_id)
|
||||
|| false == bool.TryParse(args[2], out bool is_show_tattoo )
|
||||
)
|
||||
{
|
||||
err_msg = $"Invalid argument !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var nickname = args[0];
|
||||
if (true == nickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Nickname is empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var user_inventory_action = player.getEntityAction<UserInventoryAction>();
|
||||
NullReferenceCheckHelper.throwIfNull(user_inventory_action, () => $"user_inventory_action is null !!! - {player.toBasicString()}");
|
||||
|
||||
var found_body_items = user_inventory_action.tryGetItemAllByItemMetaId((META_ID)body_item_meta_id);
|
||||
if (0 >= found_body_items.Count)
|
||||
{
|
||||
err_msg = $"Not found Body Item !!! : bodyItemMetaId:{body_item_meta_id} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var item_attribute_base = found_body_items[0].getEntityAttribute<ItemAttributeBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(item_attribute_base, () => $"item_attribute_base is null !!! - {player.toBasicString()}");
|
||||
var body_item_guid = item_attribute_base.ItemGuid;
|
||||
|
||||
|
||||
var cloth_item_guids = new List<ITEM_GUID>();
|
||||
var cloth_item_sample_meta_ids = new List<META_ID>() { 15230180, 15231430, 15230420, 15131035 };
|
||||
foreach (var cloth_item_meta_id in cloth_item_sample_meta_ids)
|
||||
{
|
||||
var found_cloth_items = user_inventory_action.tryGetItemAllByItemMetaId(cloth_item_meta_id);
|
||||
if (0 >= found_cloth_items.Count)
|
||||
{
|
||||
err_msg = $"Not found Cloth Item !!! : clothItemMetaId:{cloth_item_meta_id} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
item_attribute_base = found_cloth_items[0].getEntityAttribute<ItemAttributeBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(item_attribute_base, () => $"item_attribute_base is null !!! - {player.toBasicString()}");
|
||||
var cloth_item_guid = item_attribute_base.ItemGuid;
|
||||
|
||||
cloth_item_guids.Add(cloth_item_guid);
|
||||
}
|
||||
|
||||
var tattoo_item_guids = new List<ITEM_GUID>();
|
||||
var tattoo_item_sample_meta_ids = new List<META_ID>() { 11851003, 11851005, 11851008 };
|
||||
foreach (var tattoo_item_meta_id in tattoo_item_sample_meta_ids)
|
||||
{
|
||||
var found_tattoo_items = user_inventory_action.tryGetItemAllByItemMetaId(tattoo_item_meta_id);
|
||||
if (0 >= found_tattoo_items.Count)
|
||||
{
|
||||
err_msg = $"Not found Tattoo Item !!! : tattooItemMetaId:{tattoo_item_meta_id} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
item_attribute_base = found_tattoo_items[0].getEntityAttribute<ItemAttributeBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(item_attribute_base, () => $"item_attribute_base is null !!! - {player.toBasicString()}");
|
||||
var tattoo_item_guid = item_attribute_base.ItemGuid;
|
||||
|
||||
tattoo_item_guids.Add(tattoo_item_guid);
|
||||
}
|
||||
|
||||
var default_action_sample_meta_id = 110004;
|
||||
var social_action_sample_meta_ids = new List<META_ID>() { 110009, 110013, 110017 };
|
||||
var dialogue_social_action_sample_meta_ids = new List<META_ID>() { 110054 };
|
||||
|
||||
var beacon_tag_meta_ids = new List<META_ID>() { 1, 2, 3, 4, 5, 6, 7 };
|
||||
|
||||
var tattoo_slot_visibles = is_show_tattoo == true
|
||||
? new Dictionary<int, BoolType>() { { (int)TattooSlotType._1, BoolType.True }, { (int)TattooSlotType._2, BoolType.True }, { (int)TattooSlotType._3, BoolType.True } }
|
||||
: new Dictionary<int, BoolType>() { { (int)TattooSlotType._1, BoolType.False }, { (int)TattooSlotType._2, BoolType.False }, { (int)TattooSlotType._3, BoolType.False } };
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
|
||||
var db_connector = server_logic.getDynamoDbClient();
|
||||
NullReferenceCheckHelper.throwIfNull(db_connector, () => $"db_connector 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 request = new C2GS_REQ_UGC_NPC_CREATION();
|
||||
packet.Request.ReqUgcNpcCreation = request;
|
||||
|
||||
request.Nickname = nickname;
|
||||
request.Title = "Test Ugc Npc by Cheat !!!";
|
||||
request.Description = "I AI Ugc Npc !!!";
|
||||
request.WorldScenario = "good luck !!!";
|
||||
request.BodyItemGuid = body_item_guid;
|
||||
|
||||
request.MaterialItemGuids.AddRange(cloth_item_guids);
|
||||
request.MaterialItemGuids.AddRange(tattoo_item_guids);
|
||||
|
||||
request.DefaultSocialActionId = default_action_sample_meta_id;
|
||||
request.HabitSocialActionIds.AddRange(social_action_sample_meta_ids.Select(x => (int)x).ToList());
|
||||
request.DialogueSocialActionIds.AddRange(dialogue_social_action_sample_meta_ids.Select(x => (int)x).ToList());
|
||||
|
||||
request.TattooSlotVisibles.Add(tattoo_slot_visibles.toMapField());
|
||||
request.HashTagMetaIds.Add(beacon_tag_meta_ids.Select(x => (int)x).ToList());
|
||||
|
||||
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("ugcnpcdelete", typeof(ChatCommandUgcNpcDelete), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandUgcNpcDelete : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call ugcnpcdelete !!! - {player.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (args.Length < 1)
|
||||
{
|
||||
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 3 - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var to_delete_nickname = args[0];
|
||||
if (true == to_delete_nickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"To delete Nickname is empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var player_action = player.getEntityAction<PlayerAction>();
|
||||
NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
|
||||
|
||||
result = await player_action.tryDeleteUgcNpc(to_delete_nickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ChatCommandAttribute("ugcnpclikecheck", typeof(ChatCommandUgcNpcLikeCheck), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandUgcNpcLikeCheck : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call ugcnpclikecheck !!! - {player.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (args.Length < 2)
|
||||
{
|
||||
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 2 - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var target_user_nickname = args[0];
|
||||
if (true == target_user_nickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"target_user_nickname is empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var target_ugc_npc_nickname = args[1];
|
||||
if (true == target_ugc_npc_nickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"target_ugc_npc_nickname is empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
|
||||
var db_connector = server_logic.getDynamoDbClient();
|
||||
NullReferenceCheckHelper.throwIfNull(db_connector, () => $"db_connector is null !!! - {player.toBasicString()}");
|
||||
|
||||
(result, var found_user_info) = await EntitySearchHelper.findUserInfoByUserNickname(db_connector, target_user_nickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to findUserInfoByUserNickname() !!! : userNickname:{target_user_nickname} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_user_info, () => $"found_user_info is null !!! - {player.toBasicString()}");
|
||||
|
||||
(result, var found_ugc_npc_info) = await EntitySearchHelper.findUgcNpcInfoByUgcNpcNickname(db_connector
|
||||
, OwnerEntityType.User, found_user_info.UserGuid
|
||||
, target_ugc_npc_nickname);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to findUgcNpcInfoByUgcNpcNickname() !!! : userNickname:{target_user_nickname} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(found_ugc_npc_info, () => $"found_ugc_npc_info 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 request = new C2GS_REQ_UGC_NPC_LIKE();
|
||||
packet.Request.ReqUgcNpcLike = request;
|
||||
request.NpcGuid = found_ugc_npc_info.UgcNpcAttrib.UgcNpcMetaGuid;
|
||||
request.OwnerGuid = found_ugc_npc_info.UgcNpcAttrib.OwnerGuid;
|
||||
|
||||
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("beaconsell", typeof(ChatCommandBeaconSell), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandBeaconSell : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call beaconsell !!! - {player.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (args.Length < 1)
|
||||
{
|
||||
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 3 - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var to_sell_nickname = args[0];
|
||||
if (true == to_sell_nickname.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"To sell Nickname is empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var player_action = player.getEntityAction<PlayerAction>();
|
||||
NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
|
||||
|
||||
|
||||
var found_ugc_npc = player_action.findUgcNpcByNickname(to_sell_nickname);
|
||||
if(null == found_ugc_npc)
|
||||
{
|
||||
err_msg = $"Not found Beacon !!! : beaconNickName:{to_sell_nickname} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
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 request = new C2GS_REQ_BEACON_SELL();
|
||||
packet.Request.ReqBeaconSell = request;
|
||||
request.ToSellUgcNpcMetaGuid = found_ugc_npc.getUgcNpcMetaGuid();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user