星际争霸2 sc2replay录像回放python库sc2reader常用函数总结
安装
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常用函数总结相关推荐
- Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略
Py之Numpy:Numpy库中常用函数的简介.应用之详细攻略 目录 Numpy库中常用函数的简介.应用 1.X, Y = np.meshgrid(X, Y) 相关文章 Py之Numpy:Numpy库 ...
- Python序列类型常用函数练习:enumerate() reversed() sorted() zip()
Python序列类型常用函数练习 这里使用代码示例,练习使用序列类型的常用函数,包括: enumerate() reversed() sorted() zip() 直接看python代码 #enume ...
- gmpy2库的常用函数及其作用
第一次做RSA题,去找题解,发现得用上gmpy2库,下好之后去了解了一下gmpy2库的常用函数 注:一般是用这个库来解决一些大整数之间的各种计算,下面的例子都是举的常规数 1.求两整数的最大公因数 i ...
- python内建常用函数
#标题1# # python内建常用函数# #python内建常用函数 在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030211175 ...
- C语言windows.h库的常用函数(三)
SetCursorPos函数 用途 SetCursorPos函数是windows.h库中用来设置指针位置的函数,使用该函数鼠标指针将会直接跳至指定坐标位置 参数 SetCursorPos函数拥有x和y ...
- Python字符串(string)常用函数
Python字符串(string)常用函数 find:检测字符串是否包含指定字符,如果存在则返回开始的索引值,否则返回-1 str1 = 'hello world' print(str1.find(' ...
- random库的常用函数
random库的常用函数 random()生成一个[0.0,1.0]之间的随机小数 uniform(a,b)生成[a,b]之间的随机小数 randint(a,b)生成一个[a,b]之间的整数 rand ...
- Linux环境配置Python库及常用库介绍
Linux环境配置Python库 Python 的标准库包括了很多的模块, 从 Python 语言自身特定的类型和声明, 到一些只用于少数程序的不著名的模块.在 Linux环境 运行Python 经常 ...
- Python IDLE 以及常用函数
安装成功Python就可以使用自带的开发工具编写Python代码了. IDLE-Integrated Development and Learning Environment 开启IDLE界面如下: ...
最新文章
- 企业命令linux下处理实时日志生成另一个实时日志
- LeetCode 508. Most Frequent Subtree Sum
- TCP及socket通信原理详解
- U-Boot启动过程完全分析
- vb.net 与 c# 的switch ... case ...的一个重要区别
- 论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio Geoffrey Hinton) 精典
- 页面间传值的新思路--PreviousPage
- widthStep、width
- SM2椭圆曲线公钥加密算法
- MySQL 日期字段时间加 1 毫秒
- 管中窥豹SPDK RBD bdev模块
- 如何提升售后盈利能力
- Android文字转语音引擎(TTS)简单比较及下载
- shell插入多行文本
- UBUNTU 12.04 3D 特效设置(三)
- Stata面板:Granger-因果检验
- HTML5+CSS3小实例:3D旋转木马相册
- Win11如何给应用换图标?Win11给应用换图标的方法
- 使用librosa库实现100行代码制作音乐卡点视频
- 程序员生存定律-选公司前要干的事:分类