找回密码
 点一下
查看: 2516|回复: 12

问个问题!!这个JASS函数是?[解决]

[复制链接]
发表于 2008-7-2 22:01:55 | 显示全部楼层 |阅读模式
local real lFc=FDFD(GetEnumUnit(),udg_Unit_Strygwyr_Thirst)
    if udg_Integer_Strygwyr_Thirst==0 or GetUnitState(udg_Unit_Strygwyr_Thirst,UNIT_STATE_LIFE)<1 then
        call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),false)
    else
        if lFc>=udg_Integer_Strygwyr_Thirst*1500 or(lFc<udg_Integer_Strygwyr_Thirst*1500 and GetUnitStatePercent(GetEnumUnit(),UNIT_STATE_LIFE,UNIT_STATE_MAX_LIFE)>40)then
            call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),false)
        endif
        if lFc<udg_Integer_Strygwyr_Thirst*1500 and GetUnitLifePercent(GetEnumUnit())<=40 then
            call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),true)
            set udg_Boolean_Strygwyr_Thirst=true
        endif
    endif

这个里面的FDFD是什么意思??是个什么函数啊?
发表于 2008-7-2 22:08:01 | 显示全部楼层
应该是自己声明的函数,在前面自己找下
回复

使用道具 举报

 楼主| 发表于 2008-7-3 08:36:25 | 显示全部楼层
这个是DOTA开源图里的!在这个触发前面没有这个函数的声明!
回复

使用道具 举报

 楼主| 发表于 2008-7-3 08:40:35 | 显示全部楼层
就是FDFD不知道是什么函数!
我猜是2个单位之间的距离!
但是没找到这个函数怎么写!!
回复

使用道具 举报

发表于 2008-7-3 14:26:45 | 显示全部楼层
是这样的
DOTA为了防止别人破解居然想到了一种方法
那就是把函数名和变量名统统变成“乱码”
就像楼主看到的FDFD
这样对于一般人来说
破解了之后看到他函数名全部乱七八糟
气都气死了
一般就不看了

恩……这个图既然是破解的
为了好看所以破解者就以自己的方式重写了函数名称和变量名
可是嘛……大概是有些函数他觉得实在懒得管他是做什么的
干脆就不重写了
于是某些乱码就保留了下来

不过一种很××的办法
你可以把触发导出到一个文件中(触发编辑器中的文件菜单中有相应选项)
然后打开这个文件(文本编辑器就行,什么word之类)
然后直接搜索

这张图触发是纯JASS所以导出的文件是明文(夹杂T的话就不好说了)
回复

使用道具 举报

发表于 2008-7-3 14:48:31 | 显示全部楼层
这应该不是dota想到的,程序代码加密都是这样的吧
回复

使用道具 举报

发表于 2008-7-3 18:12:24 | 显示全部楼层
[jass]

距离

function FDFD takes unit pFb,unit pFB returns real
    local real lFC=GetUnitX(pFb)
    local real lFd=GetUnitY(pFb)
    local real lEv=GetUnitX(pFB)
    local real lEV=GetUnitY(pFB)
    if pFb==null or pFB==null then
        return 0x540BE3FF
    else
        return SquareRoot((lFC-lEv)*(lFC-lEv)+(lFd-lEV)*(lFd-lEV))
    endif
endfunction



[/jass]
回复

使用道具 举报

发表于 2008-7-3 21:24:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-7-3 23:03:39 | 显示全部楼层
引用第2楼irons123于2008-07-03 08:36发表的  :
这个是DOTA开源图里的!在这个触发前面没有这个函数的声明!

4楼没注意看...
他开的估计是dota的未加密版本.
那些函数应该是在最前面的自定义代码区里
回复

使用道具 举报

 楼主| 发表于 2008-7-4 08:34:26 | 显示全部楼层
谢谢 ls大大
回复

使用道具 举报

发表于 2008-7-14 11:31:11 | 显示全部楼层
[codes=jass]function XX takes nothing returns nothing
local real lFc=FDFD(GetEnumUnit(),udg_Unit_Strygwyr_Thirst)
    if udg_Integer_Strygwyr_Thirst==0 or GetUnitState(udg_Unit_Strygwyr_Thirst,UNIT_STATE_LIFE)<1 then
        call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),false)
    else
        if lFc>=udg_Integer_Strygwyr_Thirst*1500 or(lFc<udg_Integer_Strygwyr_Thirst*1500 and GetUnitStatePercent(GetEnumUnit(),UNIT_STATE_LIFE,UNIT_STATE_MAX_LIFE)>40)then
            call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),false)
        endif
        if lFc<udg_Integer_Strygwyr_Thirst*1500 and GetUnitLifePercent(GetEnumUnit())<=40 then
            call UnitShareVision(GetEnumUnit(),GetOwningPlayer(udg_Unit_Strygwyr_Thirst),true)
            set udg_Boolean_Strygwyr_Thirst=true
        endif
    endif
endfunction[/codes]
先转JASS看看。
回复

使用道具 举报

发表于 2008-7-14 11:32:11 | 显示全部楼层
果然没耐心了……………………
这什么人啊………………
回复

使用道具 举报

发表于 2008-7-14 12:14:18 | 显示全部楼层
帖子不是已经说已解决了嘛,ls在干什么
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 07:15 , Processed in 0.033957 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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