collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: Hilfe zu Skripten.  (Gelesen 51451 mal)

Offline PDM

  • Bibliothekar
  • Global Mod
  • VX-Kenner
  • ****
  • Beiträge: 468
    • Mein Blog
Re: Hilfe zu Skripten.
« Antwort #330 am: Januar 27, 2010, 15:23:14 »
Vielen Dank, aber ich meinte eigentlich ein normales "Rpg-Window".
Ich glaube ich weiß jetzt den Befehl, aber ich wüsste noch gerne wie ich dessen Koordinaten festlege und es nach einiger Zeit wieder schließe.

Edit: Ich habe vielleicht doch den falschen Befehl, bei mir wird angezeigt, dass ich den Text ausgewählt habe.
« Letzte Änderung: Januar 27, 2010, 15:32:34 von PDM »
PDM's Gameplays
Skype-Name: lordpdm

Re: Hilfe zu Skripten.

Offline MicroJumper

  • Triple A
  • Event-Jongleur
  • **
  • Beiträge: 76
    • Makrosoftware.Jimdo.com
Re: Hilfe zu Skripten.
« Antwort #331 am: Januar 27, 2010, 23:15:53 »
hab ne frage zu nem call script...
und zwar möchte ich über eine Bedingung abfragen, ob neben, über oder unter mir ein passierbares event ist...

Hab bis jetzt hingekriegt, dass ich abfragen kann, ob ein bestimmtes event neben mir passierbar ist, ich brauch es aber so, dass es sich auf events allgemein bezieht
(also ohne event_id):

bisherige Zeile:
$game_player.pos?($game_map.events[EVENT_ID].x, $game_map.events[EVENT_ID].y)
Beispiel:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)

damit kann ich abfragen ob (hier) Event 1 neben mir ist und passierbar ist...
ich brauchs aber so, dass ich abfragen kann, ob überhaupt ein event neben mir ist und passierbar ist....

hoffe ich konnte es gut genug erklären... ich brauch das, weil ich ein Drag & Drop System mit Events gemacht hab, aber man die sachen in events "reinwerfen" kann, was man nicht sollte^^

vielen dank für die hilfe^^

Re: Hilfe zu Skripten.

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Hilfe zu Skripten.
« Antwort #332 am: Januar 31, 2010, 13:37:56 »
Hi MicroJumper,
soweit ich mir es denken kann, bedeutet diese Abfrage:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
ob der Character (Player) die Koordinaten des Events besitzt, und nicht ob diese "Stelle" passierbar ist.
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)
Würde also true zurückgeben, falls der Spieler und das erste Event die selben Koordinaten haben. Für die Passierbarkeit müsstest du wohl nach einer anderen Methode suchen.
Um abzufragen ob ein Event neben dir ist, kannst du dir z.B. das hier anschauen:

Spoiler for Hiden:
Hay InJ,

Zitat
Mein derzeitig wichtigstes/größtes Problem ist die Abfrage des Ortes von dem Gegner.


Zu deinem jetzigen Problem, habe ich eine Lösung, entweder du benutzt wie schon im IRC gesagt, die Variante mit den Events, sprich du benutzt 4 Variablen, und setzt 2 immer mit den Koordinaten des Events und 2 mit den Koordinaten des Spielers, und addierst bzw. subtrahierst 1,um rauszubekommen, ob die beiden neben ein ander stehen.
Hierfür kannst du nochmal in meinem etwas älterem Tut, unter Anwendung der Variablen ein kleines Beispiel finden, was auf diese Problematik aufbaut.

*Schleichwerbung* => Link zum Tutorial

Die zweite Möglichkeit ist, die zuerst nicht geklappt hat, aber jetzt wunderbar läuft ist eine kleine Erweiterrung für den Game_Interpreter.. Probier einfach mal das hier aus (Benutzung hat sich etwas verändert, aber zum positiven. :)):

