테이블 안티 메모리 2

This commit is contained in:
Ino 2024-12-18 12:55:08 +09:00
parent c05daebdeb
commit 2b7ad204a3
8 changed files with 468 additions and 73 deletions

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -7,12 +8,48 @@ using Random = UnityEngine.Random;
[Serializable]
public class EnchantListTableData : TableDataBase
{
public int n_EnchantID; // 인첸트 아이템 고유 ID
public int n_OptionConfigID1; // 옵션 컨피그 ID1
public int n_OptionConfigID2; // 옵션 컨피그 ID2
public int n_OptionConfigID3; // 옵션 컨피그 ID3
public int n_OptionConfigID4; // 옵션 컨피그 ID4
public int n_FruitID; // 심었을 때 획득할 수 있는 열매
ObscuredInt _EnchantID;
public int n_EnchantID
{
get { return _EnchantID; }
set { _EnchantID = value; _EnchantID.RandomizeCryptoKey(); }
} // 인첸트 아이템 고유 ID
ObscuredInt _OptionConfigID1;
public int n_OptionConfigID1
{
get { return _OptionConfigID1; }
set { _OptionConfigID1 = value; _OptionConfigID1.RandomizeCryptoKey(); }
} // 옵션 컨피그 ID1
ObscuredInt _OptionConfigID2;
public int n_OptionConfigID2
{
get { return _OptionConfigID2; }
set { _OptionConfigID2 = value; _OptionConfigID2.RandomizeCryptoKey(); }
} // 옵션 컨피그 ID2
ObscuredInt _OptionConfigID3;
public int n_OptionConfigID3
{
get { return _OptionConfigID3; }
set { _OptionConfigID3 = value; _OptionConfigID3.RandomizeCryptoKey(); }
} // 옵션 컨피그 ID3
ObscuredInt _OptionConfigID4;
public int n_OptionConfigID4
{
get { return _OptionConfigID4; }
set { _OptionConfigID4 = value; _OptionConfigID4.RandomizeCryptoKey(); }
} // 옵션 컨피그 ID4
ObscuredInt _FruitID;
public int n_FruitID
{
get { return _FruitID; }
set { _FruitID = value; _FruitID.RandomizeCryptoKey(); }
} // 심었을 때 획득할 수 있는 열매
public override string Get_Name() { return table_itemlist.Ins.Get_Data(n_EnchantID).Get_Name(); }
public string Get_FruitName() { return table_itemlist.Ins.Get_Data(n_FruitID).Get_Name(); }

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -7,10 +8,34 @@ using Random = UnityEngine.Random;
[Serializable]
public class EnchantGradeConfigTableData : TableDataBase
{
public int n_EnchantGrade; // 인첸트 등급
public int n_OptionLevelMin; // 최소 옵션 레벨
public int n_OptionLevelMax; // 최대 옵션 레벨
public string s_Color;
ObscuredInt _EnchantGrade;
public int n_EnchantGrade
{
get { return _EnchantGrade; }
set { _EnchantGrade = value; _EnchantGrade.RandomizeCryptoKey(); }
} // 인첸트 등급
ObscuredInt _OptionLevelMin;
public int n_OptionLevelMin
{
get { return _OptionLevelMin; }
set { _OptionLevelMin = value; _OptionLevelMin.RandomizeCryptoKey(); }
} // 최소 옵션 레벨
ObscuredInt _OptionLevelMax;
public int n_OptionLevelMax
{
get { return _OptionLevelMax; }
set { _OptionLevelMax = value; _OptionLevelMax.RandomizeCryptoKey(); }
} // 최대 옵션 레벨
ObscuredString _Color;
public string s_Color
{
get { return _Color; }
set { _Color = value; _Color.RandomizeCryptoKey(); }
} // 색상
public Color GradeColor;
}

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -7,17 +8,83 @@ using UnityEngine;
[Serializable]
public class EnchantRateTableData : TableDataBase
{
public int n_EnchantLv; // 인첸트 레벨
public int n_NextLvRequireCount; // 레벨업에 필요한 횟수
public int n_GachaGradeRate1; // Grade1 아이템의 드랍 확률 (일반)
public int n_GachaGradeRate2; // Grade2 아이템의 드랍 확률 (고급)
public int n_GachaGradeRate3; // Grade3 아이템의 드랍 확률 (희귀)
public int n_GachaGradeRate4; // Grade4 아이템의 드랍 확률 (영웅)
public int n_GachaGradeRate5; // Grade5 아이템의 드랍 확률 (전설)
public int n_GachaGradeRate6; // Grade6 아이템의 드랍 확률 (고대)
public int n_GachaGradeRate7; // Grade7 아이템의 드랍 확률 (신화)
public int n_GachaGradeRate8; // Grade8 아이템의 드랍 확률 (불멸)
public int n_GachaGradeRate9; // Grade9 아이템의 드랍 확률 (유일)
ObscuredInt _EnchantLv;
public int n_EnchantLv
{
get { return _EnchantLv; }
set { _EnchantLv = value; _EnchantLv.RandomizeCryptoKey(); }
} // 인첸트 레벨
ObscuredInt _NextLvRequireCount;
public int n_NextLvRequireCount
{
get { return _NextLvRequireCount; }
set { _NextLvRequireCount = value; _NextLvRequireCount.RandomizeCryptoKey(); }
} // 레벨업에 필요한 횟수
ObscuredInt _GachaGradeRate1;
public int n_GachaGradeRate1
{
get { return _GachaGradeRate1; }
set { _GachaGradeRate1 = value; _GachaGradeRate1.RandomizeCryptoKey(); }
} // Grade1 아이템의 드랍 확률 (일반)
ObscuredInt _GachaGradeRate2;
public int n_GachaGradeRate2
{
get { return _GachaGradeRate2; }
set { _GachaGradeRate2 = value; _GachaGradeRate2.RandomizeCryptoKey(); }
} // Grade2 아이템의 드랍 확률 (고급)
ObscuredInt _GachaGradeRate3;
public int n_GachaGradeRate3
{
get { return _GachaGradeRate3; }
set { _GachaGradeRate3 = value; _GachaGradeRate3.RandomizeCryptoKey(); }
} // Grade3 아이템의 드랍 확률 (희귀)
ObscuredInt _GachaGradeRate4;
public int n_GachaGradeRate4
{
get { return _GachaGradeRate4; }
set { _GachaGradeRate4 = value; _GachaGradeRate4.RandomizeCryptoKey(); }
} // Grade4 아이템의 드랍 확률 (영웅)
ObscuredInt _GachaGradeRate5;
public int n_GachaGradeRate5
{
get { return _GachaGradeRate5; }
set { _GachaGradeRate5 = value; _GachaGradeRate5.RandomizeCryptoKey(); }
} // Grade5 아이템의 드랍 확률 (전설)
ObscuredInt _GachaGradeRate6;
public int n_GachaGradeRate6
{
get { return _GachaGradeRate6; }
set { _GachaGradeRate6 = value; _GachaGradeRate6.RandomizeCryptoKey(); }
} // Grade6 아이템의 드랍 확률 (고대)
ObscuredInt _GachaGradeRate7;
public int n_GachaGradeRate7
{
get { return _GachaGradeRate7; }
set { _GachaGradeRate7 = value; _GachaGradeRate7.RandomizeCryptoKey(); }
} // Grade7 아이템의 드랍 확률 (신화)
ObscuredInt _GachaGradeRate8;
public int n_GachaGradeRate8
{
get { return _GachaGradeRate8; }
set { _GachaGradeRate8 = value; _GachaGradeRate8.RandomizeCryptoKey(); }
} // Grade8 아이템의 드랍 확률 (불멸)
ObscuredInt _GachaGradeRate9;
public int n_GachaGradeRate9
{
get { return _GachaGradeRate9; }
set { _GachaGradeRate9 = value; _GachaGradeRate9.RandomizeCryptoKey(); }
} // Grade9 아이템의 드랍 확률 (유일)
public List<float> list_rate = new List<float>();
}

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -5,22 +6,111 @@ using System.Collections.Generic;
[Serializable]
public class EquipmentCraftingTableData : TableDataBase
{
public int n_CraftingItemID; // 제작할 아이템 ID
public int n_CraftingGoodsPrice; // 제작할 아이템에 소모될 메인 재화 ID
public int n_CraftingGoodsCount; // 제작할 아이템에 소모될 메인 재화 수량
public int n_MaterialValue1; // 재료1 ID
public int n_MaterialCount1; // 재료1 수량
public int n_MaterialValue2; // 재료2 ID
public int n_MaterialCount2; // 재료2 수량
public int n_MaterialValue3; // 재료3 ID
public int n_MaterialCount3; // 재료3 수량
public int n_LinkPointID1; // 획득처 바로가기1
public int n_LinkPointID2; // 획득처 바로가기2
public int n_LinkPointID3; // 획득처 바로가기3
public int n_LinkPointID4; // 획득처 바로가기4
public int n_LinkPointID5; // 획득처 바로가기5
ObscuredInt _CraftingItemID;
public int n_CraftingItemID
{
get { return _CraftingItemID; }
set { _CraftingItemID = value; _CraftingItemID.RandomizeCryptoKey(); }
} // 제작할 아이템 ID
public int MaterialCount;
ObscuredInt _CraftingGoodsPrice;
public int n_CraftingGoodsPrice
{
get { return _CraftingGoodsPrice; }
set { _CraftingGoodsPrice = value; _CraftingGoodsPrice.RandomizeCryptoKey(); }
} // 제작할 아이템에 소모될 메인 재화 ID
ObscuredInt _CraftingGoodsCount;
public int n_CraftingGoodsCount
{
get { return _CraftingGoodsCount; }
set { _CraftingGoodsCount = value; _CraftingGoodsCount.RandomizeCryptoKey(); }
} // 제작할 아이템에 소모될 메인 재화 수량
ObscuredInt _MaterialValue1;
public int n_MaterialValue1
{
get { return _MaterialValue1; }
set { _MaterialValue1 = value; _MaterialValue1.RandomizeCryptoKey(); }
} // 재료1 ID
ObscuredInt _MaterialCount1;
public int n_MaterialCount1
{
get { return _MaterialCount1; }
set { _MaterialCount1 = value; _MaterialCount1.RandomizeCryptoKey(); }
} // 재료1 수량
ObscuredInt _MaterialValue2;
public int n_MaterialValue2
{
get { return _MaterialValue2; }
set { _MaterialValue2 = value; _MaterialValue2.RandomizeCryptoKey(); }
} // 재료2 ID
ObscuredInt _MaterialCount2;
public int n_MaterialCount2
{
get { return _MaterialCount2; }
set { _MaterialCount2 = value; _MaterialCount2.RandomizeCryptoKey(); }
} // 재료2 수량
ObscuredInt _MaterialValue3;
public int n_MaterialValue3
{
get { return _MaterialValue3; }
set { _MaterialValue3 = value; _MaterialValue3.RandomizeCryptoKey(); }
} // 재료3 ID
ObscuredInt _MaterialCount3;
public int n_MaterialCount3
{
get { return _MaterialCount3; }
set { _MaterialCount3 = value; _MaterialCount3.RandomizeCryptoKey(); }
} // 재료3 수량
ObscuredInt _LinkPointID1;
public int n_LinkPointID1
{
get { return _LinkPointID1; }
set { _LinkPointID1 = value; _LinkPointID1.RandomizeCryptoKey(); }
} // 획득처 바로가기1
ObscuredInt _LinkPointID2;
public int n_LinkPointID2
{
get { return _LinkPointID2; }
set { _LinkPointID2 = value; _LinkPointID2.RandomizeCryptoKey(); }
} // 획득처 바로가기2
ObscuredInt _LinkPointID3;
public int n_LinkPointID3
{
get { return _LinkPointID3; }
set { _LinkPointID3 = value; _LinkPointID3.RandomizeCryptoKey(); }
} // 획득처 바로가기3
ObscuredInt _LinkPointID4;
public int n_LinkPointID4
{
get { return _LinkPointID4; }
set { _LinkPointID4 = value; _LinkPointID4.RandomizeCryptoKey(); }
} // 획득처 바로가기4
ObscuredInt _LinkPointID5;
public int n_LinkPointID5
{
get { return _LinkPointID5; }
set { _LinkPointID5 = value; _LinkPointID5.RandomizeCryptoKey(); }
} // 획득처 바로가기5
ObscuredInt _MaterialCount;
public int MaterialCount
{
get { return _MaterialCount; }
set { _MaterialCount = value; _MaterialCount.RandomizeCryptoKey(); }
} // 재료 수량
}
public class table_equipcrafting : table_missionbase

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -5,19 +6,71 @@ using System.Collections.Generic;
[Serializable]
public class EquipmentListTableData : TableDataBase
{
public int n_EquipID; // 장비 고유 ID
public string s_ItemPrefab_LH; // 왼손 무기 프리팹
public string s_ItemPrefab_RH; // 오른손 무기 프리팹
public eItem e_EquipParts; // 장비 파츠
public eAttackType e_EquipAttribute; // 공격 타입
public eStat e_AbilityType1; // 아이템 능력치 타입1
public int n_AbilityValue1; // 아이템 능력치 값1
public eStat e_AbilityType2; // 아이템 능력치 타입2
public int n_AbilityValue2; // 아이템 능력치 값2
public eStat e_AbilityType3; // 아이템 능력치 타입3
public int n_AbilityValue3; // 아이템 능력치 값3
public int n_DecompositionReward; // 분해 시 획득할 재화 ID
public int n_DecompositionCount; // 분해 시 획득할 재화 수량
ObscuredInt _EquipID;
public int n_EquipID
{
get { return _EquipID; }
set { _EquipID = value; _EquipID.RandomizeCryptoKey(); }
} // 장비 고유 ID
ObscuredString _ItemPrefab_LH;
public string s_ItemPrefab_LH
{
get { return _ItemPrefab_LH; }
set { _ItemPrefab_LH = value; _ItemPrefab_LH.RandomizeCryptoKey(); }
} // 왼손 무기 프리팹
ObscuredString _ItemPrefab_RH;
public string s_ItemPrefab_RH
{
get { return _ItemPrefab_RH; }
set { _ItemPrefab_RH = value; _ItemPrefab_RH.RandomizeCryptoKey(); }
} // 오른손 무기 프리팹
public eItem e_EquipParts { get; set; } // 장비 파츠 (enum 값)
public eAttackType e_EquipAttribute { get; set; } // 공격 타입 (enum 값)
public eStat e_AbilityType1 { get; set; } // 아이템 능력치 타입1 (enum 값)
ObscuredInt _AbilityValue1;
public int n_AbilityValue1
{
get { return _AbilityValue1; }
set { _AbilityValue1 = value; _AbilityValue1.RandomizeCryptoKey(); }
} // 아이템 능력치 값1
public eStat e_AbilityType2 { get; set; } // 아이템 능력치 타입2 (enum 값)
ObscuredInt _AbilityValue2;
public int n_AbilityValue2
{
get { return _AbilityValue2; }
set { _AbilityValue2 = value; _AbilityValue2.RandomizeCryptoKey(); }
} // 아이템 능력치 값2
public eStat e_AbilityType3 { get; set; } // 아이템 능력치 타입3 (enum 값)
ObscuredInt _AbilityValue3;
public int n_AbilityValue3
{
get { return _AbilityValue3; }
set { _AbilityValue3 = value; _AbilityValue3.RandomizeCryptoKey(); }
} // 아이템 능력치 값3
ObscuredInt _DecompositionReward;
public int n_DecompositionReward
{
get { return _DecompositionReward; }
set { _DecompositionReward = value; _DecompositionReward.RandomizeCryptoKey(); }
} // 분해 시 획득할 재화 ID
ObscuredInt _DecompositionCount;
public int n_DecompositionCount
{
get { return _DecompositionCount; }
set { _DecompositionCount = value; _DecompositionCount.RandomizeCryptoKey(); }
} // 분해 시 획득할 재화 수량
}
public class table_equipitemlist : table_missionbase

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -5,17 +6,67 @@ using System.Collections.Generic;
[Serializable]
public class EquipmentSlotUpgradeTableData : TableDataBase
{
public eItem e_EquipParts; // 장비 파츠 타입
public eAttackType e_EquipAttribute; // 장비 파츠 속성
public int n_EquipSlotName; // 장비 파츠 및 속성에 따른 텍스트 정보
public eStat e_OptionType; // 부여할 주 스텟 능력치 타입
public int n_DefaultValue; // 1레벨의 능력치 기본 값
public float f_LevelPerValue; // 레벨당 능력치 증가량
public float f_BalanceConstant; // 밸런스 상수 K값
public int n_ConsumeGoodsID; // 강화에 사용될 재화 ID
public int n_DefaultValuePrice; // 1레벨의 기본 재화 소모량
public float f_LevelPerValuePrice; // 레벨당 재화 소모 증가량
public float f_BalanceConstantPrice; // 재화 소모 밸런스 상수 K값
public eItem e_EquipParts { get; set; } // 장비 파츠 타입 (enum 값)
public eAttackType e_EquipAttribute { get; set; } // 장비 파츠 속성 (enum 값)
ObscuredInt _EquipSlotName;
public int n_EquipSlotName
{
get { return _EquipSlotName; }
set { _EquipSlotName = value; _EquipSlotName.RandomizeCryptoKey(); }
} // 장비 파츠 및 속성에 따른 텍스트 정보
public eStat e_OptionType { get; set; } // 부여할 주 스텟 능력치 타입 (enum 값)
ObscuredInt _DefaultValue;
public int n_DefaultValue
{
get { return _DefaultValue; }
set { _DefaultValue = value; _DefaultValue.RandomizeCryptoKey(); }
} // 1레벨의 능력치 기본 값
ObscuredFloat _LevelPerValue;
public float f_LevelPerValue
{
get { return _LevelPerValue; }
set { _LevelPerValue = value; _LevelPerValue.RandomizeCryptoKey(); }
} // 레벨당 능력치 증가량
ObscuredFloat _BalanceConstant;
public float f_BalanceConstant
{
get { return _BalanceConstant; }
set { _BalanceConstant = value; _BalanceConstant.RandomizeCryptoKey(); }
} // 밸런스 상수 K값
ObscuredInt _ConsumeGoodsID;
public int n_ConsumeGoodsID
{
get { return _ConsumeGoodsID; }
set { _ConsumeGoodsID = value; _ConsumeGoodsID.RandomizeCryptoKey(); }
} // 강화에 사용될 재화 ID
ObscuredInt _DefaultValuePrice;
public int n_DefaultValuePrice
{
get { return _DefaultValuePrice; }
set { _DefaultValuePrice = value; _DefaultValuePrice.RandomizeCryptoKey(); }
} // 1레벨의 기본 재화 소모량
ObscuredFloat _LevelPerValuePrice;
public float f_LevelPerValuePrice
{
get { return _LevelPerValuePrice; }
set { _LevelPerValuePrice = value; _LevelPerValuePrice.RandomizeCryptoKey(); }
} // 레벨당 재화 소모 증가량
ObscuredFloat _BalanceConstantPrice;
public float f_BalanceConstantPrice
{
get { return _BalanceConstantPrice; }
set { _BalanceConstantPrice = value; _BalanceConstantPrice.RandomizeCryptoKey(); }
} // 재화 소모 밸런스 상수 K값
public float Get_MainStatValue(int lv) { return Get_Value(lv, n_DefaultValue, f_LevelPerValue, f_BalanceConstant); }
public float Get_Price(int lv) { return Get_Value(lv, f_BalanceConstantPrice, f_LevelPerValue, f_LevelPerValuePrice); }

View File

@ -6,10 +6,33 @@ using System.Collections.Generic;
[Serializable]
public class EquipmentSmeltingTableData : TableDataBase
{
public int n_SmeltingStep; // 제련 단계
public int n_NextStepRate; // 다음 단계 제련 확률(※만분율)
public int n_UpgradePrice; // 제련에 필요한 동일 아이템 수량
public int n_IncreaseValueRate; // 제련에 따른 장비 능력치 증가량(만분율)
ObscuredInt _SmeltingStep;
public int n_SmeltingStep
{
get { return _SmeltingStep; }
set { _SmeltingStep = value; _SmeltingStep.RandomizeCryptoKey(); }
} // 제련 단계
ObscuredInt _NextStepRate;
public int n_NextStepRate
{
get { return _NextStepRate; }
set { _NextStepRate = value; _NextStepRate.RandomizeCryptoKey(); }
} // 다음 단계 제련 확률(※만분율)
ObscuredInt _UpgradePrice;
public int n_UpgradePrice
{
get { return _UpgradePrice; }
set { _UpgradePrice = value; _UpgradePrice.RandomizeCryptoKey(); }
} // 제련에 필요한 동일 아이템 수량
ObscuredInt _IncreaseValueRate;
public int n_IncreaseValueRate
{
get { return _IncreaseValueRate; }
set { _IncreaseValueRate = value; _IncreaseValueRate.RandomizeCryptoKey(); }
} // 제련에 따른 장비 능력치 증가량(만분율)
public ObscuredFloat f_NextStepRate, f_IncreaseValueRate;
}

View File

@ -1,3 +1,4 @@
using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -5,15 +6,63 @@ using System.Collections.Generic;
[Serializable]
public class OptionConfigTableData : TableDataBase
{
public int n_OptionID; // 옵션 고유 ID
public eStat e_OptionType; // 능력치를 설정할 옵션의 타입
public int n_DefaultValue; // 1레벨의 기본 값
public float f_LevelPerValue; // 레벨당 증가량
public float f_BalanceConstant; // 밸런스 상수 K값
public float f_ExtraValue1; // 옵션 고유 설정 값1
public float f_ExtraValue2; // 옵션 고유 설정 값2
public float f_ExtraValue3; // 옵션 고유 설정 값3
public float f_ExtraValue4; // 옵션 고유 설정 값4
ObscuredInt _OptionID;
public int n_OptionID
{
get { return _OptionID; }
set { _OptionID = value; _OptionID.RandomizeCryptoKey(); }
} // 옵션 고유 ID
public eStat e_OptionType { get; set; } // 능력치를 설정할 옵션의 타입 (enum 값)
ObscuredInt _DefaultValue;
public int n_DefaultValue
{
get { return _DefaultValue; }
set { _DefaultValue = value; _DefaultValue.RandomizeCryptoKey(); }
} // 1레벨의 기본 값
ObscuredFloat _LevelPerValue;
public float f_LevelPerValue
{
get { return _LevelPerValue; }
set { _LevelPerValue = value; _LevelPerValue.RandomizeCryptoKey(); }
} // 레벨당 증가량
ObscuredFloat _BalanceConstant;
public float f_BalanceConstant
{
get { return _BalanceConstant; }
set { _BalanceConstant = value; _BalanceConstant.RandomizeCryptoKey(); }
} // 밸런스 상수 K값
ObscuredFloat _ExtraValue1;
public float f_ExtraValue1
{
get { return _ExtraValue1; }
set { _ExtraValue1 = value; _ExtraValue1.RandomizeCryptoKey(); }
} // 옵션 고유 설정 값1
ObscuredFloat _ExtraValue2;
public float f_ExtraValue2
{
get { return _ExtraValue2; }
set { _ExtraValue2 = value; _ExtraValue2.RandomizeCryptoKey(); }
} // 옵션 고유 설정 값2
ObscuredFloat _ExtraValue3;
public float f_ExtraValue3
{
get { return _ExtraValue3; }
set { _ExtraValue3 = value; _ExtraValue3.RandomizeCryptoKey(); }
} // 옵션 고유 설정 값3
ObscuredFloat _ExtraValue4;
public float f_ExtraValue4
{
get { return _ExtraValue4; }
set { _ExtraValue4 = value; _ExtraValue4.RandomizeCryptoKey(); }
} // 옵션 고유 설정 값4
public float Get_Value(int lv) { return Get_Value(lv, f_BalanceConstant, n_DefaultValue, f_LevelPerValue); }
}