【干货】《GTAOL》外挂开发教程08:ScriptHookV

文摘   时事   2025-01-06 00:00   广西  
现在,我们将探讨一些非常基础的内容。重点要理解的是,一切是如何协同工作的。我花了一些时间才真正理解这个框架,它与构建典型的控制台应用程序或者Windows应用程序有所不同。因此,我希望你能最终理解这些概念。如果你有任何问题,请务必在留言中提问。我会尽力回答你的问题。
现在,让我们深入到代码中,看看它是如何工作的。在第一部分中,我们以添加所需的引用结束了教程。对于我给你的这个模板,你可以在描述中找到它。复制粘贴这个链接,但一定要确保你已经遵循了第一部分教程中的一切。
让我逐行检查代码,以确保你理解实际发生了什么。或许你已经有所了解,但并不是每个人都有相同的经验或背景。如果我解释得太多,请谅解,我希望这对你至少有些教育意义。
现在,当谈到脚本钩子V时,你将得到三种不同的方法。这些方法基本上是根据你的代码而来的,或者至少是按照你的代码逻辑。第一种方法是在每帧中调用的,这意味着每次有新的帧时都会运行一次代码。这对你来说可能很熟悉,就像你在游戏中的帧率一样。第二种方法是在按下某个键时调用的,而第三种方法是在释放某个键时调用的。
对于第一种方法,代码将在每帧中运行,所以你需要小心不要写出占用过多内存的代码。至于第二种和第三种方法,代码将在按下或释放某个键时运行,这可能非常有用,取决于你的逻辑。最后,让我们谈谈主要的方法。这只是个称呼,但实际上需要执行的主要代码取决于我们的逻辑需求。
现在你了解了这三种不同的方法,你可以根据自己的需求来选择合适的。我希望这些解释对你有所帮助,让我们开始吧,为了构建一个新的框架。
每当你按下类似钥匙的东西,或者当你释放钥匙的时候,你都可以在这里编写代码。这是当脚本执行时发生的事情。所以每当游戏加载脚本时,我可以在控制台上输出一些信息,表示脚本已成功执行或加载。我们会在后续的教程中更深入地讨论这个问题,因为需要不同的指导。但让我们从注册键开始。
所以我们要保持简单。我们再写一个 if 语句。我假设你对条件和不同类型的检查有一些了解。所以我们要做的是,如果再一次,我要写代码。我马上回来解释这里的一切。
好的,如果键码等于 F10,让我们弄清楚这里发生了什么。所以我们在这里弄清楚,如果用户按下注册为 F10 的键,我们就要运行这段代码。所以,如果键码等于 10,也就是 F 键被按下了,下面的代码会执行在这些花括号里。
顺便说一句,如果你想要检查其他键,你可以写另一个 if 语句。比如,如果他们点击 F9,你可以在这里写另一个 if 语句。或者你可以自己想象一下,或者你知道会有什么其他的键码。但要知道,你可以做几种不同的检查,这里有很多可能性。
例如,如果键码等于 E,现在是相等的,这不是赋值,当涉及到编程时,等号并不总是赋值,这是检查一个条件。所以我们有一个等号,就像 1+1 等于 2 一样。这不是等号的类型,而是检查条件。
所以,如果键码等于 F10,我们希望执行这段代码。让我们回想一下,我们的想法是什么。我有一个想法,要生成一辆特定颜色的车,然后给它一个特定的车牌,并通知用户。所以我们要做的是,在这里打印一些信息,但我会回来解释一切,所以不要惊慌,当你开始看到这一切不同时的代码。这只是我们要去的世界点,在这里创建车辆。我们需要一个哈希值,答案上的哈希值。停止,让我们做没有撕裂的正向向量。让我们再创建三个浮点数。所以文档通常会建议要做些什么。
虽然只需把你在这里看到的内容打出来。如果你曾经使用过面向对象编程,创建类时,你正在创建类的对象。换句话说,我们有一个叫做车辆的类,它属于,我相信这是 GTA。是啊,是啊。所以它是属于这个的,使用名为 GTA 的关键字。所以把类想象成一个非常大的变量,对呀,所以你可以有一辆叫做车辆的车,一只叫做狗的狗,一只叫做猫的猫。嗯,那类里面有什么,嗯,很多其他物体,比如,也许你可以在车辆类别中,你可以有飞机或船什么的。
所以我们在这里告诉代码,嘿嘿,我们将使用车辆类别,我们将分配它。否则,我们要创建。我们将在车辆类中初始化一个新对象,我们要把它命名为 "01号车"。现在你可以给这个起名字了,你想叫它什么就叫它什么,你可以给这个起名字,或者你可以给它起什么名字。我把它留在 01 号车。这将等于现在,这是任务。还记得我告诉过你相等不一定等于分配吗?对呀,这是我们实际上分配的时间。所以当你看到两个相等的人在一起,这意味着你在检查一种情况,你在检查如果某物等于某物。当你只看到一个等号,这意味着我们要把这辆车归零。希望这是有意义的,如果不是,我强烈推荐您看一下在 dot 中面向对象编程 Net 和 C#,真的打开了您的思维。但将继续。
所以我们要把这个分配给世界点,创建车辆。对不起,世界点。所以这是一门课,这是一种叫做创建车辆的方法,如果你在一个方法上突出显示,所以方法基本上是任何东西,基本上几乎所有黄色的东西,所以创造交通工具等等,所以当你悬停在 "创建车辆" 上,在智能感知杂志上说,它在指定的位置和航向上产生给定型号的车辆,这就是你的备忘单,那是在告诉你,嘿嘿,当您使用此方法时,那是世界点创造车,它需要知道什么型号的车,或者只是在普通车辆中,飞机,等。我需要在哪里产生这个权利,所以当我早些时候谈到逻辑时,我是说我想让这个代码产生一辆车,嗯,游戏要用那辆车做什么,会不会就这样,它会在我面前产卵吗,在我后面,在我上面,在我左右。
所以这基本上是在说,嘿,当你使用世界创建车辆的方法时,它需要指定车辆的类型,以及它将在哪里产卵。所以既然我们是为了利用一种方法,我们必须打开一个新的括号来告诉它需要知道什么,车辆类型和位置。所以车辆的类型,我不想那样做,所以车辆的类型在这里突出显示,逗号前,所以这是创建车辆方法的第一部分,我们需要一个车辆散列点 Zentorno,现在你可以把车换成你想要的任何东西,这就是呃的美妙之处,智能感知,所以当你做的时候,我可以做警察,我可以做一个嗯,像巡逻艇一样的船,确保你在水里,如果你要去产卵,但再次,好的是,它现在将向你展示游戏中所有不同的 GTA 车辆,我只是想保持简单,我们要去托尔诺,在游戏中是一辆非常非常快的车,所以我们已经告诉它我们想生产什么车了,所以我们要做一个逗号,因为这是它对数字的要求。
因为如果我移动光标,哦,其实在那里。就是这样,如果你跟着我的光标,它想要我们做的是世界点创造车,然后我们做了一个括号,它的型号需要一个型号名称,所以我们在托尔诺做了一个车辆散列点,我们创建了车辆,我们刚才就是这么做的。它将使用 GTA 数学部分的一个类,或者可以使用 GTA 数学部分的类,它需要一个矢量 3 的位置。你可能想知道矢量 3 到底是什么。这是你的 x、y 和 z 坐标在一起。
所以现在我们告诉代码,嘿嘿,在你创造了 Zentorno 的交通工具之后,就是那种车,我们现在给它一个矢量 3 的位置。如果你用常识和逻辑,我们可以看到我们使用的是 Game.Player,所以让我们假设那是你。提示它的播放器是点字符。所以我们,所以我们告诉代码,我们不仅需要关注玩家,我们需要把重点放在角色上,你就是你,你是玩家的性格,点它的位置。所以这里的代码是计算你在地图上的位置,你的 X 坐标,你的 Y 坐标和 Z 坐标。你在空中吗?你在地下吗?例如,也许你在隧道里,也许你在水下。
好吧,这是在获取你的位置,我们不想让它在你身上产卵,因为如果我们不在这里做正向矢量,突出显示的地方,如果我们只做玩家,呃,这就是这。它会在你身上产卵。也许这取决于你在地图上的位置,它可能根本不会正确产卵。所以我们需要告诉游戏,嘿嘿,我们不仅需要产卵玩家在哪里,我们还需要确保我们产卵在你的角色前面三个单元,你最后站的地方,它需要航向。这是它一直需要的东西。如果你想让它在你面前,你只需要在这里复制这个。另一个逗号是 +90。所以玩游戏玩家角色点标题,这就是你所看到的方向,加九十。
所以让我们快速总结一下,我们有一个类的对象,车辆和物体称为车辆零一,我们正在分配它。在这种方法中,我们告诉它我们需要像龙卷风一样产卵,我们需要它们站在网上的坐标,包括 z 轴。我们需要产卵前面三个单位或时间玩家前面的三个单元。我们还需要它在玩家面前。现在你可以玩这些数字了,顺便说一句,你可以把这个换成六个,你可以把这个换成八十一八十,我给你个提示,想想角度,如果没有 90 度角会发生什么。八十等。
所以你又可以乱搞代码无伤大雅,嗯,随便乱搞。但好消息是,这就是现在要产生车辆的东西,正如我之前提到的,好吧酷。所以现在车辆产生了,但是我们怎么改变颜色呢,原色,因为记得在侠盗猎车手里,对于大多数汽车来说,一辆车有两种颜色,你有原色,哪一个是主体,门,兜帽,等,然后就是第二色,可能是轮子,可能是天线,可能是车周围的小东西,它不是,是第二色。
好吧好吧,我们可以更改我们创建的车辆类对象的属性,哪辆车,我们可以再改变一次,访问其财产,所以我们可以做车辆点,假设我们想改变颜色。所以我们要做,嗯,我把这个打出来,所以他们和我在一起,这可能是不言自明的。
所以我们告诉电脑,或者编译器,嘿嘿,授予我们创建的车辆我们分配给它。我已经告诉过你的所有信息,如果我们需要查看那辆车的改装。所以点 mods 点 自定义原色,所以我们需要访问自定义原色,我们需要那辆车的模型,然后我们需要进入车辆,我们会再次,我们只用一个等号来赋值,因为再一次,我们在分配一些东西。
现在又是青色,有什么好的?任何时候你做一个点,加热器会给你不同的选择,所以你可以做签名,你可以做红色,你能做到你能做到蓝色等。我只是要做青色,我喜欢那个颜色,嗯。
所以你可能想知道,第二色呢?很像实际上计算机已经在思考,这就是我们要做的。见?它是如何给我们一点提示的,就像嘿,这就是你想做的吗?嗯,告诉它。是呀,我只是要去做双标签。
所以看看你的键盘,单击选项卡两次。想要我道歉?你会看到这里看起来几乎一模一样,唯一的区别是我们正在访问而不仅仅是自定义原色,我们正在访问自定义次要颜色。所以这就是关键字差等于井,我们不希望它是相同的颜色,因为我们想要第二色是有原因的,假设我们想要,呃,红色,我觉得红色和科学,冷色组合。
所以现在我们已经改变了原色和次色,我们最后需要啊,几乎倒数第二的是改变,呃,车牌和我们以前做的很相似,我们需要进入零一车辆,换一下。所以我们要做零号车又一个点改装了,我们要进入模组。