Spoiler for Hiden:
=begin
Benutzung: Um eine ABfrage zu starten, ob das Event neben einem anderem Event oder neben einem SPieler steht,
zu starten, musst du unter Conditional Branch, Script, je nach Fall folgendes eingeben:
Bei Abfrage, ob ein Event neben dem Spieler steht:
nexto_to(event_id des events,true)
Bei Abfrage, ob ein Event neben einem anderem Event steht;
next_to(event_id des ersten events, false , event_id des zweiten events)
=end
class Game_Interpreter
  def next_to(event_id1 = nil , player = false , event_id2 = nil)
    if player == false
      if $game_map.events[event_id1] != nil && $game_map.events[event_id2] != nil
        if $game_map.events[event_id1].x == $game_map.events[event_id2].x + 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].x == $game_map.events[event_id2].x - 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].y == $game_map.events[event_id2].y + 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x || $game_map.events[event_id1].y == $game_map.events[event_id2].y - 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x
          return true
        else
          return false
        end
      end
    end
    if player == true
      if $game_player.x == $game_map.events[event_id1].x + 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.x == $game_map.events[event_id1].x - 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.y == $game_map.events[event_id1].y + 1 && $game_player.x == $game_map.events[event_id1].x || $game_player.y == $game_map.events[event_id1].y - 1 && $game_player.x == $game_map.events[event_id1].x   
          return true
      else
          return false
      end
    end
  end
end

Zitat
D.h so viel wie: Wenn der Gegner neben dem "Helden" steht soll er zufällig eine Aktion ausführen. Je nach Aktionspunkten ihm erlaubt sind.


Dazu kann man auch folgende Idee verwenden:
Erstelle ein Label, in dem eine Variable einen Zufallswert, mit dem Maximalwert, der Anzahl der möglichen Aktionen annehmen kann. Dann wird gegukt/abgefragt, welchen Wert die Variable hat, sobald die Variable einen Wert, der Aktion annimmt, wird abgefragt, ob die Anzahl der Punkte genügt. Falls Ja, so wird die aktion ausgeführt,und das Label beendet, ansonsten wird das Label von neu aufgeruffen. Da du willst, dass der Gegner neben dem Spieler ist, musst du vorher eine der oben genannten Möglichkeiten benutzen, um das Label überhaupt starten zu können.

Als Anmerkung: bei manchen Aktionen wie Angriff etc., kannst du noch vorher mit Variablen die Richtung ermitteln, in die das Event schauen muss, um wirklich den Spieler anzuschauen.

Ich hoffe ich hab mich halbwegs verständlich ausgedrückt.
Falls du weitere Fragen hast, helfe ich gern.

MfG
Deity

Man kann das ganze auch mit Eventing machen, was aber bei einer großen Anzahl von Events sehr aufwendig werden kann.
Für die Passierbarkeit fällt mir gerade nichts ein, aber ich antworte falls ich was finde.

MfG
Deity



Re: Hilfe zu Skripten.

Offline Soraphis

  • RTP-Mapper
  • *
  • Beiträge: 37
Re: Hilfe zu Skripten.
« Antwort #333 am: Februar 02, 2010, 21:22:38 »
hm ... meine frage past eigendlich super zum aktuellen thema ....

ich will in meinem event ein script aufrufen ...

der mir in der variable @This_X = $game_map.events[1].x
speichert, so weit - so gut. das problem ... ich möchte als array keine 1 sondern sowas wie this
da ich ja IN dem gewünschten event bin.

ich möchte nämlich das das event so allgemein wie möglich ist, das es immer wieder passt egal sogar nach copy&past

zuerst dachte ich mir... ach ist ja nicht so wild da ne 1, 18 oder 22 reinzuschreiben ... doch .... damit funzt es nicht ... die event id lese ich unten rechts ab
da steht dann z.b. 18:<eventname>
somit weis ich das die id 18 ist ... oder?

jedoch scheint das nicht so zu funzen wie ich will ... und zwar scheitert es an einer if/abfrage

und zwar an: $game_variables[1] == @This_X
die variablen id ist auch wirklich 0001 (oder muss ich die um 1 dekrementieren ?)

ach und wo ich grad dabei bin ... durch das @ ist es doch ne lokale variable .... oder?

wenn nein wie mach ich lokale ?
edit -> achja ... die variablen sollten evlt. für die ganze map (nicht das ganze game) gelten ...
edit2 ->
mein problem ist, das ich mich nur ganz wage mit scripten auskenne ... und leider nirgends eine sytax übersicht finden kann (die würde mir schon sehr helfen....)

meine idee wäre nun:
alle events um mein - vom spieler - aktiviertes event herum abzufragen, und zu checken ob der name gleich XX ist ...
wie gesagt ich brauch nur syntax hilfe ....

danke schonmal
« Letzte Änderung: Februar 03, 2010, 10:16:07 von Soraphis »
» #Es gibt 10 Arten von Menschen. Diejenigen, die das Binärsystem verstehen und diejenigen, die es nicht tun# «

Re: Hilfe zu Skripten.

