找回密码
 点一下
查看: 53724|回复: 173

简单学WE2008,从新开始 - 制作一张防守图<完结>

[复制链接]
发表于 2008-2-16 13:20:31 | 显示全部楼层 |阅读模式
  演示图上传,和教程同步制作,现在完成刷兵部分。

◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇


  PS:制作教程真的是一个劳心劳力的工程……有些做起来不难,要解释得大众化,真的很累,我也不自信自己就可以办到,只能说,我尽力而为。至于有朋友提到关于汉化UI的问题,说实话我英文很烂,为什么用原版的是因为不想被UI修改过的程序导至一些WE读不出来。如果有什么不懂的地方,可以留言回复,也可以发信息。我不是高手,只不过是接触得比较早,相对又有一点点编程的基础知识,只希望我做的这点小小贡献,可以为WEER提供一点帮助。

防守图演示.w3x

40 KB, 下载次数: 4589

 楼主| 发表于 2008-2-16 13:20:44 | 显示全部楼层

区域,对话,变量

  基本的启动什么的就不说了,先从地区开始。既然是防守地图,就需要确定两方面的区域,进攻,以及防守。运行WE以后,在菜单点击层面(L)选择设定区域(R)打开区域面版。
  在截图1中,我并没有使用地型以及装饰物,包括以后的一些演示,力求简单易懂:
截图1.JPG
  一共划了九个区域,其中上面六个小的点表示刷怪的位置,而下面的大一些的区域就是我方阵地,OK,基本区域设置完成,下面左右两个区域表示选择英雄的位置。
为了以后查找方便,我将各个区域命名,因为不能采用中文名字,所以我只好边查字典(传说中的金山词霸2007)边用上相应的英文名。我方阵地=Home 进攻的六个区域叫attack 001 - attack 006 选择英雄的区域叫hero 001 和hero 002。

  然后进行基础内容设置,比如将使用的单位,英雄,变量,玩家数等等。因为是简单化,所以这次不进行单位的修改,而直接采用原始设定的单位。
先说英雄,我准备采用三种方式来选择英雄,1、随机选择 2、双击选择 3、小精灵选择
  不论使用哪一种方式,我们都会先使用到对话来选择我们的英雄创造方式,所以就先做一个对话。
  按下F4,运行触发事件编辑器,删掉对战初始化的触发,然后按CTRL+T或如截图2所示点击中间白色的图标,创建新的触发器。
截图2.JPG
  在新的触发器面版里点右键,选新事件开,选择事件Map initialization(注:地图初始化,是在地图开始运行以后就会执行这个触发器,有很多的触发器直接使用这个事件会运行不了,但如果你在触发器动作的第一行加入wait-等待语句的话,那就可以运行了)
  因为是直接运行的,所以条件就不需要了,为空,然接下来是动作,就如我前面所说,如果用地图初始化做触发事件的话,除了变量赋值等触发以外,很多触发器不会执行动作,所以我在第一行添加了wait 2.00 等待2秒,然后写入触发动作。
  某人乱入:没有编辑变量!!!!!!!!!!!!!!!!!
  对的对的~对话的使用必须要有变量,因为对话点击事件只能选择变量进行的,所以如果没有设定对话变量,那么将无法开启对话事件!如图3所示:
截图3.JPG
  所以我们先去设定变量,点击Ctrl+B,或者点图2中间那个X的图标进入变量编辑器,如图4所示:
截图4.JPG
  我设定了对话变量以及对话按钮变量组,之所以不同是因为对话只是要判断这个对话是否被点击,而因为按钮是有多个选择的,所以需要多个按钮的判断,而且变量组会方便使用。OK,变量设定完成,我们继续刚才的对话制作。
  在动作里选择 对话 - Change Title ,改变对话标题,这里的内容就显示在对话按钮的上方,提示你需要做出选择。然后再写入动作 对话 - Create a dialog button ,创建对话按钮,这里提醒的是,每创建一个按钮,必须要加入一个变量赋值语句 Set dialog_button[1] = (Last created dialog Button) ,其中dialog_button[1]是对话按钮变量,[ ]中的1表示这个对话按钮变量组代号1的变量,可以按你的对话按钮数量而改变。对后建立动作 对话 - 显示 dialog for 玩家 1 (红色),那这个触发基本上完成,如图5所示(包括运行后游戏中显示的样子):
