四种选英雄的方式-教程版
[color=magenta] 现在各类地图中,比较常用的有四种选英雄的方式,小精灵选择,双击选择,随机选择,酒馆选择以及由这四种衍生出的其它方式,这里介绍的就是这四种,等你学会以后,自然会创造适合自己的方式了。本演示初始化设置了hero_type变量组来保存24个英雄类型,设置了24个区域(一大一小重叠),Region用来保存大区域12个,设置对话框1个,对话框按钮4个来选择方式,具体触发将不再重复说明。[/color]
[color=darkorange]一、精灵选择英雄(两个触发)[/color][code]create fairy
事件
地图初始化
条件
动作
等待 0.50 秒
玩家组 - 选取 (所有符合 ((((匹配玩家) 的控制者) 等于 用户) and (((匹配玩家) 的游戏状态) 等于 正在游戏)) 的玩家) 内所有玩家做动作
Loop - 动作
单位 - 创建 1 个 小精灵 给 (选取玩家) 在 ((选取玩家) 的游戏开始位置) ,面向角度为 默认建筑朝向 度
单位 - 设置 (最后创建的单位) 关闭 碰撞[/code][code]fairy choice
事件
单位 - 单位进入 s 001 <预设>
单位 - 单位进入 s 002 <预设>
单位 - 单位进入 s 003 <预设>
单位 - 单位进入 s 004 <预设>
单位 - 单位进入 s 005 <预设>
单位 - 单位进入 s 006 <预设>
单位 - 单位进入 s 007 <预设>
单位 - 单位进入 s 008 <预设>
单位 - 单位进入 s 009 <预设>
单位 - 单位进入 s 010 <预设>
单位 - 单位进入 s 011 <预设>
单位 - 单位进入 s 012 <预设>
条件
((触发单位) 的类型) 等于 小精灵
player_hero[(((触发单位) 的所有者) 的玩家索引号)] 等于 没有单位
动作
For循环整数A从 1 到 12, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(Region[(循环整数A)] 内存在 (触发单位)) 等于 TRUE
Then - 动作
单位组 - 选取 (Region[(循环整数A)] 内满足 ((((匹配单位) 是 英雄) 等于 TRUE) and (((匹配单位) 的所有者) 等于 中立被动)) 的所有单位) 内所有单位做动作
Loop - 动作
单位 - 改变 (选取单位) 所属为 ((触发单位) 的所有者) 并 改变颜色
设置 player_hero[(((触发单位) 的所有者) 的玩家索引号)] = (选取单位)
任务 - 对 (所有玩家) 发送 提示 信息: ((((触发单位) 的所有者) 的名字) + (选择了 + (((选取单位) 的名字) + !)))
单位 - 使 (触发单位) 爆炸而死
Else - 动作
无动作[/code][color=blue] 演示要点:前面已经提到有一大一小两个区域组合成一个触发点,因为区域判断本身的BUG,所以设定为当单位进入小区域的时候,判断大区域中是否存在触发单位。这里是利用循环判断单位存在于12个区域中的哪一个,然后对区域内的英雄执行转换所属操作(把多个触发合成为一个)。[/color]
[color=darkorange]二、双击选择英雄(两种模式)[/color][code]dblclick choice no1
事件
玩家 - 玩家1(红色) 选择 一个单位
玩家 - 玩家2(蓝色) 选择 一个单位
玩家 - 玩家3(青色) 选择 一个单位
玩家 - 玩家4(紫色) 选择 一个单位
玩家 - 玩家5(黄色) 选择 一个单位
玩家 - 玩家6(橙色) 选择 一个单位
条件
((触发单位) 的所有者) 等于 中立被动
((触发单位) 是 英雄) 等于 TRUE
player_hero[((触发玩家) 的玩家索引号)] 等于 没有单位
动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
dblclick_unit[((触发玩家) 的玩家索引号)] 等于 (触发单位)
Then - 动作
单位 - 改变 (触发单位) 所属为 (触发玩家) 并 改变颜色
设置 player_hero[((触发玩家) 的玩家索引号)] = (触发单位)
任务 - 对 (所有玩家) 发送 提示 信息: (((触发玩家) 的名字) + (选择了 + (((触发单位) 的名字) + !)))
Else - 动作
设置 dblclick_unit[((触发玩家) 的玩家索引号)] = (触发单位)[/code][code]dblclick choice no2
事件
玩家 - 玩家1(红色) 选择 一个单位
玩家 - 玩家2(蓝色) 选择 一个单位
玩家 - 玩家3(青色) 选择 一个单位
玩家 - 玩家4(紫色) 选择 一个单位
玩家 - 玩家5(黄色) 选择 一个单位
玩家 - 玩家6(橙色) 选择 一个单位
条件
((触发单位) 的所有者) 等于 中立被动
((触发单位) 是 英雄) 等于 TRUE
player_hero[((触发玩家) 的玩家索引号)] 等于 没有单位
动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
((触发单位) 的自定义值) 等于 ((触发玩家) 的玩家索引号)
Then - 动作
单位 - 改变 (触发单位) 所属为 (触发玩家) 并 改变颜色
设置 player_hero[((触发玩家) 的玩家索引号)] = (触发单位)
任务 - 对 (所有玩家) 发送 提示 信息: (((触发玩家) 的名字) + (选择了 + (((触发单位) 的名字) + !)))
Else - 动作
单位 - 设置 (触发单位) 的自定义值为 ((触发玩家) 的玩家索引号)
等待 0.10 秒
单位 - 设置 (触发单位) 的自定义值为 99[/code][color=blue] 演示要点:两种方式从形式上基本相同,都是先判断玩家选择了单位,然后再执行动作,区别在于,第一种方式采用的是变量记录被选择的英雄,所以只需要连续两次点击在需要选择的英雄上就可以选择成功了,没有时间限制;第二种方式需要双速双击,也就是说必须要0.10秒内连续双击英雄才可以选择成功。条件中的“ player_hero[((触发玩家) 的玩家索引号)] 等于 没有单位”作用为是为了判断该玩家是否有选择过英雄,限制选择的英雄数量为1。[/color]
[color=darkorange]三、随机选择英雄(两种模式)[/color][code]random choice hide
事件
条件
动作
-------- 24为可选英雄类型的总数量 --------
设置 Dialog_Button_n = 24
-------- 因为采用数值转玩家索引的方式连续队列创建英雄,所以所有玩家必须是从1开始的连续编号 --------
For循环整数A从 1 到 ((所有符合 ((((匹配玩家) 的控制者) 等于 用户) and (((匹配玩家) 的游戏状态) 等于 正在游戏)) 的玩家) 中的玩家数量), 做动作
Loop - 动作
等待 0.10 秒
设置 Dialog_Button_s = (随机整数,最小值: 1 最大值: Dialog_Button_n)
单位 - 创建 1 个 hero_type[Dialog_Button_s] 给 (玩家 (循环整数A)) 在 ((玩家 (循环整数A)) 的游戏开始位置) ,面向角度为 默认建筑朝向 度
设置 player_hero[(循环整数A)] = (最后创建的单位)
任务 - 对 (所有玩家) 发送 提示 信息: (((玩家 (循环整数A)) 的名字) + (选择了 + ((player_hero[(循环整数A)] 的名字) + !)))
设置 hero_type[25] = hero_type[Dialog_Button_s]
设置 hero_type[Dialog_Button_s] = hero_type[Dialog_Button_n]
设置 hero_type[Dialog_Button_n] = hero_type[25]
设置 Dialog_Button_n = (Dialog_Button_n - 1)[/code][code]random choice show
事件
条件
动作
单位组 - 选取 ((可用地图区域) 内满足 ((((匹配单位) 是 英雄) 等于 TRUE) and (((匹配单位) 的所有者) 等于 中立被动)) 的所有单位) 内所有单位做动作
Loop - 动作
单位组 - 添加 (选取单位) 到 random_choice_show
For循环整数A从 1 到 ((所有符合 ((((匹配玩家) 的控制者) 等于 用户) and (((匹配玩家) 的游戏状态) 等于 正在游戏)) 的玩家) 中的玩家数量), 做动作
Loop - 动作
等待 0.10 秒
设置 player_hero[(循环整数A)] = (random_choice_show 中随机选取的一个单位)
单位 - 改变 player_hero[(循环整数A)] 所属为 (玩家 (循环整数A)) 并 改变颜色
单位组 - 把 player_hero[(循环整数A)] 从 random_choice_show 移除
任务 - 对 (所有玩家) 发送 提示 信息: (((玩家 (循环整数A)) 的名字) + (选择了 + ((player_hero[(循环整数A)] 的名字) + !)))[/code][color=blue] 演示要点:随机选择英雄重点当然在随机上,第一种方式是隐藏式随机,就是地图上没有出现任何英雄,直接在变量组中调用一个英雄;这里制作了一个新的模式,数据递减,就是一共24个英雄类型,利用变量Dialog_Button_n来记录未被选择的英雄数量,当选择了其中一个以后,将已被选择过的英雄类型通过替换移动到最末位,同时将Dialog_Button_n减少1,这样当选择了一个英雄后可选择的就是23个而且不会重复选择到已经选过的英雄类型。而第二种方式是读取地图上存在的英雄并添加到单位组,然后随机选择一个变量组中的英雄改变所属并将该单位移出单位组,也不会被重复选择。这两个触发都没有事件,直接通过对话框按钮调用,当然自己制作的时候可以添加需要的事件。[/color]
[color=darkorange]四、酒馆选择英雄(两个触发)[/color][code]create tavern
事件
条件
动作
等待 0.50 秒
玩家组 - 选取 (所有符合 ((((匹配玩家) 的控制者) 等于 用户) and (((匹配玩家) 的游戏状态) 等于 正在游戏)) 的玩家) 内所有玩家做动作
Loop - 动作
单位 - 创建 1 个 小精灵 给 (选取玩家) 在 ((选取玩家) 的游戏开始位置) ,面向角度为 默认建筑朝向 度
玩家 - 增加 4500 (选取玩家) 的 现有黄金
玩家 - 增加 1000 (选取玩家) 的 现有木材
玩家 - 设置 (选取玩家) 的 可用人口数 为 80
玩家 - 限制英雄数量为 1 对 (选取玩家)
单位 - 创建 1 个 小酒馆 给 中立被动 在 ((触发玩家) 的游戏开始位置) ,面向角度为 默认建筑朝向 度
设置 tavern = (最后创建的单位)
等待 2.00 秒
设置 Dialog_Button_n = 24
-------- 给小酒馆随机放置10个英雄 --------
For循环整数A从 1 到 10, 做动作
Loop - 动作
等待 0.02 秒
设置 Dialog_Button_s = (随机整数,最小值: 1 最大值: Dialog_Button_n)
中立建筑 - 添加 hero_type[Dialog_Button_s] 到 tavern 并设置库存量: 1 最大库存量: 1
设置 hero_type[25] = hero_type[Dialog_Button_s]
设置 hero_type[Dialog_Button_s] = hero_type[Dialog_Button_n]
设置 hero_type[Dialog_Button_n] = hero_type[25]
设置 Dialog_Button_n = (Dialog_Button_n - 1)[/code][code]tavern choice
事件
单位 - 任意单位 出售单位
条件
((被贩卖单位) 是 英雄) 等于 TRUE
((购买者) 的类型) 等于 小精灵
动作
任务 - 对 (所有玩家) 发送 提示 信息: ((((购买者) 的所有者) 的名字) + (选择了 + (((被贩卖单位) 的名字) + !)))
设置 player_hero[(((购买者) 的所有者) 的玩家索引号)] = (被贩卖单位)
-------- 禁止所有玩家再次购买同一类型的英雄 --------
玩家组 - 选取 (所有玩家) 内所有玩家做动作
Loop - 动作
玩家 - 设置 ((被贩卖单位) 的类型) 不可取得的 对 (选取玩家)
-------- 确保不再使用的前题下,直接KILL掉购买用的小精灵 --------
单位 - 杀死 (购买者)[/code][color=blue] 演示要点:酒馆选择,都需要一个购买单位,触发1里面创建的小精灵已经取消了所有技能和移动速度,所以不需要担心会影响到什么,同时,限定了可选择英雄数量为1,当购买了英雄以后,酒馆对购买者将不再开放;这里需要提醒一下的是,如果是自定义英雄,需要在“游戏平衡常数”中的”科技树-从属等价物-英雄“中添加自定义英雄,否则数量限制无效。在触发2中,当玩家购买了一个英雄以后,通过这个触发,其它玩家也将不可以再购得这个英雄。另外,在触发1中还设定了随机添加英雄到酒馆的动作,有兴趣的可以看一下,不过需要给酒馆添加”出售单位“的技能才可以咯。[/color]
GA 551155 2008.4.20
[color=red]更多演示,请点击以下链接(GA):[/color]
[url=http://www.gacn.net/bbs/read.php?tid=11999][color=#800080]http://www.gacn.net/bbs/read.php?tid=11999[/color][/url] :ecc73
怎么都是不回帖的 很好的东西······· 很不错滴 顶一个 :tk_00 一下LZ
看贴必回是种素质... LZ有发GA广告的嫌疑.:ecc75 [quote]原帖由 [i]fpefffff[/i] 于 2008-4-22 01:29 发表 [url=http://www.tbswe.com/redirect.php?goto=findpost&pid=456161&ptid=32857][img]http://www.tbswe.com/images/common/back.gif[/img][/url]
LZ有发GA广告的嫌疑.:ecc755" /> [/quote]
唉 好吧,以后不发了……:tk_11 GA 还需要广告吗? 无所谓 (发广告这种事我以前也常干)
欢迎LZ常来 那个那个...
随即那个东东...
祢那个模式不怎么实用..
可以弄成.玩家输入一个指令..
给予一个随即英雄..
系统判断.玩家是否已经选择英雄和其他玩家不能再选 弄高级点再发把。..
现在WE圈 差的就是高水平的制作. [quote]原帖由 [i]a2125459[/i] 于 2008-4-24 19:21 发表 [url=http://www.tbswe.com/redirect.php?goto=findpost&pid=459864&ptid=32857][img]http://www.tbswe.com/images/common/back.gif[/img][/url]
那个那个...
随即那个东东...
祢那个模式不怎么实用..
可以弄成.玩家输入一个指令..
给予一个随即英雄..
系统判断.玩家是否已经选择英雄和其他玩家不能再选 [/quote]
[quote]原帖由 [i]a2125459[/i] 于 2008-4-24 19:22 发表 [url=http://www.tbswe.com/redirect.php?goto=findpost&pid=459866&ptid=32857][img]http://www.tbswe.com/images/common/back.gif[/img][/url]
弄高级点再发把。..
现在WE圈 差的就是高水平的制作. [/quote]
实在太搞笑了,你这个建议就是所谓的高水平?你觉得利用输入事件会比按钮事件高级?
地图制作不需要你有多高水平,就看你有没有耐心和逻辑能力,或许你做几个高级的演示来看看。 继续接:或许你没有看懂这个随机的简单演示? 蒽.
是阿.
莪小孩..
怎么的把。.
来欺负莪嘛. LS最好说话注意些 四年前我学WE时 用的就是LZ编的教程
回复 16# 的帖子
哈哈~楼上我当时还没发现那小子是个小孩……还用那种叫啥来着,嗯,脑残体来打字的。∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝
以上废话可以无视,说正题,我有点事想找你帮忙,有没有空?加我QQ吧,信息给你。
很好很强大
很好很强大 [quote]原帖由 [i]fpefffff[/i] 于 2008-4-22 01:29 发表 [url=http://www.tbswe.com/redirect.php?goto=findpost&pid=456161&ptid=32857][img]http://www.tbswe.com/images/common/back.gif[/img][/url]LZ有发GA广告的嫌疑.:ecc755" /> [/quote]毛额我看你是想得钱才这样得吧 很有用 ```很受用``` THANK```U``` 受教啦!:tk_35 :ecc36 :ecc36 我看了 回帖的:ecc9
页:
[1]