|
奉站长命,我来翻译这一套教程,帖子数量很多,我会全部标明原版/翻译版地址和完成进度,在此呼吁大家回帖认领翻译,工资问 kami要。
开工翻译之前,请猛摁>>>这里<<<了解操作规程
原帖地址 http://www.gtaforums.com/index.php?showtopic=480446
GTA三代游戏编程教程总帖
原帖作者/ BnB @GTAF 翻译/ kwanz @虚拟世界
未经许可 谢绝转载
概述
[本节为GTAF版规,在此略过]
教程
·CLEO编程教程 by ZAZ EN CH (已认领)
可能是最好的CLEO编程教程,很规范、很详细、结构清晰、简明易懂,适合任何水平的人学习。
·编程改键教程 by ZAZ EN CH (已完成)
对不知道怎么编程的小白适用。
·任务编写小白教程 by Dutchy3010 EN CH (已认领)
小白学任务编写适用,结构清晰,解释清楚。
·任务编写进阶教程 by Dutchy3010 and Patrick W EN CH (未开始)
高阶编程适用,类C语言的编程讲解。
·SCM/CLEO视频教程 by Dutchy3010 EN CH (无翻译)
视频讲解编程基础。
·编程圣经上篇 EN CH (已认领) 和下篇 EN CH by tomworld10 (未开始)
解释了main.scm和编程的一切的一切。(此文已收入Sanny Builder帮助)
工具
·Sanny Builder by Seemann EN CH (未开始)
SB自带有快速的编译器和反编译器,带有代码高亮功能,包括所有错误的描述和解决方案。而且SB使用最广泛,支持CLEO和CLEO Opcodes。
·CLEO by Seemann & Alien EN CH (未开始)
CLEO是三代里一款扩增编程实现的功能的工具,加入了大量新的Opcode,支持不修改main.scm的情况下运行脚本程序。
要编辑创建一个脚本MOD,你需要编译器和反编译器。这种编程语言主要有两种编译器。一个是SB,这是用得最多的,功能很丰富。另一个是Mission Builder,用得不多,现在已经不用了。这两种脚本程序的语法和数据类型的记法是不同的,但是编译的结果是一样的。还有两个编译器GTAMA和Point,但是它们都火星了。再说MB,GTAMA和Point的作者大多退出了GTA界。
编译器是把源码转换为机器码的程序,让游戏能够读取运行。反编译器执行相反的操作。
下表列出了各种SCM编辑器的语法。
·GTAMA/VCDisAsm:
is_car_in_cube $car, $lowerx, $lowery, $lowerz, $upperx, $uppery, $upperz, 0
·Mission Builder:
00B1: is_car $car in_cube $lowerx $lowery $lowerz $upperx $uppery $upperz 0
·Sanny Builder:
00B1: car $car sphere 0 in_cube_cornerA $lowerx $lowery $lowerz cornerB $upperx $uppery $upperz
·Point:
IsCarInCube ( $car, f$lowerx, $lowery, $lowerz, $upperx, $uppery, $upperz, 0 )
你应该使用什么IDE?
你可以使用很多IDE,但其中大多数都过时了。目前最好用的是Seemann的SB,使用广泛,功能丰富。下面有下载连接。选择SB的理由:
·速度快
·使用广泛
·支持CLEO库
·有13语翻译(中文by国人GTA)
·带有两套教程,大量的信息和帮助,和所有运行时错误的描述和解决方案。
·带有坐标管理器,Opcode搜索,MB>SB转换器
·支持所有三代游戏,支持全系列的反编译和PC版的编译
·对IF语句支持更好
·带代码高亮
·支持高级表达式(循环和条件)
·部分支持类的编程语句
·直接输入十六进制指令
·选项很丰富
SCM是什么
SCM是三代使用的编程语言,由GTA MOD社区命名。它主要用于main.scm文件,此文件编写了全部任务的代码。因为main.scm不是一个可执行文件,所以把它称之为脚本代码。虽然游戏里的很多功能是硬编码直接写死了的,但有了CLEO库的帮助,还是可以通过脚本编程做很多事情。
以下是原始脚本代码的样子(来自VC的debug.sc)- IF IS_BUTTON_PRESSED PAD2 RIGHTSHOULDER1
- AND flag_create_car = 1
- AND
- button_press_flag = 0
- IF IS_CAR_DEAD magic_car
- DELETE_CAR magic_car
- ELSE
-
- IF NOT IS_PLAYER_IN_CAR player magic_car
- DELETE_CAR magic_car
- ELSE
-
- MARK_CAR_AS_NO_LONGER_NEEDED magic_car
- ENDIF
-
- ENDIF
- flag_create_car = 0
- initial_car_selected = 0
-
- button_press_flag = 1
- ENDIF
复制代码 如果你用十六进制编辑器打开scm文件,你会看到一堆字节码如下。scm是有特定结构的二进制文件。- 00 00 50 00 01 F3 FF FF FF 01 00 04 00 9F 0A 03
- 00 00 0A 00 03 00 00 04 10 8D 0A 03 00 00 04 04
- 04 00 03 00 00 0E 00 03 00 00 01 CF FF FF FF 51
- 00
复制代码 要编辑scm文件必须反编译。反编译器可以把字节码转化为下面的语句。反编译的结果是生成含有源代码的文本文件。
SB反编译的结果类似以下:- // This file was decompiled using SASCM.INI published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
- {$VERSION 3.1.0027}
- {$E}
- //-------------MAIN---------------
- 0000: NOP
- gosub @Noname_D
- wait 0
- :Noname_D
- 0A9F: 0@ = current_thread_pointer
- 0@ += 16
- 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
- 0@ -= -49
- return
复制代码 这是scm代码的一段。你可以用SB或任何IDE来编辑,但强烈推荐SB。
以下是SCM编程相关的集合帖。在开始学习之前,记住罗马不是一天建成的。学习SCM不需要掌握其他编程语言的知识,因为它比较简单,不同于其他高级语言,但在CLEO编程中掌握一定的计算机结构的知识会有帮助。
教程
教程名称 | 作者 | 程序 | 游戏 | 链接 | CLEO编程教程 | ZAZ | Sanny Builder | San Andreas | EN CH (已认领) | 编程改键教程 | ZAZ | Sanny Builder | San Andreas | EN CH (已完成) | 任务编写小白教程 | Dutchy3010 | Sanny Builder | San Andreas | EN CH (已认领) | 任务编写进阶教程 | Dutchy3010 and PatrickW | Sanny Builder | San Andreas | EN CH (未开始) | SCM/CLEO视频教程 | Dutchy3010 | Sanny Builder | San Andreas | EN CH (无翻译) | YeTi's SA 编程教程上 | YeTi | Mission Builder | San Andreas | EN CH (未开始) | YeTi's SA 编程教程下 | YeTi | Mission Builder | San Andreas | EN CH (未开始) | 编程圣经上篇 | tomworld10 | Sanny Builder | San Andreas | EN CH (已认领) | 编程圣经下篇 | tomworld10 | Sanny Builder | San Andreas | EN CH (未开始) | 编辑main.scm代码 | San andreas master | Mission Builder | San Andreas | EN CH (未开始) | 在main.scm中腾出额外空间 | Rapier | Sanny Builder | San Andreas | EN CH (已完成) | 最小版main.scm | Rapier | Sanny Builder | San Andreas | EN CH (已完成) | 打造你自己的存档 | gtasearcher | Sanny Builder | San Andreas | EN CH (已完成) | 编程小技巧教程 | l3mmy | Sanny Builder | San Andreas | EN CH (已完成) | anims使用傻瓜教程 | james227uk | Sanny Builder | San Andreas | EN CH (已完成) | 如何创建任务 | spaceeinstein | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | 线程的创建,中止和结构 | 群星 | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | 在文字提示中显示浮点数 | spaceeinstein | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | 数值运算编程 | spaceeinstein | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | 任务包简介 | Seemann and Deezire | - | San Andreas | EN CH (已完成) | CLEO创建人物教程 | spaceeinstein | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | 移动OBJ | Aschratt | Sanny Builder | San Andreas, Vice City, GTA III | EN CH (已完成) | SA内存控制 | Seemann | Sanny Builder | San Andreas | EN CH (已完成) | [CLEO]不完全教程 | Deji | Sanny Builder | San Andreas | EN CH (已完成) | 行人态度行为设置 | Deji | Sanny Builder | San Andreas | EN CH (已完成) | YeTi's VC编程教程上 | YeTi | Mission Builder | Vice City | EN CH (未开始) | YeTi's VC编程教程下 | YeTi | Mission Builder | Vice City | EN CH (未开始) | littleguna的编程教程 | timmy2004 | Mission Builder | Vice City | EN CH (未开始) | 在自己的任务中添加箭头标记 | kiavash2k | Mission Builder | Vice City | EN CH (未开始) | Y_Less的编程教程 | Y_Less | Mission Builder | Vice City | EN CH (未开始) | spookie的SCM钩子教程(C++) | XcR | 任意C++编译器 | Vice City | EN CH (未开始) | Text_Draw用法详解 | grovespaz | Mission Builder | San Andreas, Vice City, GTA III | EN CH (未开始) | 修改游戏菜单 | PatrickW | Mission Builder | San Andreas | EN CH (未开始) |
工具
工具名称 | 作者 | 游戏 | 链接 | Sanny Builder | Seemann | San Andreas, Vice City, GTA III, GTA LCS, GTA VCS | EN CH (未开始) | Mission Builder | Burton Waterduck | San Andreas, Vice City, GTA III | EN CH (未开始) | Point | jonc | San Andreas | EN CH (未开始) | VCDisAsm | CyQ | Vice City | EN CH (未开始) | GTAMA | Dan Strandberg | GTA 3 | EN CH (未开始) | CLEO | Seemann and Alien | San Andreas, Vice City, GTA III | EN CH (未开始) | SCM Hook for San Andreas | op9080 | San Andreas | EN CH (未开始) | SCM Hook for Vice City | Spooky | Vice City | EN CH (未开始) | SA ScrDebug | Deji | San Andreas | EN CH (未开始) |
相关主题
主题名称 | 游戏 | 链接 | GTAF求外挂MOD专帖 | All III Era GTAs | EN CH (无翻译) | GTA:SA Opcodes | San Andreas | EN CH (未开始) | Opcodes for Bartons Editor (GTA3 + VC) | Vice City, GTA III | EN CH (未开始) | GTA-SA内存地址档案 | San Andreas | EN CH (未开始) | GTA3/VC内存地址档案 | Vice City, GTA III | EN CH (未开始) | SCM编程常见问题解答 | San Andreas, Vice City, GTA III | EN CH (已完成) | Sanny Builder VS Mission Builder | N/A | EN CH (未开始) | 任务编程教程目录 | San Andreas, Vice City, GTA III | EN CH (未开始) | 任务编程信息及教程链接 | San Andreas, Vice City, GTA III | EN CH (未开始) |
其他
名称 | 游戏 | 链接 | GTAG Opcode库 | All | Here | Deji's Opcode库 | All | Here | GTAModding.com | All | Here |
|
评分
-
查看全部评分
|