Offline MicroJumper

  • Triple A
  • Event-Jongleur
  • **
  • Beiträge: 76
    • Makrosoftware.Jimdo.com
Re: Hilfe zu Skripten.
« Antwort #334 am: Februar 08, 2010, 13:46:21 »
hmm... wegen meiner frage zu der passierbarkeits abfrage...
ich hab eig. was anderes gemeint...

ich will nicht abfragen, ob EIN BESTIMMTES EVENT neben mir ist sondern ob ÜBERHAUPT EIN EVENT neben mir ist sollte ungefähr so aussehen...

also statt mit event id:
$game_player.pos?($game_map.events[1].x, $game_map.events[1].y)

ohne Event id also alle events iwie...:
$game_player.pos?($game_map.events.x, $game_map.events.y)

Beispiel wie ichs gern hätte:

Bedingung:
     Ist irgendein Event neben dem Spieler?
  wenn ja:
     Abwerfen von Item nicht erlaubt!
  wenn nein:
     Abwerfen von Item erlaubt!


Ideal wäre dan ungefähr so:

Bedingung:
     Ist irgendein Event neben dem Spieler, welches passierbar ist?
  wenn ja:
     Abwerfen von Item nicht erlaubt!
  wenn nein:
     Abwerfen von Item erlaubt!

Re: Hilfe zu Skripten.

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Hilfe zu Skripten.
« Antwort #335 am: Februar 08, 2010, 19:27:02 »
Spoiler for Hiden:
=begin
Benutzung: Um eine Abfrage zu starten, ob das Event neben einem anderem Event oder neben einem SPieler steht,
zu starten, musst du unter Conditional Branch, Script, je nach Fall folgendes eingeben:
Bei Abfrage, ob ein Event neben dem Spieler steht:
nexto_to(event_id des events,true)
Bei Abfrage, ob ein Event neben einem anderem Event steht;
next_to(event_id des ersten events, false , event_id des zweiten events)
Bei ABfrage, ob irgendein Event neben dir ist, einfach folgendes eingeben:
some_nearly_events?
Bei Abfrage, ob irgendein passables Event neben dir ist:
some_passable_events_nearly?
=end
class Game_Event
  attr_reader :id
end
class Game_Interpreter
  def some_nearly_events?
    for event in $game_map.events.values
      if next_to(event.id,true)
        return true
      end
    end
    return false
  end
  def some_passable_events_nearly?
    for event in $game_map.events.values
      if next_to(event.id,true) && right_priot(event)
        return true
      end
    end
    return false
  end
  def right_priot(event)
    return true if event.priority_type == 0 || event.priority_type == 2
    return false
  end
  def next_to(event_id1 = nil , player = false , event_id2 = nil)
    if player == false
      if $game_map.events[event_id1] != nil && $game_map.events[event_id2] != nil
        if $game_map.events[event_id1].x == $game_map.events[event_id2].x + 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].x == $game_map.events[event_id2].x - 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].y == $game_map.events[event_id2].y + 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x || $game_map.events[event_id1].y == $game_map.events[event_id2].y - 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x
          return true
        else
          return false
        end
      end
    end
    if player == true
      if $game_player.x == $game_map.events[event_id1].x + 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.x == $game_map.events[event_id1].x - 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.y == $game_map.events[event_id1].y + 1 && $game_player.x == $game_map.events[event_id1].x || $game_player.y == $game_map.events[event_id1].y - 1 && $game_player.x == $game_map.events[event_id1].x   
          return true
      else
          return false
      end
    end
  end
end

Habe das alte Script ergänzt und nun macht es genau das was du willst, glaube ich zumindestens. :D
Also es liefert true, wenn iein Event neben dir ist, wenn du in Conditional Branch: some_nearly_events? eingibst und es liefert true, oder
wenn du :some_passably_events_nearly? eingibst liefert er den Wert true, wenn ein Event neben dir ist, welches die Priorität unter oder über dem Spieler haben(Begehbar sind).

MfG
Deity



Re: Hilfe zu Skripten.

Offline _D3nn!§_

  • Hat Haare auf dem Kopf =D
  • Database-Verunstalter
  • **
  • Beiträge: 148
  • ~~(Dennisoftware)~~
    • Willste wohl gerne wissen wa? xD
