骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 9739|回复: 10

[经验与教程] 简易MS代码写法教学(第一集)

[复制链接]

48

主题

631

回帖

224

积分

见习骑士

Rank: 3

UID
1589849
第纳尔
1744
精华
0
互助
2
荣誉
1
贡献
0
魅力
23
注册时间
2013-10-8
鲜花(34) 鸡蛋(0)
发表于 2020-7-3 19:56:30 | 显示全部楼层 |阅读模式
本帖最后由 天メ逆 于 2020-7-20 09:21 编辑

第一集    如何用代码添加音效
前言:
  各位喜欢骑砍的小伙伴们好!我是风云三国司马奉先音效版(个人修改)的修改者,之前我私自修改了司马奉先3.5版,加入了几十个武将技能和150多个武将音效以及一些平衡优化。后来司马奉先制作组发布通告说禁止一切修改,我十分尊重司马奉先制作组的决定,已将网上我上传的修改版删除,并承诺不再上传网络。
  承蒙很多小伙伴的厚爱,虽然我已将音效版删除,但很多小伙伴还是私聊找我要音效版。看着他们对我修改版的喜爱,又不能不遵守司马奉献制作组的规定,着实让我有些难受。
再加上,网络上很少有大佬教萌新如何写代码,所以,我决定将我这几个月写代码的经验分享出来,也算是我玩了这些年骑砍对萌新们做出的一点小帮助。
  我所写的都是自己这2个月从网上搜索代码,然后分析理解代码,仿写代码,最后写出自己想要的代码,这一路摸索的经验,没有任何人教过我,全凭我个人领悟,所以可能会有错误的地方,大佬见笑了。
  我所写的代码知识,是我在魔球中写代码总结的经验,主要用于修改,如果您想要完全制作一个新MOD,此篇教学可能并不适合您。但也并不能说完全无用,因为代码知识是一样的,只是我没有源码,只能写在魔球中。
                                                                                                                  ——作者:天逆(千手柱间)

一.一些必须懂的最基本知识

MOD是什么】
骑马与砍杀包括了游戏本体和MOD2个重要部分。游戏本体可以理解成放映机,MOD可以理解为光碟,你想看什么光碟,就要把光碟放进这个放映机里。
潘德是1个MOD,风三是1个MOD,乱舞水浒也是1个MOD。只有把MOD放在骑砍游戏本体的modules文件夹中,点击骑砍启动器(俗称马头),选择你想玩的MOD,才能进入这个MOD。
TXT修改】
刚接触修改的小伙伴可能在网上搜过一些txt修改,比如txt修改领主逃跑率。这种修改方法要面对茫茫多的数字,而且及其容易出错,甚至在有些MOD中按照网上的txt修改方法根本无效!这是因为网上的修改方法都是基于战团native的版本,有些Mod修改了太多东西,所以自然就无效了!当然,有些魔球无法办到的,必须用txt修改,后面会讲到。
【魔球修改】
很多小伙伴可能已经使用过“魔球”这个软件了,通过魔球我们可以轻松实现很多修改。但是很多小伙伴使用魔球也就是改一下属性,改一下武器攻击力,游戏里体验一下无敌的快感,然后觉得索然无味就卸载了游戏。
这是我不推荐的。我希望的是,大家学会修改之后,去修改MOD中你觉得制作组设计不平衡或不合理的地方,增加游戏的趣味性!关于如何用魔球修改属性我就不讲了,本篇主要讲代码。
【代码修改】
魔球虽然能修改很多东西,但还远远达不到随心所欲修改的效果。比如我想要创建一个新的真正的NPC,有独立的对话,可以招进队伍,具有原版NPC的所有功能,这用魔球无法实现,必须在py文件中加入新NPC的代码才可以。
py文件里记录了MOD所有的源代码,只有MOD制作组才有,除非他肯分享出来。也就是说,没有MOD源码,我们能做的修改,是很有限的。
但大家也完全不用灰心,我们学会了写代码,利用魔球,依然可以实现很多功能。下面是我用魔球+代码做的一些技能,可以发现魔球+代码还是基本能满足大家的修改想法。甚至我还加了技能提示。
             图片1.png           QQ截图20200703195435.png
