夜游神 发表于 2023-12-8 02:58:12

传奇3BOSS查询Python脚本zircon引擎

BOSS查询Python脚本

# -*- coding: utf-8 -*-
# 载入模块SYS
import sys
# 引用模块的地址
from Globals import *
import clr

clr.AddReference("Library")
from Library import *
import collections
import NpcEvent
import Server.Envir.SEnvir as SEnvir
clr.AddReference("System.Core")
clr.AddReference('System')
import System
clr.ImportExtensions(System.Linq)

# 下面两个import用于调用其他NPC
from Utils import ServerUtils
from Npc import *

import unicodedata


# BOSS数量过多 建议分页
# 这里是按等级分的 0-45, 75-100这样
LEVEL_RANGE_1 = 45
LEVEL_RANGE_2 = 90
LEVEL_RANGE_3 = 180

# 过滤名字结尾是数字的怪
allInfo = .isdigit()]
# 按等级升序
sortByLevel = sorted(allInfo, cmp=None, key=lambda x: x.BossInfo.Level, reverse=False)

def OnClick(args):
        Self = args
        Sender = args
        Menu = args
        Dict={}
       
        if Menu == 1:
#判断元宝
                if (Sender.GameGold < 10):
                        say= """你没有足够的元宝。

                        [离开:0]"""
                else:
#上面条件达成,扣除元宝开始查询
                        SubGameGold(Sender,10)
                        say = GenereateSay(0, LEVEL_RANGE_1)
        elif Menu == 2:
#判断元宝
                if (Sender.GameGold < 10):
                        say= """你没有足够的元宝。

                        [离开:0]"""
                else:
#上面条件达成,扣除元宝开始查询
                        SubGameGold(Sender,10)
                        say = GenereateSay(LEVEL_RANGE_1, LEVEL_RANGE_2)
        elif Menu == 3:
#判断元宝
                if (Sender.GameGold < 10):
                        say= """你没有足够的元宝。

                        [离开:0]"""
                else:
#上面条件达成,扣除元宝开始查询
                        SubGameGold(Sender,10)
                        say = GenereateSay(LEVEL_RANGE_2, LEVEL_RANGE_3)
        elif Menu == 4:
#判断元宝
                if (Sender.GameGold < 10):
                        say= """你没有足够的元宝。

                        [离开:0]"""
                else:
#上面条件达成,扣除元宝开始查询
                        SubGameGold(Sender,10)
                        say = GenereateSay(LEVEL_RANGE_3, 999999)

        elif Menu >= 100:
                # 详情查询
                info = next(x for x in sortByLevel if x.BossInfo.Index == Menu-100)
                say = GenerateDetail(info.SpawnInfo) if info else "出错了"


        else:
                say = """这里可以查询所有BOSS的状态

                每次查询收费10元宝

                [查询0-{}级boss:1]

                [查询{}-{}级boss:2]

                [查询{}-{}级boss:3]

                [查询{}级以上boss:4]
               
                [关闭:0]""".format(LEVEL_RANGE_1, LEVEL_RANGE_1+1, LEVEL_RANGE_2, LEVEL_RANGE_2+1, LEVEL_RANGE_3, LEVEL_RANGE_3+1)

        Dict['Say']=say                         #定义聊天框对话内容
        return Dict


# 生成列表
def GenereateSay(minLevel, maxLevel):
        # 表头
        say = '{0: <15} {1: <15} {2: <15} \n'.format('BOSS', '击杀者', '击杀时间')
        # 内容
        filtered = .isdigit()]
        say += '\n'.join("[{}:{}]   {}    {}".format(
                        boss.BossName,
                        boss.BossInfo.Index + 100,
                        boss.LastKiller.CharacterName if boss.LastKiller else '无',
                        boss.LastKillTime if boss.LastKiller else '无') for boss in filtered)
        return say


def GenerateDetail(spawns):
        # 表头
        say = '{0: <10} {1: <6} {2: <6} {3: <6}\n'.format('名称', '当前地图', '存活数量', '下次刷新')
        # 内容
        say += '\n'.join("{}    {}   {}   {}".format(
                        spawn.Info.Monster.MonsterName,
                        spawn.CurrentMap.Info.Description,
                        spawn.AliveCount,
                        spawn.NextSpawn) for spawn in spawns)
        return say


#NpcEvent.add_listener(341,"OnClick",OnClick)



Chinese.Doll 发表于 2023-12-29 22:01:20

积分任务
页: [1]
查看完整版本: 传奇3BOSS查询Python脚本zircon引擎