版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
前几节学习了读取二进制文件,实际写入二进制文件操作差不多,本节制作一个简单的游戏存档修改器,来说明二进制文件的写入。

记得我的博客第一篇文章是写的《仙剑奇侠传3 外传》存档文件修改器(请参看:《[vb6]仙剑3外传的存档修改器》),当时是用vb6写的。

想想也是十多年过去了。

十多年过去已经很少在电脑上玩游戏了,但是还保留了 大富翁4超时空之旅。

刚上大学那会儿,电脑还是486、586,还没有win32,不过已经有了大富翁、仙剑这样的优秀游戏,

我那时候就开始玩大富翁2和仙剑,现在还记忆犹新。

好了不说闲话,进入正题。

大富翁4的存档文件在安装目录下,从 SAVE0.DAT至SAVE6.DAT,其中Save0.dat是自动存档。

玩家相关数据和存放位置:
现金在 2C,长度为3字节。
存款在 30,长度为3字节。
点卷在 40,长度为2字节。

窗体设计界面如下:

OpenFileDialog的设置如下:

全部代码如下:

Imports System.IO
 
Public Class Form3
    Dim savefile As String
 
    Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
        If ofdSaveFile.ShowDialog <> DialogResult.OK Then
            Exit Sub
        End If
        savefile = ofdSaveFile.FileName
        Call readSave()
    End Sub
 
    Private Sub readSave()
        Dim intXj As Integer = 0
        Dim intCk As Integer = 0
        Dim intDq As Int16 = 0
        Dim fs As New FileStream(savefile, FileMode.Open, FileAccess.Read)
        Try
            If fs.CanSeek Then
                Dim br As New BinaryReader(fs)
                fs.Seek(44, SeekOrigin.Begin)
                intXj = br.ReadInt32()
                intCk = br.ReadInt32()
                fs.Seek(12, SeekOrigin.Current)
                intDq = br.ReadInt16()
                br.Close()
            End If
            fs.Close()
            lblInfo.Text = "读取存档完毕"
        Catch ex As Exception
            lblInfo.Text = "读取存档出错:" & ex.Message
        End Try
        txtXj.Text = intXj.ToString
        txtCk.Text = intCk.ToString
        txtDq.Text = intDq.ToString
    End Sub
 
    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        Dim intXj As Integer = Integer.Parse(txtXj.Text)
        Dim intCk As Integer = CInt(txtCk.Text)
        Dim intDq As Int16 = CType(txtDq.Text, Int16)
 
        Using fs As New FileStream(savefile, FileMode.Open, FileAccess.Write)
            Try
                If fs.CanSeek Then
                    Dim bw As New BinaryWriter(fs)
                    bw.Seek(44, SeekOrigin.Begin)  '定位流位置,相对于流开始的44字节
                    bw.Write(intXj)        '写入一个Integer数据
                    bw.Write(intCk)        '写入一个Integer数据
                    bw.Seek(12, SeekOrigin.Current) '相对当前流的12个字节
                    bw.Write(intDq)        '写入一个int16数据
                    bw.Close()
                End If
                lblInfo.Text = "修改存档完毕"
            Catch ex As Exception
                lblInfo.Text = "写入存档出错:" & ex.Message
            End Try
        End Using
    End Sub
 
End Class

运行时如下:

读取情况:

修改情况:

修改后在游戏里面载入存档:

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net教程 目录

————————————————
版权声明:本文为CSDN博主「VB.Net」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

