Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

XenoBot prośba o dwa skrypty


Quinn2013

Rekomendowane odpowiedzi

Opublikowano

Witam !

 

Poszukuje skrypty do Xenobot'a a mianowicie:

 

- Bicie potworów niewidzialnych (w ustawieniach targetu "monster invis" bot zaczyna mi świrować)

- Follow za graczem (mam juz pewien skrypt lecz przy dostawaniu exp'a follow się na 1-2sekunde wyłącza)

 

Z góry dziękuje =)

Opublikowano

- Bicie potworów niewidzialnych (w ustawieniach targetu "monster invis" bot zaczyna mi świrować)

Jeżeli wybierasz opcję Monster Invis to do ataku wybierz jakąś runę obszarową - gfb/avalanche.

- Follow za graczem (mam juz pewien skrypt lecz przy dostawaniu exp'a follow się na 1-2sekunde wyłącza)

Chyba lepszego niż ten nie ma, wchodzi po schodach, drabinach, dziurach.

FollowThisPerson = "name" -- Character name to follow. 

FloorChangers = {
	Ladders   = {Up   = {1948,},
			     Down = {432, 412, 469, 369, 7478, 7182, 482, 8658}},
	
	Holes     = {Up   = {},
	             Down = {293, 294, 595, 385, 594}},
	
	RopeSpots = {Up   = {386},
	             Down = {}},
	
	Stairs    = {Up   = {1958, 7548, 7544, 1952, 1950, 1947, 7542, 1978, 8657, 1977, 1956, 1957, 1954},
	             Down = {414, 413, 437, 7731, 469, 413, 434, 469, 438, 600, 4826, 8932, 6129}},
	Sewers    = {Up   = {},
	             Down = {435, }},
}

---------------------------------------------
-------------- END OF CONFIG ----------------
---------------------------------------------

local target = FollowThisPerson
local lastKnownPosition

local function goLastKnown()
	while Self.DistanceFromPosition(lastKnownPosition.x, lastKnownPosition.y, lastKnownPosition.z) > 1 do
		Self.UseItemFromGround(lastKnownPosition.x, lastKnownPosition.y, lastKnownPosition.z)
		wait(200, 700)
	end
end

local function handleUse(pos)
	goLastKnown()
	local lastZ = Self.Position().z
	while Self.Position().z == lastZ do
		Self.UseItemFromGround(pos.x, pos.y, pos.z)
		wait(400, 800)
	end
end

local function handleStep(pos)
	goLastKnown()
	local lastZ = Self.Position().z
	while Self.Position().z == lastZ do
		Self.Step(Map.GetDirectionTo(Self.Position(), pos))
		wait(400, 800)
	end
end

local function getRope()
	local ropes = {"rope", "elvenhair rope"}
	for _, rope in ipairs(ropes) do
		if Self.ItemCount(rope) > 0 then return Item.GetID(rope) end
	end
end

local function handleRope(pos)
	goLastKnown()
	local lastZ = Self.Position().z
	while Self.Position().z == lastZ do
		Self.UseItemWithGround(getRope(), pos.x, pos.y, pos.z)
		wait(400, 800)
	end
end

local floorChangeSelector = {
	Ladders = {Up=handleUse, Down=handleStep},
	Holes = {Up=handleStep, Down=handleStep},
	RopeSpots = {Up=handleRope, Down=handleRope},
	Stairs = {Up=handleStep, Down=handleStep},
	Sewers = {Up=handleUse, Down=handleUse},
}


Module("Follow-Renew", function(f)
	local c = Creature(target)
	if c and not c:isFollowed() then
		c:Follow()
	end
end)

local function checkTargetPos()
	local c = Creature(target)
	if c:Position().z == Self.Position().z then
		lastKnownPosition = c:Position()
	end
end

local function distance(pos1, pos2)
	local pos2 = pos2 or lastKnownPosition or Self.Position()
	return math.abs(pos1.x-pos2.x) + math.abs(pos1.y-pos2.y)
end

local function executeClosest(possibilities)
	local closest
	local closestDistance = 99999
	for _, data in ipairs(possibilities) do
		local dist = distance(data.pos)
		if dist < closestDistance then
			closest = data
			closestDistance = dist
		end
	end
	if closest then closest.changer(closest.pos) end
end

local function handleFloorChange()
	local c = Creature(target)
	local range = 2
	local p = Self.Position()
	local possibleChangers = {}
	for _, dir in ipairs({"Down", "Up"}) do
		for changer, data in pairs(FloorChangers) do
			for x = -range, range do
				for y = -range, range do
					if table.find(data[dir], Map.GetTopUseItem(p.x+x, p.y+y, p.z).id) then
						table.insert(possibleChangers, {changer=floorChangeSelector[changer][dir], pos={x=p.x+x, y=p.y+y, z=p.z}})
					end
				end
			end
		end
	end
	executeClosest(possibleChangers)
end

local function targetMissing()
	for name, c in Creature.iPlayers() do
		if name == target then
			return c:Position().z ~= Self.Position().z
		end
	end
	return true
end

Module("Handle floor change", function(f)
	checkTargetPos()
	if targetMissing() and lastKnownPosition then
		handleFloorChange()
	end
end)

szjF1O2.gif

I na przyszłość pisz w tym temacie - http://www.mpcforum.pl/topic/1259260-pro%C5%9Bba-o-skryptywaypointycaveboty/

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...