找回密码
 点一下
楼主: 冷漠

问几个问题

[复制链接]
发表于 2012-2-5 23:30:37 | 显示全部楼层
冷漠:呃....

用上了本地玩家的话就必须要在else做动作么? (2012-02-05 23:10)
不是……

那个是给所有玩家都创建了特效,只不过不是玩家一的创建的是空特效
   

PS:我怎么觉得传说中的英雄那个(36楼)也会掉……句柄会不一样的啊。。
反正下面这个是对的
[trigger]
    动作
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                (本地玩家) 等于 玩家1(红色)
            Then - 动作
                设置 String = Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl
            Else - 动作
                设置 String = <空字符串>
        特殊效果 - 在 (坐标(0.00, 0.00)) 创建特效: String[/trigger]
   

或者LZ可以这么理解,给所有玩家都创建了同一个特效,但是只有玩家一使用了特效模型
回复

使用道具 举报

发表于 2012-2-5 23:49:56 | 显示全部楼层
冷漠:直接对本地玩家显示是因为多面板只会显示一个的原因?....... (2012-02-05 23:08)
[trigger]多面板 - 显示 MultiBoard[((本地玩家) 的玩家索引号)][/trigger]
这句,对于玩家一来说,显示MultiBoard[1];对于玩家二来说,显示MultiBoard[2];以此类推
但是每个玩家的电脑里都有12个多面板,只不过每个玩家都只能看到其中一个
[trigger]多面板 - 设置 MultiBoard[(((凶手单位) 的所有者) 的玩家索引号)] 第 1 列,第 1 行的项目文本为 (转换 KillNumber[(((凶手单位) 的所有者) 的玩家索引号)] 为字符串)[/trigger]
这个也同理,玩家一的单位杀了别人的单位后,凶手单位的所有者是玩家一,只改了MultiBoard[1],但是MultiBoard[1]只有玩家一看得到,也就是异步显示
回复

使用道具 举报

发表于 2012-2-6 00:49:03 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:不是……

那个是给所有玩家都创建了特效,只不过不是玩家一的创建的是空特效
   
....... (2012-02-05 23:30)
实际上句柄是一样的,你自己H2I一遍就知道了
说明你对handle的理解不够……既然都创建了相同数量的相同对象,自然不会句柄不一样

而且既然我敢把代码写出来,表示我已经测试过那样写不会掉线了……
你这样毫无根据的就质疑别人的答案,会让人生出一股很想要吐槽的愿望= =

除此之外,你说的都没问题…………
回复

使用道具 举报

发表于 2012-2-6 01:10:36 | 显示全部楼层

回 · 的帖子

·:啊,为啥会掉线。。。据我了解创建多面板不会导致掉线来着(而且我那样写逻辑上来说不应该地址相同吗。。。)。。。给变量赋值和修改标题就更不会了呀。。。 (2012-02-05 23:29)
也许其他不会掉线,但是把“本地玩家”==“玩家XX”作为“触发条件”必定掉线。
因为“触发动作”的运行占用了一个线程,如果不同步就会掉线。
简而言之,触发动作不能异步运行,可以多开试试看……
回复

使用道具 举报

发表于 2012-2-6 01:48:18 | 显示全部楼层
既然都创建了相同数量的相同对象,自然不会句柄不一样
原来如此,我之前一直以为是要靠同一个动作创建出来的句柄才一样。。
回复

使用道具 举报

发表于 2012-2-6 02:11:23 | 显示全部楼层
不是呢~
handle值都是顺序分配下来,从小到大,哪里有空间就分配哪里。
(如果对象被删除且引用数为0,那么对应空间将被清空)

[trigger]对战初始化
    事件
        玩家 - 玩家1(红色) 按下Esc键
        玩家 - 玩家2(蓝色) 按下Esc键
    条件
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (本地玩家) 等于 玩家1(红色)
            Then - 动作
                特殊效果 - 在 ((可用地图区域) 的中心点) 创建特效: Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl
                游戏 - 对 (所有玩家) 发送文本信息: (转换 (转换 (最后创建的特效) 为整数) 为字符串)
            Else - 动作
                单位 - 创建 1 个 步兵 给 玩家1(红色) 在 ((可用地图区域) 的中心点) ,面向角度为 默认建筑朝向 度
                游戏 - 对 (所有玩家) 发送文本信息: (转换 (转换 (最后创建的单位) 为整数) 为字符串)
