找回密码
 点一下
查看: 1080|回复: 10

还是一个局部变量的问题

[复制链接]
发表于 2010-10-5 23:15:19 | 显示全部楼层 |阅读模式
做了个需要几个触发而成的技能,用局部变量9我半桶水,可能连入门都不算呢)解决单个触发的变量冲突,但是遇到个问题了,如触发2靠触发1打开,并且触发2将用到触发1的变量来判断动作,结果触发2的判断转换出现语法错误
触发1:
morichaoxi
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 末日潮汐 (娜迦族)
    动作
        自定义代码: local location morichaoximubiaodian
        自定义代码: set morichaoximubiaodian = GetSpellTargetLoc()
        自定义代码: call SetUnitPositionLocFacingBJ( GetTriggerUnit(), morichaoximubiaodian, GetUnitFacing(GetTriggerUnit()) )
        单位 - 添加 风暴之鸦 给 (触发单位)
        动画 - 改变 (触发单位) 的飞行高度为 500.00 ,变换速率: 200.00
        单位 - 暂停 (触发单位)
        单位 - 设置 (触发单位) 无敌的
        等待 1.00 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;触发器 - 开启 morichaoxi xiaoguo <预设>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;等待 3.00 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;触发器 - 关闭 morichaoxi xiaoguo <预设>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;等待 1.50 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;单位 - 创建 1 个 末日潮汐-马甲 给 ((触发单位) 的所有者) 在 ((触发单位) 的位置) ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;单位 - 设置 1.00 秒 水元素 类型的生命周期对 最后创建的单位 [R]
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;等待 1.00 秒游戏时间
触发2:(初始不开启)
morichaoxi xiaoguo
&#160;&#160;&#160;&#160;事件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;时间 - 每 0.10 秒触发事件
&#160;&#160;&#160;&#160;条件
&#160;&#160;&#160;&#160;动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;自定义代码: local location morichaoxisuijidian
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;自定义代码: set morichaoxisuijidian = GetRandomLocInRect(RectFromCenterSizeBJ(morichaoximubiaodian, 800.00, 500.00))(出现的问题)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;设置 morichaoxisuijidian = ((以 morichaoximubiaodian 为中心,宽 800.00 ,高 500.00 的矩形区域) 内的随机点)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;自定义代码: call AddSpecialEffectLocBJ( morichaoxisuijidian, "Objects\\Spawnmodels\\NightElf\\NECancelDeath\\NECancelDeath.mdl" )
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;自定义代码: set morichaoxisuijidian = null
未转换的:
触发1:
NewTrigger 001
&#160;&#160;&#160; 事件
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 任意单位 发动技能效果
&#160;&#160;&#160; 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160; (施放技能) 等于 末日潮汐 (娜迦族)
&#160;&#160;&#160; 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 morichaoxichufadanwei = (触发单位)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 morichaoximubiaodian = (技能施放点)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 立即移动 morichaoxichufadanwei 到 (技能施放点) ,面向角度 (morichaoxichufadanwei 的面向角度) 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 添加 风暴之鸦 给 morichaoxichufadanwei
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 动画 - 改变 morichaoxichufadanwei 的飞行高度为 500.00 ,变换速率: 200.00
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 暂停 morichaoxichufadanwei
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 设置 morichaoxichufadanwei 无敌的
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 等待 1.00 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 触发器 - 开启 morichaoxi xiaoguo <预设>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 等待 3.00 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 触发器 - 关闭 morichaoxi xiaoguo <预设>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 等待 1.50 秒游戏时间
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 创建 1 个 末日潮汐-马甲 给 (触发玩家) 在 (morichaoxichufadanwei 的位置) ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 设置 1.00 秒 水元素 类型的生命周期对 最后创建的单位 [R]
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 等待 1.00 秒游戏时间
触发2:
morichaoxi xiaoguo
&#160;&#160;&#160; 事件
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 时间 - 每 0.10 秒触发事件
&#160;&#160;&#160; 条件
&#160;&#160;&#160; 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 morichaoxisuijidian = ((以 morichaoximubiaodian 为中心,宽 800.00 ,高 500.00 的矩形区域) 内的随机点)(出现的问题)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 特殊效果 - 在 morichaoxisuijidian 创建特效: Objects\Spawnmodels\NightElf\NECancelDeath\NECancelDeath.mdl
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 点 - 清除 morichaoxisuijidian
发表于 2010-10-6 00:17:44 | 显示全部楼层
JASS看不懂 不过下面的T感觉应该没问题把。。。
话说楼主的触发1最后等待一秒是等什么啊 并且好像没有排泄。。
回复