魔球虽然有很大的局限性,但同时也有个很大的优点,那就是不用花费大量时间去学习如何制作全新的MOD,我们就能用魔球+代码,快速实现修改。非常适合我这种不想制作MOD,又想玩属于自己的MOD的修改党!

网上对“代码”有一种叫法是“py语言”,相信有些小伙伴听说过,一般都是从大佬嘴中说出,一副高大上的样子。但我认为在骑砍中这种说法不够准确。我所理解的是,骑砍开发者利用“py语言”制作了一套属于骑砍自己的语言,也就是“骑马与砍杀MS语言”。我看见中文站有些想要学骑砍代码的人,去买了一本py语言的教科书学习,实在是没有必要。即使你完全学会了py语言,还是要专门学习骑砍自己的MS语言,才能写出骑砍的代码!
能看到这里,说明您是一个有耐心、真心想学写代码的人,我上面写这么多字,同时也是为了劝退没有耐心的人。写代码说难不难,说简单也不简单,需要耐心和一些悟性,下面从最简单的代码开始讲起!!!由于是代码讲解第一集,所以我会讲的非常非常详细,后面第二集、第三集就不会这么详细了。(注意:任何修改前,请先备份!!备份!!备份!!)

二.用代码添加音效

这里所说的添加音效,指的是武将在战斗时满足一定条件的情况下,会播放音效。以我修改的音效版为例,司马懿发动技能·伏兵时会说“直奔诸葛亮四轮车”,马超战斗时会说“冲过去,斩了曹贼”,邢道荣战斗时会说“说出吾名吓汝一跳”、“我乃零陵上将军邢道荣”等等。。。。要实现这个效果,需要如下步骤:

1. 制作音效
可以是录屏、录音或是网上下载,总之弄到你想要的音效文件,最好把原始音量放大为2倍,不然游戏中声音太小。然后用“格式工厂”把音效文件格式转换为ogg或者wav格式,因为骑砍只支持这2种格式的音效文件。
2. 导入音效
将制作好的音效文件,放到MOD中的 图片2.png 里,然后打开魔球,点击 图片3.png ,随便创建一个新的声音资源,然后把资源名改为你导入的音效文件名。比如,我的音效文件名是 图片4.png ,我就需要把声音资源名改为 图片5.png 。.wav是格式,也需要加上去!如果你是ogg格式,就是simayi.ogg!!点击 图片6.png !!!
然后,点击魔球里面的 图片7.png ,随便创建一个声音,选择你刚刚导入的声音资源 图片8.png ,同时修改声音名字,最好改成你认识的,比如 图片9.png ,snd_是前缀,不能删除!
套用!!保存!!这就完成了所有的准备工作,接着开始写代码!
3. 添加代码
    因为魔球无法在战场触发器中添加代码,所以我们只能在物品触发器中添加音效。
点击魔球中 图片10.png ,找到你想添加音效的武器。比如我想给司马懿添加音效,就找到司马懿的武器,点击右侧 图片11.png ,然后右键点击 图片12.png ,选择“新增触发器”,会看到这个界面 图片13.png
接着点击触发条件的下拉菜单,会看到 图片14.png
选择“武器攻击”,意思是,当这个武器攻击时,这个触发器就会工作1次。
然后看到下面有3个选项 图片15.png 点击PY代码,我们的代码需要在PY代码中写!!伪代码虽然是汉字更容易懂,但是伪代码包含的MS语句太少,只能实现一些最基础的功能,熟练之后,可以伪代码、PY代码之间切换使用,一般我是写完PY代码保存之后,切换到伪代码中查看我写的代码有没有大的结构问题,伪代码是汉字更多是方便检查我们写的代码!

我以司马懿的黑羽扇为例,在下面的方框里,输入下面的代码:

