
Originally Posted by
Elizabeth
@
Oscagi @
yompa93
The script is very problematic, becouse:
I'll have to always empty first container, this is impossible when i used bank. And i'll have to change all scripts .lua and create new products.
I found this script:
PHP Code:
local AxeBackpack = "Backpack Of Holding"
local ReplaceAxe = 16096
local ChargeGem = 675
Module.New("Enchant", function(mod)
local weapon = Self.Weapon()
if (weapon.id == 7389) then
Walker.Stop()
local ping = Self.Ping()
local bp = Container.New(AxeBackpack)
local spots = {}
while (Self.Weapon().id == 7389) do
Self.Equip(ReplaceAxe, "weapon")
wait(500 + ping)
end
for i = 0, bp:ItemCount() do
local spot = bp:GetItemData(i)
if (spot.id == ChargeGem) then
spots[1] = i
elseif (spot.id == 7389) then
spots[2] = i
end
end
if (spots ~= nil) then
bp:UseItemWithContainerItem(spots[1], bp:Index(), spots[2])
wait(500 + ping)
local new = bp:GetItemData(spots[2])
while (Self.Weapon().id ~= new.id) do
Self.Equip(new.id, "weapon")
wait(500 + ping)
end
else
print("Weapon and gems must be in the same backpack!")
end
Walker.Start()
end
mod:Delay(10000)
end)
This is better, but sometimes when i have exhausted and script try use gem on axe don't do it, and my waypoints is stoped.
It's very long, but should work and never fail as long as you have gems in your equipment.
Code:
local normalWeapon = 7389
local chargedWeapon = 686
local gemID = 675
local isChanging = false
function findEmptyContainer()
for i = 0, 15 do
if (Container.isOpen(i) and not Container.isFull(i)) then
return i
end
end
return nil
end
function findItemInContainer(item)
local itemid = Item.GetItemIDFromDualInput(item)
for i = 0, 15 do
if (Container.isOpen(i)) then
for spot = 0, Container.ItemCount(i) - 1 do
local data = Container.GetItemData(i, spot).id
if (itemid == data) then
return i, spot
end
end
end
end
return nil
end
function equipWeapon(weapon, callback)
local cWeapon = Self.Weapon().id
local weapon = Item.GetItemIDFromDualInput(weapon)
local wCont, wSpot = findItemInContainer(weapon)
if (not wCont or not wSpot) then
callback()
return false
end
local time = os.time()
local sCount = Self.ItemCount(weapon, wCont)
while (sCount == Self.ItemCount(weapon, wCont) and os.difftime(os.time(), time) < 10) do
local wCont, wSpot = findItemInContainer(weapon)
Container.MoveItemToEquipment(wCont, wSpot, "weapon", -1)
wait(500)
end
callback()
return true
end
function dequipWeapon(weapon, callback)
local item = Self.Weapon().id
local weapon = Item.GetItemIDFromDualInput(weapon)
if (item ~= weapon) then
callback(false)
return false
end
local emptyCont = findEmptyContainer()
if (not emptyCont) then
callback(false)
return false
end
local time = os.time()
while (Self.Weapon().id == weapon and os.difftime(os.time(), time) < 10) do
slotMoveItemToContainer("weapon", emptyCont, Container.ItemCount(emptyCont) - 1)
wait(500)
end
callback(true)
return true
end
function enchantWeapon(weapon, gem, chargedWeapon, callback)
local weapon = Item.GetItemIDFromDualInput(weapon)
local gem = Item.GetItemIDFromDualInput(gem)
local chargedWeapon = Item.GetItemIDFromDualInput(chargedWeapon)
local wCont, wSpot = findItemInContainer(weapon)
local gCont, gSpot = findItemInContainer(gem)
if (not wCont or not wSpot or not gCont or not gSpot) then
callback(false)
return false
end
local wItemCount = Self.ItemCount(weapon, wCont)
local gItemCount = Self.ItemCount(gem, gCont)
local cItemCount = Self.ItemCount(chargedWeapon)
local time = os.time()
while (wItemCount == Self.ItemCount(weapon, wCont) and gItemCount == Self.ItemCount(gem, gCont) and cItemCount == Self.ItemCount(chargedWeapon) and os.difftime(os.time(), time) < 10) do
local wCont, wSpot = findItemInContainer(weapon)
local gCont, gSpot = findItemInContainer(gem)
Container.UseItemWithContainerItem(gCont, gSpot, wCont, wSpot)
wait(500)
end
callback(true)
return true
end
Module.New("Enchant Weapon", function(mod)
if (Self.Weapon().id == normalWeapon and not isChanging and getSelfTargetID() == 0) then
delayWalker(20000)
isChanging = true
dequipWeapon(normalWeapon, function(success)
if (not success) then delayWalker(0) isChanging = false return end
enchantWeapon(normalWeapon, gemID, chargedWeapon, function(success)
if (not success) then equipWeapon(normalWeapon, function() delayWalker(0) isChanging = false end) end
if (success) then equipWeapon(chargedWeapon, function() delayWalker(0) isChanging = false end) end
end)
end)
end
end)