01-27-2015, 01:44 AM
Доброго времени суток всем! Пытаюсь я запустить ниже приведенный скрипт в рабочий режим, увы, не выходит. При запуске скрипта в чат выводится сообщение:AUGMENT: Out of gemstones or life stones. Хотя в инвентаре все предметы присутствуют. Мб была у кого такая проблема и кто просто шарит в скриптах, посоветуйте, что не так?
Причем работает скрипт на энчант и боты в полном объеме, без каких либо нареканий...
Code:
local weaponName = "Demitelum"
local lifestoneName = "Top-Grade Life Stone - Level 84"
local gemstoneName = "Gemstone B"
local gemstone_count = 58
local npcName = "Pushkin"
function getItemByName(name)
invList = GetInventory();
for item in invList.list do
if item.Name == name then
-- ShowToClient("ITEM", item.Name .. " (ID: " .. item.displayId .. ")");
return item
end
end
end
function openAugmentWindow(name)
target = GetTarget()
if ( target ~= nil ) then
if ( target:GetName() ~= name ) then
CancelTarget(true)
Sleep(500)
TargetNpc(name, 0)
Sleep(500)
end
else
TargetNpc(name, 0)
Sleep(500)
end
target = GetTarget()
if ( target ~= nil and target:GetName() == name ) then
Talk()
Sleep(500)
Click("05", "Augment Item.");
Sleep(500)
Click("00", "Start smelting.");
Sleep(500)
return true
end
return false
end
function getItemByName(name)
invList = GetInventory();
for item in invList.list do
if item.Name == name then
-- ShowToClient("ITEM", item.Name .. " (ID: " .. item.displayId .. ")");
return item
end
end
end
function openAugmentCancelWindow(name)
target = GetTarget()
if ( target ~= nil ) then
if ( target:GetName() ~= name ) then
CancelTarget(true)
Sleep(500)
TargetNpc(name, 0)
Sleep(500)
end
else
TargetNpc(name, 0)
Sleep(500)
end
target = GetTarget()
if ( target ~= nil and target:GetName() == name ) then
Talk();
Sleep(500)
Click("06", "Cancel item Augmentation.");
Sleep(500)
Click("00", "Remove the Stone of Life.");
Sleep(500)
return true
end
return false
end
weapon = getItemByName(weaponName)
if ( weapon == nil ) then
--ShowToClient("AUGMENT", "Could not find weapon " .. weaponName)
else
weaponId = weapon.objectId
GetAugmentManager():setItemId(weaponId)
repeat
if ( weapon.RefineryOp2 == 0 ) then
lifestone = getItemByName(lifestoneName)
gemstone = getItemByName(gemstoneName)
if ( lifestone == nil or gemstone == nil ) then
ShowToClient("AUGMENT:", "Out of gemstones or life stones")
break
end
GetAugmentManager():setItemId(weaponId)
GetAugmentManager():setLifeStoneId(lifestone.objectId)
--- HERE ---
GetAugmentManager():setGemstoneId(gemstone.objectId, gemstone_count)
GetAugmentManager():Augment()
Sleep(1000)
if ( openAugmentWindow(npcName) == false ) then
break
end
while ( GetAugmentManager():getAugmentResult() == Augment.AUGMENT_PENDING ) do
Sleep(200)
end
if ( GetAugmentManager():getAugmentResult() == Augment.AUGMENT_FINISHED ) then
Sleep (100) -- sleep so item data is updated
weapon = GetInventory():FindById(weaponId)
end
if ( GetAugmentManager():KeepAugment ( weapon.RefineryOp2 ) == true ) then
ShowToClient("AUGMENT:", "You have achieved desired augment! " .. weapon.RefineryOp2)
break
end
else
if ( GetAugmentManager():KeepAugment ( weapon.RefineryOp2 ) == true ) then
ShowToClient("AUGMENT:", "You have achieved desired augment! " .. weapon.RefineryOp2)
break
end
GetAugmentManager():setItemId(weaponId)
GetAugmentManager():AugmentCancel()
if ( openAugmentCancelWindow(npcName) == false ) then
break
end
while ( GetAugmentManager():getAugmentCancelResult() == Augment.AUGMENT_CANCEL_PENDING ) do
Sleep(200)
end
if ( GetAugmentManager():getAugmentCancelResult() == Augment.AUGMENT_FINISHED ) then
Sleep (100) -- sleep so item data is updated
end
weapon = GetInventory():FindById(weaponId)
end
until false
end
Причем работает скрипт на энчант и боты в полном объеме, без каких либо нареканий...