安装

pip install sc2reader

使用

import sc2reader
replay = sc2reader.load_replay('video.SC2Replay', load_level=2)

level的值可设置为0到4,越大再入的信息越多。

player

replay.player[key].name 玩家游戏昵称
replay.player[key].pick_race 玩家的种族

一般pvp的时候 key 可选为 1或者2

event

replay的所有内容记录在replay.events结构中
单位创建,单位移动,单位死亡等等。

def get_event(replay):for event in replay.events:event_names = set([event.name for event in replay.events])events_of_type = {name: [] for name in event_names}for event in replay.events:events_of_type[event.name].append(event)return events_of_type

chat event

for msg_event in replay.messages:print msg_event.text

显示游戏中玩家的聊天信息

unit event

def unit_done_list(events_of_type):unit_born_events = events_of_type["UnitBornEvent"]for ube in unit_born_events:print ube.unit_controller.name.encode("utf-8") +" born " + str(ube.unit.name) + " at " + str(ube.second / 60) + ":" + str(ube.second % 60)

显示玩家的建造顺序

example

main.py如下

#coding=utf-8
#documents = https://readthedocs.org/projects/sc2reader/downloads/pdf/latest/
import sc2reader
import sys
import sc2fliterdef show_player_info(replay):print "    " + replay.player[1].name.encode("utf-8") + " vs " + replay.player[2].name.encode("utf-8")print "    " + replay.player[1].pick_race + " vs " + replay.player[2].pick_raceprint " "def show_chat(replay):for msg_event in replay.messages:print "    " + msg_event.player.name.encode("utf-8") +" : " + msg_event.text.encode("utf-8")print " "def get_event(replay):for event in replay.events:event_names = set([event.name for event in replay.events])events_of_type = {name: [] for name in event_names}for event in replay.events:events_of_type[event.name].append(event)return events_of_typedef show_base_info(relpay):show_player_info(replay)show_chat(replay)def unit_done_list(events_of_type,uc=None,n=None):unit_born_events = events_of_type["UnitBornEvent"]for ube in unit_born_events:if sc2fliter.baseFliter(ube.unit_controller,ube.second,ube.unit.name) and sc2fliter.highFliter(ube.unit_controller.pid,ube.unit.name,uc,n):print ube.unit_controller.name.encode("utf-8") +" born " + str(ube.unit.name) + " at " + str(ube.second / 60) + ":" + str(ube.second % 60)if __name__ == '__main__':filepath = sys.argv[1]replay = sc2reader.load_replay(filepath, load_level=4)show_base_info(replay)events_of_type = get_event(replay)unit_done_list(events_of_type,1)

sc2fliter.py为

import sc2unit
def baseFliter(unit_controller,second,name):if unit_controller == None:return Falseif second == 0:return Falseif str(name) in sc2unit.blacklist:return Falsereturn Truedef highFliter(uc,n,unit_controller=None,name =None):if unit_controller != None and  name != None:if uc == unit_controller and n == name:return Trueelse:return Falseif unit_controller != None:if uc == unit_controller:return Trueelse:return Falseif name != None:if n == name:return Trueelse:return Falsereturn True

最终运行结果

星际争霸2 sc2replay录像回放python库sc2reader常用函数总结相关推荐

  1. Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略

    Py之Numpy:Numpy库中常用函数的简介.应用之详细攻略 目录 Numpy库中常用函数的简介.应用 1.X, Y = np.meshgrid(X, Y) 相关文章 Py之Numpy:Numpy库 ...

  2. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()

    Python序列类型常用函数练习 这里使用代码示例,练习使用序列类型的常用函数,包括: enumerate() reversed() sorted() zip() 直接看python代码 #enume ...

  3. gmpy2库的常用函数及其作用

    第一次做RSA题,去找题解,发现得用上gmpy2库,下好之后去了解了一下gmpy2库的常用函数 注:一般是用这个库来解决一些大整数之间的各种计算,下面的例子都是举的常规数 1.求两整数的最大公因数 i ...

  4. python内建常用函数

    #标题1# # python内建常用函数# #python内建常用函数 在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030211175 ...

  5. C语言windows.h库的常用函数(三)

    SetCursorPos函数 用途 SetCursorPos函数是windows.h库中用来设置指针位置的函数,使用该函数鼠标指针将会直接跳至指定坐标位置 参数 SetCursorPos函数拥有x和y ...

  6. Python字符串(string)常用函数

    Python字符串(string)常用函数 find:检测字符串是否包含指定字符,如果存在则返回开始的索引值,否则返回-1 str1 = 'hello world' print(str1.find(' ...

  7. random库的常用函数

    random库的常用函数 random()生成一个[0.0,1.0]之间的随机小数 uniform(a,b)生成[a,b]之间的随机小数 randint(a,b)生成一个[a,b]之间的整数 rand ...

  8. Linux环境配置Python库及常用库介绍

    Linux环境配置Python库 Python 的标准库包括了很多的模块, 从 Python 语言自身特定的类型和声明, 到一些只用于少数程序的不著名的模块.在 Linux环境 运行Python 经常 ...

  9. Python IDLE 以及常用函数

    安装成功Python就可以使用自带的开发工具编写Python代码了. IDLE-Integrated Development and Learning Environment 开启IDLE界面如下: ...

最新文章

  1. 企业命令linux下处理实时日志生成另一个实时日志
  2. LeetCode 508. Most Frequent Subtree Sum
  3. TCP及socket通信原理详解
  4. U-Boot启动过程完全分析
  5. vb.net 与 c# 的switch ... case ...的一个重要区别
  6. 论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio Geoffrey Hinton) 精典
  7. 页面间传值的新思路--PreviousPage
  8. widthStep、width
  9. SM2椭圆曲线公钥加密算法
  10. MySQL 日期字段时间加 1 毫秒
  11. 管中窥豹SPDK RBD bdev模块
  12. 如何提升售后盈利能力
  13. Android文字转语音引擎(TTS)简单比较及下载
  14. shell插入多行文本
  15. UBUNTU 12.04 3D 特效设置(三)
  16. Stata面板:Granger-因果检验
  17. HTML5+CSS3小实例:3D旋转木马相册
  18. Win11如何给应用换图标?Win11给应用换图标的方法
  19. 使用librosa库实现100行代码制作音乐卡点视频
  20. 程序员生存定律-选公司前要干的事:分类

热门文章

  1. vue-i18n及ElementUI国际化配置步骤
  2. 前端构建工具gulpjs的使用介绍及技巧
  3. 对鸡你太美的字符画绘制
  4. Python处理PDF神器:PyMuPDF的安装与使用
  5. 怎么用html3秒自动跳网页,HTML页面3秒后自动跳转的三种常见方法
  6. 列出与'SCOTT'从事相同工作的所有员工及部门名称、部门人数、平均工资
  7. 【SSL】2022.5.2 1125.集合
  8. 2016年6月,我们毕业了~~~
  9. 微机原理与接口技术课内实验-NUAA-Masm for Windows
  10. vscode--vue注释快捷方式