魔兽争霸编辑器吧3YDWE编辑器,如何使英雄捡起同类的物品,并扔下原来的。

魔兽地图编辑器YDWEv1.22.7正式版下载_太平洋游戏网下载中心
收藏的论坛
魔兽地图编辑器YDWEv1.22.7正式版下载
魔兽地图编辑器YDWEv1.22.7正式版
游戏大小: 14.4MB
更新时间:
游戏版本: 魔兽1.20-1.26
所属类型:地图皮肤
运&&营&&商:YDWE
累积下载:76612
  YDWE简介  YDWE是everguo、wataloo、aeris、Warft_TigerCN、Fetrix_sai和actboy168基于WOW8编辑器UI所改进的一个功能强大的魔兽地图编辑器插件(WE Mod)。  YDWE特色系统:  1.佣兵系统  这个系统是不会被经常使用的系统。当你使用了这个系统之后,被选定的单位会在你的周围巡逻,当距离你一定程度的距离之后,会返回来。  2.跳跃系统  顾名思义,当你触发了这个系统的时候,你的单位会往你指定的方向跳跃。从1.11之后跳跃曲线由三角形转成抛物线,并且加入判断,当你在空中点击跳跃,那么不会出现测试版中单位抖动的BUG。  3.多重物品栏  也是顾名思义,这个功能可以使英雄或单位有多个物品栏,可以做成物品,也可以用技能触发。  4.物品合成系统  这个是非常熟悉的功能了,在DOTA等类似的地图里就见到过,可以把几个物品合成一个物品。  5.刷兵系统  他是由创建单位和命令单位两条触发所组成的一个系统,使用这个系统不需要排泄,因为这个是用坐标点来完成的。如果你在测试版添加了这个系统,那么你的地图无法在正式版开启,所以这个BUG还是满大的的。如果想要正式版能够开启你的地图,你可以开启测试版的UI来删除触发。从1.11开始有了关闭这个刷兵系统的功能有两种方法可以取消,一种是输入参数,一种是记录刷兵的计时器然后删除。  6.环绕系统  这个是创建你所指定的单位来围绕着你。在原来的版本中,这个功能创建的单位无法被删除。而从1.11开始修正了环绕特效不消失的BUG,并且当单位生命值小于0后取消环绕。  7.Dota里的肉钩  这个是把Jass的技能封装后完成的。在原有的版本当中边界的判断不是很好,只拥有地图边界的判断,但这样很不好,意味着单位会进入地图边界前的阴影。  8.英雄自动学习技能  先为英雄绑定需要学习的技能,可以是4个或5个,如果只有4个,那么第5个技能随便填写。  9.设置一个单位可以飞行  在以前的编辑器中让一个单位变得可以飞行,是不需要添加一个修改后的变身(风暴之鸦)技能的,使用默认的变身技能就可以了。而在YDWE中只用这个功能就足够了。万能属性系统(原&随意修改生命和魔法上限&) zheg  10.幸福的黄丝带  一个十分华丽的特效,能够让你的背后漂浮着美丽的丝带。  YDWE兼容的UI:  YDWE可以兼容老狼UI、wow8UI和夜天UI  YDWE核心:  作者: Aeris  YDWE核心是YDWE功能的基础和核心。其中包含了许多对WE的扩展和限制解除。如解除地图上可放置物品、可破坏物等的上限,解除地形大小、地形纹理限制,支持vJass/zinc和新近的cJass,此外,为了支持扩展,YDWE内置了强大的脚本系统。YDWE的脚本系统基于LuaPlus。稍后会制作脚本的文档,方便大家扩展和自定义YDWE的功能。  WE限制去除:- 去除地图大小限制(地图面积可以扩展到480X480)  - 去除地形纹理限制(不再受限于13种纹理,但是仍然无法突破WE的硬性限制)  - 去除自定义单位/物品/可破坏物等数量上限  - 允许使用中文名称的触发  vJass/zinc支持 + PJass语法检测:支持最新的vJass和zinc语法,同时把WE自带的语法检测功能替换为pjass,避免因为脚本出错导致WE崩溃。如果推出了最新的JassHelper,在YDWE放出更新前可以自己更新。  cJass支持:支持使用cJass语法。默认关闭(在选项配置里)  使用窗口模式测试:该功能启用后(在选项配置里),在测试时魔兽将以窗口启动并测试地图,这种模式对于测试更加方便。  使用OPENGL模式测试:该功能启用后(在选项配置里),在测试时魔兽将以OPENGL渲染模式启动并测试地图。  LuaPlus脚本引擎:提供了强大的扩展功能,可以借助脚本引擎自己DIY自己的YDWE,添加各种插件和功能。脚本的资料和函数文档稍后放出。  YDWEv1.22.7正式版更新说明:  1.修正技能施放目标单位无法在事件中显示的问题。  2.修正SetImageColor参数类型错误的问题。  3.修正两处官网地址错误的问题。  4.cjass编译器从1.4.2.14更新到1.4.2.40。  5.去掉三个多余的类型检查。  6.优化任意玩家事件的生成代码。  7.去掉旧的预处理注入语法。  8.更新了物体编辑器的文本。
  Q:请问YDWE和别的编辑器比有什么不同?  A:关于这个问题(不知道说作者比较帅会不会被拍砖),可从三个方面来回答:  ①YDWE整合了目前市面上大多数功能,包含&支持魔兽1.20-1.24版&、&支持xp、vista和w7操作系统&、&支持魔兽窗口化运行&、&自带1.21官方WE(如果你机器上WE无法使用,不照样能使用YDWE)&、&破除地面纹理数量限制&、&破除装饰物限制&、&双开WE&、&支持地图扩大到480x480&、&支持VJass&、&支持CJass&和&自带Tesh插件&等,这些功能对WEer帮助很大。  ②YDWE独有&自动备份地图功能&、&关联地图文件(直接双击地图即可启动编辑器)&、&同时生成可以分别在1.20和1.24下运行的两张地图&和&绿色版、无需安装&等特点。  ③YDWE的UI,既带有许多优秀的技能演示,如钩子、月神箭和跳跃等,一条T就能实现一个复杂的功能;同时,YDWE自带中心计时器、局部变量和存储系统等功能,可以使WEer即便用纯T也能实现很多原本需要JASS才能实现的功能。  最新魔兽地图下载:
