找回密码
 点一下
查看: 1867|回复: 2

判断技能是否在CD等状态

[复制链接]
发表于 2009-4-26 05:58:19 | 显示全部楼层 |阅读模式
用GetUnitAbilityState对不同单位的技能做试验..

    /*返回结果
    若状态同时存在, 施法中 > CD中 > 不能使用

    无目标, 坐标目标
    (仅包含不能选择单位作目标的技能如透视)
    刀阵, 闪烁
    魔法盾
    战争践踏, 重生
    疾风步, 镜像, 剑刃风暴
    幽灵狼, 透视, 地震

    不是自己的单位, 或者未选中:
    5 = 正常 = 不能使用
    6 = CD中
    7 = 施法中

    自己的单位并且选中
    5 = 不能使用
    6 = 正常
    7 = CD中
    8 = 施法中   


    //
    单位目标
    (包括既可以坐标也可以单位目标的技能如冲击波)
    死亡缠绕
    毒镖
    叉状闪电
    冲击波
    闪电链
   
    不是自己的单位, 或者未选中:
    6 = 正常 = 不能使用
    7 = CD中
    8 = 施法中
   
    自己的单位并且选中
    6 = 不能使用
    7 = 正常
    8 = CD中
    9 = 施法中

    //
    光环
    耐久光环
    总是8

    //
    被动技能和不能使用的技能
    致命一击
    以及剑刃风暴时其他3个技能的状态
    总是1

    //
    箭技能
    似乎连技能object都找不到...

    //
    试验鸟德...
    初级, 开精灵火自动, 3个技能(精灵火, 变乌鸦, 吹风)
    14, 8, 6
    关掉自动精灵火
    13, 8, 6

    不选中状态下每个 -1 ...
    */








jInt jNATIVE GetUnitHash(jInt punit)
{
    return *((int *)punit+3);
    //0x31F 这样的数据,唯一对应该单位
}

int * GetUnitAbilityObj(PVOID pUnit, ULONG abil)
{
   int * result;
   ULONG addr = GameAdd(0x79340);//1.23
   //ECX=单位,参数(技能,0,0,1,1)返回该单位该技能object
   //如果单位没有该技能为0

   __asm
   {
     mov ecx, pUnit
     push 1
     push 1
     push 0
     push 0
     push abil
     mov  eax, addr
     call    eax
     mov   result, eax
   }
   return result;
}

jInt jNATIVE GetUnitAbilTargHash(int punit, int abil)
{
    if (GetUnitAbilityObj(punit,abil)==0)return 0;

    if(abil==0x416D6F76)//Amov
    {
        return *(GetUnitAbilityObj(punit,abil)+0x33);
    }
    else if(abil==0x41556463)//AUdc
    {
        return *(GetUnitAbilityObj(punit,abil)+0x39);
    }
    return 0;
   //不同技能不同位置,记录技能当前目标,形如 0x31F 这样的数据
   //与单位有唯一对应
}

jInt jNATIVE GetUnitAbilityState(jInt punit, jInt abil)
{
    if (GetUnitAbilityObj(punit,abil)==0)return 0;
    return *(GetUnitAbilityObj(punit,abil)+1);
}
发表于 2009-4-26 07:42:12 | 显示全部楼层
japi么

那么就支持非民用研究吧
回复

使用道具 举报

发表于 2009-4-26 09:33:53 | 显示全部楼层
去测试一下当自定义技能太多时,一个单位的 obj内存占用是否线性递增?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 21:18 , Processed in 0.035370 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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