救命 understanding a 脚本

tu

新成员
已加入
2020年3月22日
留言内容
2
编程经验
Beginner
嗨,大家好,感谢您将来对我的问题的帮助,我一直在尝试处理一些游戏服务器文件,但仍然不知道文件之间是如何连接和相互通信的。如果有人可以帮助我解决以下问题,则不一定是所有问题的答案,即使您对这些主题有所了解。我正在尝试学习C#编码,因为这些文件是基于C#的,因此我可以获得的信息越多越好。

1.-我一直在阅读此脚本,似乎它从文件中获取信息(我不确切知道它的操作方式,因为我在脚本中看不到文件目录,只知道它要求输入一个公共文件),因此CS文件名为DigimonDB,并具有以下脚本:
使用系统;
使用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文件。



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

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果您只是学习C#,直接进入游戏通常是最糟糕的事情,因为您会错过建立必要的基础来理解程序员的思维方式并将大问题分解为小问题的能力。认为是"我想学习如何盖房子。",然后直接进入具有各种子系统的全面住宅,例如:屋顶,地基,墙壁,水暖,电气,绝缘,HVAC等,那么您应该从基本的木工和砖石开始。

顺便说一句,通常在C#中,源代码被称为"code", not "script". It's only Unity which calls the user customizable bits of C# 码 as "script"s.
 

tu

新成员
已加入
2020年3月22日
留言内容
2
编程经验
Beginner
如果您只是学习C#,直接进入游戏通常是最糟糕的事情,因为您会错过建立必要的基础来理解程序员的思维方式并将大问题分解为小问题的能力。认为是"我想学习如何盖房子。",然后直接进入具有各种子系统的全面住宅,例如:屋顶,地基,墙壁,水暖,电气,绝缘,HVAC等,那么您应该从基本的木工和砖石开始。

顺便说一句,通常在C#中,源代码被称为"code", not "script". It's only Unity which calls the user customizable bits of C# 码 as "script"s.
谢谢您的回答,是的,我完全理解在进入如此大的项目之前我需要了解基本知识,但是我只想熟悉文件及其确切工作方式,原因是,为什么要继续放置所有文件?如果最后无法以某种方式构建文件,那么将这些工作放到这些文件中是没有帮助的,例如,如果无法查看或编辑二进制文件的内容,或者如果无法生成二进制文件,该怎么办?服务器文件使用XML并摆脱那些二进制文件。那就是为什么我问以前的问题。我不假装只问一个问题就进行广告宣传或完全构建完整的服务器文件
 
最佳 底部