找回密码
 点一下
查看: 1711|回复: 11

如何知道单位类型,技能,物品类型的整数值

[复制链接]
发表于 2010-2-8 19:23:00 | 显示全部楼层 |阅读模式
读许多外国地图,老外的地图中,把单位类型,技能,物品类型全转化为了整数值,
比如:1697656914 是一个单位类型,
            1093682777是一个技能

不明白他们是如何转化的,

1093682777代表的是那一个技能,有什么规律吗,似乎不是H2I函数转化的。


一个地图J中所有上百单位,物品,技能全转化成了整数,看不清白技能伤害了,也没有空一一到地图中查看成百上千的整数值指向那里。是单位类型还是物品,技能。


function ZM3 takes nothing returns boolean
if(GetSpellAbilityId()==1093678161 and EOI(GetSpellTargetUnit())==false)or(GetSpellAbilityId()==1093678387 and EOI(GetSpellTargetUnit())==false)then
call ZL3()
endif
return false
endfunction


第二句中的技能就不明白是那一个技能了。
 楼主| 发表于 2010-2-8 19:32:01 | 显示全部楼层

回 1楼(寂寞的季节) 的帖子

头痛了,比如我想知道
CreateUnit(Player(1),1211117657,0,0,270)
创建的是那一个单位类型。怎么办?


如果我只是找一个单位类型,也还罢了,到地图中创建一个1211117657,就知道1211117657是狗类型,还是猫类型。但上百的整数如何知道他的整数值。

当然,如果我想知道上百的整数,原来的值,比如:N001 ,Aclf。怎么办?
回复

使用道具 举报

发表于 2010-2-8 19:45:51 | 显示全部楼层
记得kook弄过个ID到整数的函数,你写一个逆向的就可以了
回复

使用道具 举报

发表于 2010-2-8 20:03:00 | 显示全部楼层
具体可以瞻仰此贴

http://bbs.islga.org/read-htm-tid-858.html

其中似乎两个函数都有
回复

使用道具 举报

发表于 2010-2-8 20:14:02 | 显示全部楼层
这只是进制的不同表示而已

[jass]string StringMap = "0123456789,,,,,,,ABCDEFGHIJKLMNOPQRSTUVWXYZ,,,,,,abcdefghijklmnopqrstuvwxyz"
function String2Id takes string str returns integer
    local string sub
    local integer i = 0
    local integer j
    local integer sum = 0
    loop
        set sub = SubString(str,i,i + 1)
        if(sub != ",")then
            set j = 0
            loop
                if(sub == SubString(StringMap,j,j + 1))then
                    set sum = sum * 256 + j + 48
                    exitwhen true
                endif
                set j = j + 1
                exitwhen j > 74
            endloop
        endif
        set i = i + 1
        exitwhen i > 3
    endloop
    return sum
endfunction

function Id2String takes integer id returns string
    local string str = ""
    local integer index
    loop
        exitwhen id <= 0
        set index = id - id / 256 * 256
        set str = SubString(StringMap,index - 48,index - 47) + str
        set id = id / 256
    endloop
    return str
endfunction[/jass]

最实在的其实是这个:

256convert.rar

47 KB, 下载次数: 14

回复

使用道具 举报

发表于 2010-2-8 22:23:20 | 显示全部楼层
[codes=c++]void int2id(int n, char res[4])
{
    for (int i = 3; i >= 0; i--)
    {
        res = n % 256;
        n /= 256;
    }
}[/codes]

以上是c代码,最近在写的某东西里拖出来的= =
回复

使用道具 举报

 楼主| 发表于 2010-2-9 16:12:14 | 显示全部楼层

回 6楼(libla) 的帖子

感谢大家的回答,
最实在的答案是六楼的,
万分感谢,兼感动啊

原来是256进制的H00Y 英雄单位,被老外的什么加密手段,转化成了10进制的1211117657
这一句
call CreateUnit(Player(1),1211117657,0,0,270)
原来是:

call CreateUnit(Player(1),‘H00Y’,0,0,270) 的意思,
我明白了。
感谢大家,特别感谢六楼的专业。


根据六楼的翻译,完整知道这句JASS的含义了。
1697656914是非英雄单位e00R
1093682777是技能A0FY

function ZM3 takes nothing returns boolean
if(GetSpellAbilityId()==1093678161 and EOI(GetSpellTargetUnit())==false)or(GetSpellAbilityId()==1093678387 and EOI(GetSpellTargetUnit())==false)then
call ZL3()
endif
return false
上一句JASS的意思原来是这句的意思啊,
function ZM3 takes nothing returns boolean
if(GetSpellAbilityId()==’A04Q‘ and EOI(GetSpellTargetUnit())==false)or(GetSpellAbilityId()==’A053‘ and EOI(GetSpellTargetUnit())==false)then
call ZL3()
endif
return false
回复

使用道具 举报

发表于 2010-2-9 16:15:59 | 显示全部楼层
不是加密吧,似乎单位本身就可以转换成数字的……
回复

使用道具 举报

 楼主| 发表于 2010-2-9 16:20:43 | 显示全部楼层

回 9楼(551155) 的帖子

那么,如何把我地图脚本触发或JASS中的256进制单位全转化成二进制,
有没有什么优化工具啊,
我可没耐心把我地图J中的所有单位,物品,技能手工转化为二进制。
回复

使用道具 举报

发表于 2010-2-9 16:26:34 | 显示全部楼层

回 10楼(无极之魄) 的帖子

二进制我不知道,数字串是单位/技能/物品之类的ID,可以直接操作的,其它我也不懂。
回复

使用道具 举报

发表于 2010-2-10 19:47:22 | 显示全部楼层
WC3MapOptimizer就能转换
回复

使用道具 举报

发表于 2010-2-10 20:57:58 | 显示全部楼层
二进制= =
似乎没有一种语言支持直接的二进制输入,8、10和16禁止都是可以的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 00:24 , Processed in 0.183059 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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