截图5.JPG
  接下来先讲如何做选择英雄的触发……然后再接着讲对话框。
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:20:54 | 显示全部楼层

选择英雄

  我们先来说说小精灵选择英雄,这个触发的思路其实就是单位进入区域,然后判断进入该区域的是不是我们用来选择英雄的单位,再执行更改单位所属或创建新的单位给触发单位所属。在这里需要说明的是,为了可以更加方便的控制英雄,我们需要使用单位变量给他们进行赋值,而且因为需要做联机,因此我们设定一个单位变量组。如图6所示:
截图6.JPG
  然后因为是使用单位进入区域的触发,所以增加了几个区域在所选的英雄前面,英雄所属为中立无敌意,下面那个区域为创造小精灵的位置,图7所示:
截图7.JPG
  然后我们写触发,事件是Unit - Unit Enters Region,单位进入区域,因为有多个英雄可以选择,所以我们可以在一个触发器里写多个事件,也可以将每一个事件写成一个触发器。然后环境(条件)就是需要判断该单位是不是小精灵,判断的是单位类型,所以我们选择 (Unit-type of (Triggering unit)) 等于 小精灵,这样其它单位进入区域就不会触发动作。再接着我们就进行选择的动作,一般来说,我们都不希望可以重复选择同一个英雄,所以可以采用几种方式,常用的有:1、关闭触发器(如果每个选择英雄的触发器是单独的,那么关闭触发器就意味着将不再能选择这个英雄,即使达到条件也不行),2、给选过的单位做备注。
  先说说1的做法,如果我们一开始就创造了多个触发器,我们可以这样写触发:
  事件单位 - Unit Enters Region  //一个单位进入区域
  条件(Unit-type of (Triggering unit)) 等于 小精灵 //触发单位的类型是小精灵
  动作:单位 - Change ownership of 圣骑士 0001 <情报> to (Owner of (Triggering unit)) and 改变颜色
  //改变指定单位“圣骑士 001”所属为触发单位所属玩家
  Set hero[(Player number of (Owner of (Triggering unit)))] = (Ownership-changed unit)
  //设定变量hero[玩家的索引号]=改变所有权的单位
  单位 - Kill (Triggering unit)
  //杀死触发单位 - 这个不需要解释了……

  触发器 - Turn off (This trigger)
  //关闭这个触发器
  这里需要说明的是,如果英雄选择的地方是没有障碍的,所以可以直接改变指定单位给触发单位所属玩家来控制,如果是锁定区域的话,那可以移动该单位到指定位置或者创造一个同类型的单位给触发单位所属玩家在指定的位置(一般是玩家的初始地点),而单位变量的赋值是为了方便以后操作;如果是创造单位的话,该语句也需要更改:

  单位 - Create 1 (Unit-type of 圣骑士 0001 <情报>) for (Owner of (Triggering unit)) at ((Owner of (Triggering unit)) start location) facing 默认的建筑朝向 degrees
  //创造一个单位类型是“圣骑士0001”的单位给触发单位所属在玩家的初始点
  Set hero[(Player number of (Owner of (Triggering unit)))] = (Last created unit)
  //设定变量hero[玩家的索引号]=最后创造的单位
  然后我们说说双击选英雄,这个方式最重要的一点,是做备注。双击选择英雄的原理很简单,只要判断该单位在一定时间内,比如0.2秒,是否被连续点击,那么第一次的点击就是做为第二次点击的判断依据,也就是说,第一次需要做一个备注。如图:

截图8.JPG
  这里需要说明的是,采用玩家事件判断可以用到触发玩家,如果是用单位被选择事件判断的话,触发玩家就是被选择单位所属玩家而不是点击这个单位的玩家;另外事件是并行的,也就是说可以多个事件来判断同一个触发器却不相互影响。我这次做备注的方式是给单位添加自定义数,如果这个单位被点击了,那么这个单位的自定义数就为玩家号,如果在0.2以内再次被点击,而且是同一个玩家点击的话(判断玩家号),就会执行创造的触发,否则,该单位将恢复到其它自定义数,被执行以后关闭该触发器。
  PS:Player Number 玩家号,就是每个玩家默认的值,玩家1的号为1,玩家2的号为2,类推。
  最后说随机选英雄,所谓随机选择,其实就是在按排好的一些单位里进行挑选并给予单位,既然是按排好的,所以我们就需要定义单位类型,也就是说,我们需要使用单位类型变量来存储不同的单位,因为使用随机,所以要用单位组来做,如图所示:
截图9.JPG
  这里,还有包括以后刷怪用到的小兵都会采用单位类型变量进行定义,所以我们单独设置一个地图初始化的触发器用来赋值。
截图10.JPG
  然后我们来看下面的截图,这个触发用到了前面提过的对话,而我们前面设定的第三个对话框提示是“随机选择英雄”,所以事件是对话变量dialog被点击,条件就是点击的第三个对话框,然后执行动作。这里加入了一个新的变量,numeral是一个数值变量,用来保存随机数的,采用单位类型的变量是否为空来判断,如果不是空的话,就创造这个类型的单位,并将这个变量赋值为空,这样就不会被再次选择;但有一点,就是可选择的单位数要多于在线玩家数,否则会出错。 特别感谢furrydodo朋友的提醒,经过修正,现将该触发分成两部分,一部分是控制次数,一部分是控制选择,控制方面采用等待1秒的方式来避免BUG产生
截图11.JPG
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:20:59 | 显示全部楼层

对话

  OK,前面已经设定好单位选择的触发了,我们接着讲对话。对话按钮一共有三个,随机选择英雄的触发已应用,还有双击选择英雄和精灵选择英雄,触发器都已经完成,接下来的工作是做一个桥接,另外设定两个触发器来控制已经完成的触发,如图12:
截图12.JPG
  可以看到,有三个触发器是开启状态,分别对应三个不同的英雄选择动作,其它具体的触发器是关闭状态,只有在运行指定触发器以后,才会打开。比如你选择了双击选英雄,哪怕你有小精灵进入那些选择英雄的区域也一样不会触发动作,另外,这里用了两个新的动作:Camera -镜头,Visibility -可见度。
  可见  - Create an initially  充许 visibility modifier for (Picked player) emitting 可见 across hero 001 <情报>
  //设定区域 hero 001 充许可见(也就是去除黑影和迷雾)给所有选取的玩家
  镜头 - Set the camera bounds for (Picked player) to hero 001 <情报>
  //设定镜头锁定在区域 hero 001,所有玩家的视线将被锁定在这个区域,包括单位活动。
另外,这里需要说明的是,双击英雄部分不需要创造小精灵的触发,还有如果你希望你选择好英雄以后,视线自动移动到英雄身上,请在选择的触发后面添加另外的触发动作:
  镜头 - Set the camera bounds for 玩家 1 (红色) to (Entire map)
  //设定镜头锁定全部区域(也可以锁定游戏区域)
  镜头 - Pan camera for (Owner of (Triggering unit)) to (Position of hero[(Player number of (Triggering player))]) over 1.00 seconds
  //移动触发单位所属的玩家的镜头到刚刚创造的单位位置
  选择 - Select hero[(Player number of (Owner of (Triggering unit)))]
  //选择玩家刚才创造的英雄 如下图所示:
