找回密码
 点一下
查看: 1922|回复: 13

war3按下a键后掉用的是什么函数选择攻击目标的啊?

[复制链接]
发表于 2013-5-2 16:40:01 | 显示全部楼层 |阅读模式
如题,war3按下键盘“a”键后,war3是通过调用什么函数来完成选择目标,攻击目标的啊?
发表于 2013-5-2 23:00:14 | 显示全部楼层
当然是内部函数……你得不到那函数的接口的。。

话说按了A之后选择目标的不是玩家么……
因此当然是当鼠标左键消息发出后消息循环里判断是不是按过A了,然后在确认目标可以A之后让单位过去A

点评

兄弟 你不知道了吧,选择目标的是玩家,你想什么叫选择目标啊,无非就是传递参数嘛,把你选择的单位的id传给电脑而已吧!我们找到之后可以自己调用函数自己传递参数啊!271051631我的qq号,方便留个qq号加个好友也好  详情 回复 发表于 2013-5-3 08:03
回复

使用道具 举报

 楼主| 发表于 2013-5-3 08:03:53 | 显示全部楼层
chyj4747 发表于 2013-5-2 23:00
当然是内部函数……你得不到那函数的接口的。。

话说按了A之后选择目标的不是玩家么……

兄弟 你不知道了吧,选择目标的是玩家,你想什么叫选择目标啊,无非就是传递参数嘛,把你选择的单位的id传给电脑而已吧!我们找到之后可以自己调用函数自己传递参数啊!271051631我的qq号,方便留个qq号加个好友也好交流啊!
回复

使用道具 举报

发表于 2013-5-3 20:22:23 | 显示全部楼层
sky52bb001 发表于 2013-5-3 08:03
兄弟 你不知道了吧,选择目标的是玩家,你想什么叫选择目标啊,无非就是传递参数嘛,把你选择的单位的id传 ...

的确是能找到函数,然后改魔兽本身就能实现捕捉玩家选择目标后魔兽调用的让单位过去攻击的函数

你如果一定要说是触发动作的话那就只有IssueTargetOrder这一个
回复

使用道具 举报

发表于 2013-5-4 09:26:50 | 显示全部楼层
IssueTargetOrder
回复

使用道具 举报

发表于 2013-5-4 09:26:52 | 显示全部楼层
IssueTargetOrder

点评

会引起不同步掉线啊!  详情 回复 发表于 2013-5-5 14:23
回复

使用道具 举报

 楼主| 发表于 2013-5-5 14:23:04 | 显示全部楼层
ckpig 发表于 2013-5-4 09:26
IssueTargetOrder


会引起不同步掉线啊!有什么其他的方法啊?
回复

使用道具 举报

发表于 2013-5-5 22:38:57 | 显示全部楼层
sky52bb001 发表于 2013-5-5 14:23
会引起不同步掉线啊!有什么其他的方法啊?

没有其它方法了。。魔兽也是同步发送攻击命令的,就是玩家A了之后,所有玩家的电脑都让该单位去A指定目标,不这么做就会掉线

话说你不是想做自动A兵系统吗?那当然要所有人的电脑里都去A同一个目标啊,不然这系统有什么意义?

点评

兄弟我用IssueNeutralTargetOrderById给每个玩家都发一个a兵的命令还会不会掉线啊???  详情 回复 发表于 2013-5-6 15:19
回复

使用道具 举报

 楼主| 发表于 2013-5-6 15:19:23 | 显示全部楼层
chyj4747 发表于 2013-5-5 22:38
没有其它方法了。。魔兽也是同步发送攻击命令的,就是玩家A了之后,所有玩家的电脑都让该单位去A指定目标 ...


兄弟我用IssueNeutralTargetOrderById给每个玩家都发一个a兵的命令还会不会掉线啊???这样是不是就同步了啊??
回复

使用道具 举报

发表于 2013-5-7 00:01:53 | 显示全部楼层
sky52bb001 发表于 2013-5-6 15:19
兄弟我用IssueNeutralTargetOrderById给每个玩家都发一个a兵的命令还会不会掉线啊???这样是不是就同 ...

