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(); 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( 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(); 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; } }