截图13.JPG
        迷之声:有问题!将设定好的东东放到每个触发器,发现如果双击选择英雄直接调用小精灵选择的镜头会出错。原因是这样的:小精灵选择的触发单位小精灵是玩家所属,而双击选择的触发单位是中立的,但另一方面,双击选择的触发玩家是点击单位的玩家,所以,我们需要将原来的单位所属玩家修改成触发玩家。另外,因为双击选择没有小精灵的限制(小精灵死亡将不会再运行触发动作,除非还有其它小精灵,一般不会再存在了),所以尽管限制每个英雄只能选一个,但一个玩家却可以选不同类型的多个英雄,因此,在前面的判断语句中利用变量做了一个判断,如果变量为空,才可以运行触发,如图所示:
截图14.JPG
  这次是完全正常了,另外第三个触发器“随机选择英雄”就需要玩家索引来定义,因为没有触发单位。
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:21:04 | 显示全部楼层

刷兵,计时器

  不知道大家有没有玩过“魔兽世界”,70级副本有一个叫“黑暗之门”,就是守护麦迪文直到打开黑暗之门,很经典的防守副本,我也准备做一个类似的防守地图,当然,不要去指望会很好玩……主要还是为了演示。
  黑暗之门的刷兵方式是这样的:随机在N个区域的其中一个产生传送门,然后会有一个传送门守卫出来在门的旁边,传送门一定时间会召唤一些小怪前往麦迪文的位置,杀死守卫就会关闭传送门,然后一定时间内会在另一个地方产生传送门,每六批一个BOSS,一共十八批。
  这里我们需要有一些地图设定元素:小兵的类型(普通兵九种,随着进度而变化-出现更高级的兵种),守护者3种(每五批切换一名,第六批为BOSS),BOSS也是3种,还有我们需要设定计时器。使用了一些变量,如下:
单位类型变量组Foot[9] =保存小兵类型
单位类型变量组Boss[6] =保存守护者和BOSS
计时器变量Calculagraph =传送门计时器
计时器窗品变量Calculagraph_windows =传送门计时器窗口
地区变量组attack_area[6] = 六个出现传送门的地区
数值变量组attack_numerical[1] = 用于记录随机地区变量数
     attack_mumerical[2] = 用于记录传送门现有数量
     attack_mumerical[3] = 用于记录传送门总数量

单位变量组Carrydoor[6] = 保存传送门
计时器变量hero_Calculagraph =英雄复活计时器
计时器窗口变量组 hero_Calculagraph_windows[5] = 英雄复活计时器窗口
  我们先来定义单位类型变量,这里有个很有趣的设定:
截图15.JPG
  所有小兵全部取决于同等级的随机野生单位,大家都知道野生单位是固定等级分类的,这样我们每次在玩图的时候没有改变难度的情况下却可以每次都可能遇到不同的怪。BOSS采用各个英雄,必要的话会在触发中添加一些属性,当然在具体做图的时候可以事先设定好各个怪物的属性;还有六个传送门出现的区域也保存在变量中了。
  接着我们说刷兵,刷兵一般是两个部分组成,一个是创造,一个是进攻。
  单位 - Create (1 x (Number of players)) Foot[1] for 玩家 12 (棕色) at (Position of Carrydoor[(Integer A)]) facing  默认的建筑朝向 degrees
  //创造1*玩家数的单位类型为单位变量Foot[1]的单位给玩家12,并出现在单位变量Carrydoor(循环数A)的位置,面朝默认建筑方向。
