hxp
3 天以前 19956b8576f2c2c68c4c4d811acbc3e2af3d97b4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/FormulaControl.py
@@ -79,13 +79,14 @@
    #GameWorld.Log('ClearCompileFormulaDist Sucess AllFormulaDist = %s'%(AllFormulaDist))
    return
def Eval(formulaKey, formula, paramDict, toInt=True, ceil=False, playerID=0):
def Eval(formulaKey, formula, paramDict, toInt=True, ceil=False, ndigits=0, playerID=0):
    """ 动态计算
    :param formulaKey: 公式编译缓存key
    :param formula: 公式字符串,如 "int(Atk*10 + MaxHP)"
    :param paramDict: 参数字典,如 {'Atk': 100, 'MaxHP': 5000}
    :param toInt: 是否转为整数
    :param ceil: 是否向上取整
    :param ndigits: 小数精确位数
    :return: 计算结果
    """
    compileFormula = GetCompileFormula(formulaKey, formula)
@@ -100,6 +101,7 @@
        'round': round,
        # 类型转换
        'int': int,
        'long': long,
        'float': float,
        'bool': bool,
        # 数学常数
@@ -110,6 +112,8 @@
    try:
        # 执行计算
        value = eval(compileFormula, safe_env)
        if ndigits > 0:
            value = round(value, ndigits)
        if ceil:
            value = math.ceil(value)
        if toInt: