tu
新成员
- 已加入
- 2020年3月22日
- 留言内容
- 2
- 编程经验
- Beginner
嗨,大家好,感谢您将来对我的问题的帮助,我一直在尝试处理一些游戏服务器文件,但仍然不知道文件之间是如何连接和相互通信的。如果有人可以帮助我解决以下问题,则不一定是所有问题的答案,即使您对这些主题有所了解。我正在尝试学习C#编码,因为这些文件是基于C#的,因此我可以获得的信息越多越好。
这些是我所要提出的问题,有点像基本的哈哈,但是我学习了所有这些知识并且我渴望成为一名程序员只是为了业余爱好,我需要一些帮助,我正在阅读一些基本的C#指南和知识,但是意思是我什么时候解决那些困扰我的问题。
如果您想进一步帮助我以及快速浏览游戏文件,我会将它们附加到线程中,即使该文件已经存在于游戏文件中,我也会自行上传.bin文件。
drive.google.com
drive.google.com
非常感谢你们,祝您周末愉快。
1.-我一直在阅读此脚本,似乎它从文件中获取信息(我不确切知道它的操作方式,因为我在脚本中看不到文件目录,只知道它要求输入一个公共文件),因此CS文件名为DigimonDB,并具有以下脚本:
所以我知道它需要信息然后再使用它,但是我不知道它到底是如何工作的,是否可以读取,保存并传输到另一个文件中?还是保留它,然后另一个代码调用该信息?
Also I know this 码 should be reading this file to get much information : DigimonList.BIN
那就是我的下一个问题。
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用Digital_World.Helpers;
使用System.IO;
使用Digital_World.Entities;
命名空间Digital_World.Database
{
公共课DigimonDB
{
公共静态词典<int, DigimonData>Digimon =新字典<int, DigimonData>();
公共静态无效负载(字符串fileName)
{
如果(Digimon.Count> 0) return;
使用(流s = File.OpenRead(fileName))
{
使用(读取的BitReader =新的BitReader)
{
整型 count = read.ReadInt();
为(int i = 0; i< count; i++)
{
read.Seek(4 + i * 408);
DigimonData digiData =新的DigimonData();
digiData.Species = read.ReadInt();
read.Skip(4);
digiData.DisplayName = read.ReadZString(Encoding.Unicode);
read.Seek(4 + 136 + i * 408);
digiData.Name = read.ReadZString(Encoding.ASCII);
read.Seek(4 + 228 + i * 408);
digiData.HP = read.ReadShort();
digiData.DS = read.ReadShort();
digiData.DE = read.ReadShort();
digiData.EV = read.ReadShort();
digiData.MS = read.ReadShort();
digiData.CR = read.ReadShort();
digiData.AT = read.ReadShort();
digiData.AS = read.ReadShort();
digiData.uStat = read.ReadShort();
digiData.HT = read.ReadShort();
digiData.uShort1 = read.ReadShort();
digiData.Skill1 = read.ReadShort();
digiData.Skill2 = read.ReadShort();
digiData.Skill3 = read.ReadShort();
Digimon.Add(digiData.Species,digiData);
}
}
}
Console.WriteLine("[DigimonDB]已加载{0}数字兽。", Digimon.Count);
}
公共静态DigimonData GetDigimon(int种)
{
如果(Digimon.ContainsKey(Species))
返回数码兽[物种];
其他
返回null;
}
公共静态列表<int>GetSpecies(字符串名称)
{
清单<int> species = new 清单<int>();
foreach(KeyValuePair<int, DigimonData> kvp in Digimon)
{
DigimonData dData = kvp.Value;
如果(dData.DisplayName.Contains(Name)|| dData.Name.Contains(Name))
species.Add(dData.Species);
}
返回物种;
}
}
公共类DigimonData
{
public 整型 Species;
公共字符串名称;
公共字符串DisplayName;
公共短码HP,DS,DE,AS,MS,CR,AT,EV,uStat,HT,uShort1;
公共短技能1,技能2,技能3;
公开DigimonData(){}
公开DigimonStats统计信息(短版)
{
// TODO:获取统计信息
返回null;
}
公开DigimonStats默认值(字符驯服,int同步,int大小)
{
DigimonStats Stats =新的DigimonStats();
Stats.MaxHP =(short)(Math.Min(Math.Floor((decimal)HP *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.HP *(Sync / 100)),short .MaxValue));
Stats.HP =(short)(Math.Min(Math.Floor((decimal)HP *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.HP *(Sync / 100)),short .MaxValue));
Stats.MaxDS =(short)(Math.Min(Math.Floor((decimal)DS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DS *(Sync / 100)),short .MaxValue));
Stats.DS =(short)(Math.Max(Math.Floor((decimal)DS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DS *(Sync / 100)),short .MaxValue));
Stats.DE =(short)(Math.Min(Math.Floor((decimal)DE *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DE *(Sync / 100)),short .MaxValue));
Stats.MS =(short)(Math.Min(Math.Floor((decimal)MS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.MS *(Sync / 100)),short .MaxValue));
Stats.CR =(short)(Math.Min(Math.Floor((decimal)CR *((ushort)Size / 10000)),short.MaxValue)));
Stats.AT =(short)(Math.Min(Math.Floor((decimal)AT *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.AT *(Sync / 100)),short .MaxValue));
统计EV = EV;
Stats.uStat = uStat;
统计数据HT = HT;
Stats.Intimacy =(short)Sync;
返回统计信息;
}
公共重写字符串ToString()
{
返回string.Format("{0} [{1}]",DisplayName,Species);
}
}
}
使用System.Collections.Generic;
使用System.Linq;
使用System.Text;
使用Digital_World.Helpers;
使用System.IO;
使用Digital_World.Entities;
命名空间Digital_World.Database
{
公共课DigimonDB
{
公共静态词典<int, DigimonData>Digimon =新字典<int, DigimonData>();
公共静态无效负载(字符串fileName)
{
如果(Digimon.Count> 0) return;
使用(流s = File.OpenRead(fileName))
{
使用(读取的BitReader =新的BitReader)
{
整型 count = read.ReadInt();
为(int i = 0; i< count; i++)
{
read.Seek(4 + i * 408);
DigimonData digiData =新的DigimonData();
digiData.Species = read.ReadInt();
read.Skip(4);
digiData.DisplayName = read.ReadZString(Encoding.Unicode);
read.Seek(4 + 136 + i * 408);
digiData.Name = read.ReadZString(Encoding.ASCII);
read.Seek(4 + 228 + i * 408);
digiData.HP = read.ReadShort();
digiData.DS = read.ReadShort();
digiData.DE = read.ReadShort();
digiData.EV = read.ReadShort();
digiData.MS = read.ReadShort();
digiData.CR = read.ReadShort();
digiData.AT = read.ReadShort();
digiData.AS = read.ReadShort();
digiData.uStat = read.ReadShort();
digiData.HT = read.ReadShort();
digiData.uShort1 = read.ReadShort();
digiData.Skill1 = read.ReadShort();
digiData.Skill2 = read.ReadShort();
digiData.Skill3 = read.ReadShort();
Digimon.Add(digiData.Species,digiData);
}
}
}
Console.WriteLine("[DigimonDB]已加载{0}数字兽。", Digimon.Count);
}
公共静态DigimonData GetDigimon(int种)
{
如果(Digimon.ContainsKey(Species))
返回数码兽[物种];
其他
返回null;
}
公共静态列表<int>GetSpecies(字符串名称)
{
清单<int> species = new 清单<int>();
foreach(KeyValuePair<int, DigimonData> kvp in Digimon)
{
DigimonData dData = kvp.Value;
如果(dData.DisplayName.Contains(Name)|| dData.Name.Contains(Name))
species.Add(dData.Species);
}
返回物种;
}
}
公共类DigimonData
{
public 整型 Species;
公共字符串名称;
公共字符串DisplayName;
公共短码HP,DS,DE,AS,MS,CR,AT,EV,uStat,HT,uShort1;
公共短技能1,技能2,技能3;
公开DigimonData(){}
公开DigimonStats统计信息(短版)
{
// TODO:获取统计信息
返回null;
}
公开DigimonStats默认值(字符驯服,int同步,int大小)
{
DigimonStats Stats =新的DigimonStats();
Stats.MaxHP =(short)(Math.Min(Math.Floor((decimal)HP *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.HP *(Sync / 100)),short .MaxValue));
Stats.HP =(short)(Math.Min(Math.Floor((decimal)HP *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.HP *(Sync / 100)),short .MaxValue));
Stats.MaxDS =(short)(Math.Min(Math.Floor((decimal)DS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DS *(Sync / 100)),short .MaxValue));
Stats.DS =(short)(Math.Max(Math.Floor((decimal)DS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DS *(Sync / 100)),short .MaxValue));
Stats.DE =(short)(Math.Min(Math.Floor((decimal)DE *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.DE *(Sync / 100)),short .MaxValue));
Stats.MS =(short)(Math.Min(Math.Floor((decimal)MS *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.MS *(Sync / 100)),short .MaxValue));
Stats.CR =(short)(Math.Min(Math.Floor((decimal)CR *((ushort)Size / 10000)),short.MaxValue)));
Stats.AT =(short)(Math.Min(Math.Floor((decimal)AT *((ushort)Size / 10000))+ Math.Floor((decimal)Tamer.AT *(Sync / 100)),short .MaxValue));
统计EV = EV;
Stats.uStat = uStat;
统计数据HT = HT;
Stats.Intimacy =(short)Sync;
返回统计信息;
}
公共重写字符串ToString()
{
返回string.Format("{0} [{1}]",DisplayName,Species);
}
}
}
Also I know this 码 should be reading this file to get much information : DigimonList.BIN
那就是我的下一个问题。
2.-我如何读取存储在此类二进制文件(.bin)中的信息,我一直在寻找可以帮助我的程序,但我得到的只是句点,句点和更多句点,我知道代码使用Bitreader,但是如果Visual Basic能够读取它,那么我可以通过某种方式在文本文件中获取该信息?显然.bin文件仅存储文本信息?如何获得该信息以供我阅读和修改?是否可以创建一个脚本,该脚本能够读取整个存档信息,然后将其传输到文本文件?
3.-如果您要处理此服务器文件,您是否会摆脱.bin文件并使用某种XML文件来存储此类信息或仅保留.bin文件?我对使用XML会更满意,但是我真的不知道bin文件中存储了什么信息,这就是为什么我一直在努力前进,导致无法找到提取此类文件信息的方法。
这些是我所要提出的问题,有点像基本的哈哈,但是我学习了所有这些知识并且我渴望成为一名程序员只是为了业余爱好,我需要一些帮助,我正在阅读一些基本的C#指南和知识,但是意思是我什么时候解决那些困扰我的问题。
如果您想进一步帮助我以及快速浏览游戏文件,我会将它们附加到线程中,即使该文件已经存在于游戏文件中,我也会自行上传.bin文件。
Comfy-Mittens-Digital-World-dae79b3.zip

DigimonList.bin

非常感谢你们,祝您周末愉快。