顺便说一句,MODS 属性有子属性,当你看到轮胎冒烟时,颜色等,所以这里有很多很酷的东西,就像我做 MODS 的时候,我可以做轮胎烟雾,我可以做,嗯,你知道的,让我们看看仪表板颜色,了解如何使用仪表板颜色,一堆很酷的东西。
但为了换车牌,我们要做的是 车牌 等于,然后右边两个引号,然后像往常一样,我们用分号结束它,因为这就是 C# 的工作原理,所以在这两者之间,引号,我们要继续输入车牌号,我们想这么说,也许我们想说,呃,YouTube 右。
我什么都不知道,一些随机的东西。酷。所以我们已经做到了,现在让我们回想一下我想创建的逻辑,所以我们创造了车辆,产生了车辆,我们已经设定好颜色了,次要颜色与车牌。现在我们要通知用户车辆已经产生,所以让我们想想如何才能做到这一点。
所以也许我们可以做一个通知,所以我们要让我把这个打出来,我会回到我们正在做的事情。好啦,所以我在这里,我们正在访问一个叫做 通知 的类,有一种方法叫 show,如果你在节目上盘旋,它在这里告诉我们,它在迷你垫子上方创建了一个带有给定消息的通知。
那么这意味着什么呢?嗯,不管这个引号里有什么,在这之间,它将继续并把它作为通知。现在呢,最酷的是,你可以改变颜色,所以我可以说你的车,但是娜蒂娅想把这些话写到绿色上,就像成功的象征。对呀,所以你的车,我要这么做。所以你可能想知道,你在干什么?波浪形 g 然后再波浪形,然后倾斜 W,你知道的。顺便说一下,这把钥匙就在你的逃生钥匙下面,所以嗯,为了在 GTA 或任何类型的通知中更改文本颜色,嗯,你需要用波浪。所以这个就在这里,所以当你做 波浪g 的时候,倾斜表示它是绿色的,所以我可以把这个改成 R 是红色的,你觉得 B 会是什么?蓝色。黄色会是为什么?那么就做绿色。但事情是这样的,如果你这么做,其余的最后一个波浪之后的一切都将是绿色的,我不想要,我只希望产生的词是绿色的。
所以在 D 之后,在遮阳棚,我要把它变回光明,又要变白了,哪个是默认颜色。我不把这个设置成白色是有原因的,这是因为默认情况下它已经被设置为白色。就这样,现在让我们再次建造这个。我在上一期视频中谈到了如何构建你的 mod,我再重复一遍,以防万一。
所以你所要做的就是正确的,在解决方案资源管理器中单击 mod,你要去物业,你要去建立活动并确保它在描述中,也在第一部分中,在 POST 构建事件命令行中复制了这段代码,这样,它将实际代码发送到脚本 GTA 中的文件夹。正如我之前提到的,虽然如果你有你的 GTA,呃,目录保存在其他地方,这里没有具体说明哪个是蒸汽文件夹,一定要换,如果没有,它实际上不会把它建在正确的区域。
所以我们先来说说,依此类推,公爵控制器只是保存代码。所以如果你只做控制,你进入游戏,重新加载你的脚本,没有什么是要去工作,因为你只是在保存代码。我现在就需要建造它,所以我要点击构建,然后构建解决方案。
我喜欢控制,班次,那个男孩,它构建代码,如果我们看看,我们去我们的侠盗猎车手文件夹,我们转到脚本,它把它保存到。我要删除这些,你不会看到这些的,顺便说一下,这只是我有的其他 MOD,但这里是更新的构建 YouTube 教程 Dll,所以不管你叫它什么,就是这样,那就是它要去的地方,这是它应该在的脚本文件夹。
所以一旦它在那里,让我们回到游戏中试一试,好啦,所以现在我们在 GTA,呃,为你改变一些音频设置,这样你仍然可以听到,你不想在比赛中声音太大。
所以现在我们又回到了游戏中,希望你的游戏,或者你已经像我一样推出了它,但又一次,为了确保游戏理解脚本文件夹,我们需要新的更新代码,我们需要确保重新加载脚本。
所以说,如果您在脚本钩子上运行,你应该是,你要按 F4 键,离开本地驯兽师,这就是你的眼睛我进来,顺便说一句,你可以改变,呃,钥匙不需要你喜欢,你知道一些不同的东西。
顺便说一下,如果你不使用脚本钩子 V 三,这就像如果你在将来使用脚本钩子 V 2,您可能实际上看不到控制台,如果是这样的话,你只需要点击键盘上的插入键,这将为您重新加载脚本。
如果你,如果你不,你知道可以访问控制台,但你应该用三个,因为我们,呃,我解释了把它放在文件夹里,所以我要输入重新加载,你会看到有一些,那里还有一些其他的车,嗯,那只是我在拍摄前测试了几件事。
所以现在我重新加载了脚本,我可能会喂它一点,那很正常,所以现在让我们继续看看产卵,所以让我们继续,好啦,所以让我们继续产卵车辆。
所以如果我点击 F10,这就是我们设定的,你回忆的关键,看看左边的地段,上面写着你的车已经产生了,享受吧,它是绿色的,在 D 回到白色后会改变通知会消失,你会注意到车是青色的,红色。
当然还有,如果你看车牌,上面写着 YouTube 作为车牌,所以只是为了告诉你它是有效的,你在车里,它起作用了。作为奖励,让我们继续,看看能不能想出一个办法来修理这辆车,如果它损坏了。
所以让我们回到我们的编辑,我只是要去 alt 标签和回到编辑器,我们看看能不能尽快修好它,所以让我们创建代码,很快的。
所以在代码中,我们要确保,如果我们按某个键,它修理车辆。所以下面是你可能会想得很好的,对嗯,我可以到这里来,假设键码等于点 f11 的键,因为我们不能用十个女孩,我们已经在用那把钥匙了,好吧嗯好吧,我们可以做零号车一点嗯修复权利,我的意思是这将是正确的答案是否定的,因为跑在在 C 尖锐的内部有一个东西,尤其是点网几乎任何涉及面向对象的代码,当您创建对象或变量时,它属于这个花括号,所以我不能在这个花括号之外访问车辆 01。
所以你可能想知道,我怎么用它来修车,因为我知道你在想什么,嘿,嗯,因为你做了零号车一个点模型,一定有办法修好那辆车,是也不是。
所以这就是我现在的解决方案,你的解决方案可能有点不同,但这是我认为最好的方法。所以我要继续做一个新的车辆对象,叫做玩家车辆。如果我能正确地销售车辆,等于游戏点玩家点角色,你在哪里,你将会一直使用玩家角色。顺便说一下,每当你检查角色正在做的事情时,你作为这样做的球员。让我们在这里做一点评论,所以这将让球员们。
所以如果,如果玩家目前在一辆车里,它会检查这个。我哦,我们走吧,我很抱歉,我们不需要,呃,末尾的括号。
所以我们要把玩家的车分配给他们开的任何东西,当他们点击 F11。现在我们需要做一个 if 语句,我实际上会怎么做,所以我们要检查一下,如果玩家在一辆车里,是这样想的,如果,如果玩家不在车里,对呀,你怎么知道,一定有办法让它不运行代码,因为如果它运行代码,可能会让游戏崩溃。
所以检查一下,如果玩家在一辆车里,所以我们要做个假设声明。所以我们要做的是,不等于空,所以 null 是一个关键字,基本上意味着它不存在,又是空的,等。所以你可能想知道,等一下,这是什么解释百灵鸟,如果玩家的车是空的,我们为什么不这么做呢,因为记住当我们,当我们检查条件时,我们怎么才能找出一些不等于好的东西。我们一般在句首加上一个解释符号,如果我们试图检查它的负输出,所以在这里它再次检查,如果车辆不是空的,换句话说,如果我们能分配给玩家,你知道,玩家乘坐的车辆,去执行吧。
所以我们要做的很简单,我们要做玩家车,让我们继续输入嗯,通知,我们要做另一个通知,让我们呃,哎呦,对不起,通知显示,现场表演,我们就告诉他们你的车,我们要做同样的事,绿色,实际上我们没有,即使呃,我们就这么做吧,所以修复这个词会是绿色的,解释标记不是你可以,你不必这样做,如果你喜欢,但让我们继续运行这个,看看它是否有效。
事实上,我刚刚意识到语法使这我喜欢编程是有原因的,是因为不擅长写作,尤其宏伟。所以你不是一辆车,你的车已经修好了。所以也许你想知道是谁抓到的,嗯我也,而且这不是必需的,但我也想告诉用户,如果他们不在车上,那个嘿,你不在车里,你不应该点击 F11。
所以我们要做别的,所以说,如果这个条件是,它能修好车子,如果他们不在车上,换句话说,如果他们不在车上,我想让他们得到通知,说着,能正确拼写错误吗,你不是在,让我们将错误消息设置为红色,然后我们要回到白色。
好了现在,让我们拯救这个,我们要建造这个,所以控制移位 B 来建造,或者您可以直接构建然后构建解决方案,它应该自动返回到您的 GTA 脚本中,这里调用的文件夹,你会看到这里,我刚才只是把它倾斜了一下,字面上呃刚才所以呃,你总是可以确认时间戳。
现在让我们回到游戏中,试一试,我有很好的预感。好啦,所以我们又回到了游戏中,我们去买一辆新车吧,我们可以这样做,就像点击 F10,上面说你的车,享受吧。
顺便说一句,如果你想让它干净,你可以添加一个清洁汽车的 mod,这样就不脏了,就像现在这样,我们去撞车吧,然后我伤害了自己这样做,哎呦,这家伙在生我的气,哦天啊,好啦,好啦。
既然车子坏了,你可以分辨出这辆车的前灯,让我们点击 F11,啊,这家伙还在追挂,我不想抱,好啦,让我们点击 F11 看看那个,你的车已经修好了,它是绿色的,解释标记不是因为我们把它换成了白色,之后它就不洗车了。
所以也许你可以添加一些类似的东西来修复它,对不起,把它也擦干净了,如果他们不在车里怎么办,所以,如果我们下车,我们只是跑来跑去,我们点击 F11 来修复,你不在车里,哦你知道吗,我没有,其实呢,嗯看,我实际上没有重新加载脚本,嗯,那是旧版本,是不是因为他们应该用红色说错误,所以,让我们重新加载真正的快。
好啦,负载可能会延迟一秒钟,我们走了,所以我们没有改变太多,所以我不会再演示了,但我们只需点击 F11,看看那里,是空气,你不在车里,只是为了证明它是有效的。
我们要按 F10 键,你的车已经产生了,享受。我们到了,我们有车,我们可以撞上一辆车,对不起,如果我们点击 F11,你的车已经修好了,如果我们下车,我们按 F11 键,否则你就不在车里。
基本上就是这样,一次又一次,让我们为那些仍然困惑的人快速总结一下,或者只是需要一点快速的解释,顺便说一句,这个代码将在下面的描述中,如果要复制粘贴,也许你让它更容易,不建议复制粘贴,你需要锻炼肌肉,记忆。
把所有东西都打出来,先把所有的东西都打出来,如果你知道你没有把事情做对,只是复制和粘贴像另一个,所以我们在这里,并告诉它在玩家面前产卵,所以再看一下描述,挺住,或者只是,呃,盘旋在世界上空,创建车辆,它告诉你它需要什么,我们就是这么做的,所以有一个逗号,矢量三位置,又是 x,Y,Z,然后我们的航向位置,那个颜色就是第二色,还有车牌,然后我们在这里告诉嗯,显示通知,没有迹象。


暮色的狐
这是一只高强度上网冲浪、高质量输出内容的狐狸。主打ACGN杂谈、技术干货分享、第九艺术鉴赏、网梗百科解析、情感树洞鸡汤、正能量价值观~
 最新文章