Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
View Range
Autor Wiadomość
Yoroiookami 

Omnomnomnom



Preferowany:
RPG Maker XP

Ranga RM:
3 gry

Pomógł: 57 razy
Dołączył: 24 Lut 2010
Posty: 751
Wysłany: Nie 06 Cze, 2010 09:25
View Range
Postanowiłem umieścić ten skrypt, żeby nie trzeba było się męczyć z szukaniem tego przez dwie godziny, tak jak ja musiałem.

Skrypt stworzony przez Near Fantastica; pozwala zdarzeniom, na wyśledzenie gracza i pogoń, lub zaatakowanie go.

Tutaj oryginał
Spoiler:

Kod:
#==============================================================================
#   Veiw Range Script
#------------------------------------------------------------------------------
#    By: Near Fantastica
#    Date: 25/11/04
#==============================================================================

class View_Range
#--------------------------------------------------------------------------
# ● Range system works by sereching the area of a circle for the Player's xy
#    The Veiw is set in each event and is the radius of the circle
#    The Eaquation used is (Px-EX)^2 + (Py-Ey)^2 = radius^2
#    If the Radius is less than or equal to the View the Player is inside the circle
#--------------------------------------------------------------------------
  attr_accessor :event_num
  attr_accessor :view_range
  #--------------------------------------------------------------------------
  # ● Initialization
  #--------------------------------------------------------------------------
  def initialize(event_num,veiw_range,els)
    @event_num = event_num
    @event_locial_switch = els
    @view_range = veiw_range
    @playerx = $game_player.x
    @playery = $game_player.y
    @eventx = $game_map.events[@event_num].x
    @eventy = $game_map.events[@event_num].y
    @event_direction = $game_map.events[@event_num].direction
  end
  #--------------------------------------------------------------------------
  # ● check = View_Range.new(EventID, Veiw Range, Local Switch)
  #    check.enemies_view
  #--------------------------------------------------------------------------
  def event_view
    @playerx-=@eventx
    @playerx*=@playerx
    @playery-=@eventy
    @playery*=@playery
    @playerx+=@playery
    @view_range*=@view_range
    if @playerx <= @view_range
      key=[$game_map.map_id, @event_num, @event_locial_switch]
      $game_self_switches[key] = true
    end
  end
  #--------------------------------------------------------------------------
  # &#9679; check = View_Range.new(EventID, Veiw Range, Local Switch)
  #    check.enemies_view
  #--------------------------------------------------------------------------
  def enemies_view   
    if @event_direction == 2
      if @playery >= @eventy
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 4
      if @playerx <= @eventx
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 6
      if @playerx >= @eventx
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 8
      if @playery <= @eventy
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
  end
end



Tutaj przetłumaczona wersja [Raczej niewiele zmienia]
Spoiler:

Kod:
#==============================================================================
#   Skrypt Widzenia na Odległość
#------------------------------------------------------------------------------
#    Stworzona przez: Near Fantastica
#    Data: 25/11/04
#==============================================================================

class View_Range
#--------------------------------------------------------------------------
# &#9679; Ranga systemowa działa przez przeszukanie kolistego terenu dla xy Gracza.
#    "Widok" jest w każdym zdarzeniu i ma zasięg koła.
#    Użyte równianie to (Px-EX)^2 + (Py-Ey)^2 = zasięg^2
#   Jeżeli zasięg jest mniejszy, lub równy widokowi, gracz jest w środku koła.
#--------------------------------------------------------------------------
  attr_accessor :event_num
  attr_accessor :view_range
  #--------------------------------------------------------------------------
  # &#9679; Initialization
  #--------------------------------------------------------------------------
  def initialize(event_num,veiw_range,els)
    @event_num = event_num
    @event_locial_switch = els
    @view_range = veiw_range
    @playerx = $game_player.x
    @playery = $game_player.y
    @eventx = $game_map.events[@event_num].x
    @eventy = $game_map.events[@event_num].y
    @event_direction = $game_map.events[@event_num].direction
  end
  #--------------------------------------------------------------------------
  # &#9679; check = View_Range.new(EventID, Veiw Range, Local Switch)
  #    check.enemies_view
  #--------------------------------------------------------------------------
  def event_view
    @playerx-=@eventx
    @playerx*=@playerx
    @playery-=@eventy
    @playery*=@playery
    @playerx+=@playery
    @view_range*=@view_range
    if @playerx <= @view_range
      key=[$game_map.map_id, @event_num, @event_locial_switch]
      $game_self_switches[key] = true
    end
  end
  #--------------------------------------------------------------------------
  # &#9679; check = View_Range.new(EventID, Veiw Range, Local Switch)
  #    check.enemies_view
  #--------------------------------------------------------------------------
  def enemies_view   
    if @event_direction == 2
      if @playery >= @eventy
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 4
      if @playerx <= @eventx
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 6
      if @playerx >= @eventx
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
    if @event_direction == 8
      if @playery <= @eventy
        @playerx-=@eventx
        @playerx*=@playerx
        @playery-=@eventy
        @playery*=@playery
        @playerx+=@playery
        @view_range*=@view_range
        if @playerx <= @view_range
          key=[$game_map.map_id, @event_num, @event_locial_switch]
          $game_self_switches[key] = true
          $game_system.timer = 420
          $game_system.timer_working = true
          $game_map.need_refresh = true
        end
      end
    end
  end