[/trigger]
所以,这段触发创建的单位和特效的handle值是相等的……只是肯定会掉线就是了……
QQ截图未命名.png
回复

使用道具 举报

发表于 2012-2-6 03:12:36 | 显示全部楼层

回 · 的帖子

·:啊,为啥会掉线。。。据我了解创建多面板不会导致掉线来着(而且我那样写逻辑上来说不应该地址相同吗。。。)。。。给变量赋值和修改标题就更不会了呀。。。 (2012-02-05 23:29)
[trigger]
就素说这样也会掉线~~
    事件
        时间 - 游戏开始 0.00 秒
    条件
        (本地玩家) 等于 玩家1(红色)
    动作
[/trigger]
回复

使用道具 举报

 楼主| 发表于 2012-2-6 08:34:52 | 显示全部楼层

回 传说中的英雄 的帖子

传说中的英雄:
[trigger]Create
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
.......
传说中的英雄:[trigger]Create
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
....... (2012-02-05 22:44)
[/trigger]



[trigger]
对战初始化
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                多面板 - 创建一个列数为 1 行数为 2 标题为 ((玩家 循环整数A [R]) 的名字) 的多面板
                设置 m[循环整数A [R]] = 最后创建的多面板 [R]
        多面板 - 显示 m[((本地玩家) 的玩家索引号)]
[/trigger]
[trigger]
未命名触发器 001
    事件
        玩家 - 玩家1(红色) 按下Esc键
        玩家 - 玩家2(蓝色) 按下Esc键
    条件
    动作
        设置 z[((触发玩家) 的玩家索引号)] = (z[((触发玩家) 的玩家索引号)] + 1)
        多面板 - 设置 m[((触发玩家) 的玩家索引号)] 的标题为 (转换 z[((触发玩家) 的玩家索引号)] 为字符串)
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                多面板 - 设置 m[((玩家 循环整数A [R]) 的玩家索引号)] 第 1 列,第 ((触发玩家) 的玩家索引号) 行的项目文本为 (转换 z[((触发玩家) 的玩家索引号)] 为字符串)
[/trigger]

这样写的话就是对的吧?

第一条触发是为所有玩家创建多面板并且显示自己索引的

第二条触发是假如单位所有者的单位死亡后所改变自己多面板的标题,并且所有玩家的一览表都会改变
回复

使用道具 举报

发表于 2012-2-6 09:19:08 | 显示全部楼层
你们的精神劲头真大,许久以前我也曾尝试教楼主,不过后来我放弃了
回复

使用道具 举报

 楼主| 发表于 2012-2-6 09:31:23 | 显示全部楼层

回 马甲君 的帖子

马甲君:你们的精神劲头真大,许久以前我也曾尝试教楼主,不过后来我放弃了 (2012-02-06 09:19)
……

你放弃了就不教呗

没必要这么特地发贴损我吧?

我和你之间没杀父夺基之仇吧?
回复

使用道具 举报

发表于 2012-2-6 09:33:48 | 显示全部楼层
没有损你的意思,只是我觉得他们想要教你的话,使用的语言应该更加通俗一些才行
回复

使用道具 举报

发表于 2012-2-6 12:16:19 | 显示全部楼层
马甲君:没有损你的意思,只是我觉得他们想要教你的话,使用的语言应该更加通俗一些才行 (2012-02-06 09:33)
通俗啊……
这个对于刚学会的人来说比较容易办到呢。。
学会后过得时间越久用词就越学术化。。
估计我现在已经写不出那种面向纯新手的易懂的教程了吧……


47楼那个。。
一开始没看懂呢。。用的按ESC事件……
嘛,基本就是那样~
玩家索引号什么的个人觉得记录下比较好,如果获取索引那个函数比读取变量要慢的话,或者那个函数是返回一个整数的话应该没读取变量快
而且变量可以缩短句子~
回复

使用道具 举报

发表于 2012-2-6 12:20:43 | 显示全部楼层

回 冷漠 的帖子

冷漠:[/trigger]


[trigger]
.......&#160;(2012-02-06 08:34)&#160;
貌似是可以的,不过最好多开测试一下。
话说((玩家 循环整数A [R]) 的玩家索引号)是什么啊………………
直接循环整数A [R]不就可以了……
回复

