10

主题

10

回帖

580

积分

优秀创作者

积分
580

夏日·闪闪发光勋章

发表于  2023-6-10 14:45:22 | 显示全部楼层 |阅读模式 3906 1
如果使用lua制作地图,引用的物编对象与资源对象都需要在resource.lua中进行注册
物编类:

entity_id 单位ID
ability_id 技能ID
projectile_id 投射物ID
item_id 物品ID

资源类:
sound_id 声音ID
sfx_id 特效ID
model_id 模型ID
icon_id 图片ID


9

主题

17

回帖

881

积分

优秀创作者

积分
881

夏日·闪闪发光勋章

发表于  2023-6-10 16:51:21 | 显示全部楼层

#用py自动获取lua文件中的icon和model

import re



def extract_numbers_from_lua_file(file_path):
        numbers = set()  # 使用集合来存储不重复的数字

        with open(file_path, 'r', encoding="utf-8") as file:
                lua_content = file.read()

                # 使用正则表达式匹配数字字段
                matches = re.findall(r'icon=(\d+)', lua_content)
                # 将匹配到的数字添加到集合中
                for match in matches:
                        numbers.add(int(match))

        return numbers
def extract_numbers_from_lua_file2(file_path):
        numbers = set()  # 使用集合来存储不重复的数字

        with open(file_path, 'r', encoding="utf-8") as file:
                lua_content = file.read()

                # 使用正则表达式匹配数字字段
                matches = re.findall(r'model=(\d+)', lua_content)
                # 将匹配到的数字添加到集合中
                for match in matches:
                        numbers.add(int(match))

        return numbers
def process_lua_files_in_directory(directory):
        all_numbers = set()  # 用于存储所有 Lua 文件中的数字字段

        # 遍历目录下的所有文件和文件夹
        for root, dirs, files in os.walk(directory):
                for file in files:
                        if file.endswith(".lua"):
                                file_path = os.path.join(root, file)
                                numbers = extract_numbers_from_lua_file(file_path)
                                all_numbers.update(numbers)

        return all_numbers
def process_lua_files_in_directory2(directory):
        all_numbers = set()  # 用于存储所有 Lua 文件中的数字字段

        # 遍历目录下的所有文件和文件夹
        for root, dirs, files in os.walk(directory):
                for file in files:
                        if file.endswith(".lua"):
                                file_path = os.path.join(root, file)
                                numbers = extract_numbers_from_lua_file2(file_path)
                                all_numbers.update(numbers)

        return all_numbers
# 请将下面的路径替换为你的 script 文件夹的路径
script_directory = 'script'
numbers= process_lua_files_in_directory(script_directory)

# 打印提取到的数字列表
s="RES_IDS = {}\nRES_IDS['entity_id'] = {}\nRES_IDS['ability_id'] = {}\nRES_IDS['modifier_id'] = {}\nRES_IDS['projectile_id'] = {}\nRES_IDS['item_id'] = {}\nRES_IDS['sound_id'] = {}\n"
s=s+"RES_IDS['icon_id'] = {"
for number in numbers:
        s=s+str(number)+",\n"
s=s+"}\n"
numbers= process_lua_files_in_directory2(script_directory)
s=s+"RES_IDS['model_id'] = {"
for number in numbers:
        s=s+str(number)+",\n"
s=s+"}\n"
# 将字符串 s 写入 resource.lua 文件
with open('script\\resource.lua', 'w', encoding='utf-8') as file:
    file.write(s)

print("resource.lua 文件已生成")