![]()

Autor: Ayene [ Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. ]

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

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 liczbą (maksymalna liczba to 6). Wartość można zmienić, edytując linijkę:
treasures = treasures[0..5]

Instrukcja:
Za konfigurację skryptu odpowiada fragment:
dla przedmiotów:
ITEM = {# ID potwora => [%, id przedmiotu],[%, id przedmiotu], itd.]
1 => [[100, 2],[100, 23],[100, 23], ],
2 => [[100, 3],[100, 23]],
}
dla broni:
WEAPON = {# ID potwora => [%, id broni],[%, id broni], itd.]
1 => [[100, 2],[100, 23]],
2 => [[100, 3],[100, 23]],
}
dla pancerza:
ARMOR = {# ID potwora => [%, id pancerza],[%, id pancerza], itd.]
1 => [[100, 2],[100, 23]],
2 => [[100, 3],[100, 23]],
}
Wystarczy wpisać linijki kodu zgodnie z poniższym wzorem:
ID potwora => [%, id broni],[%, id broni], itd.]
gdzie:
% - szansa 1~100%
id broni - ID broni w bazie danych.
Przykład:
Jeśli chcemy, aby potwór o ID 5 w bazie danych, po pokonaniu zostawiał przedmiot ID 10 i 21, ale z szansą po 33% na każdy z przedmiotów, to w części 'ITEM' należy wpisać:
5 => [[33, 10],[33, 21]],

Skrypt:
#===================================================================
# 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 liczba 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
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.