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 - problem z if Self.Position()


Pivocik

Rekomendowane odpowiedzi

Opublikowano

Cześć, piszę skrypt do Xenobota.

Z góry już zacznę może od tego, że
w momencie śmierci, po reconnectcie odrodzi mnie w świątyni na Gray Island.
image.png

 

I teraz pojawia się problem ze skryptem.
 

function Walker.Goto(label, relative)

local posX = 33447
local posY = 31323
local posZ = 9

while Self.Position().x == 33447 and Self.Position().y == 31323 and Self.Position().z == 9 do

Walker.Stop()
Targeting.Stop()
Looter.Stop()
wait(500,1000)
Walker.Goto('respawn')
wait(500,1000)
Walker.Start()
Targeting.Start()
Looter.Start()

end
end


Chodzi o to, że gdy skrypt wykryje że jestem na pozycji x,y,z ma kazać walkerowi udać się do labelu "respawn".
Nie chcę robić tego elseif'em np. "checkpos" tak jak jest to napisane w wielu skryptach.

To ma być osobny skrypt, który co jakiś czas bada pozycję - przyjmijmy co 10-15 sekund.
Najlepiej gdyby był w stanie wykryć śmierć postaci, ale z tego co mi wiadomo nie ma takiego warunku.

Nie pojawia się żaden komunikat błędu.
W przypadku użycia:
 

if Self.Position().x == 33447 and Self.Position().y == 31323 and Self.Position().z == 9 do --lub then

wyskakuje błąd:
 

Cytat

16:06 XenoScript Error:
           Script: ifdeathgotorespawn.lua
           Line #: 7
           Chunk: C:?Users?BOTINGDEVICE?1?DOCUME?1?XenoBot?Scripts??IFDEAT?1.LUA
           Error: 'then' expected near 'do'
This is an error with user-input and should not be reported as a bug with XenoBot.


Więc, czy dałoby radę poprawić ten skrypt lub jeśli istnieje lepszy sposób, to czy mógłby ktoś podesłać taki skrypt?
Chodzi o to, żeby skrypt co 5-15 sekund sprawdzał pozycję - i jeśli się okaże że jest na tej danej pozycji to niech walker pójdzie do labelu "respawn".

 


edit 16:20
 

 

Ok rozwiązałem problem w ten sposób:
 

if Self.Position().x == 33447 and Self.Position().y == 31323 and Self.Position().z == 9 then

Walker.Stop()
Targeting.Stop()
Looter.Stop()

wait(500,1000)

gotoLabel("respawn")

wait(500,1000)
Walker.Start()
Targeting.Start()
Looter.Start()

end

 


edit 16:38

Cóż może jednak nie rozwiązałem.
Aktualnie problem polega na tym, że gdy jesteśmy na koordynatach z skryptu, skrypt się wykona poprawnie.
Z kolei jeżeli zejdziemy z danej pozycji i skrypt przejdzie do sprawdzenia jej - automatycznie wywala go ze Scriptera.

image.png

 

Tak wygląda w tej chwili:
 

while Self.Position().x == 33447 and Self.Position().y == 31323 and Self.Position().z == 9 do
	wait(500,1000)
	gotoLabel("respawn")
	wait(500,3000)
	Walker.Start()
	Targeting.Start()
	Looter.Start()
end



edit 16:57

Finalne rozwiązanie problemu:
while (true) do
	if (Self.Position().x == 33447 and Self.Position().y == 31323 and Self.Position().z == 9) then
		wait(500,1000)
		gotoLabel("respawn")
		wait(500,3000)
		Walker.Start()
		Targeting.Start()
		Looter.Start()
	end
end

:3_grin:

5k0ms5H.png

  • Aive zmienił(a) tytuł na Xenobot - problem z if Self.Position()
  • Aive zablokował(a) ten temat

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...