Skocz do zawartości
Zaloguj się, aby obserwować  
durfey

Skomplikowane otwieranie drzwi

Polecane posty

Autor tematu Napisano

Cześć. Szukam osoby, która zna się dobrze na Xeno. Opiszę mniej więcej o co mi chodzi. Mam o to taki skrypt do sprawdzania lokacji, a dokładniej chce zrobić tak aby otwierał drzwi i sprawdzał pozycje po ich otwarciu, wiadomo żeby bot się nie zwiesił na głupich drzwiach.

registerEventListener(WALKER_SELECTLABEL, "onWalkerSelectLabel")

function onWalkerSelectLabel(labelName)
if (labelName == "checkpos") then
if not (Self.Position().x == 30999 and Self.Position().y == 310666 and Self.Position().z == 7) then
Walker.Goto("start")

end
end
end

Skrypt oczywiście działa, ale niestety problem polega na tym, że gdy daje STAND po drugiej stronie i ktoś przymknie mi drzwi po prostu wyświetla się biały napis na dole "current waypoint...." bo nie może dojść do postawionego STANDu po drugiej stronie drzwi, jeżeli są one zamknięte po prostu taki skrypt gó*no daje. Nie wiem czy napisałem to w miarę zrozumiale, także przedstawię to w ten sposób jak to robię:

Label (start)
STAND (przed drzwiami)
USELEVER (otwieranie drzwi)
STAND (po drugiej stronie drzwi)
Label (checkpos) <----- ze współrzędnymi z drugiego STANDU i tu niestety jest ten problem, bo gdy ktoś mi zamknie drzwi bot nie przechodzi wtedy do labela (Start) tylko zatrzymuje się na STAND, bo drzwi są zamknięte..

Nie wiem czy ktokolwiek zrozumie o co mi chodzi, jeżeli nie to piszcie będę odpowiadał. Z góry dzięki i Pozdrawiam, mam nadzieje ze jest tu ktos kto potrafi wytlumaczyc w jaki sposób to zrobić.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pani Kasia

Podmień uselever na Self.UseItemFromGround(x, y, z),  jak już to zrobiłeś, to dodaj po tym Self.Step("kierunek") zamiast standa i wtedy niech sprawdza. Pierwszy stand przed drzwiami jest Ci niepotrzebny, wystarczy blisko noda dodać przy drzwiach.

 

    elseif(labelName == "checkpos1") then
    if not(Self.Position().x == x and Self.Position().y == y and Self.Position().z == 4) then
    Walker.Goto("pos1")
    end

 

WPT w kolejności:

label - pos1

Self.UseItemFromGround(zrób to w lua, nie przez 'Add Scripts')

Self.Step("kierunek") <- to równiez możesz dodać w lua po Self.UseItemFromGround

label - checkpos1

 

coś będzie niejasne to pisz

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Autor tematu Napisano

Spoko zaraz zobacze czy dobrze zrozumialem. Oczywiście dzięki za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Autor tematu Napisano

Działa wszystko okey. Ale jest inny problem. Mianowicie taki, że jak mam dodanych w jednym lua parę tych kodów, oczywiście z innymi nazwami labelów nie działają w ogóle, tylko jak mam jeden wklejony skrypt to działa. Muszę robić specjalnie nowy lua dokument do jednego skryptu, czyli jak mam 10 drzwi do otwarcia z tymi lokacjami, muszę utworzyć aż 10 lua dokumentów.  Nie miałem już dosłownie siły, tyle kombinowania, a to nie działało właśnie przez to, że były dwa te same skrypty, ale z innymi nazwami labelów i już du*a. Oczywiście dzięki za pomoc, ale może wiesz jeszcze jak rozwiązać ten problem. Na pewno poleci plus. Pozdro ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

problem leży w zamykaniu danej funkcji 'end', ciężko mi pomóc skoro nie widzę tych skryptów, polecam do tego Notepad++, jeżeli nie ogarniesz samemu  to podeślij tutaj bądź na pw i coś pomogę a tak narazie to nie jestem nic w stanie pomóc. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Autor tematu Napisano

Już mam to zrobione. W końcu działa. Wielkie dzięki. Ale jeszcze mam jedną rzecz, może nie na temat akurat checkerów, ale problem jest z otwarciem dziury łopatą tam gdzie są te Lizard Choseny. Nie działa niestety opcja Hole, nie wiem dlaczego. Masz jakiś pomysł?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Autor tematu Napisano

Dobra już na wszystkie pytania, które do tej pory zadałem znalazłem rozwiązanie, ale najśmieszniejsze jest to, że jest nowy problem. Mianowicie chodzi o to, aby wyłączał targeting jak wychodzi z expa, ale jeżeli zostanei strapowany przez potwory będzie on włączony. Czy jest taka możliwość w xeno? Szukałem i znalazłęm tylko Start.Ignoring() ale to u mnie nie działa, być moze coś źle z tym robię.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może pokombinuj z standTime > x i Targeting.Start()?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Autor tematu Napisano

@Marchwj Nie za bardzo wiem o co chodzi. Mam napisać skrypt?  Niestety nie potrafię tego robić. Ten Targeting. StartIgnoring dawalem w walkerze nie w lua, być może dlatego nie działało. 

Chociaż jak dawalem  Targeting.Start() w walkerze to wlaczal i wylaczal targeting, ale co mi z tego skoro jak dostanę trapa to char padnie przy wyłączonym targecie...

 

Swoją drogą moim zdaniem słabo to jest w tym bocie zrobione, przecież powinna być automatycznie dodana taka funkcja np, że gdy jesteśmy strapowani 20 sec włącza targeting.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Module.New("test", function(module)
	if ( standTime(15) ) then
		Targeting.Start()
		wait(10000)
		Targeting.Stop()
	end
end)


function standTime(timesec)
	local curtime = os.time()
	local curpos = Self.Position()
	while (Self.Position().x == curpos.x and Self.Position().y == curpos.y and Self.Position().z == curpos.z) do
		if (os.time() - curtime >= timesec) then
			return true
		end
		wait(1000)
	end
	return false
end

Jeżeli postać nie ruszy się przez 15 sekund to włączy targeting na 10 sekund, po czym znowu wyłączy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niestety nie mam jak sprawdzić teraz.  Jutro zobacze. Ale jeżeli działa to wisze Tobie kratę browarow ... ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niestety coś jest nie tak z tym skryptem.  Bot zatrzymuje się, a niby walker jest włączony nie wiem o co chodzi.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pani Kasia

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.


×