end


Nie tłumaczyłem części, które wydawały się podejrzane, nie chciałem zniszczyć skryptu.

Do zdarzenia które ma mieć "Widzenia na odległość" musimy dać Wywołaj Skrypt(Script Check) i wpisać:
Spoiler:

check = View_Range.new(1,3,"A")
check.enemies_view



(1,3,"A") - nie korzystałem jeszcze ze skryptu, ale liczby 1,3 to najprawdopodobniej zasięg widzenia, a co do "A", to nie jestem pewien.

*EDIT:
(1,3,"A") gdzie 1 to ID stwora na mapie który ma mieć View Range.
3 to zasięg widzenia, a A to przełącznik na który zdarzenie ma być odpalane na drugiej stronie.(Np. z wiadomością "Widziałem cię")


SCREENY:
Spoiler:



Ostatnio zmieniony przez Yoroiookami Wto 09 Sie, 2011 00:35, w całości zmieniany 2 razy  
 
 
Izaya 




Pomógł: 2 razy
Dołączył: 20 Mar 2010
Posty: 127
Skąd: z Netaa !
Wysłany: Nie 06 Cze, 2010 16:38
Podoba mi się. Może wystąpi w mojej grze ;-)
________________________
Padł mi laptop ... wszystko, RPG Maker i projekty, wszystko się skończyło. Nie bawię się już w RPGM'a, Zmieniam wizerunek.

Nowa strona, szukam tłumaczy, edytorów, korektorów i HTMLowców ! :D

P.S.: Aga Organization rlz ! =>
 
 
 
Yoroiookami 

Omnomnomnom



Preferowany:
RPG Maker XP

Ranga RM:
3 gry

Pomógł: 57 razy
Dołączył: 24 Lut 2010
Posty: 751
Wysłany: Pon 21 Cze, 2010 08:28
EDIT:
(1,3,"A") gdzie 1 to ID stwora na mapie który ma mieć View Range.
3 to zasięg widzenia, a A to przełącznik na który zdarzenie ma być odpalane na drugiej stronie.(Np. z wiadomością "Widziałem cię")
 
 
Izaya 




Pomógł: 2 razy
Dołączył: 20 Mar 2010
Posty: 127
Skąd: z Netaa !
Wysłany: Nie 11 Lip, 2010 10:59
Coś podobnego jest w Metin2 :mrgreen:
czyli przyda się np. gdy potwór jest agresywny, przykład "Agresywny wilk".
Na prawdę bardzo fajny skrypt :-)
________________________
Padł mi laptop ... wszystko, RPG Maker i projekty, wszystko się skończyło. Nie bawię się już w RPGM'a, Zmieniam wizerunek.

Nowa strona, szukam tłumaczy, edytorów, korektorów i HTMLowców ! :D

P.S.: Aga Organization rlz ! =>
 
 
 
R.I.P. 




Preferowany:
RPG Maker XP

