Ejemplo n.º 1
0
def main():
    os.chdir(os.path.split(os.path.realpath(__file__))[0])

    welecome()
    print('')

    confirm = InputController().requireBool({
        'tips': '是否立刻进行文件编码转换?',
        'default': False
    })

    if not confirm:
        Message.ShowInfo('您取消了操作, 程序终止...\n')
        Common.exitWithPause()

    count = CharsetConverter({
        'ignore_files': ['Makefile', 'Makefile.in', 'CMakeLists.txt'],
        'process_exts': ['.hpp', '.cpp']
    }).convertDirectory('../../src', 'UTF-8-SIG')

    if count <= 0:
        Message.ShowInfo('很好! 源代码文件都已转换为 UTF-8-SIG 编码.')

    print('')

    Common.exitWithPause()
Ejemplo n.º 2
0
def guide(inject):
    eventlist = [{
        'name': 'Event 类型的标准事件',
        'desc': '0 - Event  类型的标准事件, 不能被 processhalt 指令打断'
    }, {
        'name': 'Filter 类型的过滤事件',
        'desc': '1 - Filter 类型的过滤事件, 可以被 processhalt 指令打断'
    }]

    # 0 为 Event 类型的事件 | 1 为 Filter 类型的事件
    eventtype = InputController().requireSelect({
        'name': '想创建的 NPC 事件类型',
        'data': eventlist
    })

    # --------

    constant_prefix = 'NPCE_' if eventtype == 0 else 'NPCF_'
    constant = InputController().requireText({
        'tips':
        '请输入该 NPC 事件的 {prefix} 常量名称 (自动大写, {prefix}的末尾部分)'.format(
            prefix=constant_prefix),
        'prefix':
        constant_prefix,
        'upper':
        True
    })

    if eventtype == 0:
        define = 'rAthenaCN_NpcEvent_' + constant.replace(constant_prefix, '')
        eventvar = constant.replace(constant_prefix,
                                    '').lower() + '_event_name'
    elif eventtype == 1:
        define = 'rAthenaCN_NpcFilter_' + constant.replace(constant_prefix, '')
        eventvar = constant.replace(constant_prefix,
                                    '').lower() + '_filter_name'
    else:
        Message.ShowError('发现无效的事件类型, 请确认..')
        Common.exitWithPause(-1)

    # --------

    eventname = InputController().requireText({
        'tips': '请输入该 NPC 事件的名称 (以 On 开头, 末尾应为 Event 或 Filter)',
        'prefix': ''
    })

    if not eventname.startswith('On'):
        Message.ShowError('无论是什么类型的事件, 事件名称必须以 On 开头 (严格区分大小写)')
        Common.exitWithPause(-1)

    if eventtype == 0:
        if not eventname.endswith('Event'):
            Message.ShowError('Event 类型的事件, 事件名称必须以 Event 结尾 (严格区分大小写)')
            Common.exitWithPause(-1)

    if eventtype == 1:
        if not eventname.endswith('Filter'):
            Message.ShowError('Filter 类型的事件, 事件名称必须以 Filter 结尾 (严格区分大小写)')
            Common.exitWithPause(-1)

    # --------

    eventdesc = InputController().requireText({
        'tips': '请输入该 NPC 事件的简短说明 (如: 当玩家杀死 MVP 魔物时触发事件)',
        'prefix': ''
    })

    # --------

    print('-' * 70)
    Message.ShowInfo('请确认建立的信息, 确认后将开始修改代码.')
    print('-' * 70)
    Message.ShowInfo('事件类型 : %s' % eventlist[eventtype]['name'])
    Message.ShowInfo('常量名称 : %s' % constant)
    Message.ShowInfo('事件名称 : %s' % eventname)
    Message.ShowInfo('事件说明 : %s' % eventdesc)
    print('')
    Message.ShowInfo('开关名称 : %s' % define)
    Message.ShowInfo('变量名称 : %s' % eventvar)
    print('-' * 70)
    print('\n')

    nextstep = InputController().requireBool({
        'tips': '请仔细阅读上述信息, 确认要开始写入操作么?',
        'default': False
    })

    if not nextstep:
        Message.ShowStatus('终止写入操作, 程序终止')
        Common.exitWithPause(-1)

    # --------

    Message.ShowStatus('开始将 NPC 事件写入到源代码...')

    options = {
        'define': define,
        'constant': constant,
        'eventname': eventname,
        'eventvar': eventvar,
        'eventdesc': eventdesc
    }

    if eventtype == 0:
        insert_for_normal_npcevent(inject, options)
    elif eventtype == 1:
        insert_for_filter_npcevent(inject, options)

    Message.ShowStatus('已经成功写入到源代码, 请检查并完善必要的注释.')
    print('')
    print('=' * 70)
    print('')
    print('感谢您的使用, NPC 事件添加助手已经执行完毕'.center(48))
    print('')
    print('=' * 70)
Ejemplo n.º 3
0
def guide(inject):

    define = InputController().requireText({
        'tips': '请输入该地图标记的宏定义开关名称 (Pandas_MapFlag_的末尾部分)',
        'prefix': 'Pandas_MapFlag_'
    })

    # --------

    constant = InputController().requireText({
        'tips': '请输入该地图标记的 MF 常量名称 (自动大写, MF_的末尾部分)',
        'prefix': 'MF_',
        'upper': True
    })

    # --------

    flaglist = [{
        'name': '普通开关式的地图标记',
        'desc': '0 - 普通的地图标记开关, 只有两个状态(开/关)'
    }, {
        'name': '携带单个数值参数的地图标记',
        'desc': '1 - 携带单个数值参数的地图标记, 可以记录数值变量 (例如 bexp 标记)'
    }, {
        'name': '复杂赋值标记',
        'desc': '2 - 复杂的赋值标记, 只单纯添加宏定义和 MF 常量, 其他的手动添加'
    }]

    # flagtype = 0  # 0 为普通开关 | 1 为数值开关
    flagtype = InputController().requireSelect({
        'name': '想创建的地图标记类型',
        'data': flaglist
    })

    # --------

    var_name_1 = None
    if flagtype == 1:
        var_name_1 = InputController().requireText({
            'tips': '请输入用于记录"第一个数值参数"的 map_data 结构成员变量名',
            'prefix': ''
        })

    # --------

    zero_disable = False
    if flagtype == 1:
        zero_disable = InputController().requireBool({
            'tips': '当"第一个数值参数"的值为 0 时, 是否表示移除此地图标记?',
            'default': False
        })

    # --------

    print('-' * 70)
    Message.ShowInfo('请确认建立的信息, 确认后将开始修改代码.')
    print('-' * 70)
    Message.ShowInfo('开关名称 : %s' % define)
    Message.ShowInfo('常量名称 : %s' % constant)
    Message.ShowInfo('标记类型 : %s' % flaglist[flagtype]['name'])
    print('')
    Message.ShowInfo('第一个数值参数名称 : %s' % var_name_1)
    Message.ShowInfo('第一个数值参数的值为 0 时, 是否禁用此标记 : %s' % zero_disable)
    print('-' * 70)
    print('\n')

    nextstep = InputController().requireBool({
        'tips': '请仔细阅读上述信息, 确认要开始写入操作么?',
        'default': False
    })

    if not nextstep:
        Message.ShowStatus('终止写入操作, 程序终止')
        Common.exitWithPause(-1)

    # --------

    Message.ShowStatus('开始将地图标记信息写入到源代码...')

    options = {
        'define': define,
        'constant': constant,
        'var_name_1': var_name_1,
        'zero_disable': zero_disable
    }

    if flagtype == 0:
        insert_for_normal_mapflag(inject, options)
    elif flagtype == 1:
        insert_for_one_param_mapflag(inject, options)

    Message.ShowStatus('已经成功写入到源代码, 请检查并完善必要的注释.')
    print('')
    print('=' * 70)
    print('')
    print('感谢您的使用, 地图标记添加助手已经执行完毕'.center(48))
    print('')
    print('=' * 70)
Ejemplo n.º 4
0
def guide(inject):

    define = InputController().requireText({
        'tips': '请输入该脚本指令的宏定义开关名称 (Pandas_ScriptCommand_的末尾部分)',
        'prefix': 'Pandas_ScriptCommand_'
    })

    # --------

    funcname = InputController().requireText({
        'tips': '请输入该脚本指令的处理函数名称 (BUILDIN_FUNC 部分的函数名)',
        'prefix': '',
        'lower': True
    })

    # --------

    samefunc = InputController().requireBool({
        'tips': '脚本指令是否与处理函数名称一致 (%s)?' % funcname,
        'default': True
    })

    # --------

    cmdname = funcname
    if not samefunc:
        cmdname = InputController().requireText({
            'tips': '请输入该脚本指令的名称 (BUILDIN_DEF2 使用)',
            'prefix': '',
            'lower': True
        })

    # --------

    argsmode = InputController().requireText({
        'tips': '请输入该脚本指令的参数模式 (如一个或多个的: i\s\? 为空则直接回车)',
        'prefix': '',
        'lower': True,
        'allow_empty': True
    })

    # --------

    print('-' * 70)
    Message.ShowInfo('请确认建立的信息, 确认后将开始修改代码.')
    print('-' * 70)
    Message.ShowInfo('开关名称 : %s' % define)
    Message.ShowInfo('脚本处理函数名称 : %s' % funcname)
    Message.ShowInfo('脚本指令名称 : %s' % cmdname)
    Message.ShowInfo('脚本指令的参数模式 : %s' % argsmode)
    print('-' * 70)
    print('\n')

    nextstep = InputController().requireBool({
        'tips': '请仔细阅读上述信息, 确认要开始写入操作么?',
        'default': False
    })

    if not nextstep:
        Message.ShowStatus('终止写入操作, 程序终止')
        Common.exitWithPause(-1)

    # --------

    Message.ShowStatus('开始将地图标记信息写入到源代码...')

    options = {
        'define': define,
        'funcname': funcname,
        'cmdname': cmdname,
        'argsmode': argsmode
    }

    insert_scriptcmd(inject, options)

    Message.ShowStatus('已经成功写入到源代码, 请检查并完善必要的注释.')
    print('')
    print('=' * 70)
    print('')
    print('感谢您的使用, 脚本指令添加助手已经执行完毕'.center(48))
    print('')
    print('=' * 70)