找回密码
 点一下
查看: 1119|回复: 7

关于位标识技术

[复制链接]
发表于 2010-3-5 09:05:25 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2010-3-5 11:37:39 | 显示全部楼层
第二个问题的话,首先需要一些二进制的知识
利用1、2、4、8、…、2n-1这些数字,通过组合可以得到从1到2n-1的任何一个数字,并且组合是唯一的
(例:通过1、2、4、8、16的不同组合可以得到0-31的任意数)
因为将一个十进制数表示成二进制,那么从低位开始(从第0位开始),第i位就表示2i

比如说36,二进制数数100100,就是0×20+0×21+1×22+0×23+0×24+1×25
那么只需要32和4就可以得到36

十进制转换为二进制,通过短除2的方法得到,也就是除以2,得到的余数就是低位,商继续除2,直到商为0为止
回复

使用道具 举报

发表于 2010-3-5 12:12:56 | 显示全部楼层
dota的相位鞋?

T

事件
  任意单位 使用技能
条件
  技能 为 XXX
动作
   单位 - 设置碰撞开关 关
   等待30秒
   单位- 设置碰撞开关 开

这样就可以了吧?
回复

使用道具 举报

发表于 2010-3-5 12:15:58 | 显示全部楼层
关闭碰撞的话别人仍然视你为障碍的
回复

使用道具 举报

发表于 2010-3-5 12:25:40 | 显示全部楼层
刚刚做了一下实验。。。未果。。。。
回复

使用道具 举报

发表于 2010-3-5 12:27:59 | 显示全部楼层
而且关闭碰撞的话地形也无视掉了

幽灵可见的可以做到碰撞被无视,但不能做到无视碰撞
回复

使用道具 举报

发表于 2010-3-5 12:38:45 | 显示全部楼层
[jass]function YN1 takes unit U,integer ID,boolean BL returns nothing
if GetUnitAbilityLevel(U,ID) == 1 and not BL then
call UnitRemoveAbility(U,ID)
elseif BL then
call UnitAddAbility(U,ID)
endif
endfunction
function SetHeroData takes unit U,integer M,integer N returns nothing
local integer A = 0
local integer B = N+10
if N==70 then
call SetUnitMoveSpeed( U,(GetUnitDefaultMoveSpeed(U)+ M ))
return
endif
loop
exitwhen M == 0
set A = M-((M/2)*2)
set M = M/2
call YN1(U,udg_Data_I[N],A==1)
set N = N+1
endloop
loop
exitwhen N >= B
call YN1(U,udg_Data_I[N],false)
set N = N+1
endloop
endfunction
call SetHeroData(u,增加数值(最大1023),这个是类型(属性或攻击防御))
[/jass]
第二个问题
自己写的做物品属性用的udg_Data_I[N]=1,2,4,8...........
不需要的部分自己改吧
回复

使用道具 举报

发表于 2010-3-5 12:57:04 | 显示全部楼层
试下在单位类别里面加入“可通行的”(传送门那个~)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 23:25 , Processed in 0.037906 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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