UltimaForum

Wsparcie [XP] - Scrypt na % Exp

Flanagan - Czw 25 Mar, 2010 14:53
Temat postu: Scrypt na % Exp
Czy mogę prosić o informacje czy jest taki Scrypt że:
Gdy naprzykład masz Amulet na sobie masz 50% większe Exp
czyli razy 50 np.
Za pszczołe 1 exp jednak mam amulet i dostaje za pszczołe 50

Bardzo proszę o pomoc z góry dziękuje

Ayene - Czw 25 Mar, 2010 17:37

Wejdź w Scene_Battle 2 i znajdź fragment:
Kod:
  for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end

zamień go na:
Kod:
   for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level         
        if $game_party.actors[i].armor4_id == 25
          actor.exp += exp * 2
        else
          actor.exp += exp
        end         
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end

Najważniejszy fragment to ten:
Kod:
if $game_party.actors[i].armor4_id == 25

gdzie:
armor4 to akcesoria
a 25 to ID pancerza (bo akcesoria są jako pancerz).

Dlatego stwórz amulet w pancerzach i przyporządkuj mu ID.

Melvin - Czw 25 Mar, 2010 17:41

WOW!!
Aż krzyknąłem!

A to działa z ABS-em?

I czy z Multi-Slotem też działa?
Tzn jak bym wpisał np na rękawice?

Flanagan - Czw 25 Mar, 2010 18:19

Niedziała ;-( ;-( ;-( ;-( ;-(

Zrobiłem wszystko tak jak napisane i niedziała ;-( ;-( ;-( ;-(

Ayene - Czw 25 Mar, 2010 19:29

songoxyz, gdybyś zrobił wszystko jak jest napisane, to by działało :!:

Wklej poniższy skrypt nad Main:
Spoiler:

Kod:
class Scene_Battle
 
  def start_phase5   
    @phase = 5   
    $game_system.me_play($game_system.battle_end_me)   
    $game_system.bgm_play($game_temp.map_bgm)   
    exp = 0
    gold = 0
    treasures = []   
    for enemy in $game_troop.enemies     
      unless enemy.hidden       
        exp += enemy.exp
        gold += enemy.gold       
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end   
    treasures = treasures[0..5]   
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level       
        if $game_party.actors[i].armor4_id == 34
          actor.exp += exp * 2
        else
          actor.exp += exp
        end         
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end   
    $game_party.gain_gold(gold)   
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end   
    @result_window = Window_BattleResult.new(exp, gold, treasures)   
    @phase5_wait_count = 100
  end
end


Stwórz pancerz w bazie danych (ID 34), ustaw rodzaj na Akcesoria, ustaw w klasie bohatera, że może z tego przedmiotu korzystać, ekwipuj ten amulet bohaterowi i wygraj z jakimś potworem. Normalnie drużyna dostanie X punktów doświadczenia, a osoba, która ma założony amulet otrzyma X*2.

Melvin, musiałbyś mi wkleić tego ABS'a. Najwyżej się go przerobi.

Flanagan - Czw 25 Mar, 2010 19:44

?????'Amulet'? 38 ??? NoMethodError ?????????
undefinited method 'level_up'for nil:NilClass

Błagam was o pomoc bardzo mi na tym scrypcie zależy, i niechcem go stracić ;-(

Ayene - Czw 25 Mar, 2010 19:45

No a masz jakieś inne skrypty, które ingerują w walkę?
Melvin - Czw 25 Mar, 2010 19:50

Cytat:
Melvin, musiałbyś mi wkleić tego ABS'a. Najwyżej się go przerobi.

Nie da rady... Nie da się... Za dużo znaków...
Poza tym to "Blizz-ABS by Blizzard".

Flanagan - Czw 25 Mar, 2010 20:01

Niemam innych scryptów z walką, a powinienem mieć??????
Ayene - Czw 25 Mar, 2010 20:19


Flanagan - Czw 25 Mar, 2010 20:29

Wszystko działa niechcący wykasowałem w 38 linijce pare znaków :oops: :oops:
ale dzięki Ayene jesteś najlepsza :hura: :hura: :hura: :hura: :hura: :hura:

Melvin - Czw 25 Mar, 2010 21:25

Cytat:
Melvin, to podaj link do skryptu.

http://forum.chaos-projec...php?topic=106.0
:mrgreen:

Ayene - Pią 26 Mar, 2010 08:54

Melvin, powyższy skrypt powinien działać. Możesz jeszcze ewentualnie sprawdzić, czy w którymś ze skryptów masz frazę:
Kod:
def start_phase5

Jeśli nie to oznacza, że Twoje dodatkowe skrypty nie zmieniają definicji, więc możesz bezproblemowo umieścić wcześniejszy nad Main.


Powered by phpBB modified by Przemo © 2003 phpBB Group