QQ登录

只需一步,快速开始

 找回密码
 定下契约(新注册)

QQ登录

只需一步,快速开始

查看: 970|回复: 4
收起左侧

[GTAF进口]SCM编程常见问题解答

[复制链接]

传奇 Legend

谷歌翻译坑爹人肉版(不是人肉饭)

Rank: 16

UID
83
宝石
140 粒
金币
573 枚
节操
30 斤
灵石
0 块
精力
32 ℃
发表于 2012-5-9 21:18:16 | 显示全部楼层 |阅读模式

你这样只看不注册,真的大丈夫?~

您需要 登录 才可以下载或查看,没有账号?定下契约(新注册)

x
本帖最后由 kwanz 于 2012-5-9 21:35 编辑

原帖地址 http://www.gtaforums.com/index.php?showtopic=404316
SCM编程常见问题解答

原帖作者/ Dutchy3010 @GTAF 翻译/ kwanz @虚拟世界
未经许可 谢绝转载

概况类
我想学编程,我要做什么?
首先要理解你不可能在24小时内学会编程,你必须要付出时间和努力。有几份教程可以帮助你学习编程,最好的教程当属编程圣经(上篇 EN CH /下篇 EN CH)

我想编写自己的任务,如何做到?
如果你真的想编程实现,不借助其他MOD(比如DYOM Design Your Own Mission),那么看看这篇教程吧。

谁能帮我编程做东西?
首先,论坛上专门有一贴求物件。你可以在这里找。但是不要抱过高希望,因为你请求的东西多半没人会做,因为scm编程是要花时间的。如果你真心希望做出什么东西,我建议你自己学习编程。

CLEO是什么?
CLEO包含了几部分物件:
·自定义脚本外挂:用这些脚本玩家不需要开新存档
·新的opcode
·*.CLEO插件
关于CLEO的更多信息
CLEO教程 EN CH

我想同时使用两份scm程序!
总的来说,这不简单。你可以用MPACK任务包分别使用它们。但是多CLEO同时使用是可以的,只要他们不冲突。

我需要什么软件来编辑main.scm?
主要有Sanny BuilderMission Builder

我可以把scm编程用于IV修改吗?
不,语言是完全不同的。但是你对scm的了解可以派上用场,因为三代的opcode和四代的函数有很多相似之处。理解任务脚本是如何组合起来的,各种opcode可以做什么,参数的作用,也就理解了在四代中如何编程。

Sanny Builder错误
我在SB中遇到错误 not enough actual parameters!
你调的opcode给的参数太少了。参考opcode示例比较一下。还有检查一下语句中是否需要逗号,这也是一个常见的错误。比如说:
  1. 0100:   actor $PLAYER_ACTOR in_sphere 1793.068, -1904.254, 12.3989 radius 4.0 4.0 4.0 sphere 1 in_car
复制代码

结果出错了,因为不需要逗号。

编译错误 Label 'loop' redeclared.
意思是说你用的跳转标签重名了。

编译错误 Incorrect number of conditions, 9 max.
最可能的情况是你在一个判断里只有一个条件,但是却用了if or。比如说:
  1. :MODEL_LOAD
  2. if or
  3. 8248: not model #NRG500 available
  4. else_jump @MODEL_LOAD
复制代码


我出了个别的错误怎么办?
查看SB的解释,在报错的时候点help。
动态图演示

游戏运行中错误
游戏卡住了,我啥也动不了!
一个常见的错误是你在程序中少写了wait语句。任何循环都至少要包含一个wait。建议用窗口模式运行SA,然后你就能用Ctrl-Alt-Delete结束它。
另一个方法是用SA关闭器,在需要的时候按F7结束游戏。

求助!游戏当了!
悲剧,答案并不好说,不过你可以做些事情。首先,看看是什么时候当的。游戏启动的时候,还是满足什么条件的时候?按这样的方法逐步排除程序中的代码,查错会简单得多。当你确定出错的位置以后,你需要修复出错的opcode。先在前面打上//,再进行测试。如果游戏不挂了,说明出错的代码找到了。然后就改吧。另外有一个CLEO插件SCMLOG.cleo,可以记录opcode调用,看看游戏临终前调用的最后一个opcode就行了。
如果你还是发现不了问题,你可以把问题发到论坛上。注意求助应该这样做:
1. 标题写明问题。
2. 描述错误状况。
3. 贴上代码,标出错误的地方,不然别人哪有耐心看完。
4. 在帖子里添加scmlog.log。
5. 提供所有相关的信息。

游戏中用我的程序,毫无反应!
信息太少了。可能的原因包括忘了编译,代码因故卡在死循环里等等。

编程
我找不到想用的opcode。
用opcode搜索功能(Tools > IDE Tools > Opcode search或Ctrl+Alt+2),或者在SB里打上一个词,然后按F1。

Player_Char和Player_Actor的区别是什么?
$PLAYER_CHAR是玩家在内存核心中的名字,用于作用于玩家的opcode,如0109: player $PLAYER_CHAR money += 1000000
$PLAYER_ACTOR是玩家当前操作的角色,用于作用于人物的opcode,比如00A1: put_actor $PLAYER_ACTOR at 345.5621 306.2212 998.4484