Re: Hilfe zu Skripten.
« Antwort #336 am: Februar 08, 2010, 21:28:20 »
Hallo, ich weiß, dass ich hier wahrscheinlich im falschen topic schreibe (bin mir nicht klar, wo ich sonst schreiben sollte),
dennnoch wollte ich hier fragen, weil ich den Skript nicht aktualisieren will,
ob man im SMS-Skript von Woratana (http://www.rpgvx.net/index.php/topic,797.0.html)
so verändern könnte , dass man nicht mehr mit den oberen,linken Bereich klickt , sondern eher mit der Mitte .
Damit man es sich besser vorstellen kann : es soll so ausgerichtet sein, dass man mit der Maus dann Events abschießen kann . (Oder schreibe ich doch hier im richtigen topic? Weiß nicht, bin ein wenig ratlos :D .)

Ich bedanke mich im Voraus,


_D3nn!§_  
« Letzte Änderung: Februar 08, 2010, 21:38:14 von _D3nn!§_ »
Spoiler for Hiden:
-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

Spoiler for Hiden:
[desc=Es fehlen nur
nochmal eine kleine
Bugsäuberung und
der Feinschliff ! ^^
]The new Horizon of Evil 2[/desc]
[desc=Downloadbereit ! (Mein Profil oder VX Spiele !)]Gun For Fun[/desc]

Re: Hilfe zu Skripten.

Offline Soraphis

  • RTP-Mapper
  • *
  • Beiträge: 37
Re: Hilfe zu Skripten.
« Antwort #337 am: Februar 10, 2010, 20:35:04 »
hm ... geht bestimmt ... das cursor-bild muss man nur um ein wenig nach links oben verschieben
ich kenn mich jetzt nicht mit scripten aus .... aber das dürfte so schwer nicht sein ... du musst die stelle suchen an der das bild auf maus koordinaten gelegt wird un den maus koordinaten ein wenig hinzuaddieren
(wobei es auch suptrahieren sein könnte .... ists auch eher denke ich....)
» #Es gibt 10 Arten von Menschen. Diejenigen, die das Binärsystem verstehen und diejenigen, die es nicht tun# «

Re: Hilfe zu Skripten.

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Hilfe zu Skripten.
« Antwort #338 am: Februar 10, 2010, 20:51:27 »
Spoiler for Hiden:
#==============================================================================
# [VX] SMS - Simple Mouse System
#------------------------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Released on: 14/04/2008 (D-M-Y)
# ? Version: 1.5
#
# ? Credit: DerVVulfman, Near Fantastica, and Freak Boy [Mouse Input Module]
# lambchop, shun, Cybersam, Astro_mech, and Mr.Mo [Super Simple Mouse System]
# - Modern Algebra, Zeriab, Patrick Lester [Path Finding]
# - Near Fantastica, Fuso [Path Finding]
#
# - I will not be able to script this without those people and scripts above
#-----------------------------------------------------------------------------
#====[REQUIRE]=====
# - DerVVulfman's Mouse Input Module
# - Modern Algebra's Path Finding [version 2.0]
#
#====[FEATURE]=====
# - Support to use mouse in many scenes / windows
# - Mouse Pointer
# - Click on map to move player with Path Finding
# - Click on event to go talk/interact with that event
# - Click on event to walk to that event
# - You can choose scene(s) that don't want to use mouse
# - You can turn mouse ON/OFF automatically by call script:
# $scene.no_mouse = (true/false) # True to turn off mouse

#====[MOUSE TAGS]=====
# Put one (or more) of these tags in the event command 'Comment..'
# [mauto] : This event will run automatically after click on it
# [mnone] : This event will not be determine as event when click on it
# (a.k.a. Player will not interact with it)

# [mtop] : Player will always stop at tile above this event when click on it
# [mleft] : Same as [mtop], but left side
# [mright] : Same as [mtop], but right side
# [mdown] : Same as [mtop], but below
#------------------------------------------------------------------------------

module Mouse
#==============================================================================
# MOUSE SETUP PART
#----------------------------------------------------------------------------
Scroll_Delay = 30 # (in Frames)
# Mouse Delay when scroll up or down the list

Path_Finding_Iteration = 0 # (Integer, 0 for no limit)
# How deep you want path finding to process until find the way
# less number will be able to find only easy path, less lag
# high number will be able to find complicated path, possible to increase lag

Scene_No_Mouse = []
# Scene(s) that you don't want to use mouse
# e.g. Scene_No_Mouse = [Scene_File, Scene_Map, Scene_Title]

Auto_Find_Destination = true
# It will automatically find the cloeset destination on map
# when click on unpassable tile.
#==============================================================================
end

#==============================================================================
# ** Mouse Input Module
#==============================================================================
class << Mouse
  show_cursor = Win32API.new('user32', 'ShowCursor', 'l', 'l')
  show_cursor.call(0)

  $mousec = Sprite.new
  $mousec.z = 10001
  $mousec.x = $mousec.y = 1000
  $mouse_icon = $base_cursor = 'foxkeh_cursor'
  $mousec.bitmap = Cache.system($base_cursor)
  $mouse_duration = -1
  $mouse_changed = false
 
  alias wor_mouse_upd_mouse update unless $@
  def Mouse.update
    wor_mouse_upd_mouse
    if $scene.no_mouse
      $mousec.visible = false if $mousec.visible
      return
    else; $mousec.visible = true if !$mousec.visible
    end
    if $mouse_old_icon.nil? or $mouse_old_icon != $mouse_icon
      $mouse_old_icon = $mouse_icon
      $mousec.bitmap = Cache.system($mouse_old_icon)
    end
    if @pos.nil?
      $mousec.x = 1000 if $mousec.x != 1000
      $mousec.y = 1000 if $mousec.y != 1000
    else
      $mousec.x = @pos[0] - ($mousec.width / 2) if $mousec.x != @pos[0] - ($mousec.width / 2)
      $mousec.y = @pos[1] - ($mousec.height / 2) if $mousec.y != @pos[1] - ($mousec.height / 2)
    end
  end
 
  def Mouse.map_pos
    return nil if @pos == nil
    x = ($game_map.display_x / 256) + (@pos[0] / 32)
    y = ($game_map.display_y / 256) + (@pos[1] / 32)
    return [x, y]
  end
end

#==============================================================================
# ** Input
#==============================================================================
class << Input
  alias wor_input_upd_mouse update unless $@
  alias wor_input_trig_mouse trigger? unless $@
  alias wor_input_rep_mouse repeat? unless $@
  def Input.update
    wor_input_upd_mouse
    Mouse.update
  end
 
  def Input.trigger?(input)
    return wor_input_trig_mouse(input) if Mouse.pos.nil?
    if input == Input::B and !$scene.no_mouse
      return (wor_input_trig_mouse(input) or Mouse.click?(2))
    elsif input == Input::C and !$scene.no_mouse
      if $scene.is_a?(Scene_Map) and !$game_message.visible
        return wor_input_trig_mouse(input)
      else
        return (wor_input_trig_mouse(input) or Mouse.click?(1))
      end
    else
      return wor_input_trig_mouse(input)
    end
  end
 
  def Input.repeat?(input)
    if input == Input::B and !$scene.no_mouse
      return (wor_input_rep_mouse(input) or Mouse.click?(2))
    else
      return wor_input_rep_mouse(input)
    end
  end
end
#==============================================================================
# ** Graphics
#==============================================================================
class << Graphics
  alias wor_graph_fadeout_mouse fadeout unless $@
  def Graphics.fadeout(frames = 1)
    $mousec.visible = false if !$mousec.nil?
    wor_graph_fadeout_mouse(frames)
  end
end
#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
  alias wor_winsel_ini_mouse initialize
  alias wor_winsel_upd_mouse update
  def initialize(*args)
    wor_winsel_ini_mouse(*args)
    @scroll_wait = 0
    @cursor_wait = 0
  end

  def update
    wor_winsel_upd_mouse
    update_mouse if self.active and self.visible
  end
 
  def update_mouse
    @cursor_wait -= 1 if @cursor_wait > 0
    (0..@item_max - 1).each do |i|
      irect = item_rect(i)
      irx = self.x + 16 + irect.x - self.ox
      iry = self.y + 16 + irect.y - self.oy
      move_cursor(i) if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end

  def move_cursor(index)
    return if @index == index
    @scroll_wait -= 1 if @scroll_wait > 0
    row1 = @index / @column_max
    row2 = index / @column_max
    bottom = self.top_row + (self.page_row_max - 1)
    if row1 == self.top_row and row2 < self.top_row
      return if @scroll_wait > 0
      @index = [@index - @column_max, 0].max
      @scroll_wait = Mouse::Scroll_Delay
    elsif row1 == bottom and row2 > bottom
      return if @scroll_wait > 0
      @index = [@index + @column_max, @item_max - 1].min
      @scroll_wait = Mouse::Scroll_Delay
    else
      @index = index
    end
    return if @cursor_wait > 0
    Sound.play_cursor
    @cursor_wait += 2
  end
end
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
  def item_rect(index)
    return Rect.new(0, index * 96, contents.width, 96)
  end
end
#==============================================================================
# ** Window_NameInput
#==============================================================================
class Window_NameInput < Window_Base
  alias wor_winnam_upd_mouse update
  def update
    wor_winnam_upd_mouse
    if self.active and self.visible
      (0..TABLE[@mode].size - 1).each do |i|
      irect = item_rect(i)
      irx = self.x + 16 + irect.x - self.ox
      iry = self.y + 16 + irect.y - self.oy
      @index = i if Mouse.area?(irx, iry, irect.width, irect.height)
      end
    end
  end
end
#==============================================================================
# ** Window_PartyCommand
#==============================================================================
class Window_PartyCommand < Window_Command
  def update_mouse
    (0..@item_max - 1).each do |i|
    irect = item_rect(i)
    irx = self.viewport.ox + 16 + irect.x - self.ox
    iry = 288 + 16 + irect.y - self.oy
    self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end
end
#==============================================================================
# ** Window_ActorCommand
#==============================================================================
class Window_ActorCommand < Window_Command
  def update_mouse
    (0..@item_max - 1).each do |i|
    irect = item_rect(i)
    irx = self.viewport.ox + 288 + 16 + irect.x
    iry = 288 + 16 + irect.y
    self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end
end
#==============================================================================
# ** Window_Message
#==============================================================================
class Window_Message < Window_Selectable
  def update_mouse
    (0..@item_max - 1).each do |i|
      irect = item_rect(i)
      irx = self.x + 16 + irect.x - self.ox
      iry = self.y + 16 + irect.y - self.oy + ($game_message.choice_start * WLH)
      self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end
end

#==============================================================================
# ** Scene_Base
#==============================================================================
class Scene_Base
  alias wor_scebase_posstr_mouse post_start
  alias wor_scebase_preter_mouse pre_terminate
  attr_accessor :no_mouse
 
  def post_start
    if !$mousec.nil?
      $mousec.visible = true
      @no_mouse = false
      # If this scene is in Scene_No_Mouse
      Mouse::Scene_No_Mouse.each do |sce|
        if $scene.is_a?(sce)
          $mousec.visible = false
          @no_mouse = true
        end
      end
    end
    wor_scebase_posstr_mouse
  end
 
  def pre_terminate
    $mousec.visible = false if !$mousec.nil?
    wor_scebase_preter_mouse
  end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_Base
  alias wor_scefil_upd_mouse update
  def update
    (0..@item_max - 1).each do |i|
      ix = @savefile_windows[i].x
      iy = @savefile_windows[i].y
      iw = @savefile_windows[i].width
      ih = @savefile_windows[i].height
      if Mouse.area?(ix, iy, iw, ih)
        @savefile_windows[@index].selected = false
        @savefile_windows[i].selected = true
        @index = i
      end
    end
    wor_scefil_upd_mouse
  end
end
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
  alias wor_scemap_upd_mouse update
 
  def update
    wor_scemap_upd_mouse
    if !@no_mouse
      # IF left click
      if Mouse.click?(1) and !$game_message.visible and
        !$game_map.interpreter.running?
        mouse_xy = Mouse.map_pos
        return if mouse_xy.nil?
        old_direction = $game_player.direction
        $game_player.turn_toward_pos(mouse_xy[0], mouse_xy[1])
        # IF click near player, and there's trigger to event, run event
        return if ($game_player.front?(mouse_xy[0],mouse_xy[1]) and
      $game_player.check_action_event)
        $game_player.clear_path
        $game_player.mouse_force_path(mouse_xy[0], mouse_xy[1])
      # IF middle click
      elsif Mouse.click?(3) and !$game_message.visible and
        !$game_map.interpreter.running?
        mouse_xy = Mouse.map_pos
        return if mouse_xy.nil?
        $game_player.clear_path
        $game_player.turn_toward_pos(mouse_xy[0], mouse_xy[1])
      end
    end
  end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character
  def mouse_force_path(x, y, auto_check = ($game_map.events_xy(x, y).size > 0))
    ori_x, ori_y = x, y
    path_xy = $game_map.find_dest_xy(x, y, @x, @y)
    return if path_xy.nil?
    x, y = path_xy[0] ,path_xy[1]
    # Force_move from MA's path finding
    if map_passable?(x,y)
      path = $game_map.find_path (self.x, self.y, x, y, false,
      Mouse::Path_Finding_Iteration, self)
      path.reverse!
      # Turn toward destination
      newmove = RPG::MoveCommand.new
      newmove.code = 45 # Script..
      newmove.parameters = ["turn_toward_pos(#{ori_x},#{ori_y})"]
      path.push newmove
      # Add script to check if there's event trigger
      if auto_check
        newmove = RPG::MoveCommand.new
        newmove.code = 45
        newmove.parameters = ['check_action_event']
        path.push newmove
      end
      # Add an end command
      path.push (RPG::MoveCommand.new (0))
      move_route = RPG::MoveRoute.new
      move_route.list = path
      move_route.repeat = false
      force_move_route (move_route)
    end
  end
 
  def clear_path
    @move_route_index = 0
    @move_route = RPG::MoveRoute.new
    @move_route.repeat = false
  end

  def turn_toward_pos(x,y)
    sx = distance_x_from_pos(x)
    sy = distance_y_from_pos(y)
    if sx.abs > sy.abs                    # Horizontal distance is longer
      sx > 0 ? turn_left : turn_right
    elsif sx.abs < sy.abs                 # Vertical distance is longer
      sy > 0 ? turn_up : turn_down
    end
  end

  def distance_x_from_pos(x)
    sx = @x - x
    if $game_map.loop_horizontal?
      if sx.abs > $game_map.width / 2
        sx -= $game_map.width
      end
    end
    return sx
  end
 
  def distance_y_from_pos(y)
    sy = @y - y
    if $game_map.loop_vertical?
      if sy.abs > $game_map.height / 2
        sy -= $game_map.height
      end
    end
    return sy
  end
 
  def front?(x,y)
    case @direction
    when 2; return true if (x == @x-1 and y == @y)
    when 4; return true if (x == @x and y == @y-1)
    when 6; return true if (x == @x and y == @y+1)
    when 8; return true if (x == @x+1 and y == @y)
    end
    return false
  end
end
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  # Find Destination for Path Finding
  def find_dest_xy(x, y, self_x, self_y)
    has_event = false
    event_ary = events_xy(x, y)
    # Remove Event that has 'mnone'
    (event_ary).each do |i|
      event_ary.delete(i) if i.comment?('[mnone]')
    end
    # Return original x, y if there are more than 1 events,
    # or the only event has priority type 'Below Character'
    if (event_ary.size == 1 and event_ary[0].priority_type != 1) or
    event_ary.size > 1
      return [x, y]
    elsif event_ary.size == 1
      # IF there's event, check for reserved direction
      has_event = true
      if event_ary[0].comment?('[mtop]')
        return [x, y-1]
      elsif event_ary[0].comment?('[mleft]')
        return [x-1, y]
      elsif event_ary[0].comment?('[mright]')
        return [x+1, y]
      elsif event_ary[0].comment?('[mdown]')
        return [x, y+1]
      elsif event_ary[0].comment?('[mauto]')
        event_ary[0].start
        return nil
      end
    end
    # Check for passable direction or it's Same X/Y or doesn't allow auto-find
    if (event_ary.size != 1 and $game_player.map_passable?(x, y)) or (self_x == x and self_y == y) or
  (!Mouse::Auto_Find_Destination and !has_event)
      return [x, y]
    end
    # Find nearest path
    nx = (self_x - x)
    ny = (self_y - y)
    npath_real = []
    if (nx.abs < ny.abs and nx != 0) or (ny == 0) # X is closer than Y
      npath_real << (nx > 0 ? 'right' : 'left')
    else # EQUAL, or Y is closer than X
      npath_real << (ny > 0 ? 'up' : 'down')
    end
    npath_real_tran = move_translate(npath_real, x, y) # Translate word to value
    # If the fastest way is possible, return it
    if $game_player.map_passable?(npath_real_tran[0][0], npath_real_tran[0][1])
      return [npath_real_tran[0][0], npath_real_tran[0][1]]
    end
    npath = []
    # Add other possible ways
    npath << 'up' if !npath_real.include?('up')
    npath << 'left' if !npath_real.include?('left')
    npath << 'down' if !npath_real.include?('down')
    npath << 'right' if !npath_real.include?('right')
    npath = move_translate(npath, x, y) # Translate other possible ways
    (0..npath.size-1).each do |np| # Calculate distance from each point
      npath[np] =
      [npath[np], (self_x - npath[np][0]).abs + (self_y - npath[np][1]).abs]
    end
    npath = npath.sort_by {|i| i[1]} # Sort by Distance
    # Check to move~
    npath.each do |n|
      return [n[0][0], n[0][1]] if $game_player.map_passable?(n[0][0], n[0][1])
    end
    # IF there's no way to go
    return nil
  end
 
  def move_translate(ary, x, y)
    (0..ary.size - 1).each do |n|
      if ary[n] == 'up'
        ary[n] = [x, y-1]
      elsif ary[n] == 'left'
        ary[n] = [x-1, y]
      elsif ary[n] == 'right'
        ary[n] = [x+1, y]
      elsif ary[n] == 'down'
        ary[n] = [x, y+1]
      end
    end
    return ary
  end
end
#==============================================================================
# ** Game_Event
#==============================================================================
class Game_Event < Game_Character
  def comment?(comment, return_index = false )
    if !@list.nil?
      for i in 0...@list.size - 1
        next if @list[i].code != 108
        (0..@list[i].parameters.size - 1).each do |j|
          if @list[i].parameters[j].include?(comment)
            return [true, [i,j]] if return_index
            return true
          end
        end
      end
    end
    return [false, nil] if return_index
    return false
  end
end

Du musst das Script einfach mit dem von Wora ersetzen, und schon wird das Zentrum des Bildes als Maus gewählt. :)

