心魔网 - 挥洒由笔,创意随心's Archiver

551155 发表于 2008-4-20 20:36

四种选英雄的方式-教程版

[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]

XXOO 发表于 2008-4-20 22:31

:ecc73
怎么都是不回帖的

maomheng 发表于 2008-4-20 23:10

很好的东西·······

thody 发表于 2008-4-21 08:46

很不错滴

风流の刀皇 发表于 2008-4-21 12:55

顶一个

Alex.L 发表于 2008-4-21 22:52

:tk_00 一下LZ
看贴必回是种素质...

fpefffff 发表于 2008-4-22 01:29

LZ有发GA广告的嫌疑.:ecc75

551155 发表于 2008-4-22 12:11

[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

小楼听春雨 发表于 2008-4-22 14:03

GA 还需要广告吗?

everguo 发表于 2008-4-23 11:41

无所谓        (发广告这种事我以前也常干)

欢迎LZ常来

a2125459 发表于 2008-4-24 19:21

那个那个...

随即那个东东...

祢那个模式不怎么实用..

可以弄成.玩家输入一个指令..
给予一个随即英雄..

系统判断.玩家是否已经选择英雄和其他玩家不能再选

a2125459 发表于 2008-4-24 19:22

弄高级点再发把。..
现在WE圈 差的就是高水平的制作.

551155 发表于 2008-4-24 19:56

[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]

实在太搞笑了,你这个建议就是所谓的高水平?你觉得利用输入事件会比按钮事件高级?
地图制作不需要你有多高水平,就看你有没有耐心和逻辑能力,或许你做几个高级的演示来看看。

551155 发表于 2008-4-24 19:58

继续接:或许你没有看懂这个随机的简单演示?

a2125459 发表于 2008-4-25 15:24

蒽.
是阿.
莪小孩..
怎么的把。.
来欺负莪嘛.

everguo 发表于 2008-4-26 11:28

LS最好说话注意些      四年前我学WE时     用的就是LZ编的教程

551155 发表于 2008-4-26 11:56

回复 16# 的帖子

哈哈~楼上我当时还没发现那小子是个小孩……还用那种叫啥来着,嗯,脑残体来打字的。
∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝∝
以上废话可以无视,说正题,我有点事想找你帮忙,有没有空?加我QQ吧,信息给你。

hekai 发表于 2008-4-27 10:25

很好很强大

很好很强大

陌生的人 发表于 2008-4-27 19:08

[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]毛额我看你是想得钱才这样得吧

xx43244 发表于 2008-5-14 15:03

很有用 ```很受用```    THANK```U```

mzg555 发表于 2008-5-14 17:05

受教啦!:tk_35

magiceson 发表于 2008-9-19 20:50

:ecc36 :ecc36 我看了 回帖的:ecc9

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.