- UID
- 392573
- 阅读权限
- 20
- 注册时间
- 2025-2-13
- 最后登录
- 2025-9-29
- 在线时间
- 22 小时
- 性别
- 保密
骑士
- 耕战
- 0
- 鹰币
- 10
- 天龙币
- 0
- 回帖
- 10
|

楼主 |
发表于 2025-7-28 11:59:42
|
显示全部楼层
本帖最后由 Burn_Wind 于 2025-7-28 12:11 编辑
夜游神 发表于 2025-7-23 05:07
了解一下AoE2ScenarioParser库并调用player_manager修改players[n]的initial_player_view_x和initial_playe ...
感谢您的回复,纯门外汉的我这几天抽空研究了AoE2ScenarioParser这玩意儿(版本0.4.6),参考这个帖子
https://www.hawkaoe.net/bbs/forum.php?mod=viewthread&tid=146919&fromuid=392573
捣鼓了几天,也安装好了Python、VS和AoE2ScenarioParser本体,目前是发现可能是因为版本原因,那个帖子的代码不能全部照搬过来用,通过ai工具和尝试还是整出来一段代码(如下)
- <font size="1">from AoE2ScenarioParser.scenarios.aoe2_scenario import AoE2Scenario
- # 1. 文件路径
- input_path = "文件存储路径"
- output_path = "文件另存为路径"
- # 2. 加载场景文件
- scenario = AoE2Scenario.from_file(input_path, "DE")
- # 3. 获取玩家管理器
- player_manager = scenario.player_manager
- # 4. 修改玩家1的初始视角 (玩家ID=0)
- player_id = 0 # 玩家1 (玩家1=0, 玩家2=1, ..., 玩家8=7)
- # 方法1:直接修改PlayerInitialView对象
- if hasattr(player_manager, '_initial_player_views') and len(player_manager._initial_player_views) > player_id:
- view = player_manager._initial_player_views[player_id]
- view.location_x = -1
- view.location_y = -1
- print(f"方法1: 直接修改PlayerInitialView对象 - 位置设置为(-1, -1)")
- # 方法2:通过Player对象修改 (更推荐)
- if player_id < len(player_manager.players):
- player = player_manager.players[player_id]
-
- # 设置初始视角坐标
- player.initial_player_view_x = -1
- player.initial_player_view_y = -1
-
- # 设置初始相机位置(双保险)
- player.initial_camera_x = -1
- player.initial_camera_y = -1
-
- print(f"方法2: 通过Player对象修改 - 视角和相机位置设置为(-1, -1)")
- # 5. 保存修改后的场景
- scenario.write_to_file(output_path)
- print(f"场景已保存至: {output_path}")</font>
复制代码
由于确实没有多少编程基础,我基本上是按照ai生成的去尝试,这里ai提供了两种修改方法,这段代码运行显示成功,但进入游戏后还是没有任何效果
检查后发现警告 DeprecationWarning:Unused by scenario. Use: `initial_player_view_x` instead (指camera那两行)
于是又修改如下
- <font size="1">from AoE2ScenarioParser.scenarios.aoe2_scenario import AoE2Scenario
- import os
- # 1. 文件路径
- input_path = "文件存储路径"
- output_path = "文件另存为路径"
- # 2. 加载场景文件
- scenario = AoE2Scenario.from_file(input_path, "DE")
- # 3. 获取玩家管理器
- player_manager = scenario.player_manager
- # 4. 修改玩家1的初始视角 (玩家ID=0)
- player_id = 0 # 玩家2 (玩家1=0, 玩家2=1, ..., 玩家8=7)
- if player_id < len(player_manager.players):
- player = player_manager.players[player_id]
-
- # 使用推荐的属性设置初始视角
- player.initial_player_view_x = -1
- player.initial_player_view_y = -1
-
- print(f"玩家 {player_id+1} 的初始视角已设置为(-1, -1)")
- # 5. 保存修改后的场景
- scenario.write_to_file(output_path)
- print(f"场景已保存至: {output_path}")</font>
复制代码
然而结果也显而易见......于是我又不要脸地来问了,确实还是理解不够
(合着我忙活这么长时间搞出来一个能花40多秒时间将一个文件另存为的代码哈哈哈哈)
|
|