MfG
Deity



Re: Hilfe zu Skripten.

Offline _D3nn!§_

  • Hat Haare auf dem Kopf =D
  • Database-Verunstalter
  • **
  • Beiträge: 148
  • ~~(Dennisoftware)~~
    • Willste wohl gerne wissen wa? xD
Re: Hilfe zu Skripten.
« Antwort #339 am: Februar 11, 2010, 08:36:39 »
@ Ðeity :

Danke es funktioniert ! ^^
« Letzte Änderung: Februar 11, 2010, 17:47:44 von _D3nn!§_ »
Spoiler for Hiden:
-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

Spoiler for Hiden:
[desc=Es fehlen nur
nochmal eine kleine
Bugsäuberung und
der Feinschliff ! ^^
]The new Horizon of Evil 2[/desc]
[desc=Downloadbereit ! (Mein Profil oder VX Spiele !)]Gun For Fun[/desc]

Re: Hilfe zu Skripten.

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Hilfe zu Skripten.
« Antwort #340 am: Februar 11, 2010, 20:06:36 »
Immer wieder gern. ;)

MfG
Deity



Re: Hilfe zu Skripten.

Offline Redeemer

  • Database-Verunstalter
  • **
  • Beiträge: 179
Re: Hilfe zu Skripten.
« Antwort #341 am: März 01, 2010, 11:26:46 »
Hiho,

