UltimaForum

Wsparcie [XP] - Skrypt na inny atak broni

metin2ziolo - Sro 04 Sie, 2010 11:19
Temat postu: Skrypt na inny atak broni
Witam!
Potrzebuje takiego skryptu, żeby ustawiało się broniom moc ataku np. 33-54, 70-192 itp. tak jak w Metin2 lub Margonem.
Z góry thx :mrgreen:

erienus - Sro 04 Sie, 2010 12:48

Wszystko w bazie danych ustawiasz ;S
metin2ziolo - Sro 04 Sie, 2010 12:53

W bazie danych nie ustawie broni ataku 8-20 tylko 8.
blade1 - Sob 14 Sie, 2010 08:00

Broń może mieć atak8 a obrone20
proste ;-)

Yoroiookami - Sob 14 Sie, 2010 08:34

Tu chyba chodzi o to żeby broń losowała numer ataku od 8-20 i zadawała inne obrażenia przy każdym uderzeniu >_>
blade1 - czy sposób który przedstawiasz tak działa?

blade1 - Sob 14 Sie, 2010 10:47

tak działa :lol:
Ayene - Wto 17 Sie, 2010 13:38

Czu autor tematu rozwiązał już problem?
metin2ziolo - Wto 17 Sie, 2010 14:11

Niestety nie
Ayene - Wto 17 Sie, 2010 15:57

A spróbuj taki skrypt:
Spoiler:

Kod:
module Ayene
  WEAPON = {# id broni => dorzut x (losowa liczba w przedziale od 1 do x)
  1 => 1000,
  5 => 100,
  }
end

class Game_Battler
  alias ayene_gamebat_attack_effect attack_effect 
  def attack_effect(attacker)
    ayene_gamebat_attack_effect(attacker)
    self.critical = false
    hit_result = (rand(100) < attacker.hit)
    if hit_result == true
      atk = [attacker.atk - self.pdef / 2, 0].max         
      if attacker.is_a?(Game_Actor) and !Ayene::WEAPON[attacker.weapon_id].nil?
        damage_plus = rand(Ayene::WEAPON[attacker.weapon_id])
      else
        damage_plus = 0
      end           
      self.damage = (atk * (20 + attacker.str) / 20) + damage_plus
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      if self.damage > 0
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        if self.guarding?
          self.damage /= 2
        end
      end
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      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_result == true
      remove_states_shock
      self.hp -= self.damage
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    else
      self.damage = "Pudło"
      self.critical = false
    end   
    return true
  end
end


Wklej go nad 'Main' i skonfiguruj na samej górze.

metin2ziolo - Wto 17 Sie, 2010 16:41

Skrypt działa, ale jak ustawić żeby broń miała atak 5-25 a np. pałka 17-30.
Bo używając tego skryptu zauważyłem, że można ustawić atak 1-1000,1-100,1-50.

Ayene - Wto 17 Sie, 2010 20:37

Atak jest bazowy taki jaki ustawisz w Bazie Danych, a w skrypcie dodatkowo możesz dodać przedział (dodatkowe obrażenia z broni). Jaki jest sens ustawiania stałych obrażeń w skrypcie, skoro masz od tego bazę danych.
metin2ziolo - Sro 18 Sie, 2010 14:06

Aha już skumałem jak działa ten skrypt i takiego właśnie potrzebowałem :) Dzięki temat do zamknięcia

Powered by phpBB modified by Przemo © 2003 phpBB Group