我如何终止Lua脚本?现在我遇到了exit()问题,我不知道为什么.(这更多是Minecraft ComputerCraft的问题,因为它使用了包含的API.)这是我的代码:
while true do
if turtle.detect() then
if turtle.getItemCount(16) == 64 then
exit() --here is where I get problems
end
turtle.dig() --digs block in front of it
end
end
Run Code Online (Sandbox Code Playgroud) 第一,
我想表明我知道从客户端发送的任何信息都不可信,因为它可能是欺骗性的.我对通过默默无闻的安全方法感兴趣,以阻止99.9%的潜在骗子和能够检测到实时绕过安全的程序.
我对此有一些想法包括验证它正在保护的游戏的文件和内存校验和以及任何潜在的作弊应用程序,允许客户端根据服务器的请求扫描(通过TCP),以检测内存注入作弊或作弊记忆足迹.因此,旁路黑客必须侦听在SSL上发送给它的所有TCP信息,然后通过反汇编加密/解密功能来解密消息,以了解它想要什么.类似地,客户端本身可能是自我更改的,并允许它随机添加/删除功能(但由服务器保留),以便欺骗学习如何绕过它.这可能毫无意义?
我发现对于经验较丰富的人来说这只是中等难度,所以我对其他可能难以绕过的方法持开放态度.
我只对可能的实现感兴趣,而不是对客户端的反热是不可能的,我只是想让它变得非常困难.
添加了Minecraft和java标签,它适用于Minecraft,我知道社区足够大,有人可能会击败我的系统,但我希望通过使用不断更新和更改,我可以通过聪明才智和坚持不懈来打败他们.
编辑:我发现这篇文章:如何防止在我们的(多人)游戏中作弊?我正在添加他的建议,所以不要重复,因为我正在寻找比明显更多的想法(我不确定他是否可以绕过)
1)打开所有其他进程,并挂钩其WriteProcessMemory函数,以便它们无法写入游戏进程中的内存.做得好这一步将阻止所有作弊和欺骗引擎的90%.
2)做同样的事情,挂钩各种鼠标和键盘仿真功能.这将阻止许多目标机器人和其他类型的自动化机器人.
3)在游戏自己的进程中加入VirtualProtectEx/VirtualAllocEx/etc函数,并监视哪些模块正在改变保护级别或分配新的内存块.你必须要狡猾,以防止它在你的游戏进行大量分配时过于集中CPU,但是可以做到.
4)挂钩LoadLibrary函数并监视动态加载的任何DLL,以防止DLL注入.
5)在游戏连接上使用一些轻量级多态编码.
6)使用一些反调试技术来防止调试器附加到您的进程.谷歌反调试,你应该能找到很多东西.
7)使用定制的专有PE打包器来防止有用的游戏拆卸.
8)了解处理透明度和alpha混合的OpenGL或Direct3D函数和方法.
9)如果使用着色器,则校验和着色器和着色器常量值.
10)对玩家角色使用额外的遮挡剔除技术,以防止在他们的视线被其他几何体阻挡时完全渲染它们.它也可能对您的表现有所帮助,也可能没有帮助,但它可以防止许多问题.
我正在尝试制作一个简单的定制Minecraft发射器的东西.
根据Launcher的Minecraft Wiki页面,应该可以使用命令行中的用户名和密码前缀运行Minecraft启动器,直接进入游戏,而不是通过启动器.
我尝试了各种版本java -cp -u=username -p=password minecraft.jar net.minecraft.LauncherFrame,它说的是旧方法:
java -cp minecraft.jar net.minecraft.LauncherFrame <username> <password>
Run Code Online (Sandbox Code Playgroud)
旧方法打开了Minecraft启动程序,就像我双击jar文件一样,但它不会直接进入菜单屏幕.
新的方式(使用密码和用户名作为前缀),给我一个错误信息说prefix -u=username or -p=password don't exist.
对此有何帮助?我真的被卡住了.
我正在帮助我的孩子学习创建Minecraft插件,尽管我对Java或IDEA没有多少经验.到目前为止一切运行良好,但为了执行我们的代码,我们必须:
Bukkit/plugins)我不确定(3)可以做什么,但在我看来,IDEA应该能够一步完成(1)和(2).此外,我们目前无法使用此配置进行调试.
在Visual Studio/.NET中,我只需要指定可执行文件 - 在这种情况下为java/craftbukkit - 作为"外部程序",它将解决所有这些问题.但是在IDEA中,似乎我应该添加一个运行配置,而我没有看到允许任何类似"主机应用程序"的选项.相反,它想要完整的类路径到mainBukkit,我不清楚它会是什么.我还看到它在其他地方建议,如果没有Bukkit的调试版本,即使这样也行不通.但我真的不想调试Bukkit; 我只是想调试我们的插件代码.
我发现这些指令用于远程调试Bukkit插件,但这实际上是必要的吗?它没有解决"两步运行"问题; 它实际上让它变得更糟!
我解析一个schematic file具有以下结构
该.schematic文件格式是由社区创建到存储的Minecraft世界的部分与第三方程序使用。原理图为NBT格式
该命名二进制变量(NBT)文件格式是使用的游戏的Minecraft为各种事情非常简单的结构化的二进制格式
块Data Value小号定义的Minecraft地形的部分。
我检索了block data每个Minecraft块,并需要弄清楚如何解码这些字节。这是《我的世界》Stairs方块的一个例子
例如,阶梯块数据包括:
我可以使用nbt-js解析整个原理图文件,这使我可以像这样访问块数据:
var b = schem.value.Data.value[index];
Run Code Online (Sandbox Code Playgroud)
我使用以下代码解码楼梯块数据位数据
var facing = b & 0x03;
var half = (b >> 2) & 0x01;
var shape = (b >> 3) & 0x03;
Run Code Online (Sandbox Code Playgroud)
这些配置值对于确定应如何渲染楼梯楼梯至关重要。例如,我使用面值旋转块:
block.rotateX(facing);
Run Code Online (Sandbox Code Playgroud)
但是,对于每种块类型,位的解释都不同,这在我能找到的任何地方都没有定义。
我有一个rails网站和一个运行在linode vps上的小型Minecraft服务器.我正在基于init.d文件从ram服务器上运行minecraft作为自定义服务.由于我使用上帝监控我的rails网站,我以为我也会将它用于我的世界,但它似乎无法以任何方式识别该服务.条件没有检测到它的存在.:process_running总是返回false,无论它是否正在运行,并且当它不运行时都无法启动它.添加到混乱中:memory_usage和:cpu_usage始终为零.
我的/etc/init.d/minecraft文件在这里:http: //pastie.org/2760483
它工作得非常好,并且"服务我的世界开始"并没有给我几乎所有我需要的东西.我希望能够在cpu使用率很高的情况下通过上帝自动让它入睡,以优先考虑网站.然而,上帝的条件都没有弄清楚这个过程发生了什么.
我的/opt/god/minecraft.god文件在这里:http://pastie.org/2760498
显然,低cpu是试图从上帝中崛起.如果你愿意的话,要求打击.
试图从配置中运行上帝:sudo god -c minecraft.god -D
收益率:
I [2011-10-26 01:55:55] INFO: Loading minecraft.god
I [2011-10-26 01:55:55] INFO: Syslog enabled.
I [2011-10-26 01:55:55] INFO: Using pid file directory: /var/run/god
I [2011-10-26 01:55:55] INFO: Socket already in use
I [2011-10-26 01:55:55] INFO: Socket is stale, reopening
I [2011-10-26 01:55:55] INFO: Started on drbunix:///tmp/god.17165.sock
I [2011-10-26 01:55:55] INFO: minecraft move 'unmonitored' to 'up'
I [2011-10-26 01:55:55] INFO: minecraft moved 'unmonitored' to 'up'
I …Run Code Online (Sandbox Code Playgroud) 当我在Erlang中编写一个简单的Minecraft服务器应用程序时,我现在关注如何有效地存储和修改块数据的问题.对于那些不了解Minecraft内部的人:我需要在内存中存储大量高达32kB的二进制文件(100-1000).在此之前,Erlang的内置二进制文件就足够了.但是服务器必须经常读取和更改这些二进制文件中的一些字节(通过它们的id),我不想一直复制它们.
一个很好的功能是从/向Erlang的标准二进制文件导入和导出.
是否有任何Erlang扩展或数据库或我可以使用的任何东西?
我最近在我的Spigot/Bukkit插件中遇到了一个奇怪的错误,完全没有任何意义.请注意,这个问题可能很长,因为我正在处理的项目相当大,因为源代码(下面提供)包含不会包含在这里的类,我将尽力描述我的问题.
在Minecraft中,使用Bukkit API,您可以创建图形菜单(GUI),您可以在其中放置项目在某些插槽中,单击时,您可以调整功能.
在我的例子中,我创建了Menu基础类,其中包含创建此类菜单的基本方法.然后,PurchaseMenu扩展Menu类的用于触发特定位置的功能,以模拟可从菜单中单击的产品的事务.
在深度方面,我将包含的菜单包含"套件"显示(如游戏类),当一个左键单击显示器,玩家可以购买它,或者如果它已经购买,玩家将只选择该套件以供使用.当右键单击显示器时,播放器可以将套件升级到3.
在这两种情况下,都必须弹出一个交易菜单,以便购买或升级所点击的套件.我的设计非常简单,通过从每个PurchaseMenu类的构造函数传递单击的工具包.
以上所有问题都是套件从构造函数中正确传递,但实际购买或升级的套件是随机的(显然不是,但还没有找到任何证据),这通常发生在一些尝试.
我的设计:
InventoryClick单击菜单显示(交互)时调用.InventoryConstruct在创建(打开)菜单时调用.PurchaseProduct在成功购买显示器时调用.PrePaymentChecks是购买前需要进行的必要检查.我的问题:
任何形式的帮助表示赞赏,我希望我详细描述了我的问题,如果您需要任何进一步的源代码,请在下面发表评论.
由于问题将超过30k字符,我将整个项目上传到Git存储库.
https://github.com/parat26/core
Menu.java:https://github.com/parat26/core/blob/master/src/src/ares/core/menu/Menu.java
PurchaseMenu.java:https://github.com/parat26/core/blob/master/src/src/ares/core/menu/PurchaseMenu.java
BattleOptionsMenu.java:https://github.com/parat26/core/blob/master/src/src/ares/core/menu/type/MenuBattleOptions.java
PurchaseMenuKit.java: https://github.com/parat26/core/blob/master/src/src/ares/core/menu/type/PurchaseMenuKit.java
我想知道如何将Java应用程序打包成Windows,Linux和Mac OS X的本机二进制文件.
我知道Minecraft会这样做,但我无法弄明白.这就是我想做的事情:
如果有某种方法来模仿Minecraft自动更新程序功能,那就太棒了.
那么,有没有可用于此的工具,或者我是否需要编写大量的XML来实现这一目标?
我想切换到IntelliJ for forge modding(minecraft).当我做他们在网上做的事情时,我得到了一个maven错误......
Unindexed remote maven repositories found. Disable...
The following repositories used in your gradle projects were not indexed yet:
http://files.minecraftforge.net/maven
If you want to use dependency completion for these repositories artifacts,
Open Repositories List, select required repositories and press "Update" button
Run Code Online (Sandbox Code Playgroud)
当我点击更新,它加载半秒然后再次给出相同的错误...我在互联网上搜索,没有人似乎有我的问题...请帮助吗?