使用道具 举报

发表于 2010-10-6 02:13:30 | 显示全部楼层
不要用矩形区域,那个是圆……
回复

使用道具 举报

 楼主| 发表于 2010-10-6 12:11:11 | 显示全部楼层
引用第1楼q578132428于2010-10-06 00:17发表的  :
JASS看不懂 不过下面的T感觉应该没问题把。。。
话说楼主的触发1最后等待一秒是等什么啊 并且好像没有排泄。。
触发1我只截了一半,后面没截上去
回复

使用道具 举报

发表于 2010-10-6 12:11:46 | 显示全部楼层
LZ 局部变量只在你申请的触发器里才有效。。。。。
不,确切的说是一一个function下才有效
也就是说
local location morichaoximubiaodian
在第二个触发器中已经无法读取
所以才会报错
楼主如果J不熟的话,还是用udg吧。
如果一定要用J,你不需要第二个触发,用Timer+哈希表,来实现
回复

使用道具 举报

 楼主| 发表于 2010-10-6 12:16:17 | 显示全部楼层
引用第4楼wfr_tc于2010-10-06 12:11发表的  :
LZ 局部变量只在你申请的触发器里才有效。。。。。
不,确切的说是一一个function下才有效
也就是说
local location morichaoximubiaodian
在第二个触发器中已经无法读取
.......
如果用UDG话,还是无法解决第2个触发的变量冲突问题啊.............哎,,,,,非得去学习J了
回复

使用道具 举报

发表于 2010-10-6 12:17:08 | 显示全部楼层
UDG当然可以,只是你这问题还很多。。
这不是变量冲突,变量哪里来的冲突?
回复

使用道具 举报

发表于 2010-10-6 12:20:22 | 显示全部楼层
GetRandomLocInRect(RectFromCenterSizeBJ(morichaoximubiaodian, 800.00, 500.00))
如果楼主,用了udg绝对不会报错,udg就是全局变量,比如abc,在J里你要写成udg_abc
还有楼主你个泄露区域,泄露的厉害了
回复

使用道具 举报

 楼主| 发表于 2010-10-6 12:28:56 | 显示全部楼层
引用第7楼wfr_tc于2010-10-06 12:20发表的  :
GetRandomLocInRect(RectFromCenterSizeBJ(morichaoximubiaodian, 800.00, 500.00))
如果楼主,用了udg绝对不会报错,udg就是全局变量,比如abc,在J里你要写成udg_abc
我知道不会报错,只是当2个单位同时施放这个技能时,第1个施放技能单位的那个开启触发2的动作会被代替第2个施放技能的动作
总的说就是:触发2的所有动作会只有第2个单位才有出现,而第1个单位则跳过.......
回复

使用道具 举报

发表于 2010-10-6 12:34:13 | 显示全部楼层

回 8楼(无名娜迦) 的帖子

那简单,楼主把变量做成数组,T也可以实现,楼主把触发2:(初始不开启)
morichaoxi xiaoguo
复制成十二份,在地图初始化时给,用触发器变量给,十二个触发器编号。然后到时候只要打开触发器 abc【触发单位的玩家索引】,就可以了。这样可以支持12个玩家使用者技能
回复

使用道具 举报

 楼主| 发表于 2010-10-6 12:38:49 | 显示全部楼层

Re:回 8楼(无名娜迦) 的帖子

引用第9楼wfr_tc于2010-10-06 12:34发表的 回 8楼(无名娜迦) 的帖子 :
那简单,楼主把变量做成数组,T也可以实现,楼主把触发2:(初始不开启)
morichaoxi xiaoguo
复制成十二份,在地图初始化时给,用触发器变量给,十二个触发器编号。然后到时候只要打开 abc【触发单位的玩家索引】,就可以了。这样可以支持12个玩家使用者技能
&#160; 感谢感谢,我马上去做
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 12:20 , Processed in 0.029899 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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