collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: Stehlen Script  (Gelesen 1846 mal)

Offline Juggernaut

  • Der Gott des Krieges!
  • Event-Jongleur
  • **
  • Beiträge: 51
Stehlen Script
« am: April 28, 2010, 21:43:30 »
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 ;)

Spoiler for Hiden:
#==============================================================================
# ** 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

Re: Stehlen Script

Offline Master Chain

  • Smalltalk-Front
  • VX-Meister
  • ****
  • Beiträge: 605
  • Kette ähm *Hust Colo for Admin
    • Mein Youtube Channel
Re: Stehlen Script
« Antwort #1 am: April 28, 2010, 22:26:00 »
Hört sich nicht schlecht an könntest du ne Demo für dieses Script hochladen oder zumindest nen Vid??

Re: Stehlen Script

Offline Vizard

  • Meister der Scriptliste
  • Database-Verunstalter
  • **
  • Beiträge: 131
Re: Stehlen Script
« Antwort #2 am: April 28, 2010, 22:53:18 »
ahhhh danke :D ich findes so super dass dus für mich gemacht hast :) (ich heiße beck , nicht becks ;))
ich werde es morgen ausprobieren :)

vielen dank :)

________

edit:Ich versteh das mit dem:  $game_map.events[@event_id].beute = [50,1,2,17,10,9]  und dem call script nicht :(
wäre wirklcih nett wenn du ne demo machn könntest :)
« Letzte Änderung: April 29, 2010, 16:16:04 von Beck »

Re: Stehlen Script

Offline Juggernaut

  • Der Gott des Krieges!
  • Event-Jongleur
  • **
  • Beiträge: 51
Re: Stehlen Script
« Antwort #3 am: Mai 19, 2010, 09:31:44 »
So auf Nachfrage hab ich mal ne kleine Demo zu dem Script gemacht... Ich selbst habe jetzt noch keinen Fehler bemerkt, solltet ihr dass aber tun sagt bescheid ;)
download

Re: Stehlen Script

Offline Vizard

  • Meister der Scriptliste
  • Database-Verunstalter
  • **
  • Beiträge: 131
Re: Stehlen Script
« Antwort #4 am: Mai 19, 2010, 11:37:56 »
ich finds sehr gut gelungen. :)
genauso hab ichs mir voirgestellt, bis auf 2 kleinigkeiten.
in der demo haste den typen ja mehrere sachen gegeben.
kannst du es so einstellen , dass beispielsweise gegenstand 1
eine 50% chance hat dass man erwischt wird , gegenstad 2 eine
70% chance usw.
so ist das noch etwas einfach,  W drücken und dann alles
"wegstehlen" :D
so fehlt son bissel der nerfenkitzel wenns nur nach timer geht.

außerdem ist mir aufgefallen dass das game dann "freezt" wenn
man im stehlenmenü ist.kann man das game noch weiterlaufenlassen
und beispielsweise wenn die person sich ja bewegt oder dreht dass
die aktion dann abgebrochen wird oder so?

aber ansonsten richtig toll :)
« Letzte Änderung: Mai 19, 2010, 11:41:47 von Beck »

Re: Stehlen Script

Offline Galadriela

  • Event-Jongleur
  • **
  • Beiträge: 57
    • Meine Bücher
Re: Stehlen Script
« Antwort #5 am: Juli 11, 2010, 08:59:41 »
wahrscheinlich stell ich mich wieder blöd an, aber bei der demo bekomme ich nie etwas und sogar wenn ich versuche zu klauen wenn er mich ansieht geschieht nix...hat sich erledigt, ich habe die r taste genommen, wie mir dort gesagt wurde statt die w
« Letzte Änderung: Juli 12, 2010, 06:20:13 von Galadriela »

 


 Bild des Monats

rooftop party

Views: 3614
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal