Example #1
0
def guide(inject):

    define = Inputer().requireText({
        'tips' : '请输入该战斗配置选项的宏定义开关名称 (Pandas_BattleConfig_的末尾部分)',
        'prefix' : 'Pandas_BattleConfig_'
    })
    
    # --------
    
    option_name = Inputer().requireText({
        'tips' : '请输入该战斗配置选项的选项名称'
    })
    
    # --------
    
    var_name = Inputer().requireText({
        'tips' : '请输入该战斗配置选项的变量名称 (不填默认与选项名称一致)',
        'default' : option_name.replace('.', '_')
    })
    
    # --------
    
    def_val = Inputer().requireInt({
        'tips' : '请输入默认值 (不填则默认为 0)',
		'allow_empty' : True
    })
    
    # --------
    
    min_val = Inputer().requireInt({
        'tips' : '请输入允许设置的最小值 (不填则默认为 0)',
		'allow_empty' : True
    })
    
    # --------
    
    max_val = Inputer().requireInt({
        'tips' : '请输入允许设置的最大值 (不填则默认为 INT_MAX)',
		'allow_empty' : True
    })
    
    if max_val == 0:
        max_val = 2147483647
    
    if max_val <= min_val:
        Message.ShowError('最大值比最小值还要小, 这不合理...')
        Common.exit_with_pause(-1)
    
    def_val = str(def_val)
    min_val = str(min_val)
    max_val = 'INT_MAX' if max_val == 2147483647 else str(max_val)
    
    # --------
    
    print('-' * 70)
    Message.ShowInfo('请确认建立的信息, 确认后将开始修改代码.')
    print('-' * 70)
    Message.ShowInfo('开关名称 : %s' % define)
    Message.ShowInfo('选项名称 : %s' % option_name)
    Message.ShowInfo('变量名称 : %s' % var_name)
    print('')
    Message.ShowInfo('选项默认值 : %s' % def_val)
    Message.ShowInfo('选项最小值 : %s' % min_val)
    Message.ShowInfo('选项最大值 : %s' % max_val)
    print('-' * 70)
    print('\n')

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

    if not nextstep:
        Message.ShowStatus('终止写入操作, 程序终止')
        Common.exit_with_pause(-1)
    
    # --------
    
    Message.ShowStatus('开始将战斗配置选项写入到源代码...')
    
    options = {
        'define' : define,
        'option_name' : option_name,
        'var_name' : var_name,
        'def_val' : def_val,
        'min_val' : min_val,
        'max_val' : max_val
    }
    
    insert_battle_config(inject, options)
    
    Message.ShowStatus('已经成功写入到源代码, 请检查并完善必要的注释.')
    print('')
    print('=' * 70)
    print('')
    print('感谢您的使用, 战斗配置选项添加助手已经执行完毕'.center(50))
    print('')
    print('=' * 70)
Example #2
0
def guide(inject):
    eventlist = [{
        'name': 'Event 类型的标准事件',
        'desc': '0 - Event   类型的标准事件, 不能被 processhalt 指令打断'
    }, {
        'name': 'Filter 类型的过滤事件',
        'desc': '1 - Filter  类型的过滤事件, 事件将会被立刻执行, 可以被 processhalt 指令打断'
    }, {
        'name': 'Express 类型的特殊事件',
        'desc': '2 - Express 类型的实时事件, 事件将会被立刻执行, 不能被 processhalt 指令打断'
    }]

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

    # --------

    constant_prefix = 'NPCE_'
    if eventtype == 1:
        constant_prefix = 'NPCF_'
    elif eventtype == 2:
        constant_prefix = 'NPCX_'

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

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

    # --------

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

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

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

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

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

    # --------

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

    # --------

    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 = Inputer().requireBool({
        'tips': '请仔细阅读上述信息, 确认要开始写入操作么?',
        'default': False
    })

    if not nextstep:
        Message.ShowStatus('终止写入操作, 程序终止')
        Common.exit_with_pause(-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)
    elif eventtype == 2:
        insert_for_express_npcevent(inject, options)

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