UltimaForum

Skrypty [XP] - Dodatkowe przedmioty za potwory XP

Ayene - Pon 06 Wrz, 2010 07:27
Temat postu: Dodatkowe przedmioty za potwory XP
~ Dodatkowe przedmioty za potwory XP ~

Krótki opis
Jak wiadomo Baza Danych RMXP pozwala na przyporządkowanie tylko jednego przedmiotu jednemu potworowi. Wobec czego skrypt umożliwia ustawienie przedmiotów dodatkowych. Lepiej jednak nie przesadzać z ich ilością (maksymalna ilość to 6). Wartość można zmienić, edytując linijkę:
Kod:
treasures = treasures[0..5]


Zalecane dokładne testy kompatybilności z innymi (niż domyślny) systemami walki.

Autor skryptu
Ayene [yurika@o2.pl]

Kompatybilność
Tylko XP. Może mieć problemy z kompatybilnością z innymi systemami walki, gdyż nadpisuje całkowicie definicję 'start_phase5'.

Skrypt
Spoiler:

Kod:
#===================================================================
# Dodatkowe przedmioty za potwory XP
# by Ayene
# 06.09.2010 ver 1.0
# www.ultimateam.pl
#===================================================================

module Ayene
  ITEM = {# ID potwora => [%, id przedmiotu],[%, id przedmiotu], itd.]
  1 => [[100, 2],[100, 23],[100, 23], ],
  2 => [[100, 3],[100, 23]],
  }
  WEAPON = {# ID potwora => [%, id broni],[%, id broni], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  ARMOR = {# ID potwora => [%, id pancerza],[%, id pancerza], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  # Maksymalna ilość przedmiotów to 6.   
end

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   
        if Ayene::ITEM.include?(enemy.id)
          for i in 0..Ayene::ITEM[enemy.id].size-1
            if rand(100) < Ayene::ITEM[enemy.id][i][0]
              treasures.push($data_items[Ayene::ITEM[enemy.id][i][1]])
            end
          end
        end
        if Ayene::WEAPON.include?(enemy.id)
          for i in 0..Ayene::WEAPON[enemy.id].size-1
            if rand(100) < Ayene::WEAPON[enemy.id][i][0]
              treasures.push($data_weapons[Ayene::WEAPON[enemy.id][i][1]])
            end
          end
        end
        if Ayene::ARMOR.include?(enemy.id)
          for i in 0..Ayene::ARMOR[enemy.id].size-1
            if rand(100) < Ayene::ARMOR[enemy.id][i][0]
              treasures.push($data_armors[Ayene::ARMOR[enemy.id][i][1]])
            end
          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
        actor.exp += exp
        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


Demo
niepotrzebne

Screenshot
Spoiler:



Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Piszcie w razie problemów.

R.I.P. - Pon 06 Wrz, 2010 12:43

No dobra, a te "przedmioty", to dostaje się losowe czy co?, bo nie rozumiem... :->
Ayene - Pon 06 Wrz, 2010 12:47

Kod:
module Ayene
  ITEM = {# ID potwora => [%, id przedmiotu],[%, id przedmiotu], itd.]
  1 => [[100, 2],[100, 23],[100, 23], ],
  2 => [[100, 3],[100, 23]],
  }
  WEAPON = {# ID potwora => [%, id broni],[%, id broni], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  ARMOR = {# ID potwora => [%, id pancerza],[%, id pancerza], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  # Maksymalna ilość przedmiotów to 6.   
end

Przykładowo:
# ID potwora => [%, id broni],[%, id broni], itd.]
gdzie % to szansa 1~100%
id broni to ID broni w bazie danych.

R.I.P. - Pon 06 Wrz, 2010 13:27

Ayene napisał/a:
Kod:
module Ayene
  ITEM = {# ID potwora => [%, id przedmiotu],[%, id przedmiotu], itd.]
  1 => [[100, 2],[100, 23],[100, 23], ],
  2 => [[100, 3],[100, 23]],
  }
  WEAPON = {# ID potwora => [%, id broni],[%, id broni], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  ARMOR = {# ID potwora => [%, id pancerza],[%, id pancerza], itd.]
  1 => [[100, 2],[100, 23]],
  2 => [[100, 3],[100, 23]],
  }
  # Maksymalna ilość przedmiotów to 6.   
end

Przykładowo:
# ID potwora => [%, id broni],[%, id broni], itd.]
gdzie % to szansa 1~100%
id broni to ID broni w bazie danych.


Echh, zaraz się popłacze, nie wiem co ci anglicy robią a polacy że Anglików skrypty działają od razu na Polskim RM :-) , kurcze czemu!?!, szkoda że nie działa na Polaku, przyokazji żeby nie było zbędnych pytań a mi nie działa, więc jak masz Polskiego RM to ci nie zadziała.... :mrgreen:

kamil1116 - Pon 06 Wrz, 2010 16:36

ayen mógła byś zrobić to na pl wersje prosze :lol:
Ayene - Sro 08 Wrz, 2010 06:52

Żeby nie było... specjalnie pofatygowałam się i sprawdziłam tę waszą PL (choć nie powinnam) i nadal nie wiem, co wam nie chodzi. Po prostu nie czytacie konfiguracji:

Spoiler:


kamil1116 - Sro 08 Wrz, 2010 15:14

dobra ok nie działa ale dzięki za fatyge

[ Dodano: Sro 08 Wrz, 2010 16:19 ]
przepraszam wszystko idzie thx

Czeliosss - Sro 08 Wrz, 2010 18:14

Skrypt bardzo przydatny. Pewnie go użyję.
R.I.P. - Nie 12 Wrz, 2010 16:06

Cytat:
Żeby nie było... specjalnie pofatygowałam się i sprawdziłam tę waszą PL (choć nie powinnam) i nadal nie wiem, co wam nie chodzi. Po prostu nie czytacie konfiguracji:


To coś u mnie nie gra, dzięki za sprawdzenie...

Cytat:
Skrypt bardzo przydatny. Pewnie go użyję.


Nie "Pewnie" tylko oczywiście że go użyjesz.

HellKiller - Pon 13 Wrz, 2010 17:45

Muszę powiedzieć że ci RGSS coraz lepiej, choć twoje skrypty są dość łatwe :P.
Podoba mi się to ,że robisz te skrypty dla innych a nie trzymasz je dla siebie.
Ja tak nie potrafię ja mam jakieś 20 w grze (może więcej) ,które nikomu nie udostępnie i mam jeszcze z 30 których nie używam a jakoś nie potrafię się dzielić :D.

Skrypt zrobiłem troszkę inaczej, ale twój pomysł jest dobry, ale trzeba dla każdego "rodzaju przedmiotu" robić id. Ja zrobiłem tak:

Dodatkowy_loot = {1 = [[item.id,item.id],[weapon.id,weapon.id],[armor.id,armor.id]]}

Co jest moim zdaniem prostszym sposobem.

Polecam skrypt i pozdrawiam HellKiller :evil: .

Tekjumen - Wto 30 Lis, 2010 20:59

Fajny skrypt, przyda się ^^ bo będzie w mojej gierce :pp
The Big Master - Sob 22 Gru, 2012 09:13

Siemka mam polskiego RPG Makera Xp i nie wiem które to te ID broni? Wiem o co chodzi ale żadnej linijki typu "ID:2313123", czy to chodzi o nazwe Ico?
dere - Nie 17 Lut, 2013 08:22

:jeeej: :krasnolud: :elf: :paladyn: :tonberry: :ork: :dragonhead: :nara: dziękuje :przytul:
Nex - Nie 17 Lut, 2013 12:21

GuGuś
Tu chodzi o takie ID że jak w bazie danych masz spis np wszystkich broni to po lewej masz takie coś
001:Miecz z brązu
002:Miecz z żelaza
i chodzi o to 001 lub 002 albo 043 a polski Rm nic tu nie zmienia

dere nie spamuj emotkami

Rouch - Czw 28 Mar, 2013 15:03

Czytaj konfigurację, no i widać, że nie przejrzałeś całego tematu.

Powered by phpBB modified by Przemo © 2003 phpBB Group