可以看到这里用到了一个乘法语句,这个是整数的一个运算方式:
截图16.JPG
  其实我们以后也会经常用到这种方式做一些精确的计算,当然,这个只是最简单的四则运算,还有其他复杂的算法,另外如果是字符串变量的话,同样可以用这个进行串连,比如显示出英雄的名字+英雄的等级。
  还有用到变量Foot[1],在前面已经介绍过,给单位变量Foot[1]进行赋值为随机的等级1的野生单位,所以这个变量可能是任何一种等级1的野生单位,当然在具体做图的时候最好可以具体定义自己设定的单位,方便控制,后面是创造的单位是给予玩家12(你的敌方)的。至于出现地点,可以是地区的中心,也可以是随机点,我这里选择的是传送门出现的地点,还有一个触发将是创造传送门的,然后用这个变量保存创造的传送门,这个等下会介绍到。
  单位组 - Pick every unit in (Units owned by 玩家 12 (棕色)) and do (单位 - Order (Picked unit) to 攻击-移动到 (Center of Home <情报>))
  //选取玩家12的所有单位攻击移动到Home地区(前面设定的,玩家基地)
这个是最常见也最实用的单位进攻方式,单位组的选取其实是采用玫举方式的,就是每一个单位做一个动作,但如果直接使用这样的语句会因为一次执行动作的单位过多(超过12支)而不能全部控制,因此一般都是将这个触发分开写:
截图17.JPG
  这样写的好处是肯定每个单位都会执行到,而且我们知道因为是每个单位都做一次动作,所以我们还可以在中间加入一些对单位控制的动作,比如计数器,比如你加一个数值变量的赋值语句N=N+1在执行动作里面,那么最后输出的N就是选取的所有单位了,而且选取还可以附加条件,比如选取的单位是一个英雄为真,那么就只会选取英雄单位。
  本演示具体的刷兵方式其实是从传送门的开始的,因为前面提到每次刷出的单位是在传送门的位置,所以我们现在先来看看传送门创造的触发。传送门创造其实和其它地图中的刷怪系统没什么区别,所以我们也需要有一个计时器来告诉我们传送门什么时候会出现,如图:
截图18.JPG
这个触发的事件是每经过35秒,通过计时器来运行传送门创造的触发器。
  倒数计数器 - Create a timer window for Calculagraph with title 下一个传送门开启
  //创造一个名为Calculagraph(变量)倒数计数器,标题是“下一个传送门开启”
  倒数计数器 - Start Calculagraph as a 一次射击 timer that will expire in 30.00 seconds
  //倒数计数器Calculagraph开始计时,次数为一次,时间为30秒。
  Set Calculagraph_windows = (Last created timer window)
  //设置倒数计时器窗口变量为最后创造的倒数计时器
  玩家组 - Pick every player in (All players) and do (倒数计数器 - 显示 Calculagraph_windows for (Picked player))
  //选取所有玩家显示数计数器窗口Calculagraph_windows。
  Wait 29.00 seconds
  倒数计时器 - Destroy Calculagraph_windows

  //等待29秒删除倒数计时器窗口Calculagraph_windows
  这就是创造和使用倒数计时器的简单流程,每一个计数器的窗口创建了必须要有一个结束的语句,另外如果还有其它计数器存在的话,就要使用变量了,这个演示中还有英雄复活的计数器,因此我使用变量。
  计时结束以后,有几种方式可以用,一就是通过事件Timer Expires来判断计时器到期事件,这里需要用到变量,我没有使用这个事件,所以采用wait(等待语句来判断时间,为了避免BUG,时间为计时器-1),然后直接执行下面的动作。将attack_mumerical[3]赋值为attack_mumerical[3]+1,这个变量的作用是记录传送门出现的总次数,在设计中已经申明过,每六批为一个循环,所以我这里有三个循环,通过判断attack_mumerical[3]变量来确定执行哪一部分的触发器。
  下面是IF 判断语句,第一个触发是如果attack_mumerical[3]小于或等于6,就执行触发器Create Carrydoor 1,下面的两个语句类同,区别在于一个是7<attack_mumerical
[3]<12,一个是13<attack_mumerical[3]<18,分别执行Create Carrydoor 2和Create Carrydoor 3。
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:21:09 | 显示全部楼层

(创造 还是 毁灭)刷兵 - 利用变量来限制单位出现

  前面我们说到,利用计时器来运行传送门的创造动作,具体如下:
