Files
2025-05-01 07:20:41 +09:00

117 lines
4.5 KiB
C#

using ServerCommon;
using ServerCore; using ServerBase;
namespace GameServer;
[ChatCommandAttribute("currencymodify", typeof(ChatCommandModifyCurrency), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
internal class ChatCommandModifyCurrency : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
{
Log.getLogger().info($"Call currencymodify !!! - {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;
}
if (int.TryParse(args[0], out int currency_type) == false || double.TryParse(args[1], out double amount) == false)
{
err_msg = $"Invalid argument !!! - {player.toBasicString()}";
Log.getLogger().error(err_msg);
return;
}
if ((CurrencyType)currency_type == CurrencyType.Beam)
{
err_msg = $"Invalid CurrencyType !!! : {currency_type} - {player.toBasicString()}";
Log.getLogger().error(err_msg);
return;
}
var server_logic = GameServerApp.getServerLogic();
NullReferenceCheckHelper.throwIfNull(player, () => $"server_logic is null !! - {player.toBasicString()}");
var fn_currency_modify = async delegate ()
{
var result = new Result();
var err_msg = string.Empty;
ClientToGame clientToGame = new();
clientToGame.Response = new();
clientToGame.Response.GetCurrencyInfoRes = new();
var money_action = player.getEntityAction<MoneyAction>();
NullReferenceCheckHelper.throwIfNull(money_action, () => $"money_action is null !!! - {player.toBasicString()}");
result = await money_action.changeMoney((CurrencyType)currency_type, amount, true, false);
if(result.isFail())
{
err_msg = $"Failed to changeMoney() !!! : {result.toBasicString()} - {player.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var batch = new QueryBatchEx<QueryRunnerWithDocument>( player, LogActionType.MoneyChange
, server_logic.getDynamoDbClient());
{
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
}
result = await QueryHelper.sendQueryAndBusinessLog(batch);
if (result.isFail())
{
return result;
}
clientToGame.Response.GetCurrencyInfoRes.CurrencyInfo = money_action.toCurrency4Client();
player.sendPacket(clientToGame);
return result;
};
result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "Cheat.CurrencyModify", fn_currency_modify);
if (result.isFail())
{
err_msg = $"Failed to runTransactionRunnerSafely()!!! : {result.toBasicString()} - {player.toBasicString()}";
Log.getLogger().error(err_msg);
}
}
}
[ChatCommandAttribute("beamcharge", typeof(ChatCommandBeamCharge), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
internal class ChatCommandBeamCharge : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
{
Log.getLogger().info($"Call beamcharge !!! - {player.toBasicString()}");
if (args.Length < 1)
return;
if (int.TryParse(args[0], out int amount) == false)
return;
var result = new Result();
var err_msg = string.Empty;
var ai_chat_action = player.getEntityAction<AIChatAction>();
NullReferenceCheckHelper.throwIfNull(ai_chat_action, () => $"money_action is null !!! - {player.toBasicString()}");
var order_guid = Guid.NewGuid().ToString("N");
result = await ai_chat_action.pointCharge(new AIChatPointCharge() { userGuid = player.getUserGuid(), points = amount, orderGuid = order_guid, pointType = ServerCommon.Constant.AI_CHAT_FREE_POINT, description = "Cheat Beam" });
if (result.isSuccess())
{
MoneyNotifyHelper.send_GS2C_NTF_BEAM_CHARGE(player);
}
return;
}
}