吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3596|回复: 8
收起左侧

[其他转载] 【MOD功能开发】单独详细解析角色无敌功能教程(C#开发 GTA V MOD) 不提供成品和源代码

[复制链接]
琼仔TKO 发表于 2020-2-15 13:53

【前言】
          在国内的论坛中基本大多数是不公布辅助的源代码,或根本没有分享功能写法的教程,这也导致很多想写辅助的朋友们,迟迟始终入不了编程辅助的门口,就算有些朋友有编程基础而且不错,  但是没有接触过这方面的知识,也不知道怎么写,而此篇的意义就是带大家在这个特殊的时期,以最少最详细的代码+项目触摸编程世界


【我需要准备什么?】
1.首先请确保你安装了Microsoft .NET Framework 4.8Microsoft Visual C++ Redistributable Package for Visual Studio 2019 (x64)
2.下载xxxxxx,将压缩包内“bin”文件夹下的所有内容解压到你的游戏目录(该地址下载下来的Script Hook V附带了一个内置修改器,如果你不想要内置修改器,只需要把里面的“NativeTrainer.asi”删除即可);
3.下载xxxxxx,将压缩包内的内容解压到你的游戏目录(再往游戏目录下创建“scripts”文件夹便于存储编译好的DLL)


【其他声明】
入门教程,不深入探讨风险功能


【开发示例】
首先准备好一个开发环境(IDE),这里楼主自己用的Visual Studio 2019,大家可以自行百度,当然你也可以Notepad++之类的文本编辑软件,上面说过Script Hook V For .Net是可以直接加载后缀为.cs或.vb的脚本的。


接下来我们实现和探讨下玩家角色无敌的功能:

1.首先打开Visual Studio 2019,新建一个C#的类库项目,.NET Framework 版本改为4.8:


1.PNG(99.18 KB, 下载次数: 0)
下载附件2020-2-15 12:17 上传


2.png(56.67 KB, 下载次数: 0)
下载附件2020-2-15 12:17 上传


2.添加引用ScriptHookVDotNet3/2.dll

3.jpg(124.91 KB, 下载次数: 0)
下载附件2020-2-15 12:17 上传




3.下面开始写代码,代码我稍微注释了:
  • //基础需要的命名空间
  • using System;
  • using System.Windows.Forms;
  • using GTA;
  • using GTA.Native;

  • //命名空间可以不写,这里我备注掉了
  • public class TestMod: Script   //注意一定要继承“Script”类
    {
        //该函数为构造函数,函数名跟类名同名,该类被加载后执行此函数
        public TestMod()
        {
            Tick += OnTick; //刷新事件
            KeyDown += OnKeyDown; //按键按下事件
            Interval = 10; //刷新事件的间隔时间,单位毫秒
        }
  •     //刷新事件
        void OnTick(object sender, EventArgs e)
        {
            //本例中不需要使用到该事件,实际如果需要刷新事件,则在刷新事件需要处理的内容写在这里
        }
  •     //快捷键事件
        void OnKeyDown(object sender, KeyEventArgs e)
        {
            //当快捷键等于B时,执行大括号中的内容
            if (e.KeyCode == Keys.B)
            {
              Invincible();
  •         }
        }
  • public void Invincible()
        {
            Player player1 = Function.Call<Player>(GTA.Native.Hash.PLAYER_ID);
  •         if (well)
            {
                GTA.UI.Notification.Show("无敌状态?", true);
                Function.Call(GTA.Native.Hash.SET_PLAYER_INVINCIBLE, player1, true);
                well = false;
            }
            else
            {
                GTA.UI.Notification.Show("非无敌状态?", true);
                Function.Call(GTA.Native.Hash.SET_PLAYER_INVINCIBLE, player1, false);
                well = true;
            }
  •     }

  • }


【解释上述代码意思】
1.public class TestMod: Script   //解释和分析其为什么
解:
[可以这么理解,我们所写的DLL(MOD),其实是被
1.1  :ScriptHookVDotNet3/2.dll或
1.2 :ScriptHook.dll,动态加载进入游戏,
1.3 :ScriptHookV脚本可能会动态读取或遍历游戏目录下的文件,找其子类,在把子类加载到游戏中
]

2.  Player player1 = Function.Call<Player>(GTA.Native.Hash.PLAYER_ID);
解:
[2.1 :Player  player1 是我们自定义的一个玩家类对象 Player 就是脚本提供好的一个类,一般用于获取和玩家相关操作时
2.2 :GTA.Native.Hash.PLAYER_ID 是游戏者身份证 ,PLAYER_ID 代表了本地GTA V函数中玩家ID 返回值为: Player 类型


]

3. GTA.UI.Notification.Show("无敌状态?", true);
解:
[3.1 :  Notification 是脚本提供GTA V本地 信息通知函数
3.2 :
Show(string content,bool Twinkle);  content=通知信息内容 ,Twinkle=是否闪烁




4.  Function.Call(GTA.Native.Hash.SET_PLAYER_INVINCIBLE, player1, true);  / Function.Call(GTA.Native.Hash.SET_PLAYER_INVINCIBLE, player1, false);
解:
[4.1 :
GTA.Native.Hash.SET_PLAYER_INVINCIBLE 是 GTA V本地 使玩家无敌函数  原函数如下:见4.1.1
4.1.1 :     static void SET_PLAYER_INVINCIBLE(Player player, BOOL toggle) { invoke<Void>(0x239528EACDC3E7DE, player, toggle); }
4.2 :
SET_PLAYER_INVINCIBLE 本地GTAV 函数 需要两个参数  第一个player为游戏者身份证 第二个toggle为是否使其无敌状态

]

【编译生成DLL】


4.PNG(61.78 KB, 下载次数: 0)
下载附件2020-2-15 13:28 上传

6.生成好后,把生成好的DLL复制到游戏目录下的“scripts”目录


7.进入游戏测试


测试成功,就说明OK了,在实际中如果测试失败,游戏目录下会有一个“ScriptHookVDotNet.log”文件,里面会有详细的日志。

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
Yang0626 + 1 我很赞同!
s_qiu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 琼仔TKO 发表于 2020-2-15 13:58
【敬管理层员工】
     如此帖有违反条约的行为,那一定是我没用心观察到那细微之处的法律,还请暂时屏蔽此帖,并通知我 ,我上线后立马做出改正
谢谢您的理解
xiaogongju 发表于 2020-2-15 14:17
softwaretest 发表于 2020-2-15 14:28
时光书窝 发表于 2020-2-15 14:32
这是什么游戏的?还是通用
 楼主| 琼仔TKO 发表于 2020-2-15 14:42
时光书窝 发表于 2020-2-15 14:32
这是什么游戏的?还是通用

GTA V 标题已表明了
vethenc 发表于 2020-4-20 20:18
感谢分享
biboo 发表于 2020-4-21 09:16
666,加油
小丶_明 发表于 2020-4-21 09:56
收藏看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表