截图20.JPG
  变量的设定上,是利用 attack_numerical[1] 记录随机地区变量数 attack_mumerical[2]  记录传送门现有数量 attack_mumerical[3] 记录传送门总数量。
  这里第一句,将整数变量组attack_numerical[1] 赋值成1到6之间的随机数,代表了上面六个刷兵区域的下标;同时,用到了单位变量组Carrydoor[attack_numerical[1] 来记录传送门,换句话说,如果前面随机数是5,那么接下来进行动作的就是Carrydoor[5]这个变量了,这个的作用就是判断该位置是已经存在传送门,在下面的IF语句里可以看到,如果该变量没有进行赋值的,也就是变量为空的,那么执行创造传送门的动作,否则,重新运行这个触发器(最后一句)。
  在这里需要说明一下的是,多次运行触发器是为了挑选正确的变量以便执行,同时我们需要有所限制,比如本图的刷兵点一共6个,所以如果超过6个以上的传送门出现将会导至BUG,严重的直接跳出游戏。因此在下面的执行语句里,当attack_mumerical[2] 为6的时候,表示6个传送门已经饱和了,就可以直接关闭Time Attack这个触发器,使之不再运行。
  具体执行方面,当Carrydoor[attack_numerical[1]为空的时候,将创造一个传送门在同样下标的区域变量attack_area[?],同时,Carrydoor[attack_numerical[1]将赋值为最后创造的传送门,这样下一次运行触发器的时候将会跳过这一个下标值。接下来给新创造的传送门赋值自定义值attack_numerical[1],这个的作用是为了模仿黑暗之门副本的设定,传送门本身是添加了蝗虫技能的,所以不能被攻击,而守护者死亡以后,传送门也会消失,因此,在下面创造守护者的时候,同样给守护者添加了自定义数attack_numerical[1],事件将会在另一个触发里判断,后面细说。
  在创造守护者的触发里,我们可以看到一个IF语句,这个是利用attack_mumerical[2] 来判断是否应该刷出BOSS,其中BOSS[1]为普通守护者,BOSS[2]为BOSS,这个在前面set attack触发器中设定的。当attack_mumerical[2] 小于6的时候刷出BOSS[1],当等于6的时候,刷出BOSS[2],同时关闭刷传送门的触发。另外,attack_mumerical[2] 清空为0,为下一个触发组做准备。至于BOSS的等级设定只是为了简化单位编缉,如果你设定好单位的强度和属性,就没必要利用这个来直接修改等级了。
  有创造就有毁灭,对应这个触发器,还有另一个用来清除传送门的触发器,如图:
截图21.JPG
  这个触发器相对就简单得多,判断玩家12(敌对玩家)单位死亡,而且单位类型为守护者BOSS[?]的,就选取地图上所有和死亡单位同样自定义数的传送门进行Kill操作……这个就是前面设定自定义数的意义了。而接下来具体判断单位死亡类型,这里单独分例了各个BOSS死亡时的操作,其实也就是重新打开刷兵触发。,这里用到一个OR的条件,就是“或”,多个条件只要达成一个,就会执行动作。不过动作里有一句是选取所有玩家12的单位进行Kill操作,使用这个的原因是为了防止在BOSS死亡以后,还有其它传送门存在,这样会打乱下一轮回的刷兵,因为制作得比较粗糙。如果你前面就是精细设定每一次刷兵的方式,这一句有没有存在并不影响,可无视之。
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:21:14 | 显示全部楼层

刷兵 - 利用单位判断刷兵区域

  刷兵其实有很多种方式,我这里使用的是判断传送门是否存在来进行刷兵,如图:
截图22.JPG
  这里可以看到,时间是固定的每15秒刷一次兵,刷兵采用循环方式,在区域1至6上存在传送门的区域都会刷兵。其中attack_mumerical[3]前面有提到是记录传送门总数量,因为每6批一个循环,因此这个是来判断应该刷哪一阶段的单位(一般都会随着阶段提升而加强单位的吧),然后判断Carrydoor[循环数A]是否为空,在前一个触发的设定上,有进行Carrydoor[?]变量赋值的语句,只要该变量被赋值,那么就会执行刷兵动作。如果地图上同时存在6个传送门,那6个都会出兵的哦……
  接下来就是单位进攻了,其实也是很简单的触发,如图:
截图23.JPG
  这个是接前面刷兵触发器的后面写的,也就是说,每隔15秒发布一次进攻命令。在这里不得不再次提一下picked命令的作用,这个一般翻译成选取或枚举或精选,这个动作执行的时候实际上是一个个单位执行下去的,因此在多个动作的语句里,单独写出一句命令单位攻击移动到指定位置话,每一个被选到的单位都会执行,很方便的功能,所以最好不要直接选取单位做动作,要分开写。另外这个触发因为是刷兵嘛~所以守护者排除在外。
  还有一个英雄复活的触发,只是简单的利用了一下计时器,就不细说了,如图:
截图24.JPG
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:21:19 | 显示全部楼层

创造和使用排行榜(直接引用早期写的关于排行榜的解说)

  排行榜 其实很简单.需要的内容并不多.但对一个地图.特别是多人地图上使用的时候让大家感觉更有意思.也可以做出更多的事件.像我的地图根据排行榜设计奖励或者一些守护地图的排分.都需要排行榜.废话不多说.接入正题.

  要做一个排行榜.先是排行榜显示的时间问题.一般来说.大家都习惯在进入地图以后就出现排行榜.所以我们也可以这样做.那么事件就可以写成:

  事件:
  Map initialization 

  地图初始化就是在地图刚开始的时候就打开排行榜.而排行榜一般不需要环境(条件).所以我们就忽略.接下来就是动作.

  先要确定这个排行榜显示的是什么.如果是两边对战的时候就需要分组显示排行榜了.而大部分时候我们只对大家使用一个排行榜.所以我们可以这样建:

  动作:
  wait 2.00 秒
  排行榜 - Create a leaderboard for (All players) titled ????(自定)

  玩家组 - Pick every player in (All players) and do (排行榜 - Add (Picked player) to (Last created leaderboard) with label (Name of (Picked player)) and value 0)

  排行榜 - Sort (Last created leaderboard) by 值 in 降序 order

  排行榜 - 显示 (Last created leaderboard)
 

  使用等待的原因是如果没有等待时间在初始化的情况下不会显示排行榜). 而签后面的 杀敌数量 为排行榜的名字.下面句是最重要的.就是排行榜上显示的玩家.常用的就是使用玩家组的精选.因为需要把所有玩家都选入.那么就精选所有的玩家.然后在的动作是把精选的玩家名字填入排行榜.而标签就是下面显示的分栏.一般是把玩家的名字作为标签.所以采用的是 精选的玩家 的名字 .而数值 需要你自己定义.最多采用的是 总采木量. 因为在RPG或一般对抗地图中.是不会进行伐木的.所以木头不会有收入.总采木量就是木头的总收入.不会显示出来的.因此可以做为变量使用来记录单位的杀敌数量等等.然后就是排行榜的排序.最后一步就是显示出排行榜.

  如果要将某些玩家排除在外.比方在对战的时候有几个电脑的玩家需要排除.常用的是第6和第12个.下列句可以加在排序和显示前面:

  排行榜 - Remove 玩家 6 (橙色) from (Last created leaderboard)


  对于创造排行榜已经解说完了.然后是使用排行榜.不能让排行榜就这样晾着吧.这次的使用方式是记录杀敌数量.先是事件.既然是记录杀敌数量.所以要先判断敌人是否死亡.(本方玩家1.敌人是玩家2):

  事件:
  单位 - A unit owned by 玩家 2 (蓝色) 死亡

  已经判断是玩家2的单位死亡了.一般状态下环境不需要.所以跳过.直接到动作部分.因为玩家2单位的死亡.所以我们的排行榜的数值要加1.因为我们使用 总采木量 来记录这个数值.而杀死玩家2的并不一定就是玩家1.为了方便.使用((凶手单位) 的 所有者).所以下面的动作就是:

  动作:
  玩家 - Add 1 to (Owner of (Killing unit)) 总采木量
 

  数值已经增加了.但是并不会直接在排行榜上显示.所以我们要更改排行榜的数值.将数值改成总采木量:

  排行榜 - Change the value for (Owner of (Killing unit)) in (Leaderboard of (Owner of (Killing unit))) to ((Owner of (Killing unit)) 总采木量)

  现在已经把排行榜上的数值更改了.因为我们有时要排名次和显示.所以还需要排序.再增加以下语句:

  排行榜 - Sort (Last created leaderboard) by 值 in 降序 order

  排行榜 - 显示 (Last created leaderboard)

  然后这个排行榜就可以正式投入使用了.创造一个排行榜容易.主要就是对排行榜的数值的控制才是排行榜真正的核心.一般都是采用变量.如果是多人的话.尽量采用变量组来控制会比较好.演示图中采用的方式和前面的解说稍稍有点不同,你可以看出有什么变化和作用么:
截图25.JPG
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:21:53 | 显示全部楼层

胜利和失败

其实,对于胜利和失败的条件有很多种,而对于我们守护图来说,一般无非是判断杀死最终BOSS为胜利,而如果自己家里的某建筑或单位的死亡为失败~真的很简单,如图:
截图26.JPG
回复

使用道具 举报

 楼主| 发表于 2008-2-16 13:22:00 | 显示全部楼层

写在结束!

  到此,这个简单的防守图算是基本上完成了,不能说我这个图能有多大的作为,但做为一个WEER来说,也可以给自己的WE历史交上一份相对满意的答卷。一直以来,我都是说,自己没有耐心,做不成一张完整的地图,这个教程也算是给自己的小小安慰。每个人对于WE的态度不尽相同,对于我来说,也许指导新手们进入这个神奇而有趣的世界是一种使命感,希望好多年过去以后,还会有人说,曾经,是GA的51155的带领他的WE入门,尽管到那时候,我依然如故的菜,但我想,我依然会继续回答着新人们一个又一个问题,尽我所能。
                                       GA 551155
                                    2008年03月23日 星期天
回复

使用道具 举报

发表于 2008-2-16 13:36:05 | 显示全部楼层
为什么在水区发...LZ你就做海底世界吧...
回复

使用道具 举报

发表于 2008-2-16 13:38:24 | 显示全部楼层
有传说的路人系列和投影仪呢...
回复

使用道具 举报

发表于 2008-2-16 13:38:56 | 显示全部楼层
刷怪濱示已经有N多了吧``
回复

使用道具 举报

发表于 2008-2-16 13:40:48 | 显示全部楼层
可恶啊,干嘛要插楼呢,支持lz
回复

使用道具 举报

发表于 2008-2-16 15:02:06 | 显示全部楼层
lz偶很看好您呀~~期待更新~~
回复

使用道具 举报

发表于 2008-2-16 15:04:36 | 显示全部楼层
支持+学习!
打倒茄汁党人!
回复

使用道具 举报

发表于 2008-2-16 15:33:28 | 显示全部楼层
支持+学习!
打倒茄汁党人!
回复

使用道具 举报

发表于 2008-2-16 15:42:11 | 显示全部楼层
支持+学习!
吃掉所有番茄!
回复

使用道具 举报

发表于 2008-2-16 15:48:53 | 显示全部楼层
怎么没人水拉
回复

使用道具 举报

发表于 2008-2-16 15:52:00 | 显示全部楼层
难道你们的魔爪连这帖也不放过么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-23 12:14 , Processed in 0.200225 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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