中国地图(帝国时代3自定义地图)
本帖最后由 青天小羽 于 2019-9-1 22:21 编辑这个是我制作的中国地图,有兴趣的可以下载来玩。
该地图为国内首个采用C++格式的触发程序的地图,相信对那些想搞地图的是一个很好的帮助。
---------------------------------------------------------------------------------------------------------------------
本帖最后由 青天小羽 于 2018-10-21 17:43 编辑
2018年10月21号重新更新了一下地图,原地图的建造森林因编程失误,在人数多的时候生成地图会很慢,电脑差的话,8人可能要等5分钟。
(2人建造森林大概循环200次,3人大概循环600次,5人大概循环2400次,8人大概循环4000次,这个纯属是作者的失误{:146:},其实我发现这个很久了,但是因为要考试一直都没时间,所以我在这里向之前已经下载地图的朋友表示歉意。)
注:安装帝国的路径不能存在中文,否则无法使用这两张地图。
新地图下载地址:**** Hidden Message *****
---------------------------------------------------------------------------------------------------------------------
日夜循环效果:
每隔12分钟进行一个昼夜交替
你可以用最高画质欣赏夜景,傍晚海边的风景是很好的。如果晚上看不清,将着色器修改成中型就可以。
鼠标移动到地图上面可以查看本地图特殊功能描述
下载地址:**** Hidden Message *****
地图安装位置:放到我的文档/My Games/Age of Empires 3/RM3文件夹
上面的是官方版本的安装位置,有的MOD改了路径,可能不是这个文件夹
例如某个拿破仑时代版本的文件夹为我的文档/My Games/Napoleonic Era Beta 2/RMN
自由战争MOD为为我的文档/My Games/Wars of Liberty/RM3
其他MOD自己判断。
关于c++格式触发程序:
如果是采用旧方法去创建触发程序,不仅局限性大,语句长,而且采用自定义触发需要自己修改触发文件,还不能联机。而c++触发都没有这些缺点,可以自定义触发程序,语句简洁,还可以联机。
比如这个更改照明的触发(日夜循环)
rmCreateTrigger("0start");
rmSwitchToTrigger(rmTriggerID("0start"));
rmSetTriggerActive(true);
rmSetTriggerRunImmediately(true);
rmSetTriggerLoop(false);
rmSetTriggerPriority(4);
rmAddTriggerCondition("Always");
rmAddTriggerEffect("Set Lighting");
rmSetTriggerEffectParam("SetName","spcCC5b");
rmSetTriggerEffectParamFloat("FadeTime",420);
rmAddTriggerEffect("Fire Event");
rmSetTriggerEffectParamInt("EventID",rmTriggerID("MongoliaLighting"));
修改成C++格式后
oxy("rule _0start active runImmediately { ");
oxy("if((trTime()-cActivationTime) >= 1.00000000){");
oxy("trSetLighting(\"spcCC5b\", 420.00000000);");
oxy("xsDisableRule(\"_0start\");");
oxy("xsEnableRule(\"_MongoliaLighting\");");
oxyZ("}} /*");
非常简洁,灵活性强,可以与官方版本联机,不过用的都是帝国时代3的命令(本人制作的完整版修改教程有)。
本帖最后由 青天小羽 于 2018-9-11 01:36 编辑
虽然这个都是反外挂内容,与MOD毫没有任何一点关系,但是这些都是活生生的c++触发程序例子
反作弊部分范围(只列出部分常见外挂,该地图还有其他反外挂程式):
本地图能预防就预防,不能预防则直接检测,将开挂的人踢出局。
1.常见的刷兵外挂,第一道防线:破坏单位ID;第二道防线:删除刷出的单位;第三道防线:检测刷出的单位,然后使作弊者出局。
2.卡片外挂:98%的卡片已经被封死,无法通过外挂指令改良,剩下的通过外挂指令改良后会立即出局。
3.船运、经验等外挂:只要一旦使用了,直接出局。
4.强删单位外挂:例如只要将自己的英雄删掉,立刻出局。
5.隐形卡车外挂:所谓隐形卡车只不过是一个带BUG的单位罢了。
6.隐形墙外挂:用过剧情编辑器的人应该知道隐形墙是什么。
7.种树、刷矿等外挂:我就静静地看着你刷树,如果你能刷出一个算我输,另外,希望你不要把键盘或鼠标给点烂了。
8.全图外挂:这个全图不是所谓的低级望远镜开全图,高级全图就算游戏记录了也不会显示对面使用了全图,在这幅地图这个高级全图会失效。(多说一句,这个功能已经被上次那个免费送外挂的人发现并且公开了。)
9.革命卡片:通过修改主城的革命卡片只要使用了立刻出局。
反刷兵外挂核心技术由一个大佬提供,他之前也制作了一个反作弊的斗兽场剧情,然后花了半个月时间将这个功能移植到地图上。
作弊刷单位测试:
这个反刷兵的触发程序是大佬提供的,我看得也不是很懂。
被反作弊程式检测到作弊后,会立刻出局,同时你所有单位都无法进行远程攻击,就算是卡车都无法造成伤害,不过我是不会给人任何机会成功刷出卡车的。
船运作弊:
偷发卡片基本都要用上这个,来获得大量船运
这个反外挂原理是获取玩家船运数量,并且判断
trPlayerResourceCount("+i+",\"Ships\") > kbTotalResourceGet(6)意思为某玩家当前船运数量大于本场游戏获得船运的数量(因为外挂每次只能获得100+船运,所以不用担心使用过的船运)。
trPlayerResourceCount是某玩家的资源数量,kbTotalResourceGet()是某玩家在游戏获得船运的数量。
卡片作弊:
在这个地图我已经关闭了98%的卡片,剩下的改良后会立刻出局,或者是我认为没有必要关闭的卡片。
(外挂需要研究卡片,禁用卡片就像MOD禁用科技那么简单)
强删单位作弊:
例如删除了自己的英雄
用上了检测单位数量
kbUnitCount("+i+",1480,4) != 0
1480是英雄标签在官方版本的ID(在MOD会发生改变),4是死亡数目(可以换成cUnitStateDead)
如果mod想获取单位标签ID,可以使用for循环来定位标签ID:
oxy("for(Hero=1665;>-1){");
oxy("if(kbGetUnitTypeName(Hero)==\"Hero\") break;}");
oxy("xsSetContextPlayer("+i+");");
oxy("if(kbUnitCount("+i+",hero,4) != 0{)
革命卡片:
只要是通过修改主城使用的革命卡片,立刻出局。不影响正常革命的革命卡片。
革命卡片用上了检测科技状态
trTechStatusCheck("+i+",1470,2),1470是科技ID,至于是哪个卡片的我忘记了,后面的2是active,改成0是
Unobtainable,改成1是obtainable,如果你修改过mod是不是觉得很熟悉?
本地图还移植了UI2.2的功能
开启方法是是把名字改成“ESOCUI”;或者最后一个奇数玩家使用10级或80级的中国主城,即可开启UI2.2模式(无需勾选自由对战)。如果最后一个奇数玩家为中国AI,也会开启UI2.2,不过只能在游戏记录里面看见。(AI等级默认为10级,所以你懂的。)
注:正常情况下最后一个奇数玩家不能为10级与80级的中国主城,否则会出局。
用上了RM命令识别玩家,RM命令与C++格式命令不能写在一起使用,C++命令只能是RM命令的子元素(或者不添加RM命令,可以独立存在)
就说这么多,如果有想学习制作地图的,可以来找我。(虽然入门比较难,但是拒绝严重伸手哦)
666666感谢 地图放哪? 找到了,自由之战要放文档/Wars of Liberty里面才行 111111 用C++来制作触发?!
新……新时代?
{:152:} newtonerdai 发表于 2018-9-11 17:14
用C++来制作触发?!
新……新时代?
没错,新时代来临了
帝国3的触发原本就是C++格式,然后通过xml转成了触发。在xs用旧方法编写xs触发会自动转成c++格式;而这个地图是直接采用c++格式触发,直接跳过了读取xml文件,然后读取地图的c++触发,无论是功能还是还是流畅都比原来的方法要好。 青天小羽 发表于 2018-9-11 19:18
没错,新时代来临了
帝国3的触发原本就是C++格式,然后通过xml转成了触发。在xs用旧方法编写xs触发会自 ...
其实应该叫“C++样式的脚本语言”,因为C++是要编译的……另外像switch这样的结构应该用不了 我是谁004 发表于 2018-9-12 19:16
其实应该叫“C++样式的脚本语言”,因为C++是要编译的……另外像switch这样的结构应该用不了 ...
你这样说也没错,不过可以使用switch,例如OBSUI2.2的触发就有用到,如下图
厉害,等着加精 回复 支持楼主! 前排支持 中国地图赞啊,有海最喜欢了 支持一下 支持! 牛牛牛 {:155:} 谢谢分享