초기커밋
This commit is contained in:
374
GameServer/Contents/ItemFunction/ItemCheat.cs
Normal file
374
GameServer/Contents/ItemFunction/ItemCheat.cs
Normal file
@@ -0,0 +1,374 @@
|
||||
using Amazon.S3.Model;
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
using static ClientToGameReq.Types;
|
||||
|
||||
|
||||
using META_ID = System.UInt32;
|
||||
using Amazon.DynamoDBv2.Model;
|
||||
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
[ChatCommandAttribute("additem", typeof(ChatCommandAddItem), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandAddItem : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
|
||||
|
||||
Log.getLogger().info($"Call additem !!! - {player.toBasicString()}");
|
||||
|
||||
if (args.Length < 2)
|
||||
return;
|
||||
|
||||
if (int.TryParse(args[0], out int itemId) == false || int.TryParse(args[1], out int count) == false)
|
||||
return;
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
|
||||
var fn_item_add = async delegate ()
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
ClientToGame clientToGame = new();
|
||||
clientToGame.Response = new();
|
||||
clientToGame.Response.AddItemRes = new();
|
||||
|
||||
var inventory_action = player.getEntityAction<InventoryActionBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !! - {player.toBasicString()}");
|
||||
|
||||
(result, var add_or_updated_items) = await inventory_action.tryTakalbleToBag((uint)itemId, (ushort)count);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to tryTakalbleToBag() !!! : {result.toBasicString()} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return result;
|
||||
}
|
||||
|
||||
var batch = new QueryBatchEx<QueryRunnerWithItemRequest>(player, LogActionType.CheatCommandItem
|
||||
, server_logic.getDynamoDbClient());
|
||||
{
|
||||
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
|
||||
}
|
||||
|
||||
result = await QueryHelper.sendQueryAndBusinessLog(batch);
|
||||
if (result.isFail())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
MetaData.Instance._ItemTable.TryGetValue((int)itemId, out var itemMetaData);
|
||||
NullReferenceCheckHelper.throwIfNull(itemMetaData, () => $"item meta data is null !! - item id : {itemId}");
|
||||
|
||||
(result, _, var bag_tab_type) = inventory_action.toBagTypeAndTabType(itemMetaData);
|
||||
clientToGame.Response.AddItemRes.Index = (int)bag_tab_type + 1;
|
||||
foreach (var item in add_or_updated_items)
|
||||
{
|
||||
clientToGame.Response.AddItemRes.Item.Add(item.toItemData4Client());
|
||||
}
|
||||
|
||||
player.sendPacket(clientToGame);
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "Cheat.ItemAdd", fn_item_add);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to runTransactionRunnerSafely()!!! : {result.toBasicString()} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
}
|
||||
|
||||
await QuestManager.It.QuestCheck(player, new QuestItem(EQuestEventTargetType.ITEM, EQuestEventNameType.BOUGHT, itemId));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[ChatCommandAttribute("updateitem", typeof(ChatCommandUpdateItem), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandUpdateItem : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
|
||||
|
||||
Log.getLogger().info($"Call additem !!! - {player.toBasicString()}");
|
||||
|
||||
if (args.Length < 2)
|
||||
return;
|
||||
|
||||
if ( int.TryParse(args[0], out int item_meta_id) == false
|
||||
|| int.TryParse(args[1], out int to_change_count) == false )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (to_change_count <= 0)
|
||||
{
|
||||
err_msg = $"Invalid Item Count : 0 < toChangeCount:{to_change_count}, itemMetaId:{item_meta_id} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var db_client = server_logic.getDynamoDbClient();
|
||||
|
||||
var fn_update_item = async delegate ()
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var packet = new ClientToGame();
|
||||
packet.Response = new ClientToGameRes();
|
||||
|
||||
var ack_msg = new ClientToGameRes.Types.AddItemRes();
|
||||
packet.Response.AddItemRes = ack_msg;
|
||||
|
||||
var inventory_action = player.getEntityAction<InventoryActionBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !! - {player.toBasicString()}");
|
||||
|
||||
if (!MetaData.Instance._ItemTable.TryGetValue((int)item_meta_id, out var found_item_meta_data))
|
||||
{
|
||||
err_msg = $"Not found meta of Item !!! : itemMetaId:{item_meta_id} - {player.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.ItemMetaDataNotFound, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var found_items = inventory_action.tryGetItemAllByItemMetaId((META_ID)item_meta_id);
|
||||
if(0 >= found_items.Count)
|
||||
{
|
||||
err_msg = $"Not found Item : itemMetaId:{item_meta_id} - {player.toBasicString()}";
|
||||
result.setFail(ServerErrorCode.ItemNotFound, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var target_item = found_items[0];
|
||||
var item_attribute = target_item.getEntityAttribute<UserItemAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !! - {player.toBasicString()}");
|
||||
|
||||
item_attribute.ItemStackCount = (UInt16)Math.Min(found_item_meta_data.StackMaxCount, to_change_count);
|
||||
item_attribute.modifiedEntityAttribute();
|
||||
|
||||
var batch = new QueryBatchEx<QueryRunnerWithItemRequest>( player, LogActionType.CheatCommandItem
|
||||
, server_logic.getDynamoDbClient()
|
||||
);
|
||||
{
|
||||
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
|
||||
batch.addQuery(new QueryFinal());
|
||||
}
|
||||
|
||||
result = await QueryHelper.sendQueryAndBusinessLog(batch);
|
||||
if (result.isFail())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
player.sendPacket(packet);
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "Cheat.ItemUpdate", fn_update_item);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to runTransactionRunnerSafely()!!! : {result.toBasicString()} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ChatCommandAttribute("delitem", typeof(ChatCommandDelItem), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandDelItem : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call delitem !!! - {player.toBasicString()}");
|
||||
|
||||
if (args.Length < 2)
|
||||
return;
|
||||
|
||||
if (int.TryParse(args[0], out int itemId) == false || int.TryParse(args[1], out int count) == false)
|
||||
return;
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
|
||||
var fn_item_delete = async delegate ()
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
ClientToGame clientToGame = new();
|
||||
clientToGame.Response = new();
|
||||
clientToGame.Response.RemoveItemsRes = new();
|
||||
|
||||
var inventory_action = player.getEntityAction<InventoryActionBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"InventoryActionBase is null !!! - {player.toBasicString()}");
|
||||
|
||||
(result, var deleted_items) = await inventory_action.tryDeleteItemByMetaId((META_ID)itemId, (ushort)count);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to tryDeleteItemByMetaId() !!! : {result.toBasicString()} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return result;
|
||||
}
|
||||
|
||||
var batch = new QueryBatchEx<QueryRunnerWithDocument>(player, LogActionType.CheatCommandItem
|
||||
, server_logic.getDynamoDbClient());
|
||||
{
|
||||
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
|
||||
}
|
||||
|
||||
result = await QueryHelper.sendQueryAndBusinessLog(batch);
|
||||
if (result.isFail())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
MetaData.Instance._ItemTable.TryGetValue((int)itemId, out var itemMetaData);
|
||||
NullReferenceCheckHelper.throwIfNull(itemMetaData, () => $"itemMetaData is null !! - item id:{itemId}");
|
||||
|
||||
(result, _, var bag_tab_type) = inventory_action.toBagTypeAndTabType(itemMetaData);
|
||||
clientToGame.Response.RemoveItemsRes.Index = (int)bag_tab_type + 1;
|
||||
foreach (var item in deleted_items)
|
||||
{
|
||||
clientToGame.Response.RemoveItemsRes.Item.Add(item.toItemData4Client());
|
||||
}
|
||||
|
||||
player.sendPacket(clientToGame);
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "Cheat.ItemDelete", fn_item_delete);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to runTransactionRunnerSafely()!!! : {result.toBasicString()} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ChatCommandAttribute("megaphone", typeof(ChatCommandMegaPhone), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandMegaPhone : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
|
||||
Log.getLogger().info($"HandleMegaPhone");
|
||||
|
||||
if (args.Length < 1)
|
||||
{
|
||||
Log.getLogger().error($"Invalid Argument");
|
||||
return;
|
||||
}
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
|
||||
var receivers = server_logic.getPlayerManager().getUsers();
|
||||
foreach (var receiver in receivers)
|
||||
{
|
||||
ChatNotifyHelper.send_S2C_NTF_CHAT(receiver.Value, ChatType.Channel, player.getUserNickname(), receiver.Value.getUserNickname(), PlayerStateType.None, args[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ChatCommandAttribute("leveluptattoo", typeof(ChatCommandLevelUpTattoo), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
|
||||
internal class ChatCommandLevelUpTattoo : ChatCommandBase
|
||||
{
|
||||
public override async Task invoke(Player player, string token, string[] args)
|
||||
{
|
||||
Log.getLogger().info($"Call leveluptattoo !!! - {player.toBasicString()}");
|
||||
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
if (args.Length < 1)
|
||||
{
|
||||
err_msg = $"Not enough argument !!! : argCount:{args.Length} == 1 - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var param = args[0];
|
||||
if (true == param.isNullOrWhiteSpace())
|
||||
{
|
||||
err_msg = $"Arg 1 is Empty !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if(false == int.TryParse(param, out var slot_no))
|
||||
{
|
||||
err_msg = $"Failed to TryParse() !!! - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var tatoo_slot_type = (TattooSlotType)slot_no;
|
||||
|
||||
var user_inventory_action = player.getEntityAction<UserInventoryAction>();
|
||||
NullReferenceCheckHelper.throwIfNull(user_inventory_action, () => $"user_inventory_action is null !!! - {player.toBasicString()}");
|
||||
|
||||
user_inventory_action.getEquipInvens().TryGetValue(InvenEquipType.Tattoo, out var found_equip_inven);
|
||||
NullReferenceCheckHelper.throwIfNull(found_equip_inven, () => $"found_equip_inven is null !!! - {player.toBasicString()}");
|
||||
|
||||
var tattoo_inven = found_equip_inven as TattooEquipInven;
|
||||
NullReferenceCheckHelper.throwIfNull(tattoo_inven, () => $"tattoo_inven is null !!! - {player.toBasicString()}");
|
||||
|
||||
var tattoo_inven_data = tattoo_inven.getData();
|
||||
NullReferenceCheckHelper.throwIfNull(tattoo_inven_data, () => $"tattoo_inven_data is null !!! - {player.toBasicString()}");
|
||||
|
||||
var found_tattoo = tattoo_inven_data.findEntityBaseInSlotType(tatoo_slot_type);
|
||||
if(null == found_tattoo)
|
||||
{
|
||||
err_msg = $"Not found Tattoo !!! : tattooSlotType:{tatoo_slot_type} - {player.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return;
|
||||
}
|
||||
|
||||
var item_attribute = found_tattoo.getOriginEntityAttribute<ItemAttributeBase>();
|
||||
NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {player.toBasicString()}");
|
||||
|
||||
var tattoo_item_guid = item_attribute.ItemGuid;
|
||||
|
||||
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 LevelUpTattooReq();
|
||||
packet.Request.LevelUpTattooReq = request;
|
||||
request.ItemGuid = tattoo_item_guid;
|
||||
|
||||
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