Problem ze skryptem View range.
Aktualny czas: 28-04-26, 18:51 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[XP] Problem ze skryptem View range.
Dakla Offline
*


Liczba postów: 110
Dołączył: 23-12-15

Pomógł: 4



Post: #1
Problem ze skryptem View range.

Witam.

Od pewnego czasu używam skryptu view range, który pozwala zrobić coś na kształt skradanki.

Polega to na tym, że określa się id zdarzenia i zasięg na który zdarzenie ma się uaktywniać. Jeśli bohater wejdzie w zasięg uaktywnia się główny przełącznik (lub zwykły przełącznik) i dzieje się cała reszta.
Problem w tym, że zdarzenie uaktywnia się nawet, jeśli gracz ukrywa się po skosie za przeszkodami to zdarzenie i tak go widzi. Poniżej zamieszczam 2 screeny które pokazują problem.

Nie działa:
[Obrazek: nie_dzia_a.jpg]
A tak normalnie działa skrypt. Nie widzą cię, przez kratki na których
nie da się przejść.
[Obrazek: dzia_a.jpg]

Skrypt:
Spoiler: (Otwórz)
Proszę o pomoc osoby obeznane z tematem.
(Ten post był ostatnio modyfikowany: 07-03-17 17:30 przez Dakla.)
07-03-17 00:01
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dr Man Offline
*


Liczba postów: 58
Dołączył: 30-05-14

Pomógł: 10



Post: #2
RE: Problem ze skryptem View range.

W skrypcie nie są uwzględnione przeszkody. Jednak da się temu zaradzić, musisz stworzyć zdarzenie w którym określisz na jakich współrzędnych zdarzenie nie będzie cię wykrywało i wyłączyć sprawdzanie zasięgu przez skrypt, warunek że jeśli jesteś na tej pozycji to np przełącznik zdarzenie nie widzi ON jeśli nie znajdujesz się za przeszkodą zdarzenie nie widzi OFF
07-03-17 01:54
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dakla Offline
*


Liczba postów: 110
Dołączył: 23-12-15

Pomógł: 4



Post: #3
RE: Problem ze skryptem View range.

W skrypcie SĄ uwzględnione przeszkody. Nie widzisz co się dzieje na drugim screenie ? Takie coś występuje tylko na skosie.

Co do tego sposobu to jest on słaby, choć działa. Chodzi mi o to, że trzeba by robić zdarzenia z każdego ,,skosu" :-/. Ilość takich zdarzeń mogłaby znacząco przeszkodzić, gdy już inne zdarzenia są w tym miejscu np: w tym miejscu jest beczka z której można przy okazji się napić. Poza tym jeśli mapa z tą skradanką jest dosyć duża to nie wiem, jak będzie działać gra z taką ilością zdarzeń :-? . Jestem przygotowany na zrobienie dużej ilości zdarzeń jeśli ma to wnieść coś w grę, jednak jeśli problem się nie rozwiązuje, to wolałbym w jakiś sposób zmienić skrypt.

Podsumowując ponawiam pytanie: czy ktoś umie poprawić ten skrypt by zadziałał poprawnie?
(Ten post był ostatnio modyfikowany: 07-03-17 15:11 przez Dakla.)
07-03-17 15:11
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dr Man Offline
*


Liczba postów: 58
Dołączył: 30-05-14

Pomógł: 10



Post: #4
RE: Problem ze skryptem View range.

Screeny nie działają więc nie mogłem zobaczyć co się na nich dzieje.
Myślałem że to v2 w której nie ma takiej opcji chociaż chodziło mi o jedno typowe zdarzenie z uwzględnieniem współrzędnych postaci, wystarczy warunek że jeśli jesteś za przeszkodą na koordynatach x y to wyłączany jest przełącznik z wywołaniem skryptu.

Napraw screeny to wtedy będę mógł jakoś pomóc
07-03-17 15:45
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dakla Offline
*


Liczba postów: 110
Dołączył: 23-12-15

Pomógł: 4



Post: #5
RE: Problem ze skryptem View range.

U mnie wszystko działa i screeny widać, ale teraz powinno działać bez żadnych odnośników na inne strony.

Co do tych koordynat musiałbym sprawdzać pełno współrzędnych, co jest trochę masochistyczne, bo zrobienie tego zajmie mi co najmniej lata młodości i starości.
07-03-17 17:32
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dr Man Offline
*


Liczba postów: 58
Dołączył: 30-05-14

Pomógł: 10



Post: #6
RE: Problem ze skryptem View range.

Dakla wcale nie duzo współrzędnych, kombinowałem w skrypcie i mi się nie udało, jak ALM wbiję to może pomoże, ma na pewno większa wiedzę i doświadczenie w RGSS, ja dopiero raczkuję. Możesz do niego napisać na priv albo poczekać aż coś napiszę w temacie.

Jednak znalazłem 2 rozwiązanie, które oparte jest na zdarzeniach
$game_player.x i $game_player.y określają położenie gracza
$game_map.events[id].x i $game_map.events[id].y określają współrzędne danego eventu, id to numer identyfikacyjny czyli określa który do event.
Jeśli potrafisz operować na funkcjach liniowych i interpretowaniu geometrycznym funkcji, to zakumasz o co chodzi w warunkach.

A i && w ruby oznacza "i" mamy 2 warunki czyli wszystkie warunki muszą być spełnione.
A || w ruby oznacza "lub" mamy 2 warunki czyli jeden z tych dwóch musi być spełniony.