(store_trigger_param_1,":var_1"),
(agent_get_troop_id,":var_30",":var_1"),
(store_random_in_range,":var_100",1,101),
(try_begin),
    (eq,":var_30","trp_knight_1_16"),
    (neg|gt,":var_100",20),
    (play_sound,"snd_simayi"),
(try_end),

代码讲解:(写代码必须输入法是英文状态,不能用中文的标点符号,写完之后一定要套用!!保存!!)

(store_trigger_param_1,":var_1"),
store是储存的意思
trigger_param_1是触发器参数1的意思
":var_1"是局部变量1的意思
这句话的意思,就是将触发器参数1储存在局部变量1中。触发器参数1在刚刚选择的触发条件“武器攻击”中有规定,触发器参数1=攻击方角色,就是拿这个武器攻击的人。也就是说,现在局部变量1=攻击方角色。

(agent_get_troop_id,":var_30",":var_1"),
agent我理解为角色的意思
get_troop_id=获取这个兵种的id
这句话的意思是,获取局部变量1所属的兵种id,并储存在":var_30",也就是局部变量30中。局部变量后面的数字,自己可以随便定义,我习惯把兵种定义为30。这个troop,就是魔球中的兵种。如果拿这个武器攻击的角色是司马懿,那么局部变量30就等于司马懿这个兵种。如果拿这个武器攻击的角色是诸葛亮,那么局部变量30就等于诸葛亮这个兵种。

(store_random_in_range,":var_100",1,101),
random,随机数
in_range在某个范围
这句话的意思是,在1~100的范围内,随机选一个数,储存到":var_100",也就是局部变量100中。

(try_begin),
意思是,如果。。。
也是一小段代码的开头。

(eq,":var_30","trp_knight_1_16"),
eq的意思是“等于”,是一种表示判断的逻辑符号。
这句话的意思是,检测局部变量30是否等于trp_knight_1_16。trp_knight_1_16在我玩的MOD中,就是司马懿所属的兵种id。也就是检测,局部变量30是不是司马懿。

(neg|gt,":var_100",20),
gt的意思是“大于”,是一种表示判断的逻辑符号。
neg|的意思是“否定”
合起来,neg|gt就是“小于等于”的意思。这句代码的意思是,检测局部变量100是否“小于等于”20。

(play_sound,"snd_simayi"),
play_sound,播放声音
"snd_simayi"就是刚刚导入的声音名。
这句话的意思是,播放snd_simayi这个声音。

(try_end),
意思是,结束。
也是一小段代码的结尾。(try_begin),和(try_end),组合起来就是一小段代码的开头和结尾,有开头就必须有结尾,否则代码结构就错误。如果在(try_begin),(try_end)之间,还有其他的(try_begin),(try_end),则表示这一小段代码里,还套了其他的小段代码。不理解的话,可以想象,(5×(1+3)),(try_begin),(try_end)有些类似数学里的(),()里是可以套其他()的。

整个代码的意思是:
这个武器每攻击一次,都会检测使用这个武器攻击的角色是不是司马懿,如果是司马懿且从100个数中随机取一个数刚好处于1~20之间(也就是20%几率),那么就播放snd_simayi这个声音。加个20%几率,是为了控制播放音效的频率,不然一直攻击一直播放音效,太吵了。
如果检测到不是司马懿,或者检测到随机数不在1~20之间,就不会播放声音。总而言之,有逻辑判断符号的,必须判断为真,代码才会往下运行。如果判断为假,那么从这句判断为假的代码一直到这一小段代码的结束,这之间的代码都不会生效。

评分

参与人数 2荣誉 +1 第纳尔 +50 互助 +2 魅力 +21 收起 理由
Aomine Daiki + 1 + 1 + 20 文章不错,继续努力!
幼稚园殺手 + 50 + 1 + 1 文章不错,继续努力!

查看全部评分

鲜花鸡蛋