温馨小提示: 1.本站所有客户端,补丁,软件等文件都经过杀毒软件认证,无病毒无木马无插件。 2.下载速度和用户网络所在地和宽带有关,请尽量选择用户所在地的下载点下载。
3.文件过大请尽量使用下载本站提供软件。 4.为确保正常使用请使用WinRAR解压本站软件。
魔兽地图编辑器YDWEv1.22.7正式版下载地址
游戏版本:魔兽1.20-1.26(温馨提示:您的IP是&&建议选择&&下载)
电信下载:
网通下载:
魔兽地图编辑器专题针对新手入门提供基础讲解,案例视频解说及作品演示让玩家对地图编辑器有一个初步概念。世界上很多地图制作高手已利用WE创作出了类似《反恐精英》、《暗黑破坏神》、《雷电》、《大富翁》等经典游戏的魔兽版,可以说用WE只有想不到,没有做不到。WE功能如此强大,其实不难掌握,因为暴雪已将它做得再“傻瓜”不过了。当你决定使用它创造地图时,摆在你面前的不过是一大堆“积木”,你只要发挥自己的创造力,就能将其摆放出一个自己想象中的世界来。是不是已经等不及了?让我们赶快启动WE来制作属于你的一部舞台剧!
魔兽地图编辑器
今日更新 本周热门软件
热门游戏推荐|  
|  
|  
|  
|  
只需一步,快速开始
查看: 6346|回复: 0
【魔兽地图编辑器】【CJass教程】YDWE版 By Warft_TigerCN 『必须要有YDWE』
主题帖子积分
大家叫我奶茶0.0
【写在前面的话】
────────────────────────────────────────
Cj中有很多非常好的语法,不用实在是可惜了,所以我拿出来和大家一起分享。如果使用YDWE,必须是1.18以及以后的版本才可以,使用之前请先到YDWE的配置程序里把cjass启用。Cj是对Vj的扩展,所以,二者可以混合使用。但不能在zinc中使用Cj语法。接下来我将用自身心得去描述该语言。────────────────────────────────────────
Cj的语法不多,但都是很实用的语法,对于有C语言基础的朋友来说,是很容易掌握的。Cj的语法我总结了下,大致有如下11个方面。
1、#include &path.j& — 包含头文件语法
这个语法相信C语言的忠实读者是绝对不陌生的,它的作用是包含一个后缀名为j(jass文本文件的缩写)的文件的所有内容。相当于Vj里的//! import path.j语法,他们的作用都是外导文件,或者叫导入汇外文件。因此,其语法如下:#include &文件路径名\...\文件名.j&众所周知这是相对路径,而且每次必须将头文件包含在相同文件下,比较麻烦,推荐的做法是将编辑好的头文件放在Cjass启动目录下的lib文件夹下。比如,我编辑了一个名为cj_math.j的文件,jassnewgenpack安装在D盘主目录下,则该文件必须存放在D:\jassnewgenpack\AdicHelper\lib目录下。打开编辑器,在代码框任意位置输入#include &cj_math.j&,就可以使用事先在该文件内写好的代码。当然,Cjass的作者事先已经写好了一些头文件,主要的有cj_types和cj_print;以及本人所编辑的常用的头文件,例如cj_branch、cj_function、cj_timerutils、cj_xebasic和cj_xefx等。由于其内容主要是迎合C++的部分语法,因此这些头文件保持不变即可。
2、函数隐匿关键字、不确定行以及局域变量自由声明
①、jass中函数的关键字无非是set和call,意即书写时可以省略这2个关键字,return是无论如何不能缺省的。如下例:function Test takes nothing returns integer
& && &unit u = GetTriggerUnit()
& && &BJDebugMsg(GetUnitName(u))
& && &return GetHandleId(u)
endfunction复制代码②、所谓不确定行功能是指原本属于多行的语句可以并在一行,必须用“;”隔开,如下例:function Test takes nothing returns nothing
& && &unit u = GetTriggerUnit(); BJDebugMsg(GetUnitName(u)); u = null
endfunction复制代码③、局域变量自由声明与全局变量自由声明遥相呼应,是指局域变量在一个函数体内可以不必出在最前端,位置可以是任意的,如下例:function Test takes nothing returns nothing
& && &BJDebugMsg(GetUnitName(u))
& && &unit u = GetTriggerUnit()
& && &set u = null
endfunction复制代码编译后会自动将这些局域变量置于函数体内的首端,如下:function Test takes nothing returns nothing
& && &local unit u
& && &set u = GetTriggerUnit()
& && &call BJDebugMsg(GetUnitName(u))
& && &set u = null
endfunction复制代码值得注意的是,全局变量声明所需要的globals~endglobals也可以省略不写,写在任何函数的外面即全局变量。
3、#define — 宏定义
这是Cj中最强大的语法之一,为什么这么说呢,过去在我的Vj教程里提到过函数内联,它的作用就
类似于宏,不过要比宏的功能要弱得多。
I、函数内联
①、常函数定式,此种函数在Vj编译器下会将所有名为Hero()的名字替换成'Hamg',其优点是:用一个有意义的标识符来代替一个字符串,便于记忆,易于修改,提高程序的可读性和可移植性。假如我要修改'Hamg'(大法师)为'Hmkg'(山丘之王),那么按普通方式,就需要替换所有的'Hamg',不但修改麻烦,也不利于辨识。最好的方法是利用函数内联将函数Hero里的'Hamg'直接替换为'Hmkg'。constant function Hero takes nothing returns integer
& && &return 'Hamg'
endfunction复制代码②、常函数变式,这是针对往往按一定规律排列的数而产生的,如下所示:constant function Level takes unit u returns integer
& && &return GetHeroLevel(u) * 2
endfunction
function Test takes nothing returns nothing
& && &local unit u = CreateUnit(Player(0),'Hamg',0,0,0)
& && &local integer i = Level(u)
& && &//上行编译后结果如下:local integer i = GetHeroLevel(u) * 2
& && &set u = null
endfunction复制代码可以想见,当我们用变式来解决诸如由技能、单位等级带来的每等级所代表的伤害、等级数值、范围、长度、位移等有规律的数字组时,是极其的直观于方便。
II、全局常量
函数内联需要写一个完整的函数,比较麻烦,至少增加了书写的代码量,因此,全局常量逐渐取代了函数内联的定式的形式,如下例:globals
& && &constant integer SpellId = 'AHtb'
& && &constant integer HeroId&&= 'Hamg'
endglobals复制代码然而,全局常量不能被删除,而且占据内存较大,大量的声明全局常量不是明智之举,况且对于一些只用几次的函数,这样做太过于浪费。宏的出现将该问题迎刃而解。
III、功能丰富的宏定义[/b]①、宏的声明
#define 宏名 = 字符串
比如#define TigerCN = &I`m a chinese!&function Test takes nothing returns nothing
& && &call BJDebugMsg(TigerCN)
endfunction复制代码要知道,宏定义仅仅是替换文本,所以最终的结果是被替换的文本被执行,如此一来,不知道可以节约多少全局变量,而且定义自由度高。需要注意的是,宏不能像变量那样最终被解释,也就是说它不能做任何的运算。如下例:
#define IntA = 5
#define IntB = IntA + 3
这是不可以的,因为很明显这样做是将IntA作为一个变量来使用的,事实上却不是,因此编译
器报错在所难免。多个宏的声明既可以写多个#define,也可以用一对{}号来表示,内部允许
存在扩展的{}。如下:#define {
& & China = &Great&
& & TigerCN = GetTriggerUnit()
& & Warft = CreateItem('itic', 0, 0)
& & Hello = {
& && && && && && &&&BJDebugMsg(&Hello, TigerCN!&)
& && && && && && &&&BJDebugMsg(&Hello, China!&)
& && && && && &}
}复制代码②、宏的更换
假如我不打算让宏名China等价于&Great&,而想让他等价于&God&,则可以在适当位置使用#setdef 宏名 = 新字符串。如#setdef China = &God&。
③、宏的撤销
要撤销一个宏就是希望它不再发生任何替换作用,可以使用#undef 宏名的语法,如#undef China,此时China不代表任何字符串。
④、带参数的宏定义
声明格式很简单,与①一样,只不过多了一对括号而已,如下所示:
#define NewUnit(id,x,y) = CreateUnit(Player(0),id,x,y,0)
⑤、利用带参数的宏实现函数重载
需要注意一点,宏定义时参数列表内的项数不应当相同,在使用的时候,编译器会自动找寻匹
配的字符串,并进行合适的替换。#define {
& && &&new obj&(id) = CreateUnit(Player(0),id,0,0,0)
& && &&new obj&(x,y) = CreateUnit(Player(0),id,x,y,0)
& && &&new obj&(x,y,f) = CreateUnit(Player(0),'hpea',x,y,f)
& && &&new obj&(id,x,y,f) = CreateUnit(Player(0),id,x,y,f)
& && &&new obj&(p,id,x,y,f) = CreateUnit(p,id,x,y,f)
}
function Test takes nothing returns nothing
& && &local unit u
& && &set u = new obj('hpea')
& && &set u = new obj(100,200)
& && &set u = new obj(100,200,270)
& && &set u = new obj('hpea',100,200,270)
& && &set u = new obj(Player(0),'hpea',100,200,270)
endfunction复制代码⑥、实现类似文本宏的指定文本替换
有时候,我不需要替换所有的文本,只需要替换文本中指定的几处位置,以达到简化代码的作用。则可以使用##语法,如下:#define RegisterFunc(name,type) = {
& && &function I2##name takes integer returns ##type
& && && && &&&return i
& && && && &&&return null
& && &endfunction
}
RegisterFunc(U,unit)
RegisterFunc(T,timer)
RegisterFunc(G,trigger)复制代码编译后如下:function I2U takes integer returns unit
& && &return i
& && &return null
endfunction
function I2T takes integer returns timer
& && &return i
& && &return null
endfunction
function I2G takes integer returns trigger
& && &return i
& && &return null
endfunction复制代码⑥、表示性宏定义
此类宏定义往往是按序扩展性宏定义,以时间、数量、编译模式与否、函数名以及魔兽版本为依托,进行加注解释。
DATE - 返回一个以当前时间格式为“年.月.日”为标注的值
TIME - 返回一个以当前时间格式为“时.分.秒”为标注的值
COUNTER - 返回一个以0为首项,公差为1的等差数列为标注的值
DEBUG - 如果是调试模式,则返回值为1;否则为0
FUNCNAME - 返回当前函数的名字
WAR3VER - 返回当前魔兽版本,需要在Cjass插件中选择1.23还是1.24+。例1:
#define unique_name = func_##COUNTER
void unique_name () {} // void func_0 () {}
void unique_name () {} // void func_1 () {}
void unique_name () {} // void func_2 () {}
#define H2I(h) = GetHandleId(h)
#if WAR3VER == WAR3VER_23
& & #undef H2I
& & integer H2I (handle h) { return return 0 }
⑦、宏用于钩子功能(该功能懒得说了,还不如直接使用Vj的hook功能)
3、条件编译
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件
下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”。条件编译状态下只能使用
“!=”和“==”操作符,其语法格式如下:
& & 执行语句1
#elseif 条件2
& & 执行语句2
#elseif 条件3
& & 执行语句3
& & 执行语句N-1
#else 条件N
& & 执行语句N
4、函数格式
相信很多学习过C语言的朋友对如下代码不陌生:
void main() {
& & printf(&Hello,world!& );
很幸运的是,Cj中也实现了这个功能,其语法格式和C语言如出一辙:
返回值类型 函数名(参数列表) {
& & 执行语句
& & return 返回值
Vjass作者变更了4个类型(要使用这4种类型,必须包含头文件cj_types.j),并且实现了高亮,
分别是如下几个变量:
& && &&&int& & = integer
& && &&&float = real
& && & bool = boolean
& && &&&void = nothing
因此,之前那个C语言的代码可以用Cj书写,这样能以空间换时间,大大减少了书写时间,形象
直观,也更贴切C语言。当然,关于此处的printf函数,可以不必用宏定义,可以参考和使用我
写的模拟C语言格式输出函数的模板。#define printf = BJDebugMsg
library Program initializer Main {
& &&&
& && &private void Main() {
& && && && &printf(&Hello,world!&);
& && &}
}复制代码好了,一个C语言风格的Hello,world!程序就此写好了。
5、自增自减运算符
在Zinc里,Vexorian已经向我们提供了+=、-=、*=、/=操作符,但是这还不够,Cj的作者ADOLF不仅提供了这些操作符,还提供了++、--运算符。先看一个函数:void test() {
& && &int i = 1, j = 1, a,
& && &a = i ++; // i ++是先执行当前命令,再执行递增
& && &b = ++ // ++ j是先递增,再执行命令
& && &printf(I2S(a)); // a的结果为1
& && &printf(I2S(b)); // b的结果为2
}复制代码再看一个双目运算符和单目运算符混合的例子:void test() {
& && &int a = 7;
& && &int b = ++a; // a的结果为8,b亦即等于8
& && &int c = a + b --; // a的结果为8,b亦即等于7,c为16
}复制代码自增自减可以结合数组巧妙使用:void test() {
& && &int i = 0, index [];
& && &while(i & 7) {
& && && && &index[i ++] = i
& && &}
}复制代码6、换行符
符号为“\”,可以用其截取一行完整的语句,但不影响该语句的运行。类似于/**/。如下例:
void test() {
& & unit u = CreateUnit(Player(0),\
& && && && && && && && &'hpea',& && && && &\
& && && && && && && && &100,& && && && && &\
& && && && && && && && &200,& && && && && &\
& && && && && && && && &270);
}复制代码等价于void test() {
& & unit u = CreateUnit(Player(0),'hpea',100,200,270);
}复制代码7、flush locals功能
这个功能主要是用于自动清空需要释放的句柄变量,而不需要我们手动清除。如下所示:
void test() {
& && &unit u, v, w = GetTriggerUnit();
& && &location l, m = GetSpellTargerLoc();
& && &
}复制代码从上面代码可以看出,变量u、v、l尚未被赋值,因此实际上它会自动将w、m设置为空值。
8、lambda表达式
类似于zinc里的闭包功能,不过要更强悍的多,因为它的返回值没有限定。格式为lambda
返回值类型() {}使用非常简单,如下例:library Program initializer Main {
& && &
& && &private void Main() {
& && && && &timer t =
& && && && &TimerStart(t, 1, true, lambda void() {
& && && && && && &printf(&hello,world!&);
& && && && &});
& && && && &flush locals
& && &}
}复制代码9、#for循环
这种for循环不同于zinc里的for循环,更多的,它像是一种以步长为1,之需要确定起始值和
终结值的循环。需要注意的是:变量名无需自己设定,该循环的创建就意味着该变量的声明。
其语法格式为:
#for 自增变量名 (起始值,终结值)
& && &执行语句
#endforvoid test() {
& && &int index [];
& && &#for i (0, 9)
& && && &&&index[i ++] =
& && &#endfor
}复制代码10、#repeat循环
该循环很简单,其目的是重复执行一段代码,其语法为:
#repeat 循环次数
& & 执行语句
#endrepeatvoid test() {
& && &#repeat 2
& && && &&&BJDebugMsg(&Hello,world!&);
& && &#endrepeat
}复制代码编译后:function test takes nothing returns nothing
& && &call BJDebugMsg(&Hello,world!&)
& && &call BJDebugMsg(&Hello,world!&)
endfunction复制代码11、#while()和do...while()循环
这种循环体在我的Vj教程里已经阐述过,故此处不予赘述。12.枚举变量 — enum
遗漏掉了枚举类型enum。其语法是:
enum {枚举类型名1,枚举类型名2,...枚举类型名N} 或者
enum (枚举名) {枚举类型名1,枚举类型名2,...枚举类型名N}
举例如下(直接复制以下代码到空地图即可测试):
#include &cj_types.j&
#define &Console.WriteLine& = BJDebugMsg
library Program initializer Main {
& && &enum (Data) {Monday,Tuesday,Wednesday,Thursday,
& && && && && && && && && &&&Friday,Saturday,Sunday}
& && &private void Main() {
& && && && &
& && && && & if (data = Monday) {
& && && && && && &Console.WriteLine(&Today is Monday!& );
& && && && & }
& && && && & elseif (data = Friday) {
& && && && && && &Console.WriteLine(&Today is Friday!&);
& && && && & }
& && &}
}& && &复制代码枚举变量还可以用作函数参数:enum (Color) {Red,Green,Blue}
void Main(Color c) {
& && &if (c = Red) {
& && && & Console.WriteLine(&Red!&);
& && &}
& && &elseif (c = Blue) {
& && && & Console.WriteLine(&Blue!&);
& && &}
}复制代码
Powered by微信:doyo_game
现在位置 &
上一页下一页
被赞:2994
[魔兽编辑器]YDWE1.22.11正式版
软件大小:15.42MB   添加时间: 14:38:00
软件语言:简体中文
&&& 今天要发布的新功能,实际是一项很大的突破——它是首次将魔兽编辑器与平台结合——服务器存档功能让魔兽这一单机游戏无限向网游靠拢。比较郁闷的是这个功能推迟了好几个月开发,在这期间俄罗斯那边已经实现了地图与服务器交换数据功能,似乎我每次想到的东西,老外总会抢先一步做出来;不过咱们也不贪图那“世界第一”的虚荣,实用性才是王道——毕竟国外没有11平台这样接近百万在线级别的平台,去推广服务器存档功能。
&&& 1.服务器存档
&&& 注:该功能主要由actboy168研发,可能很多人已经知道了,actboy168也在11工作,很多魔兽相关开发均出自他手。
&&& 服务器存档,顾名思义,可以将存档保存到服务器,正如上期废话介绍的——你可以把它想象成服务器哈希表,用法也跟哈希表大同小异,读取和存储时输入正确的路径即可,当然,这里多了一步操作“保存x玩家当前所有存档”,没这步则数据不会写入存档里。
&&& 这是用于“写”的API,与一般哈希表不同在于,“哈希表”这里换成了“玩家”,用法一目了然,不必多说。
&&& 这是演示地图里,可以存储玩家角色的一些数据,如英雄等级、坐标和身上携带的物品等。
&&& 在设置好要保存的数据后,务必要使用下面这条API,否则数据无法写入存档。
&&& 这便是与“写”对应的“读”,可以从存档中读出对应的数据:
&&& 这是演示地图里,读取存档数据的部分触发器内容:
&&& 看了上面的讲解,可能你还不是很了解,那么我再举一个容易理解的例子。
&&& 以下便是服务器存档一个简单的使用演示,包含读、写和保存:
&&& 是的,你看到了熟悉的“EverguoIsHandsome”,可能你会反感,为啥我老用长相来举例,因为长相这种东西,比较直观,美丑一眼能看出来——现在看了上面的触发器,你是不是掌握了呢——所以说嘛~
&&& 2.新积分
&&& 注:平台要开发的新功能,是要能立即看到回报的;这次服务器存档能得以开发,多亏了RPG地图对积分的需求;在我强烈要求下,新积分以服务器存档的形式开发——并且积分的内容由作者自己定义。
&&& 积分这东西,过去对大多数作者和玩家来说是可望不可及的;一张地图如果没有积分,意味着玩家玩起来没有积累的成就感,尤其是对抗地图,缺少约束玩家秒退的手段;过去只有少数特别热门的对抗地图,会由平台专门制作积分(像vs那样所有地图都共用一个RPG积分的情况除外),大多数地图与积分无缘。接下来,就是见证奇迹的时刻:
&&& 正如你所见,平台界面显示什么内容,是由编辑器说了算——你只需要告诉平台需要显示哪几个服务器存档里的数据即可。
&&& 注:11平台的积分项最多能设置8项,注意积分项序数是从0开始(关于这点我很有意见,的确在底层的代码里,是从0开始计数,但从用户习惯上说,都是从1开始的;但由于目前不少API中都是从0开始计数,这里姑且这么设置吧)。
&&& 3.判断游戏平台
&&& 之所以做这么个功能,是之前有不少作者找我,希望加一个功能,让地图只能在11平台运行;后来IMBA作者希望有这么一个测试房间,地图只能在这个特殊房间里创建,避免测试版地图外泄。
&&& 这次顺手把这个功能加到了YDWE里,可以判断地图是不是在11平台上运行。
&&& 4.地图过8M的补丁
&&& 由aeris做的,支持1.24地图突破8M限制的补丁,作为我的遗愿,这次终于通过。目前11平台1.24玩家自由建主房间,已经可以建超过8M的地图;如果你要入住万人房,记得跟平台工作人员说下,让地图关联过8M的补丁——目前万人房使用的默认补丁不支持超过8M的地图。
&&& 图中所示,是21M的东方幻想乡,是的,地图不但可以超过8M,还可以大大地超越——你甚至可以做张上G的地图。
&&& 注:从这个地图过8M补丁可以看出,平台的一小步,WE世界一大步;正是这8M的限制,让冰蛙多少想法难以实现,试想下如果DotA有个100M,那又能给玩家带来多好的体验。其实除了这个过8M补丁,WE方面还有许多非常不错的东西,但都没有好的平台去推广。
&&& ---------------------------------服务器存档演示地图说明的分割线---------------------------------
&&& 这张服务器存档演示地图,可以记录你选择的角色,你英雄在地图上的坐标、等级、身上携带的物品和所学技能,玩家的金钱和木头,当然,还有最重要的,能记录你输入过多少次“EverguoIsHandsome”,每输一次“长相”+1哦,亲!
&&& 下面这位仁兄很给面子啊,长相都100+了,求超越。
&&& 1.鸣谢
&&& 第一次进入演示地图,可以在多面板上选择一个角色——这里一共有6个角色,分别对应YDWE6名作者(谢谢大家,能帮我圆YDWE这个梦,没有你们,我只是名普通的猥琐男);地图里两名NPC以h和cjybest命令,感谢他们对YDWE论坛做出的贡献。
&&& 这张地图是在我踏上离开上海的火车前几小时做好的,所以很仓促,很多需要感谢的人就不一一列举了。
&&& (注:我的技能,“智貌互换”(智力与长相之间转换,类似Dota里水人力量与敏捷转换)、“RP堆积”(每点长相提高1点RP)、真实的谎言(每当'EverguoIsHandsome'这句话重复1000次则增加1点长相),还有一个大招是变身;由于时间关系没有做完,谁有空的话补上吧。另外,actboy168几个技能是“毒舌”、“傲娇”、“腹黑”和“受”,请自行发挥想象)
&&& 2.存档与积分注意事项
&&& 服务器存档的数据包只有1KB,而一个存档的数据需要几个字节,所以能存的数据大概只有100个左右;新积分每个积分项名字不能超过3个字,超过了平台会自动截取。
&&& 3.地图的测试
&&& 这是最为重要的一环,当你加上服务器存档后,怎么测试呢——11平台上传地图很麻烦的,这里最好在本地测试好之后再申请上传。请不要小看测试这个环节,目前为止,包括我在内,没有人能第一次使用这个服务器存档便成功(“哼,你们这些战斗力只有5的渣”actboy168傲娇指数+1)。
&&& 这里介绍些常用的测试手段:
&&& 你可以“伪造”一些数据,然后运行读档的触发器,看结果是否一致。
&&& 你也可以输入个命令,删除当前英雄,然后重新读档
&&& 只要本地测试通过,一般来说不会有大问题,但关键在于本地的测试是否到位,这里各位要秉着一颗发射神舟九号的精神,不容半点差错,否者出了问题很不好解决。
&&& 4.新积分逃跑率
&&& 逃跑率是个很典型的个例,它直指新积分的软肋——由于新积分的数据都是魔兽输出的,那么当玩家中途退出,魔兽已经停止了运行,这时怎么去计算逃跑率呢——这是由于新积分是存档模拟的,而存档只存了玩家自己的数据,所以当这个玩家中途退出后,其它玩家是不是把他中途退出的结果发给服务器的。
&&& 目前解决办法是,游戏一开始,先给所有玩家的逃跑加1,等满足去逃跑的条件后,再清掉;其它类似的情况,也这么处理。
&&& 5.其它
&&& 由于最多只能存100个左右数据,如果你有个存档数据不想用了,嫌它在那里浪费资源,想删除,怎么办呢;目前这里只有清除所有存档的命令,所以暂时只有先把其它数据项另存为下,然后使用“清除玩家存档”的API,再把其它项重新写进去。希望actboy168后续出个清除单个数据项的API吧。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
下载地址:
这个帖子给 0 名网友带来帮助
上一页下一页

我要回帖

更多关于 魔兽争霸地图编辑器 的文章

 

随机推荐