XenoBot Forums - Powered by vBulletin

User Tag List

Page 1 of 10 123 ... LastLast
Results 1 to 10 of 93

Thread: 100% AFK Script Making

  1. #1
    Senior Member XtrmJosh's Avatar
    Join Date
    Apr 2012
    Location
    Cambridge, England
    Posts
    1,332
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    100% AFK Script Making

    I noticed someone had made a text-based tutorial on how to create a 100% AFK script. I decided I would take it one step further with a video tutorial. There are a number of elements to making a script, and this just about covers the basics (making sure you deposit, resupply, and hunt correctly according to the script setup.)

    In this video you should learn to:
    • Setup an "auto selector" for where to begin running the script
    • Choose if you should use a node or stand waypoint, and how to deal with NPCs on PVP
    • Sensibly add waypoints to avoid hassle - This requires a kean eye, and I don't demonstrate it incredibly well
    • Modify a lua script to suit the needs of the spawn you're scripting for
    • Modify an XBST in a text editor to edit loot items and view waypoints
    • All in all, generate a completely AFK script with some stability checks
    • Deal with doors, depots, backpacks, and floor changing spawn entry points
    • Configure spawn specific variables
    • Generate and use loot lists using a loot list generator
    • Use the Walker.ConditionalGoto without breaking it
    • Use Self.UseItemFromGround to manipulate tiles within 1 square range of your character


    The link to a loot list generator is here: http://neobot-scripts.com/xenobot_lootlist_creator.php. This will generate an XML format loot list, so you don't need to do what I did (which was to go through the deposit list and put the items into the XBST file), you can just copy the XML and replace the existing XML in your XBST with this.

    The link to the deposit list generator is here: http://neobot-scripts.com/SelfDepositItems_creator.php. This is what I used to generate a list of the loot items.

    Credits to @biaggio12‎ for inspiring me (not in a bad way) to make this video. Credits also go to DarkstaR for maintaining the bot, Royaliti for being an amazing friend and putting up with my random decisions to run a whole variety of projects at the same time (and complete very few of them, I might add), and to everyone I play on Olympa with for being a great team. @Rydan for his amazing work with the PHP based loot list and deposit list generators, massive thanks, these two tools save me hours of abusing TibiaWiki and Item ID lists.



    The lua file looks like this (copy it to notepad, save as, change the "Document Type" to "All Files", and save it as something like "MyScript.lua" - Make sure it ends with .lua and not .txt or the bot won't recognise it.

    Code:
    ------ REFILL SETTINGS ------
    local LeaveMana = 100 --- How many mana potions until you leave the hunt?
    local BuyMana = 300 --- How many mana potions you begin the hunt with?
    
    local LeaveHealth = 5 --- How many health potions until you leave the hunt?
    local BuyHealth = 10 --- How many health potions you begin the hunt with?
    
    local AmmoName = "Royal Spear"	--- What ammunition are you using?
    local LeaveAmmo = 10 --- How much ammunition until you leave hunt?
    local BuyAmmo = 45 --- How much ammunition do you begin the hunt with?
    local AmmoCost = 15 --- What is the cost of your selected ammunition?
    
    local LeaveCap = 100 --- Leaves spawn when character reaches this cap.
    local HideEquipment = true --- Do you want to minimize your equipment?
    local LogoutStamina = false --- Do you want to logout at 16 hours? (Inside the depot)
    
    -- Item ID's, if you don't want to use SHP and SMP, change these:
    
    local ManaName = "Strong Mana Potion" 
    local ManaCost = 80
    local HealthName = "Strong Health Potion" 
    local HealthCost = 100
    
    -- Backpack Configuration:
    
    local LootBP = "Fur Backpack"
    local GoldBP = "Jewelled Backpack"
    
    -- Spawn Options
    
    local HuntMiddle = false
    
    -- Here I'm gonna get the item ids, leave this as it is.
    
    local ManaID = Item.GetID(ManaName)
    local HealthID = Item.GetID(HealthName)
    local AmmoID = Item.GetID(AmmoName)
    
    -- These are the flask IDs, not worth changing since it will sell all flasks regardless of type.
    local FlaskID = 283
    local FlaskIDA = 284
    local FlaskIDB = 285
    
    -- local GoldBP = 5801 --- Item ID of your gold backpack.
    
    registerEventListener(WALKER_SELECTLABEL, "onWalkerSelectLabel")
    
    function onWalkerSelectLabel(labelName)
    	if (labelName == "Checker") then
    		-- Check Supplies, Hunt or Leave
    		Walker.ConditionalGoto((Self.ItemCount(ManaID) <= LeaveMana) or (Self.Cap() < LeaveCap) or (Self.ItemCount(HealthID) <= LeaveHealth) or (Self.ItemCount(AmmoID) <= LeaveAmmo), "Leave", "BeginHunt")
    
    	elseif (labelName == "Start") then
    		Walker.ConditionalGoto((Self.Position().z == 11), "BeginHunt", "ReachDepot")
    	
    	elseif (labelName == "DepositGold") then
    		-- Deposit Gold, check balance.
    		Walker.Stop()
    		Self.SayToNpc({"hi", "deposit all", "yes"}, 100)
    
    		local withdrawManas = math.max(BuyMana - Self.ItemCount(ManaID), 0)*ManaCost
    		local withdrawHealths = math.max(BuyHealth - Self.ItemCount(HealthID), 0)*HealthCost
    		local withdrawAmmo = math.max(BuyAmmo - Self.ItemCount(AmmoID), 0)*AmmoCost
    		local total = math.abs(withdrawManas + withdrawHealths + withdrawAmmo)
    
    		if total >= 1 then
    			Self.SayToNpc({"withdraw " .. total, "yes", "balance"}, 100)
    		end
    		Walker.Start()
    
    	elseif (labelName == "DepositItems") then
    		-- Deposit Items
    		Walker.Stop()
    		Self.ReachDepot(5)
    		Self.DepositItems({5882, 1}, {3028, 1}, {3029, 1}, {5948, 1}, {11457, 1}, {5920, 1}, {5877, 1}, {3061, 1})
    		Self.DepositItems({3386, 0}, {3392, 0}, {7402, 0}, {7399, 0}, {3428, 0}, {3416, 0}, {3280, 0}, {3071, 0}, {7430, 0}, {3322, 0})
    		Walker.Start()
    
    	elseif (labelName == "BuyManas") then
    		-- Buy Mana Potions
    		Walker.Stop()
    		if (Self.ItemCount(ManaID) < BuyMana) or (Self.ItemCount(HealthID) < BuyHealth) then
    			print("Buying manas or healths")
    			Self.SayToNpc({"hi", "flasks"}, 100)
    			while (Self.ItemCount(FlaskID) >= 1) or (Self.ItemCount(FlaskIDA) >= 1) or (Self.ItemCount(FlaskIDB) >= 1) do
    				Self.SayToNpc("yes", 100)
    			end
    			wait(2000)
    			Self.SayToNpc("trade", 100)
    			wait(2000)
    			while (Self.ItemCount(ManaID) < BuyMana) do
    				Self.ShopBuyItemsUpTo(ManaID, BuyMana)
    				wait(500,800)
    			end
    			if (Self.ItemCount(HealthID) < BuyHealth) then
    				Self.ShopBuyItemsUpTo(HealthID, BuyHealth)
    				wait(500)
    			end
    			wait(200, 500)
    		end
    		Walker.Start()
    
    	elseif (labelName == "CheckGoneUp") then
    		-- Check we're on floor 3
    		Walker.ConditionalGoto((Self.Position().z == 7), "OpenSouth", "Leave")
    
    	elseif (labelName == "CheckGoneDown") then
    		-- Check we're on floor 7
    		Walker.ConditionalGoto((Self.Position().z == 11), "AmDown", "EnterResp")
    
    	elseif (labelName == "BuySpears") then
    			--------------------------------- TODO -------------------------
    		Walker.Stop()
    		Self.SayToNpc({"hi", "trade"}, 100)
    		-- Buy spears, make sure Self.ItemCount returns items in hands.
    		while (Self.ItemCount(AmmoID) < BuyAmmo) do
    			Self.ShopBuyItemsUpTo(AmmoID, BuyAmmo)
    			wait(500,800)
    		end
    		Walker.Start()
    
    	elseif (labelName == "ResetBps") then
    		-- Reset Backpacks
    		Walker.Stop()
    		Self.CloseContainers()
    		Self.OpenMainBackpack(true):OpenChildren({LootBP, true}, {GoldBP, true})
    		Container.GetFirst():Minimize()
    		Walker.Start()
    
    	elseif (labelName == "OpenNorth") then
    		Walker.Stop()
    		Self.UseItemFromGround(Self.Position().x, Self.Position().y - 1, Self.Position().z) 
    		Walker.Start()
    
    	elseif (labelName == "OpenSouth") then
    		Walker.Stop()
    		Self.UseItemFromGround(Self.Position().x, Self.Position().y + 1, Self.Position().z) 
    		Walker.Start()
    
    	elseif (labelName == "MiddleSpawn") then
    		Walker.Stop()
    		Walker.ConditionalGoto(HuntMiddle, "MiddleGo", "MiddleDone")
    		Walker.Start()
    	end
    end
    
    Self.ReachDepot = function (tries)
    	local tries = tries or 3
    	Walker.Stop()
    	local DepotIDs = {3497, 3498, 3499, 3500}
    	local DepotPos = {}
    	for i = 1, #DepotIDs do
    		local dps = Map.GetUseItems(DepotIDs[i])
    		for j = 1, #dps do
    			table.insert(DepotPos, dps[j])
    		end
    	end
    	local function gotoDepot()
    		local pos = Self.Position()
    		print("Depots found: " .. tostring(#DepotPos))
    		for i = 1, #DepotPos do
    			location = DepotPos[i]
    			Self.UseItemFromGround(location.x, location.y, location.z)
    			wait(1000, 2000)
    			if Self.DistanceFromPosition(pos.x, pos.y, pos.z) >= 1 then
    				wait(5000, 6000)
    				if Self.DistanceFromPosition(location.x, location.y, location.z) == 1 then
    					Walker.Start()
    					return true
    				end
    			else
    				print("Something is blocking the path. Trying next depot.")
    			end
    		end
    		return false
    	end
    	
    	repeat
    		reachedDP = gotoDepot()
    		if reachedDP then
    			return true
    		end
    		tries = tries - 1
    		sleep(100)
    		print("Attempt to reach depot was unsuccessfull. " .. tries .. " tries left.")
    	until tries <= 0
    
    	return false
    end
    
    Map.GetUseItems = function (id)
        if type(id) == "string" then
            id = Item.GetID(id)
        end
        local pos = Self.Position()
        local store = {}
        for x = -7, 7 do
            for y = -5, 5 do
                if Map.GetTopUseItem(pos.x + x, pos.y + y, pos.z).id == id then
                    itemPos = {x = pos.x + x, y = pos.y + y, z = pos.z}
                    table.insert(store, itemPos)
                end
            end
        end
        return store
    end
    The XBST for Darashia Dragon Lords for RP is attached here and all are free to use it as they wish, excluding for profitable reasons. Credits should be given unless permission is granted by myself.

    Thanks all!
    Attached Files Attached Files
    Last edited by XtrmJosh; 06-12-2013 at 10:07 PM.
    You cannot fail, so I'm lowering the standard.

  2. #2
    Lifetime Subscriber Niyar's Avatar
    Join Date
    Nov 2011
    Location
    The netherlands
    Posts
    2,172
    Mentioned
    94 Post(s)
    Tagged
    0 Thread(s)
    You're doing some great things for the community Josh, I like it!

  3. #3
    Senior Member XtrmJosh's Avatar
    Join Date
    Apr 2012
    Location
    Cambridge, England
    Posts
    1,332
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Niyar View Post
    You're doing some great things for the community Josh, I like it!
    Thanks mate, as most people I talk to know, my only goal is to obtain and share knowledge. I've learnt all the shit I know from the people here (and their questions, answers, and just general posts), so I owe it to everyone here to return the favour where possible. Same reason I'm still on OTLand, actually, haha.

    <3
    You cannot fail, so I'm lowering the standard.

  4. #4
    Banned
    Join Date
    Dec 2012
    Location
    Sweden
    Posts
    183
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Been looking for tutorials forever. Thanks alot!

  5. #5
    Super Moderator Rydan's Avatar
    Join Date
    Dec 2011
    Location
    Germany
    Posts
    1,853
    Mentioned
    331 Post(s)
    Tagged
    0 Thread(s)
    You've added the DP list generator link as lootlist generator :P

  6. #6
    Senior Member XtrmJosh's Avatar
    Join Date
    Apr 2012
    Location
    Cambridge, England
    Posts
    1,332
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Rydan View Post
    You've added the DP list generator link as lootlist generator :P
    So I have, but then again that's the list I used in the video haha... I didn't know there was one of each. Anyway, will add both now, and will add credits (I forgot who made it, hence lack of credits originally). Thanks!

    @DarkRoses - No problem, hope it helps mate!
    You cannot fail, so I'm lowering the standard.

  7. #7
    Super Moderator Rydan's Avatar
    Join Date
    Dec 2011
    Location
    Germany
    Posts
    1,853
    Mentioned
    331 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by XtrmJosh View Post
    So I have, but then again that's the list I used in the video haha... I didn't know there was one of each. Anyway, will add both now, and will add credits (I forgot who made it, hence lack of credits originally). Thanks!

    @DarkRoses - No problem, hope it helps mate!
    Check the source code (A)

    Here's a link to the thread with both: http://forums.xenobot.net/showthread...otlist-Creator

  8. #8
    Senior Member XtrmJosh's Avatar
    Join Date
    Apr 2012
    Location
    Cambridge, England
    Posts
    1,332
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Rydan View Post
    Check the source code (A)

    Here's a link to the thread with both: http://forums.xenobot.net/showthread...otlist-Creator
    The source code for what?

    Also, your style is beautiful but your CSS is ugly haha
    You cannot fail, so I'm lowering the standard.

  9. #9
    Super Moderator Rydan's Avatar
    Join Date
    Dec 2011
    Location
    Germany
    Posts
    1,853
    Mentioned
    331 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by XtrmJosh View Post
    The source code for what?

    Also, your style is beautiful but your CSS is ugly haha
    There's a comment within the source that says that it was made by me xD
    Yeah^^ didn't really spend time on the CSS... just copied and pasted things together from other shits I had made before until it looked satisfying.

  10. #10
    Senior Member XtrmJosh's Avatar
    Join Date
    Apr 2012
    Location
    Cambridge, England
    Posts
    1,332
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Rydan View Post
    There's a comment within the source that says that it was made by me xD
    Yeah^^ didn't really spend time on the CSS... just copied and pasted things together from other shits I had made before until it looked satisfying.
    Ah I didn't look hard enough... Tbh I've just sat here talking to my computer for the last hour, the last thing on my mind is credits, but credit will be given where credit is due, you honestly have saved me hours with that loot list creator lol
    You cannot fail, so I'm lowering the standard.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •