Ich habe mir die Sache gerade mal angeschaut und das Problem im Quellcode wiederfinden können.
Ursache ist die Ausführung der Aufrufe für HP/MP Tränke als else-Zweig, was zur Folge hatte, dass diese Aufrufe unter gewissen Umständen nie ausgeführt werden, somit also weder HP noch MP Tränke verwendet werden. :rolleyes:
Wie dem auch sei, ich habe das mal etwas angepasst und es sollte nun funktionieren. Ich bitte darum
alle, den Inhalt der
NTToolsThread.ntj, zu finden unter ../scripts/NTBot/tools/", durch folgendes zu ersetzen:
Code:
/**
* This file was modified by [Only registered and activated users can see links. Click Here To Register...]
* Check the programming section for updates and further scripts
* Last Update: 16:38 04.06.2011
*/
var _MWLW_LastDrinkTicks = new Array(5);
const _MWLW_DELAY_REJUV = 600;
const _MWLW_DELAY_OTHER = 3000;
const _MWLW_TYPE_HP_ME = 0;
const _MWLW_TYPE_MP_ME = 1;
const _MWLW_TYPE_RV_ME = 2;
const _MWLW_TYPE_HP_MERC = 3;
const _MWLW_TYPE_RV_MERC = 4;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
var _count, _lifeMax, _manaMax, _merc, _rvStatus;
_count = 0;
for(var i = 0; i < 5; i++)
_MWLW_LastDrinkTicks[i] = 0;
MWLW_SetChickenThresholds();
while(me.ingame)
{
if(!NTC_InTown())
{
_rvStatus = false;
if(_lifeMax != me.hpmax || _manaMax != me.mpmax)
{
_lifeMax = me.hpmax;
_manaMax = me.mpmax;
MWLW_SetChickenThresholds();
}
if(!NTC_InTown())
{
if(parseInt(me.hp * 100 / _lifeMax) < NTConfig_LifeRejuvThresh || parseInt(me.mp * 100 / _manaMax) < NTConfig_ManaRejuvThresh)
_rvStatus = NTLW_DrinkPotInt(_MWLW_TYPE_RV_ME);
if(!_rvStatus)
{
if(parseInt(me.hp * 100 / _lifeMax) < NTConfig_LifeThresh)
NTLW_DrinkPotInt(_MWLW_TYPE_HP_ME);
if(parseInt(me.mp * 100 / _manaMax) < NTConfig_ManaThresh)
NTLW_DrinkPotInt(_MWLW_TYPE_MP_ME);
}
_merc = NTC_GetMerc();
if(_merc)
{
if(parseInt(_merc.hp * 100 / _merc.hpmax) < NTConfig_MercChicken)
{
var _area;
_area = MWC_FindArea();
if(_area)
NTC_SendLogToOOG(NTC_LOG_ITEM, "ÿE00000Game is terminated by merc chicken (" + _area.name + ")");
else
NTC_SendLogToOOG(NTC_LOG_ITEM, "ÿE00000Game is terminated by merc chicken (unknown area)");
NTC_SendMsgToScript("MWBotGame.ntj", "EXIT_GAME");
break;
}
if(parseInt(_merc.hp * 100 / _merc.hpmax) < NTConfig_MercRejuvThresh)
_rvStatus = NTLW_DrinkPotInt(_MWLW_TYPE_RV_MERC);
if(!_rvStatus && parseInt(_merc.hp * 100 / _merc.hpmax) < NTConfig_MercLifeThresh)
NTLW_DrinkPotInt(_MWLW_TYPE_HP_MERC);
}
}
}
if(_count > 25)
{
if(NTConfig_PublicMode || MWConfig_AutoParty)
MWC_ManageParty();
_count = 0;
}
_count++;
NTC_Delay(200);
}
}
// Internal function
function NTLW_DrinkPotInt(type)
{
var _potType, _result, _col, _now;
if(type == _MWLW_TYPE_RV_ME || type == _MWLW_TYPE_RV_MERC)
{
if(_MWLW_LastDrinkTicks[type] && (GetTickCount() - _MWLW_LastDrinkTicks[type] < _MWLW_DELAY_REJUV))
return false;
}
else
{
if(_MWLW_LastDrinkTicks[type] && (GetTickCount() - _MWLW_LastDrinkTicks[type] < _MWLW_DELAY_OTHER))
return false;
}
if(me.mode == 0 || me.mode == 17 || me.mode == 18)
return false;
switch(type)
{
case _MWLW_TYPE_HP_ME:
case _MWLW_TYPE_HP_MERC:
_potType = "hp";
break;
case _MWLW_TYPE_MP_ME:
_potType = "mp";
break;
default:
_potType = "rv";
break;
}
_col = MWLW_GetColumnIndex(_potType);
if(_col > -1)
{
if(type < _MWLW_TYPE_HP_MERC)
_result = me.UseBelt(_col);
else
_result = me.UseBelt(_col, true);
if(_result)
{
_MWLW_LastDrinkTicks[type] = GetTickCount();
NTC_SendMsgToScript("MWBotGame.ntj", "SET_" + _potType.toUpperCase() + "DRANK_1");
return true;
}
}
return false;
}
function MWLW_GetColumnIndex(type)
{
var _potions;
_potions = MWC_GetItems(-1, 2);
if(_potions)
{
for(var i = 0; i < _potions.length; i++)
{
if(_potions[i].x < 4 && _potions[i].code.indexOf(type) > -1)
return _potions[i].x;
}
}
return -1;
}
function MWLW_SetChickenThresholds()
{
if(NTConfig_LifeChicken > 0 && NTConfig_LifeChicken <= 100)
me.chickenhp = parseInt((me.hpmax * NTConfig_LifeChicken) / 100);
else if(NTConfig_LifeChicken > 100)
me.chickenhp = NTConfig_LifeChicken;
if(NTConfig_ManaChicken > 0 && NTConfig_ManaChicken <= 100)
me.chickenmp = parseInt((me.mpmax * NTConfig_ManaChicken) / 100);
else if(NTConfig_ManaChicken > 100)
me.chickenmp = NTConfig_ManaChicken;
}
In der Theorie sollte dies das Problem beheben, ich bitte dennoch um Rückmeldungen, ob es das in der Praxis auch tatsächlich tut. ;)
LG
Muddy