只要每个玩家都执行了这个动作自然就不会掉线了

不过不排除网络延迟什么的。。

点评

还是掉了啊,呵呵  详情 回复 发表于 2013-5-7 08:04
回复

使用道具 举报

 楼主| 发表于 2013-5-7 08:04:58 | 显示全部楼层
chyj4747 发表于 2013-5-7 00:01
只要每个玩家都执行了这个动作自然就不会掉线了

不过不排除网络延迟什么的。。

还是掉了啊,呵呵
回复

使用道具 举报

发表于 2013-5-7 08:39:15 | 显示全部楼层
sky52bb001 发表于 2013-5-7 08:04
还是掉了啊,呵呵

把你的触发发上来看看。。

点评

VOID CALLBACK MyTimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime) { MyGroupEnumUnitsInRange(m_m_group,MyGetUnitX(m_unit),MyGetUnitY(m_unit),1000); DWORD m_m_unit=MyFirstOfG  详情 回复 发表于 2013-5-7 19:05
回复

使用道具 举报

 楼主| 发表于 2013-5-7 19:05:23 | 显示全部楼层
本帖最后由 sky52bb001 于 2013-5-7 19:19 编辑
chyj4747 发表于 2013-5-7 08:39
把你的触发发上来看看。。

VOID CALLBACK MyTimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD  dwTime)
{



        MyGroupEnumUnitsInRange(m_m_group,MyGetUnitX(m_unit),MyGetUnitY(m_unit),1000);
        DWORD m_m_unit=MyFirstOfGroup(m_m_group);
        while(m_m_unit>0)
        {

                //i++;

               
                unitlife=MyGetUnitState(m_m_unit,0);
                if(m_dgj_unit!=m_m_unit)
                {
                        if (unitlife<lifetoa&&unitlife>0&&MyIsUnitType(m_m_unit,6))
                        {
                                m_dgj_unit=m_m_unit;
                                //m_eword=Getdword(m_m_unit);
                                //*(BYTE*)(pjaddr+0X3C9521)=0XB8;
                                //*(DWORD*)(pjaddr+0X3C9522)=m_eword;
                                MyDisplayTextToPlayer(Mylp,&x,&y,*((DWORD*)MyGetUnitName(m_m_unit)));
                                //m_unitx=MyGetUnitX(m_m_unit);
                                //m_unity=MyGetUnitY(m_m_unit);
                                //sprintf_s(zb,40,"m_unitx=%f,m_unity=%f",m_unitx,m_unity);
                                //MyDisplayTextToPlayer(Mylp,&x,&y,(DWORD)&zb);
                                MyIssueNeutralTargetOrderById(Mylp,m_unit,0x000D000F,m_m_unit);
                                //MyIssueTargetOrderByIdGai(m_unit,0x000D000F,m_m_unit,pjaddr);//attack-0x000D000F
                                //MyIssueTargetOrder(m_unit,(DWORD)&"attack",m_m_unit);
                        }
                        
                }
                                
                                        MyGroupRemoveUnit(m_m_group,m_m_unit);
                                        m_m_unit=MyFirstOfGroup(m_m_group);
                                
                        
        }

}
我是用vc做的,你看看啊,用MyIssueNeutralTargetOrderById(Mylp,m_unit,0x000D000F,m_m_unit);for循环给前面的函数传递玩家参数,就能给每个顽家发同一个命令,还是掉线的啊,今天发现了一个很厉害的挂“guai自动补刀”补刀全图,过平台检测啊厉害啊,不知道他的补刀是怎么做的啊
回复

使用道具 举报

发表于 2013-5-8 01:41:22 | 显示全部楼层
sky52bb001 发表于 2013-5-7 19:05
VOID CALLBACK MyTimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD  dwTime)
{

我还以为你做的是图里的系统,如果是外挂的话请自行研究吧,这里不讨论这些东西的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 18:51 , Processed in 0.284868 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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