q708856842  在2020-8-17 21:25  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
乌木护手骑士团  在2020-7-3 21:45  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

13

主题

33

回帖

29

积分

扈从

Rank: 2Rank: 2

UID
3055178
第纳尔
862
精华
0
互助
3
荣誉
0
贡献
0
魅力
20
注册时间
2019-1-24
鲜花(3) 鸡蛋(0)
发表于 2020-7-3 21:34:55 | 显示全部楼层
支持一下,cy

55

主题

382

回帖

156

积分

见习骑士

Rank: 3

UID
3149514
第纳尔
430
精华
0
互助
5
荣誉
0
贡献
0
魅力
20
注册时间
2020-3-24
鲜花(43) 鸡蛋(0)
发表于 2020-7-3 21:45:18 | 显示全部楼层
辛苦了
你每天早晨起床都下定决心做一个好人,那么你就是一个好人,你是什么取决于你在做什么,否则就什么都不是!
If you get up every morning and make up your mind to be a good person, then you are a good person. What you are depends on what you are doing, otherwise you are nothing.

1

主题

262

回帖

84

积分

扈从

Rank: 2Rank: 2

UID
3103993
第纳尔
1262
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2019-9-11
鲜花(20) 鸡蛋(0)
发表于 2020-7-3 23:26:22 来自手机 | 显示全部楼层
代码分析的很完美,加油

10

主题

184

回帖

58

积分

扈从

Rank: 2Rank: 2

UID
3070326
第纳尔
686
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2019-4-25

战团正版勋章

鲜花(0) 鸡蛋(0)
发表于 2020-7-6 00:08:03 | 显示全部楼层
的确不用学py,因为所有的函数都可以在operation文件查到,里面也有各类函数的用法。当然虽然不必学py,但会一点英语和编程原理是很有必要的。

6

主题

40

回帖

14

积分

随仆

Rank: 1

UID
2806072
第纳尔
270
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-2-10
鲜花(8) 鸡蛋(0)
发表于 2020-7-13 16:27:25 | 显示全部楼层
请问一下你们ms在哪里下载的,我怎么找不到??

53

主题

151

回帖

66

积分

扈从

Rank: 2Rank: 2

UID
2628029
第纳尔
1167
精华
0
互助
1
荣誉
0
贡献
0
魅力
2
注册时间
2015-10-31

战团正版勋章维京征服正版勋章

鲜花(4) 鸡蛋(0)
发表于 2020-8-18 08:17:12 | 显示全部楼层
学习了,请问有第二集么?那些sol的怎么解读

0

主题

340

回帖

102

积分

见习骑士

Rank: 3

UID
3214492
第纳尔
708
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2021-1-10

骑砍中文站APP会员勋章霸主正版勋章

鲜花(0) 鸡蛋(0)
发表于 2021-1-13 09:23:22 来自手机 | 显示全部楼层
真心不错。来自: Android客户端

0

主题

698

回帖

209

积分

见习骑士

Rank: 3

UID
3210535
第纳尔
1429
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-12-13

骑砍中文站APP会员勋章

鲜花(2) 鸡蛋(0)
发表于 2021-1-20 08:20:41 来自手机 | 显示全部楼层
支持         !!
来自: Android客户端

0

主题

12

回帖

4

积分

平民

Rank: 1

UID
3148739
第纳尔
305
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-3-22
鲜花(0) 鸡蛋(0)
发表于 2021-6-6 19:52:47 | 显示全部楼层
只有第一集吗

0

主题

9

回帖

8

积分

平民

Rank: 1

UID
3478439
第纳尔
4
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2023-1-22
鲜花(0) 鸡蛋(0)
发表于 2024-2-23 20:05:16 | 显示全部楼层
大佬真牛逼 居然自学两个月
我看教程几天连着下来都顶不住 太枯燥了 而且那一大串的代码也看得我脑瓜子疼 不得不说大佬真是人才 自学就可以搞定
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-12-27 12:21 , Processed in 0.159087 second(s), 40 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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