Pomógł: 9 razy
Dołączył: 28 Mar 2010
Posty: 173
Skąd: Warszawa
Wysłany: Wto 13 Lip, 2010 18:59
Skrypcik niezły :mrgreen: , tylko mam trudności z opanowaniem go :-? , ponieważ nie rozumiem pare rzeczy jak to zazwyczaj widze to zawsze mi parzy tą mądrością :-) , dobra może później go Opanuje, Thx for you.






Pozdr. R.I.P. :papa:
 
 
smakowy155 



Dołączył: 01 Paź 2010
Posty: 14
Wysłany: Sob 06 Lis, 2010 14:57
Mam pytanko. Gdy kopiuje ognisko z dema(http://www.ultimateam.pl/viewtopic.php?t=2795) to gdy wchodzę w pole widzenia to strasznie się tnie i dźwięk ogniska też się tnie. Co to może być?
 
 
Yoroiookami 

Omnomnomnom



Preferowany:
RPG Maker XP

Ranga RM:
3 gry

Pomógł: 57 razy
Dołączył: 24 Lut 2010
Posty: 751
Wysłany: Sob 06 Lis, 2010 15:28
Najlepiej wyślij mi projekt :I będzie najszybciej, bo nie będzie trzeba zgadywać.
Przesłać możesz mi na PW.
-----------------------------------
EDIT - sprawdziłem i obawiam się, że nie da się nic poradzić. Nieco źle ustawiłeś te zdarzenia, ale nie w tym rzecz. Nie wiem czemu, ale RPG Maker(lub skrypt) jakoś nie toleruje dwóch BGS na jednej mapie, nawet jeśli są takie same o_o'
Myślę że to robota dla kogoś lepszego w te klocki :I no i nie mam pewności czy i ktoś na to coś poradzi.

Proponuję po prostu użyć jednego ogniska, pozostałe mogą być zgaszone xD
 
 
smakowy155 



Dołączył: 01 Paź 2010
Posty: 14
Wysłany: Czw 11 Lis, 2010 21:17
Dobrze wszystko było, ale teraz gdy robię zdarzenie z tym skryptem to wyskakuje mi taki błąd:
????? 'View_Range' ? 26 ??? NoMethodError ????????
undefined method 'x' for nil:NilClass
 
 
HESEE 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 31 Mar 2010
Posty: 145
Wysłany: Pią 17 Gru, 2010 13:57
Mi wywala błąd:

Script 'Wywoływanie zdarzeń' line 26: NoMethodError occurred.

undefined method `x' for nil:NilClass
________________________
http://www.poomoc.pl/
Kilka kliknięć a pomożesz innym!
Czy naprawdę to jest duża strata czasu?
W ten sposób pomożesz innym!

Pomagam bezinteresownie!
 
 
 
Yoroiookami 

Omnomnomnom



Preferowany:
RPG Maker XP

Ranga RM:
3 gry

Pomógł: 57 razy
Dołączył: 24 Lut 2010
Posty: 751
Wysłany: Pią 17 Gru, 2010 16:03
Mi wszystko działa, a sprawdziłem też swoją przetłumaczoną wersję >_> nie używacie przypadkiem polskiej wersji programu? A jeżeli nie, to może ten skrypt kłóci się z jakimś innym który macie :I
 
 
CreeperCrisis 



Preferowany:
RPG Maker VXAce

Pomógł: 32 razy
Dołączył: 01 Maj 2010
Posty: 395
Wysłany: Pon 09 Maj, 2011 21:04
Po pierwsze przepraszam że piszę teraz bo dawno w tym temacie nie odpisywano choć skrypt bardzo był mi potrzebny, po drugie jest również kompatybilny z VX. :D Powiem że skrypt już opanowałem, mam nadzieję że inni nie mają z tym problemu. xD Działa na każdym (chyba) systemie poruszania się, u mnie na przykład działa na platformówce. Skrypcik przydatny i bardzo prosty w użytku. :)
 
 
Dr.man 




Preferowany:
RPG Maker XP

Dołączył: 20 Lip 2011
Posty: 3
Wysłany: Nie 16 Gru, 2012 15:57
Mam mały jeden problem.
Jak zrobić by po zauważeniu gracza, potwór przestał gonić jeśli bohater oddali się, np: 0 sześć kratek?

A i jeszcze jedno, jak wyłączyć ten liczony czas w prawym górnym rogu?
Nie ogarniam skryptu. ;p
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene