战网中国
标题:
如何让Sorc 去买弓箭 或者拾取弓箭 ? (韩国BOT)
[打印本页]
作者:
alexkof
时间:
2015-11-28 17:31
标题:
如何让Sorc 去买弓箭 或者拾取弓箭 ? (韩国BOT)
如何让Sorc 去买弓箭 或者拾取弓箭 ? 因为我的Sorc是拿信心的
拾取文件加了 [name] == Arrows 就是不捡阿
作者:
skylgf
时间:
2015-11-28 18:57
拾取文件改过之后,在bot的拾取文件设置界面,要点那个红色按键才生效。NIP+DELETE
作者:
alexkof
时间:
2015-11-28 19:01
[quote=skylgf,170223]拾取文件改过之后,在bot的拾取文件设置界面,要点那个红色按键才生效。NIP+DELETE[/quote] NIP+DELETE 有按并且重开过D2NT Manager
仍然不会检 skylgf可以试试看
谢谢回复 虽然没有解决问题
作者:
林小闲
时间:
2015-11-28 22:07
我是新手,在练小号的时候,希望小号除了超级生命和法力药水之外也能拾取强力药剂。
但不知道物品名称,测试了很多名字,mightiness、strong、punchy、puissant、probability、potent,最终才确定了Greater Healing Potion和Greater Mana Potion
所以,你要不要测试一下Quiver、Bow Arrows之类?
作者:
alexkof
时间:
2015-11-28 22:13
[quote=林小闲,170235]我是新手,在练小号的时候,希望小号除了超级生命和法力药水之外也能拾取强力药剂。
但不知道物品名称,测试了很多名字,mightiness、strong、punchy、puissant、probability、potent,最终才确定了Grea...[/quote] [type] == bowquiver
试过一样不会捡 想不到办法
谢谢回复
作者:
白色曼陀螺
时间:
2015-11-28 22:14
弓箭属于强制性忽略的物品,改拾取是没用的,必须深入挖掘程序内部代码才能解决。
作者:
alexkof
时间:
2015-11-28 22:45
[quote=白色曼陀螺,170237]弓箭属于强制性忽略的物品,改拾取是没用的,必须深入挖掘程序内部代码才能解决。[/quote]
看来难度相当高了!
感谢回复
作者:
林小闲
时间:
2015-11-28 23:15
我突然想起来之前我练过弓马,但当时没有设置拾取弓箭,而是在城里设置为购买弓箭。
我的版本是D2NT3.3,默认不去NPC处购买弓箭,需要新增代码。
如果确定要做,请先行备份文件,本人不负责成功,也不负责善后。
当时的全过程:
(红色字体为新增代码)
查看代码发现NTTown.ntl中已经定义了购买弓箭的函数,但没有被调用。
路径:D2NT\\scripts\\libs\\common\\NTTown.ntl
函数:function NTT_FillArrows(npc)
函数内容从略。
而在NTTownManager.ntl中也定义了检查角色装备弓的情况,但也没有被调用。
既然这样就简单了,在NTTownManager.ntl中调用就可以了。
路径D2NT\\scripts\\libs\\common\\NTTownManager.ntl
增加声明变量:
...
var _NTTMGR_RemoveCurse;
var _NTTMGR_BuyArrows;
函数function NTTMGR_TownManager(simple)处增加调用检查弓和访问NPC:
...
_NTTMGR_DoRepair = NTT_CheckRepair(40);
_NTTMGR_DoRevive = NTT_CheckMerc();
_NTTMGR_RemoveCurse = NTTMGR_CheckCurse(NTConfig_CheckSelfSafe > 0x01 ? 0x7E : 0, NTConfig_CheckMercSafe > 0x01 ? 0x7E : 0);
_NTTMGR_BuyArrows = NTTMGR_CheckBow();
if(_NTTMGR_BuyArrows) {
NTT_TossAmmo();
}
NTCU_InitCubing();
...
此函数中每个ACT中访问NPC的地方,在负责修理的NPC处都添加购买弓箭的参数,ACT1的恰西,ACT2的法拉...:
switch(me.act)
{
case 1:
...
if(_NTTMGR_DoRepair
|| _NTTMGR_BuyArrows
)
NTTMGR_VisitCharsi();
..
case 2:
...
if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_DoRepair
|| _NTTMGR_BuyArrows
)
NTTMGR_VisitFara();
...
后面都一样,case3、case4、case5,海尔布、拉苏克什么的,无脑在修理后面加
||
_NTTMGR_BuyArrows:
if(_NTTMGR_DoRepair
|| _NTTMGR_BuyArrows
)
好了,现在参数传递过去了,接下来要告诉程序携带了这个参数的话,具体要做什么。
好在原本文件中是有购买弓箭的函数的,只要直接调用就可以。
以ACCT1恰西为例,函数function NTTMGR_VisitCharsi():
原代码只是修理:
function NTTMGR_VisitCharsi()
{
var _npc;
NTTM_TownMove(\"charsi\");
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CHARSI, 5);
if(_npc)
{
if(NTT_DoInteract(_npc))
{
if(NTT_DoTrade(_npc))
NTT_RepairItems(_npc);
me.Cancel(1);
}
}
}
改为判断一下参数,看看是不是要买弓箭,如果是,直接调用NTTown.ntl里的函数:function NTT_FillArrows(npc)
注意IF结构有点变了,多了一层逻辑,原来是如果点开交易就直接修理,现在是增加了一层,如果交易,再判断是修理还是购买弓箭:
function NTTMGR_VisitCharsi()
{
var _npc;
NTTM_TownMove(\"charsi\");
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CHARSI, 5);
if(_npc)
{
if(NTT_DoInteract(_npc))
{
if(_NTTMGR_DoRepair
|| _NTTMGR_BuyArrows
)
{
if(NTT_DoTrade(_npc))
{
if(_NTTMGR_DoRepair)
NTT_RepairItems(_npc);
if(_NTTMGR_BuyArrows)
NTT_FillArrows(_npc);
}
me.Cancel(1);
}
}
}
}
最后买箭的函数NTT_FillArrows,在NTTown.ntl里面有,不用重新写。
但我记得最后调试的时候,它会输出一行文本,这里会报错,记得是因为格式的问题。
后来我参考别的输出格式调整了一下就好了。
路径D2NT\\scripts\\libs\\common\\NTTown.ntl:
函数:function NTT_FillArrows(npc)
弓
if(_bow)
{
Print(\"?c8Buying Arrows for my \" + _name);
.....
十字弓
if(_xbow)
{
Print(\"?c8Buying Bolts for my \" + _name);
...
印象中好像是在输出文本前面加了
?c8
,有点忘记了。
就这些,胆大心细,反正又不会死,先行备份。
反正,你的BOT毁了我又不会死。
作者:
林小闲
时间:
2015-11-28 23:22
[quote=林小闲,170239]我突然想起来之前我练过弓马,但当时没有设置拾取弓箭,而是在城里设置为购买弓箭。
我的版本是D2NT3.3,默认不去NPC处购买弓箭,需要新增代码。
如果确定要做,请先行备份文件,本人不负责成功,也不负责善后。
当时的全过程:
(红色字体...[/quote] 不是?c8,发表之后代码变了,我用截图吧
作者:
alexkof
时间:
2015-11-28 23:47
[quote=林小闲,170240]不是?c8,发表之后代码变了,我用截图吧[/quote] 有大神!!!
我测试看看!! 不行的话只能先用魔法箭 不耗箭的来挂
感谢!
-------------------------------------------测试结果--------------------------------------------------------------------
可能是版本不同 NTTown.ntl, 没有函数:function NTT_FillArrows(npc)(我是用韩国BOT 35版)
也没有类似Buy arrows
估计AMA的补充Arrows是绑职业的 另外写在别的地方
不过我翻了一下
scripts\\libs\\common\\MyPick.ntl (韩国版才有)
My.Pick.ignoredClassIdList = [80, 81, 82, 83, 84, 85, 513, 514, 517, 518, 519,
526,
528, 529, 530, 543];
找到了! 去掉526之后可以拾取
但是拾取就会存仓 反而变成垃圾 又改回来了
谢谢林小闲提供的思路!
作者:
林小闲
时间:
2015-11-29 13:13
[quote=alexkof,170242]有大神!!!
我测试看看!! 不行的话只能先用魔法箭 不耗箭的来挂
感谢!
-------------------------------------------测试结果------------------------------...[/quote] 哦,这样,韩国BOT我没用过,不好意思。
欢迎光临 战网中国 (http://battlecn.net/)
Powered by Discuz! X3.1