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