Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Ayene
Pon 30 Lip, 2012 16:10
Uniki / Celność
Autor Wiadomość
BloodEye 



Pomógł: 1 raz
Dołączył: 04 Sie 2011
Posty: 23
Wysłany: Pią 11 Maj, 2012 14:23
Uniki / Celność
Mógłby mi ktoś napisać jak są obliczane uniki oraz celność w RMXP ? Oraz , w jakim skrypcie , w której linijce jest wzór za nie odpowiadający :D

Edit
znalazłem tą część skryptu, jednak czy mógłby mi ktoś wyjaśnić jak to działa ?
Kod:
#--------------------------------------------------------------------------
  # * Applying Normal Attack Effects
  #     attacker : battler
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    # Clear critical flag
    self.critical = false
    # First hit detection
    hit_result = (rand(100) < attacker.hit)
    # If hit occurs
    if hit_result == true
      # Calculate basic damage
      atk = [attacker.atk].max
      self.damage = atk * attacker.str / self.pdef
      # Element correction
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 1.5
          self.critical = true
        end
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    # If hit occurs
    if hit_result == true
      # State Removed by Shock
      remove_states_shock
      # Substract damage from HP
      self.hp -= self.damage
      # State change
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # When missing
    else
      # Set damage to "Miss"
      self.damage = "Unik"
      # Clear critical flag
      self.critical = false
    end
    # End Method
    return true
  end

Chcę aby DMG = attacker.atk * attacker.str / self.def a szansa na trafienie = (attacker.dex/self.agi) - self.eva
A i jeszcze pytanie, która statystyka odpowiada za częstotliwość ataków ( chodzi mi o double w turach ) [/hide]
 
 
PaKiTos 




Preferowany:
RPG Maker 2003

Ranga RM:
2 gry

Pomógł: 16 razy
Dołączył: 05 Lis 2009
Posty: 359
Skąd: spytaj innych
Wysłany: Sob 12 Maj, 2012 09:52
Double w turach? W RMXP tego chyba nie ma (chyba że ATB używasz..) ;-)
________________________
po co to kopiujesz? ;d
Spoiler:

Fakty:
1.Widzisz mój podpis
2.Jesteś w internecie
3.Czytasz
4.Siedzisz przy komputerze
5.Jesteś na UltimaForum
6.Twój nick to Gość


kiedys tu bylo fajniej... coz gospoda rma forever
chwala tym ktorzy nadal robia w 2k
 
 
BloodEye 



Pomógł: 1 raz
Dołączył: 04 Sie 2011
Posty: 23
Wysłany: Sob 12 Maj, 2012 11:00
Chyba jest to możliwe bez tego ATB , albo miałem jakieś lagi , bo jak testowałem jednego potworka to miałem double
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 23 Cze, 2012 16:01
Wszystko wyliczane jest etapami. Nie wiem jak za bardzo wytłumaczyć coś co jasno wynika ze skryptu (wszystko zresztą tłumaczone jest w komentarzach). Zresztą Twój skrypt różni się od domyślnego. Widać, że były wprowadzane korekty.
Cytat:
a najlepiej jakby ktoś umiał zedytować aby DMG było równe a.str /s.def *Atk

Tylko że ustawiając taki wzór, zawsze będziesz miał równą wartość, bo normalnie przy obliczaniu obrażeń bierze pod uwagę również odporność lub słabość na elementy oraz jakąś wartość losową, a także ewentualność krytyka itd.

Domyślna walka w XP jest turowa, więc nie ma możliwości zrobienia dubla. Za to jaka jest kolejność w turze odpowiada pośrednio linijka 'make_action_speed' w skrypcie 'Game_Battler 1'.
________________________


 
 
 
BloodEye 



Pomógł: 1 raz
Dołączył: 04 Sie 2011
Posty: 23
Wysłany: Nie 01 Lip, 2012 16:15
Cytat:
Tylko że ustawiając taki wzór, zawsze będziesz miał równą wartość, bo normalnie przy obliczaniu obrażeń bierze pod uwagę również odporność lub słabość na elementy oraz jakąś wartość losową, a także ewentualność krytyka itd.

Chodziło mi właśnie o basic DMG , gra bez żadnej losowości byłaby nudna ;>
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 01 Lip, 2012 20:35
Wystarczy, że w swoim skrypcie fragment:
Kod:
atk = [attacker.atk].max
      self.damage = atk * attacker.str / self.pdef

zamienisz po prostu na:
Kod:
self.damage = attacker.atk * attacker.str / self.pdef

Co do trafienia, to pokombinuj z tą linijką:
Kod:
hit_result = (rand(100) < attacker.hit)

Jak widać program losuje liczbę od 0 do 99 i jeśli liczba ta jest mniejsza od trafienia atakującego, to wówczas hit jest celny. Ustawienie zatem Twojego wzoru:
Kod:
(attacker.dex / self.agi) - self.eva

wymaga porządnych obliczeń, jaka ma być szansa tego trafienia.
________________________


 
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
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