找回密码
 点一下
楼主: xh526

第一次用哈希表,结果...

[复制链接]
发表于 2011-1-8 10:04:07 | 显示全部楼层
你没有定义变量。
回复

使用道具 举报

 楼主| 发表于 2011-1-8 10:06:25 | 显示全部楼层
好吧,不要嫌我笨 ,怎么定义变量呢?   谢谢了


是设置变量么
回复

使用道具 举报

发表于 2011-1-8 10:12:31 | 显示全部楼层
和其他那些变量的定义是一样的。
新建一个变量,名字随便,比方说就叫 h ,类型是 哈希表。
然后这一个 h 就是全局变量了

跟着 在地图初始化的时候 写上两句
  1. call FlushParentHashtable( udg_h )
  2. set udg_h = InitHashtable()
复制代码

(因为我是直接写JASS的 所以我不知道UI里面对于哈希表那一部分的翻译是怎样的)
如果是写成T的话 应该是类似这样的吧
[trigger]清除哈希表 h 的数据
设置 h = 初始化的哈希表[/trigger]

然后之后你使用的那些触发 里面用到的哈希表 就可以直接指向这一个变量h了 不要再去用那个 最后创建的哈希表 什么的了
回复

使用道具 举报

发表于 2011-1-8 10:16:23 | 显示全部楼层
减伤护盾YDWE1.19制作.w3x (37 KB, 下载次数: 3)
楼主看下这个能不能打开 如果不能打开的话还是你的魔兽出了问题。。。
回复

使用道具 举报

 楼主| 发表于 2011-1-8 10:18:34 | 显示全部楼层
话说原来那个提示貌似不影响我的触发设定,原来我的触发写错了....


可以打开..
回复

使用道具 举报

发表于 2011-1-8 10:29:37 | 显示全部楼层
上班ing 木有WE可以打开来看那个UI是怎样的
能确定的已经不是YDWE的问题

那个提示就是某条触发编译不通过 禁用相关触发而已 其他触发不会影响的
回复

使用道具 举报

发表于 2011-1-8 10:33:13 | 显示全部楼层
看了一下楼主的触发,Hash给那样用的话 可以说是小用了 而且也会造成效率低下

不过这和那个报错提示是没有直接关系的

应该是因为 创建哈希表 和 保存实数 中间是少了一个初始化哈希表的动作
回复

使用道具 举报

 楼主| 发表于 2011-1-8 10:39:26 | 显示全部楼层
...找不到初始化哈希表


其实我是想做个这个技能出来的http://bbs.islga.org/read-htm-tid-49102.html


因为我想不到别的方法记录单位位置了。。
回复

使用道具 举报

发表于 2011-1-8 10:44:26 | 显示全部楼层
这样的话 用实数变量也是可以的

给单位绑定一个自定义值 然后用实数变量储存起来

而且如果用Hash做那个技能的话 你那样也是不对的 用错了
回复

使用道具 举报

 楼主| 发表于 2011-1-8 10:51:42 | 显示全部楼层
那应该怎么用呢...记录单位点?
回复

使用道具 举报

发表于 2011-1-8 12:33:59 | 显示全部楼层
[trigger]未命名触发器 002
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 战争践踏
    动作
        点 - 清除 dian
        设置 dian = ((触发单位) 的位置)
        设置 zhengshu = 0
        单位组 - 删除 danweizu
        设置 danweizu = (半径为 512.00 圆心为 dian 且满足 ((((匹配单位) 是 建筑) 不等于 TRUE) 且 (((匹配单位) 是存活的) 等于 TRUE)) 的所有单位)
        单位组 - 选取 danweizu 内所有单位做动作
            Loop - 动作
                设置 zhengshu = (zhengshu + 1)
                哈希表 - 在 haxibiao 的主索引 (获取 (选取单位) 的整数地址) 子索引 1 中保存实数 ((选取单位) 所在X轴坐标)
                哈希表 - 在 haxibiao 的主索引 (获取 (选取单位) 的整数地址) 子索引 2 中保存实数 ((选取单位) 所在Y轴坐标)
                哈希表 - 在 haxibiao 的主索引 zhengshu 子索引 3 中保存单位 (选取单位)
        等待 4.00 秒(游戏时间)
        循环动作[循环整数A]从 1 到 999, 运行 (Loop - 动作)
            Loop - 动作
                设置 danwei = (在 haxibiao 的主索引 循环整数A [R] 子索引 3 内提取单位)
                单位 - 设置 danwei 的X坐标为 (在 haxibiao 的主索引 (获取 danwei 的整数地址) 子索引 1 内提取实数)
                单位 - 设置 danwei 的Y坐标为 (在 haxibiao 的主索引 (获取 danwei 的整数地址) 子索引 2 内提取实数)