ist wahrscheinlich ne ganz simple sache aber ich finds net xD

unzwar hätte ich gern das die Faces im Kampf nicht angezeigt oder auch einfach transparent sind.



Also die schwarzumrandeten facesets müssen wech ^^ aber NUR im Kampf im menü müssen sie da bleiben.

Muss ich da iwo was an den Standart Scripten vom Maker ändern, wenn ja wo? Oder brauch ich dafür nen Extra Script?

Da ich ja iwo was an oder mit Scripten ändern muss dacht ich passt hier rein ^^.

thx für jede Hilfe :D

EDIT: Ok Problem gelöst musste an dem Script für das KS was ändern nicht an dem normalen KS Script wie ich erst dachte ^^.



mfg
« Letzte Änderung: März 03, 2010, 10:59:47 von Redeemer »

Re: Hilfe zu Skripten.

Vylf

  • Gast
Re: Hilfe zu Skripten.
« Antwort #342 am: März 06, 2010, 23:57:44 »
Hey Leute ich hab echt keine ahnung von skripten und so aba ich will unbedingt in meinem RPG das sideview battlesystem haben und weiß echt nicht wie ich das machen sol kann mir einer pls genauestens dabei helfen.


Re: Hilfe zu Skripten.

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: Hilfe zu Skripten.
« Antwort #343 am: März 07, 2010, 00:00:45 »
Am einfachsten wäre es für dich, erstmal die Demo runterzuladen, und dein Spiel in die Demo zu implementireren, und nicht anders rum. Dabei musst du halt daraufachten, dass keiner der Statuse,Skills und weiteren Voreinstellungen nicht verloren gehen. Hast du das geschaft, ist dein Spiel mit SideView kompartible. :)
Und btw. da gibt es doch eine Anleitung oder nicht?!?

MfG
Deity



Re: Hilfe zu Skripten.

Vylf

  • Gast
Re: Hilfe zu Skripten.
« Antwort #344 am: März 07, 2010, 00:04:03 »
ja ich check die anleitung aba nciht und welche demo meinst du eigentlcih.

mfgz Vylf

 


 Bild des Monats

rooftop party

Views: 3583
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