Demko - https://ufile.io/44c51
(Ten post był ostatnio modyfikowany: 08-03-17 16:39 przez Dr Man.)
08-03-17 16:22
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dakla Offline
*


Liczba postów: 110
Dołączył: 23-12-15

Pomógł: 4



Post: #7
RE: Problem ze skryptem View range.

Nie rozumiesz o co mi chodzi :ehe:. Chciałem uniknąć wpisywania współrzędnych każdej osobnej pozycji. Tak przy okazji: pokazałeś sposób na ustalenie pozycji. Tutaj masz drugi sposób który jest czytelniejszy, a praktycznie nie tracisz nic, bo sprawdzać pozycję gracza zdarzy się bardzo często więc 2 zmienne nie idą na marne.

Twój sposób:
[Obrazek: typowe_zdarzenie.jpg]

Mój sposób:
[Obrazek: zmienne.jpg]


Ustalenie współrzędnych za pomocą zmiennych i tego drugiego sposobu nie za wiele się różni. Poza tym wspomniałem już, że staram się zrobić w miarę dużą grę, więc wolę nie tracić po 2 przełączników na strażnika gdy strażników jest np: 70 w całej grze. Na zdarzeniach pracuję bardzo często i taki pomysł już przerabiałem i nie poszło.

Swoją drogą, kto to ten ,,ALM"?
08-03-17 17:39
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Dr Man Offline
*


Liczba postów: 58
Dołączył: 30-05-14

Pomógł: 10



Post: #8
RE: Problem ze skryptem View range.

Pokazałem ci drugi sposób na załatanie tego błędu po skosie, że wyłącza funkcję sprawdzania przez przeciwnika na jakiejś powierzchni określonej 2 koordynatami, jakbyś to zapisał na układzie równań i następnie przełożył na wykres wyszedł by ci prostokąt o wymiarze x2-x1 na y2-y1. Ustalać powierzchni to na pewno ten system nie robi, raczej sprawdza. No nie jest to najlepsze rozwiązanie a raczej alternatywa więc ALM może zaradzić, Ayene jest świetna w RGSS, ale niestety dosyć rzadko odwiedza forum, a Mateusz raczej da ci wykład którego nie zrozumiesz.
Ten co pokazałeś nie jest bardziej czytelny i zajmuję więcej miejsca. jeśli chciałbyś go przełożyć na warunek sprawdzający czy gracz jest na ustalonej powierzchni. wyglądał by tak: [Obrazek: 28uqu60.png], działa tak samo ale pierwszy wygląda lepiej i jest mniejszy. Z przełącznikiem jest taka sprawa że wystarczy jeden dla każdego strażnika, i zamiast sw_id można było uzyć s_sw_id, po prostu zrobiłem to na pokaz i nie za bardzo celowałem w wydajność, ale zawsze można to poprawić. ;)
No nic starałem się pomóc, ALM to AlmostNoRuby

Edit: Faktycznie, coś mi się pomieszało z tym ALM ahaha :D
Przepraszam AlmostNoRuby
(Ten post był ostatnio modyfikowany: 08-03-17 22:48 przez Dr Man.)
08-03-17 18:42
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a): Dakla
Dakla Offline
*


Liczba postów: 110
Dołączył: 23-12-15

Pomógł: 4



Post: #9
RE: Problem ze skryptem View range.

(08-03-17 18:42)Dr Man napisał(a):  Mateusz raczej da ci wykład którego nie zrozumiesz.
Święta prawda :lol2:. Miałem styczność z nim i nie umiem się z nim dogadać dowolnie jak bym się gimnastykował.

A co do tego ALN, to skoro nazywa się AlmostNoRuby to nie powinno być ANR? razz Z tym sposobem na zdarzeniach masz całkowitą rację. Jeśli skrypt pozostanie niezmodyfikowany to zostanie mi tylko to. Dzięki za pomoc.
(Ten post był ostatnio modyfikowany: 08-03-17 21:18 przez Dakla.)
08-03-17 21:18
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
AlmostNoRuby Offline
*


Liczba postów: 174
Dołączył: 22-09-16

Pomógł: 33



Post: #10
RE: Problem ze skryptem View range.

Cytat:No nic starałem się pomóc, ALM to AlmostNoRuby

Edit: Faktycznie, coś mi się pomieszało z tym ALM ahaha :D
Przepraszam AlmostNoRuby
Nie szkodzi smiles
A i po drugie wiem, mój Nick mówi wszystko. :lol2:
Na razie mam wolne i nie mam dostępu do lapka. Jutro wracam, może coś wykombinuję.

#####
#EDIT#
#####
Mam szkic:
Spoiler: (Otwórz)
tylko... on nie działa. Typowe dla $game_map.data "Can't convert nil to integer". Jakoś to zrobię. razz
W skrócie: Po uruchomieniu przełącznika "START" skanuje całą mapę w poszukiwaniu terrain tagu 1. Jak już to zrobił, to omija tę część kodu. Potem na okrągło sprawdza, na jakim bohater jest terrain tagu (czy 1, czy 0) i przełącza odpowiedni przełącznik. Jakoś tak.
terrain tag = typ terenu, w polskiej wersji.
A i tak na serio. W RPGVX wystarczyłoby
if $game_player.in_area?(area)

[Obrazek: userbar1.png]
(Ten post był ostatnio modyfikowany: 11-03-17 19:53 przez AlmostNoRuby.)
11-03-17 13:36
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.