编辑SA和VC的main.scm有区别吗?
是的,SA中添加了很多东西,比如外部程序,一些opcode和结构。

我怎么找到物件的ID?
你可以用MapviewerMapEditor
如果你知道模型的名称,你可以在SB中按CTRL+ALT+H查找物品。你也可以看看这个网站

为什么我的FXT文字没有显示?
可能是你的名称太长,或者你在名称和字符串中间多了一个空格,或者末尾多了一个空格。

用GXT editor编辑american.gxt
我用的是Hammer的SAgxtEditor。最新版本是1.3,在外面找不到的。不过thegtaplace上还有。
所有的gxt条目名称默认为数字。插入条目的话需要注入ini。Hammer发过一份,不过原始地址已经没了。点这里下载
点搜索图标(放大镜),选择String List Match,弹出窗口,点Open,选择文件类型为 所有文件,然后打开american.ini,确定。不过这还不算完。你可以手动注入,比如说在main.scm里面找到IE10。在gxtEditor里点搜索,查找IE10,你会找到插入条目和显示文字。

注意有两种搜索方式
Find Name 表示搜索scm或exe中有此名称的条目,比如fem_ok
Find Value 表示搜索文字内容

重要:如果你修改了文字,先在别的条目上点一下,然后再保存。

另外这里有一份AleX AciD做的把amercian.gxt转换为完整的文本文件
不知道哪里有得下
我传了一份
所有支持的游戏用到的gxt文本都可以在SB目录\help\GXT Strings里找到

如何获得游戏中的坐标?
你可以用这个或SB里的坐标工具。

如何修改CLEO按键?
看这篇文章 EN CH

死机相关
by James227uk

启动gta_sa.exe时崩溃。
exe版本不兼容。用这个
密码请往原帖查看。

游戏在载入图崩溃。
游戏载入时某个脚本程序不能工作。尝试删除最新添加的CLEO。如果还有问题,删除所有CLEO后重试。如果还有问题就不是CLEO的 问题了。你可能修改了别的文件导致死机。如果不死机的话,把CLEO一个个放回去,死机的那个就是出问题的。

按某键死机。
某CLEO有问题,在处理按键的那一段有错。找作者去,可以PM他。

进入某地区时死机。
可能有两个原因。可能是CLEO有错,也可能是CLEO冲突。尝试把CLEO删剩一个,看有没有问题。没有问题就是冲突,有问题的话找作者去。

欢迎指正
感谢PatrickW, Seemann, ZAZ, goin-god, james227uk, ceedj

评分

参与人数 2宝石 +4 金币 +40 精力 +2 收起 理由
Sid + 2 + 20 + 2 我覺得還可以咯- -
小鉛筆 + 2 + 20

查看全部评分

传奇 Legend

有時候是幽靈,有時候是影子,有時候是兔寶寶的遠房親戚

Rank: 16

UID
20
宝石
171 粒
金币
3198 枚
节操
102 斤
灵石
0 块
精力
65 ℃
QQ
发表于 2012-5-9 21:27:49 | 显示全部楼层
翻譯這麼一大段教程,KWANZ辛苦了{:soso__17071571728416505002_4:}
話說如果改這個是不是有可能可以做一個新的主線任務,那不是很爽?不過貌似是大工程吧0.0

点评

没错  发表于 2012-5-9 21:29

璞玉 Potential

亞麻色頭髮的少女

Rank: 4

UID
402
宝石
14 粒
金币
296 枚
节操
10 斤
灵石
0 块
精力
11 ℃
发表于 2012-5-9 21:36:52 | 显示全部楼层
本帖最后由 Sid 于 2012-5-9 21:45 编辑

沒有純理論講解,而是換成問答模式,很不錯{:soso_e144:}

点评

纳尼- -  发表于 2012-5-9 21:42

评分

参与人数 1金币 +6 收起 理由
root + 6 抢楼奖励

查看全部评分

BASS Line

传奇 Legend

虚拟世界,属于你的世界

Rank: 16

UID
4
宝石
154 粒
金币
5594 枚
节操
458 斤
灵石
0 块
精力
509 ℃
QQ
发表于 2012-5-9 23:22:22 | 显示全部楼层
以前看英文
今天终于看上了中文

评分

参与人数 1金币 +2 收起 理由
root + 2 抢楼奖励

查看全部评分

璞玉 Potential

Rank: 4

UID
34
宝石
6 粒
金币
486 枚
节操
-15 斤
灵石
0 块
精力
8 ℃
发表于 2012-5-18 19:20:24 | 显示全部楼层
確實wait 0 都很重要,比如
if
   Player.Defined($PLAYER_CHAR) 的前面必須加wait 0 不然當機幾率賊大:L
....

本版积分规则

    切换繁體
    Archiver|手机版|小黑屋|

GMT+8, 2024-5-6 10:24 , Processed in 0.139651 second(s), 94 queries .

沪ICP备2021020632号-1

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