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]
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'.
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 ;>
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.
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