So auf Anfrage von Becks habe ich hier mal ein kleines Stehlen Script gescrhieben...
dadurch ist es dem Spieler ermöglicht durch einen bestimmten Skill auf der map ein Event "plündern"
Nach Ablauf einer bestimmten Zeit oder nachdem man durch das stehlen erwischt wurde, beginnt der Kampf..
Viel Spaß damit ;)
#==============================================================================
# ** Stehlen-Script
#------------------------------------------------------------------------------
# *Scripted by Sartekk aka. Juggernaut.
# *Don't claim as your owns... Ich war's :P
#==============================================================================
#
# Script benötigt zum wirken eine "Initialisierungsseite" von einem Event
# d.h. 1. Eventseite mit Call Script initialisieren,
# dann mit einem Self switch auf die hauptseite switchen
#
# Bsp:
# $game_map.events[@event_id].beute = [50,1,2,17,10,9]
# $game_map.events[@event_id].fight = 11
#
# $game_map.events[@event_id].beute = [Gold-Drop, Item-ID's...]
# 1. Zahl muss entweder 0 oder höher sein, da dies der Geldwert is..
# Alles was darauf folgt sind Item-ID's (Also keine Rüstungen/Waffen)
# $game_map.events[@event_id].fight = Truppen-ID
#
#==============================================================================
module Steal_Config
SKILL_ID = 1 # ID des Skills in der Database
STEAL_INPUT = Input::R # Taste zum stehlen (VX Tasten)
STEAL_MAX_LVL = 99 # Maximales Skill level der Stehlen-Fähigkeit
STEAL_TIME = 15 # Nach sovielen Sekunden wird man erwischt
STEAL_FAIL = "He was machst du da! Na warte!" # Text, nachdem man erwischt wurde/Zeit abgelaufen ist
end
class Stehlen
attr_accessor :lvl
attr_accessor :maxlvl
def initialize
@lvl = 1
@maxlvl = Steal_Config::STEAL_MAX_LVL
end
end
class Scene_Title < Scene_Base
alias create_steal create_game_objects
def create_game_objects
create_steal
$steal_system = Stehlen.new
end
end
class Scene_Map < Scene_Base
alias update_steal_input update
def update
update_steal_input
for actor in $game_party.members
if Input.trigger?(Steal_Config::STEAL_INPUT) and actor.skill_learn?($data_skills[Steal_Config::SKILL_ID])
case $game_player.direction
when 2
@x = $game_player.x
@y = $game_player.y+1
when 4
@x = $game_player.x-1
@y = $game_player.y
when 6
@x = $game_player.x+1
@y = $game_player.y
when 8
@x = $game_player.x
@y = $game_player.y-1
end
for event in $game_map.events_xy(@x, @y) # Matches event position
unless event.through
break if not $game_player.direction == $game_map.events[event.id].direction
$scene = Stehlen_Exe.new(event.id)
end
end
end
end
end
end
class Stehlen_Exe < Scene_Base
def initialize(event_id)
@event_id = event_id
@to_loot = []
@stolen_g = 0
@stolen = []
@success = nil
@time = 0
end
def start
super
create_menu_background
create_loot_window
@viewport = Viewport.new(0, 0, 544, 416)
@help_win = Steal_Help.new
@help_win.viewport = @viewport
end
def terminate
super
dispose_menu_background
@loot_win.dispose
@help_win.dispose
end
def update
super
update_menu_background
@loot_win.update
update_loot
@help_win.update
if @time == 60*Steal_Config::STEAL_TIME
back_giving
else
@time += 1
update_help($data_items[$game_map.events[@event_id].beute[@loot_win.index]])
end
end
def create_loot_window
@to_loot = []
@to_loot.push($game_map.events[@event_id].beute[0].to_s+$data_system.terms.gold.to_s)
for loot in 1..$game_map.events[@event_id].beute.size-1
@to_loot.push($data_items[$game_map.events[@event_id].beute[loot]].name)
end
@loot_win = Window_Command.new(200,@to_loot)
end
def update_loot
if Input.trigger?(Input::C)
if @loot_win.index == 0 and $game_map.events[@event_id].beute[0] != 0
if rand($steal_system.lvl)*rand($game_actors[1].level) >= rand($steal_system.lvl) * rand(10)
@success = true
Sound.play_equip
$game_party.gain_gold($game_map.events[@event_id].beute[0])
@stolen_g = $game_map.events[@event_id].beute[0]
$game_map.events[@event_id].beute[0] = 0
@loot_win.draw_item(0, false)
else
back_giving
end
elsif @loot_win.index >= 0
for i in 1..@to_loot.size-1
if @loot_win.index == i
if rand($steal_system.lvl)*rand($game_actors[1].level) >= rand($steal_system.lvl) * rand(10)
@success = true
Sound.play_equip
$game_party.gain_item($data_items[$game_map.events[@event_id].beute[i]], 1)
@stolen.push($game_map.events[@event_id].beute[i])
$game_map.events[@event_id].beute.delete_at(i)
@loot_win.draw_item(i,false)
else
back_giving
end
end
end
end
@loot_win.dispose
create_loot_window
elsif Input.trigger?(Input::B)
$scene = Scene_Map.new
if @success
$steal_system.lvl += 1
end
end
end
def back_giving
@success = false
Sound.play_enemy_attack
@help_win.set_text(Steal_Config::STEAL_FAIL)
if @stolen_g != 0
$game_party.gain_gold(-1*($game_map.events[@event_id].beute[0]))
$game_map.events[@event_id].beute[0] += @stolen_g
@loot_win.draw_item(0, true)
end
if not @stolen.empty?
for i in 0..@stolen.size-1
$game_party.gain_item($data_items[$game_map.events[@event_id].beute[i]], -1)
$game_map.events[@event_id].beute.push($game_map.events[@event_id].beute[i])
@loot_win.draw_item(i+1,true)
end
end
battle_starts
end
def battle_starts
troop_id = $game_map.events[@event_id].fight
if $data_troops[troop_id] != nil
$game_troop.setup(troop_id)
$game_troop.can_escape = false
$game_troop.can_lose = true
$game_temp.battle_proc = Proc.new { |n| @branch[@indent] = n }
$scene = Scene_Map.new
$game_temp.next_scene = "battle"
end
end
def update_help(item)
@help_win.set_text(item == nil ? "" : item.description)
end
end
class Game_Event < Game_Character
attr_accessor :beute
attr_accessor :fight
alias new_beute initialize
def initialize(map_id, event)
new_beute(map_id, event)
@beute = []
@fight = fight
end
end
class Steal_Help < Window_Base
def initialize
super(0, 330, 544,416-330)
end
def set_text(text, align = 0)
if text != @text or align != @align
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
@text = text
@align = align
end
end
end
Sollten Bugs auftreten... postet es bitte hier rein damit ich sie verbessern kann ;)
mfG Sartekk aka. Juggernaut