问题标签 [crysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 重新打开关闭的文件:Lua
我有一个名为 backup.lua 的文件,程序应该经常写入该文件以备份其状态,以防万一发生故障。问题是该程序在第一轮中将 backup.lua 文件写入完全正常,但在其他任何时候它都拒绝写入该文件。
我尝试在程序仍处于打开状态时删除该文件,但 Windows 告诉我该文件正在被程序“CrysisWarsDedicatedServer.exe”使用。我已经告诉宿主Lua函数关闭backup.lua文件,为什么它关闭后不让我随意修改文件?
我在互联网上找不到任何东西(谷歌实际上试图更正我的搜索),该项目的二级程序员也不知道。所以我想知道你们中是否有人知道我们在这里做错了什么?
主机功能代码:
谢谢大家:)。
编辑:
尽管文件现在已正常写入磁盘,但系统无法读取转储文件。
c++ - Messages formatting the wrong way round
I have the following code to send a block of text to a users' game console (Crysis Wars):
But I get this result:
This problem has practically plagued the Crysis Wars developer community, and there have been no real solutions to this. The code formats fine if I do it straight from C++ as opposed to Lua to C++,, so this must be a problem Lua-side.
I have tried timing the messages to 1ms apart, and this resulted in some messages going missing (probably because recent messages override the old ones). Do you guys have any suggestions or solutions to this issue? If you provide a working solution, you'll be pretty famous within the Crysis Wars developer community as you would have solved a pretty annoying bug :). I would offer some of my reputation but unfortunately I awarded the bounty this morning to someone for solving another issue.
Function code for sending the messages:
If this helps for anything, here's the C++ SendConsoleMessage code:
Edit:
Please note that this isn't to do with the text used to center and that the image and text block below is only provided as an example; this issue occurs on every piece of code that is sent.
lua - 添加内容时表格为空
当我向表格 (Lua) 添加内容时,我遇到了一个巨大的问题,表格中的所有内容突然消失了。有问题的表包含禁止列表的数据(目前有 608 个条目),并通过使用table.insert放置在表中,但是用户的潜在客户条目以Umbra.Banlist[profileId] = {};的形式完成。. Umbra.Banlist [profileId] = {}; 单独的表应该意味着 Umbra.Banlist 表中有内容。运行代码和使用时我没有收到任何错误
我明白了:
我在网上和这个网站上看过,但似乎没有任何相关的问题,所以我把它贴在这里。
此代码是 Crysis Wars 的服务器模块的一部分(请参阅下面的整个函数),但手头有整个 Lua 库(因此,如果您认为您的答案不能解决问题,请不要担心)。
编码:
编辑:
如果表中不存在他们的个人资料,我没有收到以下代码应该打印的消息,因此他们的个人资料确实存在。
另一个编辑:
证明系统实际上可以获得“ID”变量:
c++ - 从消息中检索字符串
我正在为 Crysis Wars 进行我的第一个公共服务器修改,并确保没有人窃取我的代码,我将尽可能多地放在基于 C++ 的 DLL 中(替代方案是 Lua)。为此,我必须将命令放入 DLL 中,其中一些需要额外的变量。这是一个例子:
!ban [玩家名] [时间] [原因]
我将如何检索变量 playername、time 和 reason,所有这些变量都有不同的字符长度?原因变量也可能有多个需要选择的词(例如“冒犯性消息和作弊”)。
在 Lua 中,这将通过一个简单的 'string.match' 来完成;我想我总是可以在 Lua 中进行消息排序,然后将其发送回 C++,但这可能会导致整个聊天命令系统混乱。
它需要从“const char *msg”中提取变量,系统会根据发送的每条消息对其进行分析。我已经分析了它的命令消息(以'!'开头的那些)。做这个的最好方式是什么?
示例: !ban Con 5 spam - 这将踢玩家 'Confl!ct' (我已经有部分扫描码来识别部分名称)五分钟
!ban Con spam - 这将永久禁止玩家“Confl!ct”
c++ - 重新启动应用程序:延迟
我正在将重启功能编码到我最新的 Crysis Wars 服务器修改中,该修改可以远程重启服务器。如果服务器出现问题并且简单的系统重新加载无法修复它,这很有用,也有助于告诉服务器在指定时间重新启动以释放内存。
为了实现这一点,我已经编写了所需的功能,并且应用程序本身重新启动没有问题。问题是端口没有足够快地关闭,导致应用程序的新实例无法正常运行。
我正在寻找一个理想的解决方案,即程序关闭并在两秒钟后启动,而不是立即启动。这样做会给 Windows 足够的时间来释放服务器正在使用的端口,并清理任何现有内存。
请注意:我已经删除了我的其他(相关)问题,因为在分配端口时如果不告诉它这样做显然是不可能关闭程序端口的,这是我无法做到的,因为我无权访问源代码绑定到端口的代码。
代码,如果需要的话
c++ - 自动电子邮件发件人
我正在尝试构建一个自动电子邮件发送器,用于发送游戏服务器的 ms 统计信息,也用于通知服务器管理员潜在的作弊者和问题。服务器修改当前是一个 C++ DLL,尽管稍后当我更有经验时,我打算制作一个 GUI 专用服务器应用程序。
电子邮件将每 5 小时发送一次(服务器管理员可以通过配置设置更改此设置)以及当玩家被举报并添加成员时(以获得服务器内的权限)。
我在 Google 上做了一个简短的了解,我能找到的只是外部库。是否可以在没有其他第三方库的情况下发送电子邮件?另外,要求会是什么?将使用 DLL 的应用程序在 Windows Server 2008(或 Windows 7)或更高版本上运行,并且可以在各种 Internet 类型上运行。
这可以在没有安装 SMTP 服务器的情况下完成吗?
c++ - 计算一组字符的出现次数并从字符串中减去空格
有关问题,请参见下面的第一张图片。您可以看到第一行文本正确对齐,但第二行没有。
几个月前,我编写了一些代码,将文本集中在一个字符串中,以便在控制台上很好地处理它以进行游戏服务器修改。这段代码工作得很好,但有两个主要问题:
如果我们超过实际控制台的 112 个字符限制,游戏服务器就会崩溃(这个问题不会出现在正常的控制台消息中)
在文本中使用颜色会导致字符串对于每个颜色代码向右移动两个字符
我正在寻找解决第二个问题(尽管解决第一个问题将是一个巨大的好处),但不知道如何做到这一点。我不能简单地去掉颜色编码,因为这是为文本着色所需要的。
如果我没有 9 种颜色类型可供选择,则此代码可能很简单:
我也不想简单地寻找“$”,因为在某些情况下它被用作普通字符。
插入空格时是否可以忽略 $1-$9?如果是这样,我将如何处理这个问题?
编码
例子
我现在无法使用我的开发 PC,因为我正在工作 - 如果这个问题还没有解决,我会在几个小时后发布屏幕截图。
来自 Lua 的调用者:
这显示了它应该是什么样子。仅当消息长度少于 80 个字符时,该消息才能正常工作。
c++ - 过程保护
我为一款名为 Crysis Wars 的 PC 游戏编程,最近玩家一直在要求更新游戏(社区补丁)来解决问题,包括一个颇具讽刺意味的脚本错误。
有几种被称为 Infinium、Gamg、Annihilator 和 Longpoke 的游戏黑客,它们依靠 DLL 注入方法在游戏中放置黑客和作弊,而不会注意到内部反作弊系统。这些 hack 非常简单,通过修改十六进制值来利用主游戏 DLL 的代码,有些(如 Gamg)是使用游戏引擎自己的 SDK 制作的(我知道这个 hack 的创建者)。
和其他人一样,我可以访问 CryEngine 2(游戏引擎)SDK(包括主游戏 dll 的源代码),我建议修改所有游戏功能(客户端和服务器)的名称和位置,以便现有的黑客将不再起作用。
这是否可以阻止通过修改主游戏 dll 的十六进制值进行的黑客攻击?我确认使用 SDK 进行的黑客攻击将不再起作用,但我想在尝试此之前与其他人核实,因为这需要大量工作。
基本上,我要问的是:
黑客通过更改源代码来利用游戏中的 DLL,如果我更改源代码中的所有功能并为游戏发布(社区)更新(不发布新的源代码),黑客是否能够使用同样的黑客没有任何问题?
如果这看起来令人困惑,我深表歉意 - 如果我需要更清楚,请务必说出来。
c++ - 未解决的外部符号 - 指南中的错误?
因此,我一直在尝试修复游戏引擎 SDK 中的一个奇怪错误,其中使用 Windows 加载光标而不是游戏自己的光标。解决方法在这里:http ://www.crydev.net/wiki/index.php/Use_Custom_Cursor#Step_1:_Fixing_The_Cursor_Bug 。
我遵循了修复,但在构建游戏 DLL 时我不断得到这些:
是的,通常我可以通过正确定义类来很容易地解决这个问题,但在这种情况下它不起作用。我做错了什么?
这些文件与修复指南中的文件相同,因此在此处发布文件实际上没有任何意义,因为它们会在这里浪费空间。如果确实需要这些文件来调查此问题,如果有人要求,我会上传它们。
也许修复本身存在错误?修复与我的构建的一个可能区别是修复使用的是 Visual Studio 2008,而我使用的是 Visual Studio 2013。
c++ - 来自 CLI 的 GUI 窗口
我有一个在命令行上运行的服务器应用程序,但我想为其创建一个 GUI 前端,以使用户更容易与服务器程序交互。由于我没有实际的主应用程序 *.exe 文件的源代码,我唯一的选择是通过服务器 DLL(这是用于游戏服务器)——主机应用程序支持此 DLL。
我正在考虑的 GUI 将显示诊断消息、玩家名称(和统计数据)和服务器内存使用情况。许多用户发现使用这个游戏服务器应用程序托管服务器太难了,因为他们说 CLI 太难了。
是否可以仅从 DLL 为 CLI 服务器应用程序创建交互式前端?或者我是否需要创建一个全新的程序,以某种方式从服务器应用程序中读取统计信息?
我对 Google 进行了简要介绍,但我只发现了如何将 CLI 放在 GUI 窗口中,而不是反过来。为了清楚起见,我想生成第二个窗口来控制服务器应用程序;我不想完全摆脱 CLI。