[/trigger]
如果哈希表做应该这样把 不知道有错误没 。。
回复

使用道具 举报

发表于 2011-1-8 12:41:16 | 显示全部楼层
[trigger]对战初始化
    事件
        地图初始化
    条件
    动作
        哈希表 - <1.24> 清空 haxibiao
        设置 haxibiao = (新建哈希表)
[/trigger]
[trigger]未命名触发器 002
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 战争践踏
    动作
        点 - 清除 dian
        设置 dian = ((触发单位) 的位置)
        单位组 - 删除 danweizu
        设置 danweizu = (半径为 512.00 圆心为 dian 且满足 ((((匹配单位) 是 建筑) 不等于 TRUE) 且 (((匹配单位) 是存活的) 等于 TRUE)) 的所有单位)
        单位组 - 选取 danweizu 内所有单位做动作
            Loop - 动作
                设置 zhengshu = (zhengshu + 1)
                哈希表 - 在 haxibiao 的主索引 (获取 (选取单位) 的整数地址) 子索引 1 中保存实数 ((选取单位) 所在X轴坐标)
                哈希表 - 在 haxibiao 的主索引 (获取 (选取单位) 的整数地址) 子索引 2 中保存实数 ((选取单位) 所在Y轴坐标)
                哈希表 - 在 haxibiao 的主索引 zhengshu 子索引 3 中保存单位 (选取单位)
        等待 4.00 秒(游戏时间)
        循环动作[循环整数A]从 1 到 99999, 运行 (Loop - 动作)
            Loop - 动作
                设置 danwei = (在 haxibiao 的主索引 循环整数A [R] 子索引 3 内提取单位)
                单位 - 设置 danwei 的X坐标为 (在 haxibiao 的主索引 (获取 danwei 的整数地址) 子索引 1 内提取实数)
                单位 - 设置 danwei 的Y坐标为 (在 haxibiao 的主索引 (获取 danwei 的整数地址) 子索引 2 内提取实数)
                哈希表 - 在 haxibiao 的主索引 循环整数A [R] 子索引 3 中保存单位 没有单位
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                zhengshu 等于 99999
            Then - 动作
                设置 zhengshu = 0
            Else - 动作
[/trigger]
稍微处理了下 这下应该好了
回复

使用道具 举报

 楼主| 发表于 2011-1-8 13:08:04 | 显示全部楼层
马上去试,先谢了~、



话说zhengshu是什么。


整数。


只有一个单位会回到原来的位置.[trigger]未命名触发器 001
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 1
    动作
        点 - 清除 dian
        设置 dian = ((触发单位) 的位置)
        单位组 - 删除 danweizu
        设置 danweizu = (半径为 512.00 圆心为 dian 且满足 ((((匹配单位) 是 建筑) 等于 FALSE) 且 (((匹配单位) 是 ((触发单位) 的所有者) 的敌对单位) 等于 TRUE)) 的所有单位)
        单位组 - 选取 danweizu 内所有单位做动作
            Loop - 动作
                设置 zhengshu = (zhengshu + 1)
                哈希表 - 在 haixibiao 的主索引 1 子索引 1 中保存实数 ((选取单位) 所在X轴坐标)
                哈希表 - 在 haixibiao 的主索引 1 子索引 2 中保存实数 ((选取单位) 所在Y轴坐标)
                哈希表 - 在 haixibiao 的主索引 1 子索引 3 中保存单位 (选取单位)
                单位 - 立即移动 (选取单位) 到 ((触发单位) 的位置)
        等待 3.00 秒
        循环动作[循环整数A]从 1 到 99999, 运行 (Loop - 动作)
            Loop - 动作
                设置 danwei = (在 haixibiao 的主索引 1 子索引 3 内提取单位)
                单位 - 设置 danwei 的X坐标为 (在 haixibiao 的主索引 1 子索引 1 内提取实数)
                单位 - 设置 danwei 的Y坐标为 (在 haixibiao 的主索引 1 子索引 2 内提取实数)
                哈希表 - 在 haixibiao 的主索引 1 子索引 3 中保存单位 没有单位
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                zhengshu 等于 99999
            Then - 动作
                设置 zhengshu = 0
            Else - 动作
                不做任何动作
