65.9K
CodeProject 正在变化。 阅读更多。
Home

Web 游戏 Travian 的自动任务工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.84/5 (24投票s)

2007 年 7 月 23 日

5分钟阅读

viewsIcon

811885

downloadIcon

7259

为 Web 游戏 Travian 开发自动任务工具。

Screenshot - travianauto_snap2.jpg

引言

Travian 是一款关于古欧洲部落战争的网络游戏。我开发了这个工具来自动完成任务。

任务类别

目前支持六种 Travian 任务

  • 升级任务(升级资源或建筑)
  • 建造任务(建造任务)
  • 发展任务(用于学院、军械库和铁匠铺)
  • 训练兵种任务(用于兵营、马厩、工坊、宫殿和居所)
  • 运输资源任务(用于市场)
  • 派遣部队任务(用于集结点)

特点

  • 支持多线程。任务队列可以在单独的线程中执行。
  • 支持事件日志。事件可以记录到文件和 UI 窗口。事件日志支持多线程。
  • 支持 HTTP Get/Post 方法、原始 cookie、UTF-8 编码/解码、gzip 解压缩和 URL 编码/解码。HTTP 函数基于 MFC 类 CInternetSession,因此依赖性较低。
  • HTTP 响应解压缩使用 Crypto++ 中的 Gunzip 类,Crypto++ 是一个加密方案的 C++ 类库。请参考 Crypto++
  • 使用正则表达式解析 HTML,因此代码紧凑。
  • 一旦分配了任务文件、Travian 服务器和用户名/密码,所有任务都会自动完成。

编译源代码

该项目由 VC8.0.50727 (VC2005 SP1) 构建。在编译源代码项目之前,您需要先编译 cryptopp54 项目。cryptopp54 项目位于 Travian 源代码目录的 "cryptopp54" 子文件夹中。然后将 cryptlibD.lib(调试模式)或 cryptlib.lib(发布模式)放在 Travian 源代码文件夹中。

主类说明

类名

描述

类依赖项
(除 MFC/STL 外)

CAboutDlg

关于对话框

CHyperLink

CEventLog

事件缓冲区管理,将事件记录到文件并通知已注册的窗口以获取新事件。

CHttpClient

发送 HTTP 请求并获取 HTTP 响应。支持 Get/Post 方法、gzip 解压缩、URL 编码/解码、UTF-8 编码/解码、原始 cookie。

CURLEncDec

URL 编码/解码。

CRegex

对 Paul DiLascia 编写的 ATL 正则表达式类 CAtlRegExp<> 的封装。

CTravianTask

Travian 任务基类,它表示升级任务。它解析 HTML 表单字段,并给出任务的 URL 和特殊标记。如果玩家拥有多个村庄,则 CTravianTask 负责切换当前村庄。CTravianTask 还提供了一个 static 函数来从任务文件中解析任务。

CHttpClient, CEventLog

CTravianTaskBuild

CTravianTaskBuildCTravianTask 的子类。它表示建造任务。

CTravianTask, CEventLog

CTravianTaskDevelop

CTravianTaskDevelopCTravianTask 的子类。它表示发展任务。

CTravianTask, CEventLog

CTravianTaskTrain

CTravianTaskTrainCTravianTask 的子类。它表示训练兵种任务。

CTravianTask, CEventLog

CTravianTaskResourceTransport

CTravianTaskResourceTransportCTravianTask 的子类。它表示运输资源任务。

CTravianTask, CEventLog

CTravianTaskDispatchTroop

CTravianTaskDispatchTroopCTravianTask 的子类。它表示派遣部队任务。

CTravianTask, CEventLog

CTravianTaskDispatchTroop

CTravianTaskDispatchTroopCTravianTask 的子类。它表示派遣部队任务。

CTravianTask, CEventLog

Tasks(任务)

CTravianTask* 向量的 typedef。它用作任务队列。

CTravianTask

CTravianTaskSchedule

任务队列的调度线程。

CTravianTask, Tasks, CEventLog

CThreadSchedule

任务队列的调度线程。

CTravianTaskSchedule, CEventLog

CFormTask

用于任务参数的表单视图。

CThreadSchedule, CEventLog

CViewOutput

事件输出视图。

CEventLog

CViewTaskList

任务列表视图。

Tasks(任务)

历史

  • 初始发布:1.0.0.0 (2007 年 7 月 23 日)
  • 发布:1.0.0.1 (2007 年 8 月 18 日)
    修复了解析负数村庄坐标的问题。
  • 1.0.0.8 由 mila发布

本次发布新增内容?

  • 修复了部队派遣错误
  • user.ini 文件。如果此文件存在,程序将逐行读取。在行中您可以指定
    1. 行:服务器 URL。(例如 s2.travian.hu
    2. 行:用户名。(例如 habakuk)
    3. 行:密码。(例如 babzsak)
    4. 行:文件名。(例如 tasks_en.txt
    5. 行:部落类型。(例如 3)
    部落类型可以是
    1. 罗马人
    2. 条顿人
    3. 高卢人
  • 计算完成任务所需的资源量。
    如果在任务运行时资源不足,程序将计算出您何时会有足够的资源来完成任务。这个新的日期将设置为任务的执行日期。(任务列表中的图标将从时钟变为显示此情况。)
  • <DTime> 的规范而不是 >Time< 表示相对于前一个任务日期的偏移量。
    这还确保了任务的运行顺序。因为 DTime 任务将始终晚于前一个任务。Dtime := delata 时间。
  • 空时间规范:>Time<>/Time< 表示实际日期。
    因此,任务将尽快执行(在 2 分钟内!)
  • 新增 <Spy> 标签。如果您只派遣间谍进行侦察(在派遣部队中仅包含侦察兵种),您可以在此处指定您感兴趣的内容。间谍类型可以是 1 或 2。
    1. 侦察资源和部队
    2. 侦察防御设备和其他部队
    注意!您负责在 >Troop<...>/Troop< 部分只派遣侦察兵。
  • 在标题中显示用户名和服务器。
  • 仅在调试模式下记录 HTML。在最终发布版中,整个 HTML 页面都没有被记录。因此,日志文件的大小急剧减小。
  • 日志文件中行的开头 "------" 表示错误
  • 列表视图中的任务描述采用了更简洁的形式。列表视图的可读性大大提高。
  • 显示部队名称而不是数字。(需要在 user.ini 文件中定义部落类型)
© . All rights reserved.