vb.net 教程 4-9 二进制文件读写 游戏存档修改器相关推荐

  1. 【术】游戏内存修改器原理及游戏敏感数值加密建议

    介绍市面上主流游戏内存修改器的原理,对症下药,让游戏从数据加密层面上更好的抵御这类内存修改器. 主流游戏内存修改器有三大内存搜索功能: 1. 基础数值搜索 2. 模糊搜索 3. 反加密搜索 基础数值搜 ...

  2. C语言高级技术之--游戏属性修改器(背景故事)

    前些天,由于看朋友在玩单机游戏仙剑3(这么早的游戏,早不完了),看得我实在太累,问他为什么不找修改器之类的,那样轻松一些,他的回答让我很无语,他说:"老是下到病毒木马,系统已经重装4-5次了 ...

  3. 手机html5游戏内存修改,《手机游戏存档修改通用教程1 - 基础篇》

    之前发过一些修改游戏存档的帖子,大家都这个都比较感兴趣,但一直以来,大家都是照着教程一步步去修改,很多时候并不明白为什么要这样改.发贴人是怎么知道改哪个地方的?正所谓"授人以鱼不如授人以渔& ...

  4. 只需要一点点C++基础,新手也可以制作单机游戏内存修改器

    声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行. 序:首先我们需要一个Qt+VS环境 Qt从ht ...

  5. VB.Net程序设计:CodeStringHelper多行代码批量修改器

    CodeStringHelper多行代码批量修改器源码 VB.Net程序设计过程中,经常需要对多行代码批量修改,特意将经常遇到过的类型集合在一起.源码分享! 支持功能: 1.删除多余的空白行(多用于复 ...

  6. ce游戏内存修改器(Cheat Engine)

    ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具 新版6.1 版的CE与6.0 最大的区别就是添加了修改器制作工具,比之前 5.6. ...

  7. Cheat Engine游戏脚本修改器通关教程(脑残版Step9)

    文章目录 Step 9 方法一 方法二 Step1 - Step8 通关教程地址(该教程写在2017年9月2日,现在疫情宅在家,补完后续教程):https://cylycgs.blog.csdn.ne ...

  8. 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版

    GFX工具箱最新版本是一款十分强大的游戏画质的修改应用.很多的喜爱游戏的小伙伴们可能都会遇到过游戏的画质帧数不稳定的情况,这款应用就是专门为了解决游戏画质问题而打造的,通过这款应用可以游戏画面参数进行 ...

  9. andorid平台游戏内存修改器的开发思路

    实现一个linux下的命令行内存修改器,然后安卓程序调用这个外置命令 1. 对指定andorid程序的内存进行扫描,把符合条件的数据都列表显现. 这个研究下/proc/pid/maps文件结构,主要分 ...

最新文章

  1. Xamarin iOS教程之申请付费开发者账号下载证书
  2. 这家民办研究院太年轻,竟敢跟世界级选手“叫板”
  3. js:进一步关闭(范围:下一个)
  4. oracle em命令行配置及界面按钮乱码问题解决方法
  5. 如何在xshell中创建一个SSH隧道
  6. SQLLoader1(简单测试,以控制文件方式导入数据)
  7. 剑指offer22-链表中倒数第k个结点
  8. mysql tcp优化_mysql 优化
  9. WPF 自定义IconButton
  10. BootDo管理系统
  11. android车载行业前景,车载 Android 系统快来了,但前景可能并不乐观
  12. win8.1装载windows和linux双系统
  13. 斯坦福教授告诉你:什么是元学习「 CS330 笔记 (三) 」
  14. C语言理论复习,重点回顾
  15. 疯狂的“元宇宙”炒房:有玩家囤了100套房,不到半年翻6倍
  16. top 与 margin-top的区别
  17. python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph
  18. Ajax 发送json格式数据以及发送文件(FormData)和自带的序列化组件: serializers
  19. 计算机文化基础试题集:
  20. 基于使用方的火控系统的测试平台研究

热门文章

  1. Word文档中--邮件合并
  2. 巨型Eclaird雕塑进驻谷歌总部
  3. win7计算机打开一直在搜索,在win7电脑中打开文件夹却变成了搜索界面怎么办?...
  4. coord 在cmd中使用的方法
  5. java并口_Java并行接口开发提高性能
  6. 前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)
  7. 极光id 唯一性问题
  8. 【Python实战】Python对中国500强排行榜数据进行可视化分析
  9. 简信CRM:简述crm系统的主要功能作用
  10. 导致论文高被引的关键因素