使用道具 举报

 楼主| 发表于 2012-2-6 14:41:00 | 显示全部楼层

回 传说中的英雄 的帖子

传说中的英雄:貌似是可以的,不过最好多开测试一下。
话说((玩家 循环整数A [R]) 的玩家索引号)是什么啊………………
直接循环整数A [R]不就可以了…… (2012-02-06 12:20)
没办法多开测试,找了朋友测试貌似乎没问题

索引那个循环整数先前没注意到……

[trigger]
对战初始化
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((玩家 循环整数A [R]) 的游戏状态) 等于 正在游戏
                    Then - 动作
                        设置 Multidoard_Z_Shu_1[循环整数A [R]] = (Multidoard_Z_Shu_2 + 1)
                        -------- 设置玩家的多面板行数 --------
                        设置 Multidoard_Z_Shu_2 = Multidoard_Z_Shu_1[循环整数A [R]]
                        -------- 设置总多面板行数 --------
                    Else - 动作
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Multidoard_Z_Shu_1[循环整数A [R]] 不等于 0
                    Then - 动作
                        多面板 - 创建一个列数为 2 行数为 Multidoard_Z_Shu_2 标题为 <空字符串> 的多面板
                        设置 Multidoard[循环整数A [R]] = 最后创建的多面板 [R]
                        多面板 - 设置 Multidoard[循环整数A [R]] 第 0 列,第 0 行项目的显示风格: 显示 文字 隐藏 图标
                        For循环整数B从 1 到 Multidoard_Z_Shu_2, 做动作
                            Loop - 动作
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        Multidoard_Z_Shu_1[循环整数A [R]] 不等于 0
                                    Then - 动作
                                        多面板 - 设置 Multidoard[循环整数A [R]] 第 1 列,第 循环整数B [R] 行的项目文本为 ((玩家 循环整数B [R]) 的名字)
                                    Else - 动作
                                        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 循环整数B [R] 为字符串)
                    Else - 动作
        多面板 - 显示 Multidoard[((本地玩家) 的玩家索引号)]
[/trigger]

未命名.jpg

我用整数来判断玩家是否处于游戏状态来设置创建多少个多面板和多面板多少行,可是玩家名不知道为什么没有准确的对上

原因是我设置了1-6个玩家,1-2、4-6是用户(电脑),而3是没有玩家控制(空的玩家)

按多面板的玩家名字应该是“玩家1、2、4、5、6”才对,可是做出的效果不对……

循环整数B那里要怎么写才对。

   


[trigger]
对战初始化
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((玩家 循环整数A [R]) 的游戏状态) 等于 正在游戏
                    Then - 动作
                        设置 Multidoard_Z_Shu_1[循环整数A [R]] = (Multidoard_Z_Shu_2 + 1)
                        设置 Multidoard_Z_Shu_2 = Multidoard_Z_Shu_1[循环整数A [R]]
                        设置 Multidoard_Z_Shu_3 = (Multidoard_Z_Shu_3 + 1)
                        设置 Multidoard_Z_Shu_4[Multidoard_Z_Shu_3] = ((玩家 循环整数A [R]) 的玩家索引号)
                    Else - 动作
        For循环整数A从 1 到 12, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Multidoard_Z_Shu_1[循环整数A [R]] 不等于 0
                    Then - 动作
                        多面板 - 创建一个列数为 2 行数为 Multidoard_Z_Shu_2 标题为 <空字符串> 的多面板
                        设置 Multidoard[循环整数A [R]] = 最后创建的多面板 [R]
                        多面板 - 设置 Multidoard[循环整数A [R]] 第 0 列,第 0 行项目的显示风格: 显示 文字 隐藏 图标
                        For循环整数B从 1 到 Multidoard_Z_Shu_2, 做动作
                            Loop - 动作
                                多面板 - 设置 Multidoard[循环整数A [R]] 第 1 列,第 循环整数B [R] 行的项目文本为 ((玩家 Multidoard_Z_Shu_4[循环整数B [R]]) 的名字)
                    Else - 动作
        多面板 - 显示 Multidoard[((本地玩家) 的玩家索引号)]
[/trigger]

似乎摸索出了做法……
回复

使用道具 举报

发表于 2012-2-6 23:01:03 | 显示全部楼层
如果解决了就改分类吧。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 22:14 , Processed in 0.035911 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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