3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 27326|回复: 43
打印 上一主题 下一主题

[MOD制作教程] 【MOD开发实例】Script Hook V For .NET(C#开发GTAV MOD)

  [复制链接]

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
跳转到指定楼层
主题
发表于 2015-5-10 11:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 陌.小皓 于 2015-5-10 12:38 编辑

【前言】
目前国内研究、开发MOD的玩家并不多,但国内很多玩家其实是有编程基础的,楼主在编程方面也是个菜鸟,只是希望能有更多的人来研究、开发MOD。

【什么是 Script Hook V For .NET
Script Hook V For .NET是国外玩家基于Script Hook V开发出来的一个asi脚本,该脚本可以使游戏支持读取使用.net语言(如:C#、VB)开发出来的脚本,Script Hook V For .NET是一个开源项目(开源是指源代码是公开的,任何人都可以下载到源代码,进行开发或修改),目前国外还有支持Lua的扩展,有兴趣的玩家可以自行上国外论坛获取。

Script Hook V For .Net工作原理】
上面说过,其实Script Hook V For .NET就是一个.asi脚本脚本,游戏运行后Script Hook V会加载所有的asi脚本,加载了Script Hook V For .NET后,Script Hook V For .NET又会遍历游戏目录“scripts”文件夹下的所有后缀名为“.cs”、“.vb”、“.dl”脚本。(这里说个小知识,C#编译出来的DLL或EXE等并不像其他语言一样,编译出来的只是中间语言,类似JAVA,详情大家可以自行百度)

【原作者相关】
原贴地址:http://gtaforums.com/topic/78990 ... -script-hook-v-net/
github地址:https://github.com/crosire/scripthookvdotnet/releases

【准备工作】
1.首先请确保你安装了Microsoft .NET Framework 4.5Microsoft Visual C++ Redistributable Package for Visual Studio 2013 (x64)
2.下载Script Hook V,将压缩包内“bin”文件夹下的所有内容解压到你的游戏目录(该地址下载下来的Script Hook V附带了一个内置修改器,如果你不想要内置修改器,只需要把里面的“NativeTrainer.asi”删除即可);
3.下载Script Hook V For .Net,将压缩包内的内容解压到你的游戏目录(该地址下载下来的Script Hook V For .NET附带了一个例子,如果你不要想,只需要把压缩包内“scripts”文件夹清空即可)。
这里我提供一个下载地址(点击下载),里面包含了最新的Script Hook VScript Hook V For .Net下载好后把压缩包里所有内容解压到游戏目录下即可,完成这步就可以省略上面的2、3两步。

【其他说明】
1.C#是.net的主要语言,也是楼主比较熟悉的语言,所以下来的示例,会使用C#作为开发语言;
2.本文中所提到的MOD均为脚本类的,不是修改模型、资源等类型。

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

接下来我们就开发一个按下某个快捷键,可以使主角周围车辆爆炸的脚本:

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




2.添加引用,引用ScriptHookVDotNet.dll




3.把不需要的引用可以删除掉;

4.下面是完整的代码,代码我都做了备注:
<

5.生成项目,生成好的项目会在你项目目录中


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




7.进入游戏测试


测试成功,就说明OK了,在实际中如果测试失败,游戏目录下会有一个“ScriptHookVDotNet.log”文件,里面会有详细的日志。
【示例源码】
GTAV Script Example.zip (9.05 KB, 下载次数: 351)

【特别说明】
1.“GTA.Native.Function.Call”这个函数可以运行Native类的所有函数;
2.有部分Native类的函数Script Hook V For .NET的作者已经为我们封装好,可以直接调用,如果没有的就到Native类数据库查找就可以了。(Native类数据库:http://www.dev-c.com/nativedb/

评分

3

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏15
回复

使用道具 举报

7

主题

1023

帖子

1196

积分

游戏狂人

Rank: 6Rank: 6

贡献度
10
金元
11562
积分
1196
精华
0
注册时间
2009-3-8
舒服的沙发
发表于 2015-5-10 11:33 | 只看该作者
ASI: Loading "H:\Grand Theft Auto V\ScriptHookVDotNet.asi"
     "ScriptHookVDotNet.asi" failed to load

为什么我的会加载失败呢。
运行库也安装了
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
硬硬的板凳
 楼主| 发表于 2015-5-10 11:54 | 只看该作者
zsw117 发表于 2015-5-10 11:33
ASI: Loading "H:\Grand Theft Auto V\ScriptHookVDotNet.asi"
     "ScriptHookVDotNet.asi" failed to lo ...

你游戏什么版本
回复 支持 反对

使用道具 举报

5

主题

66

帖子

66

积分

初级玩家

Rank: 2

贡献度
0
金元
1262
积分
66
精华
0
注册时间
2012-1-7
冰凉的地板
发表于 2015-5-10 11:57 | 只看该作者
像楼主这样的教程贴越来越少了。同为C#的前排赞一个。我用的VS2013,也去试试
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
5#
 楼主| 发表于 2015-5-10 12:08 | 只看该作者
我还在编辑帖子,有点乱,各位看官稍等下。
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
6#
 楼主| 发表于 2015-5-10 12:25 | 只看该作者
基本的已经编辑完了,因为比较忙,可能写的比较乱,以后我后慢慢抽时间更新。
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
7#
 楼主| 发表于 2015-5-10 12:35 | 只看该作者
哥兜兜有棉花糖 发表于 2015-5-10 11:57
像楼主这样的教程贴越来越少了。同为C#的前排赞一个。我用的VS2013,也去试试 ...

嗯嗯,我也前两天去国外论坛无意看到的,正好C#语法比较熟,脚本类的MOD都是调用的Native类的函数,熟悉Native类的话,开发就会比较快了。
回复 支持 反对

使用道具 举报

0

主题

202

帖子

276

积分

高级玩家

Rank: 4

贡献度
0
金元
2755
积分
276
精华
0
注册时间
2015-4-15
8#
发表于 2015-5-10 12:42 | 只看该作者
才学几个月的路过。。。
回复 支持 反对

使用道具 举报

32

主题

1819

帖子

1594

积分

游戏狂人

Rank: 6Rank: 6

贡献度
78
金元
12819
积分
1594
精华
0
注册时间
2008-11-29
9#
发表于 2015-5-10 12:46 | 只看该作者
很给力                       
回复 支持 反对

使用道具 举报

jeason1997 该用户已被删除
10#
发表于 2015-5-10 13:15 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

10

主题

299

帖子

771

积分

超级玩家

Rank: 5Rank: 5

贡献度
34
金元
6345
积分
771
精华
0
注册时间
2009-12-31
QQ
11#
发表于 2015-5-10 13:17 | 只看该作者
大神们越来越给力了~~~
回复 支持 反对

使用道具 举报

7

主题

1023

帖子

1196

积分

游戏狂人

Rank: 6Rank: 6

贡献度
10
金元
11562
积分
1196
精华
0
注册时间
2009-3-8
12#
发表于 2015-5-10 13:59 | 只看该作者
陌.小皓 发表于 2015-5-10 11:54
你游戏什么版本

之前5号,现在是4号档。
反正都不行,游戏也重装过了
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
13#
 楼主| 发表于 2015-5-10 14:04 | 只看该作者
jeason1997 发表于 2015-5-10 13:15
可惜不会C#,目前就直接用C++开发ASI,不过调试速度非常慢,经常要测试一个新例子就要重启游戏一次。
还是L ...

这个也支持重载,按insert键可以重载。
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
14#
 楼主| 发表于 2015-5-10 14:05 | 只看该作者
zsw117 发表于 2015-5-10 13:59
之前5号,现在是4号档。
反正都不行,游戏也重装过了

Microsoft .NET Framework 4.5 这个装了吗?
回复 支持 反对

使用道具 举报

7

主题

1023

帖子

1196

积分

游戏狂人

Rank: 6Rank: 6

贡献度
10
金元
11562
积分
1196
精华
0
注册时间
2009-3-8
15#
发表于 2015-5-10 14:31 | 只看该作者
陌.小皓 发表于 2015-5-10 14:05
Microsoft .NET Framework 4.5 这个装了吗?



有一个4.6,必须要4.5的吗,我之前装的是4.5的,也不行,后来在论坛里找了运行库集合,重装后就是4.6了
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
16#
 楼主| 发表于 2015-5-10 14:38 | 只看该作者
zsw117 发表于 2015-5-10 14:31
有一个4.6,必须要4.5的吗,我之前装的是4.5的,也不行,后来在论坛里找了运行库集合,重装后就是4.6了
...

这个具体我也不知道原因了,它的日志只会提示加载失败,详细原因也不会提示。
回复 支持 反对

使用道具 举报

4

主题

6814

帖子

1万

积分

资深玩家

Rank: 9Rank: 9Rank: 9

贡献度
8
金元
121509
积分
12183
精华
0
注册时间
2010-9-3

元宵娘

17#
发表于 2015-5-10 15:19 | 只看该作者
给力给力
回复 支持 反对

使用道具 举报

2

主题

143

帖子

116

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1759
积分
116
精华
0
注册时间
2013-9-15
18#
发表于 2015-5-10 16:53 | 只看该作者
技术贴~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

5

主题

1887

帖子

2742

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
91
金元
23776
积分
2742
精华
0
注册时间
2009-8-15
19#
发表于 2015-5-10 16:54 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

621

主题

2万

帖子

7万

积分

游戏之神

世事迁移流转 无聊就是一种幸福

Rank: 13Rank: 13Rank: 13Rank: 13

贡献度
6186
金元
492217
积分
73977
精华
1
注册时间
2013-6-5

3DM总监狂热粉丝骨灰玩家~游戏天王~游戏圣者~欧洲提督深海提督3DM页游玩家3DM页游玩家元宵娘旧版萌之委员会''永久''3DMer幸运儿游戏之神~足球小罗~

20#
发表于 2015-5-10 16:58 | 只看该作者
支持一下
回复 支持 反对

使用道具 举报

23

主题

1514

帖子

3318

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
70
金元
30376
积分
3318
精华
0
注册时间
2014-10-9
21#
发表于 2015-5-10 17:54 | 只看该作者
小编辛苦了 这种结合实例 按步骤讲解的教程 让人更加好理解啊 希望楼楼在努力下 多做几个教程 比如普通asi的
回复 支持 反对

使用道具 举报

95

主题

632

帖子

901

积分

超级玩家

Rank: 5Rank: 5

贡献度
74
金元
6052
积分
901
精华
0
注册时间
2011-11-30
22#
发表于 2015-5-10 21:56 | 只看该作者
有群吗大家一起研究
回复 支持 反对

使用道具 举报

95

主题

632

帖子

901

积分

超级玩家

Rank: 5Rank: 5

贡献度
74
金元
6052
积分
901
精华
0
注册时间
2011-11-30
23#
发表于 2015-5-10 22:41 | 只看该作者
错误        1        命名空间“System.Windows”中不存在类型或命名空间名称“Forms”(是否缺少程序集引用?)        C:\Users\long\AppData\Local\Temporary Projects\ClassLibrary1\Class1.cs        8        22        ClassLibrary1
错误        2        未能找到类型或命名空间名称“KeyEventArgs”(是否缺少 using 指令或程序集引用?)        C:\Users\long\AppData\Local\Temporary Projects\ClassLibrary1\Class1.cs        36        35        ClassLibrary1


直接用的是楼主给的代码。为什么会这样呢
回复 支持 反对

使用道具 举报

12

主题

327

帖子

1224

积分

游戏狂人

Rank: 6Rank: 6

贡献度
175
金元
5138
积分
1224
精华
1
注册时间
2010-10-11

3DM MOD站(白银)

QQ
24#
 楼主| 发表于 2015-5-10 23:14 | 只看该作者
lulugan 发表于 2015-5-10 22:41
错误        1        命名空间“System.Windows”中不存在类型或命名空间名称“Forms”(是否缺少程序集引用?)        C:\Users\l ...

引用里添加一下用到的命名空间
回复 支持 反对

使用道具 举报

102

主题

2915

帖子

3376

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
35
金元
32357
积分
3376
精华
0
注册时间
2012-1-4
25#
发表于 2015-7-19 13:36 | 只看该作者
dddddddddddddddddddddddddddd
回复 支持 反对

使用道具 举报

0

主题

58

帖子

159

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1590
积分
159
精华
0
注册时间
2011-7-28
26#
发表于 2016-1-26 16:09 | 只看该作者
楼主 我太爱你了,我就需要这种教程贴,一步一步简单易懂,希望能有后续的内容继续学习啊。
回复 支持 反对

使用道具 举报

0

主题

58

帖子

159

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1590
积分
159
精华
0
注册时间
2011-7-28
27#
发表于 2016-1-26 16:17 | 只看该作者
楼主能不能教教用C#怎么开发一个 像asi那样在游戏中的菜单界面呀。
回复 支持 反对

使用道具 举报

头像被屏蔽

0

主题

106

帖子

58

积分

禁止发言

贡献度
0
金元
1183
积分
58
精华
0
注册时间
2016-3-8
28#
发表于 2016-3-9 03:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

104

帖子

106

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1660
积分
106
精华
0
注册时间
2016-4-26
29#
发表于 2016-5-7 23:46 | 只看该作者
可惜不会目前就直接用开发不过调试速度非常慢经常要测试一个新例子就要重启游戏一次
回复 支持 反对

使用道具 举报

0

主题

4

帖子

4

积分

新手玩家

Rank: 1

贡献度
0
金元
40
积分
4
精华
0
注册时间
2018-4-8
30#
发表于 2018-4-8 19:28 | 只看该作者
不懂英文,搞个毛。我还买了一本2015visual studio 高级编程的书。结果里面都没有什么关于游戏的语言。编程。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-4-19 21:50 , Processed in 0.409747 second(s), 53 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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