[/trigger]
回复

使用道具 举报

发表于 2011-1-8 13:34:01 | 显示全部楼层
[trigger]未命名触发器 001
     事件
         单位 - 任意单位 发动技能效果
     条件
         (施放技能) 等于 1
     动作
         设置变量 - p = (触发单位) 的位置
         设置变量 - i = 0
        设置变量 - UnitGroup = 新建单位组
         单位组 - 选取 (半径为 512.00 圆心为 ((触发单位) 的位置) 的圆范围内所有单位) 内所有单位做动作
         Loop - 动作
             设置变量 -  i = i + 1
             单位 - 设置单位的自定义值为 i
            单位组 - 添加(选取单位) 到 UnitGroup
             设置变量 - real_x = (选取单位) 所在X轴坐标)
             设置变量 - real_y = (选取单位) 所在Y轴坐标)
             单位 - 立即移动 (选取单位) 到 ( p ,面向角度 默认建筑朝向 度)
        点 - 清除 p
        计时器 - 启动 timer ,应用计时方式: 一次性,计时周期为 4.00 秒
         触发器 - 开启 未命名触发器 002 <预设>

未命名触发器 002
     事件
         时间 - timer 到期
     条件
     动作
        触发器 - 关闭 当前触发
         单位组 - 选取 UnitGroup 内所有单位做动作
             Loop - 动作
             单位 - 设置 (选取单位) 的X坐标为 real_x[]
             单位 - 设置 (选取单位) 的Y坐标为 real_y[]
        单位组 - 删除 UnitGroup
[/trigger]

这是不用HashTable的做法
回复

使用道具 举报

 楼主| 发表于 2011-1-8 13:36:21 | 显示全部楼层
我再试试,谢过
回复

使用道具 举报

发表于 2011-1-8 13:36:52 | 显示全部楼层
你把你的演示贴上来把 为什么我做的是所有
回复

使用道具 举报

发表于 2011-1-8 13:40:59 | 显示全部楼层
引用第32楼xh526于2011-01-08 13:08发表的  :
马上去试,先谢了~、



话说zhengshu是什么。
.......

为什么你保存来保存去都保存在主索引为1的项里?zhengshu是假的么……
回复

使用道具 举报

发表于 2011-1-8 13:43:07 | 显示全部楼层
循环动作[循环整数A]从 1 到 99999, 运行 (Loop - 动作)
Loop - 动作
设置 danwei = (在 haixibiao 的主索引 1 子索引 3 内提取单位)
单位 - 设置 danwei 的X坐标为 (在 haixibiao 的主索引 1 子索引 1 内提取实数)
单位 - 设置 danwei 的Y坐标为 (在 haixibiao 的主索引 1 子索引 2 内提取实数)
哈希表 - 在 haixibiao 的主索引 1 子索引 3 中保存单位 没有单位
我的是循环整数你的是1 如果不是循环整数的话 做99999次有什么用
回复

使用道具 举报

 楼主| 发表于 2011-1-8 13:50:53 | 显示全部楼层
谢谢谢谢.谢谢各位大大,终于会做了

感激不尽啊~


那我就无耻的去技能区骗分了...
回复

使用道具 举报

发表于 2011-1-8 13:52:32 | 显示全部楼层

哈希表这东西给一个单位绑多个自定义值不错
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 12:08 , Processed in 0.033748 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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