RPGVX.net

  RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: Snake am Januar 27, 2008, 19:58:24

Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 19:58:24
Ein weiteres, cooles Script von DeadlyDan.

Screens:
(http://img120.imageshack.us/img120/9886/rmvxfogve2.jpg)
(http://img153.imageshack.us/img153/4256/rmvxfog2ag1.jpg)

#==============================================================================
# ¦ DeadlyDan_MapFog by DeadlyDan
#------------------------------------------------------------------------------
#  Allows maps to have fogs like in RPG Maker XP
#==============================================================================
# Usage:
=begin
  
  To initialize a fog for a current map you must:
  
  1) Create a map event and set it to only come on when Self Switch A is on.
  2) Rename it to FOG. (Case sensitive, so it has to be FOG)
  3) Set it to a Parallel Process.
  4) Add for example, the following code into a Script Code event command:
  
  $game_map.fog_name = "fog"               # Filename of fog image located in the Pictures folder
  $game_map.fog_zoom = 300                 # How much to zoom into the fog image
  $game_map.fog_sx = 1                           # The scrolling speed across the x axis
  $game_map.fog_sy = 1                           # The scrolling speed across the y axis
  $game_map.fog_target_opacity = 80    # The opacity of the fog
  $game_map.fog_show                             # Always call this after changing fog variables  
  
  5) Then, add a Control Self Switch after that Script Code, and set it to turn A off.
  
  (Note)
  It is absolutely vital that you put the event name to FOG and set it to a Parallel Proccess and also set it to
  only run when Self-Switch A is on.
  
  Make sure you place this script after all other scripts except for Main.
  
  (Extras)
  You can also use extra commands to change the fog settings, such as the following example:
  
  $game_map.fog_tone = Tone.new ( 100, 0, 0, 0 )
  $game_map.fog_blend_type = 1 # ( 0 = NONE, 1 = ADD, 2 = SUBTRACT )
  
  (Important!)
  When you want to have a map with no fog, do all of the above but instead of seting the fog options and then
  calling $game_map.fog_show, just add a Script Code event command and place in it $game_map.fog_clear.
  
  This will clear the fog settings and the fog will dissapear, every map has to have a fog event in it, else maps
  will keep all other maps fog settings that might be unintentional on the users side.
  
=end

class Game_Temp
  attr_accessor :fog_name
  attr_accessor :fog_opacity
  attr_accessor :fog_target_opacity
  attr_accessor :fog_blend_type
  attr_accessor :fog_zoom
  attr_accessor :fog_sx
  attr_accessor :fog_sy
  attr_accessor :fog_tone
  
  alias original_initialize initialize
  def initialize
    original_initialize
    @fog_name = ""
    @fog_tone = Tone.new ( 0, 0, 0, 0 )
    @fog_opacity = 0
    @fog_target_opacity = 0
    @fog_blend_type = 0
    @fog_zoom = 100
    @fog_sx = 0
    @fog_sy = 0
  end
  
end

class Game_Map
  attr_accessor :fog_name
  attr_accessor :fog_opacity
  attr_accessor :fog_target_opacity
  attr_accessor :fog_blend_type
  attr_accessor :fog_zoom
  attr_accessor :fog_sx
  attr_accessor :fog_sy
  attr_accessor :fog_ox
  attr_accessor :fog_oy
  attr_accessor :fog_tone
  attr_accessor :fog_start_loop
  attr_accessor :fog_eventid
  attr_accessor :fog_visible
  attr_accessor :fog
  
  alias original_initialize initialize
  def initialize
    original_initialize
    @fog = Plane.new ( @viewport1 )
    @fog_ox = 0
    @fog_oy = 0
  end
  
  alias original_setup setup
  def setup ( map_id )
    original_setup ( map_id )
    fog_event
  end

  alias original_update update
  def update
    original_update
    if ( @fog_visible and @fog )
      fog_update
    end
  end  

  def fog_init
      @fog_name = $game_temp.fog_name
      @fog_tone = $game_temp.fog_tone
      @fog_opacity = $game_temp.fog_opacity
      @fog_target_opacity = $game_temp.fog_target_opacity
      @fog_blend_type = $game_temp.fog_blend_type
      @fog_zoom = $game_temp.fog_zoom
      @fog_sx = $game_temp.fog_sx
      @fog_sy = $game_temp.fog_sy
      @fog_tone_target = Tone.new ( 0, 0, 0, 0 )
      @fog_tone_duration = 0
      @fog_opacity_duration = 0
      @fog_opacity_target = 0
      @fog_previous_name = ""
      fog_setup
  end
  
  def fog_setup
    fog_hide
    if ( ( @fog_previous_name != @fog_name ) and ( @fog_name != "" ) )
      @fog.bitmap = Cache.picture ( @fog_name )
      @fog_name_previous = @fog_name
      @fog_opacity = @fog_target_opacity
      @fog.opacity = @fog_opacity
      @fog.blend_type = @fog_blend_type
      @fog.zoom_x = @fog_zoom / 100
      @fog.zoom_y = @fog_zoom / 100
      @fog.ox = @fog_ox
      @fog.oy = @fog_oy
      @fog.tone = @fog_tone
      @fog.z = 99
      @fog_visible = true
    else
       fog_hide
    end
  end
  
  def fog_update
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0

    if ( @fog_tone_duration >= 1 )
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if ( @fog_opacity_duration >= 1 )
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
    @fog.opacity = @fog_opacity
    @fog.blend_type = @fog_blend_type
    @fog.zoom_x = @fog_zoom / 100
    @fog.zoom_y = @fog_zoom / 100
    @fog.ox = @fog_ox
    @fog.oy = @fog_oy
    @fog.tone = @fog_tone
  end
  
  def fog_show
    fog_init
  end
  
  def fog_hide
    @fog_visible = false
    @fog_opacity = 0
    $game_temp.fog_opacity = 0
  end
  
  def fog_clear
    @fog_visible = false
    @fog_opacity = 0
    $game_temp.fog_opacity = 0
    @fog_target_opacity = 0
    $game_temp.fog_target_opacity = 0
    fog_show
  end
    
  def scroll_up ( distance )
    if ( loop_vertical? )
      @display_y += @map.height * 256 - distance
      @display_y %= @map.height * 256
      @parallax_y -= distance
      @fog_oy -= distance / 8.0
    else
      last_y = @display_y
      @display_y = [@display_y - distance, 0].max
      @parallax_y += @display_y - last_y
      @fog_oy += ( @display_y - last_y ) / 8.0
    end
  end
  
  def scroll_down ( distance )
    if ( loop_vertical? )
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
      @fog_oy += distance / 8.0
    else
      last_y = @display_y
      @display_y = [@display_y + distance, (height - 13) * 256].min
      @parallax_y += @display_y - last_y
      @fog_oy += ( @display_y - last_y ) / 8.0
    end
  end

  def scroll_left ( distance )
    if ( loop_horizontal? )
      @display_x += @map.width * 256 - distance
      @display_x %= @map.width * 256
      @parallax_x -= distance
      @fog_ox -= distance / 8.0
    else
       last_x = @display_x
      @display_x = [@display_x - distance, 0].max
      @parallax_x += @display_x - last_x
      @fog_ox += ( @display_x - last_x ) / 8.0
    end
  end
  
  def scroll_right ( distance )
    if ( loop_horizontal? )
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
      @fog_ox += distance / 8.0
    else
      last_x = @display_x
      @display_x = [@display_x + distance, (width - 17) * 256].min
      @parallax_x += @display_x - last_x
      @fog_ox += ( @display_x - last_x ) / 8.0
    end
  end
  
  def setup_events
    @fog_eventid = 0
    @events = {}
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events)
      if ( @events.name == "FOG" )
        @fog_eventid = i
      end
    end
    @common_events = {}
    for i in 1...$data_common_events.size
      @common_events = Game_CommonEvent.new(i)
    end
  end
    
  def fog_event
    if ( @fog_eventid != 0 )
      key = @events[@fog_eventid].selfswitch
      $game_self_switches[key] = true
    end
  end

end

class Scene_Map < Scene_Base
  
  alias original_start start
  def start
    original_start
    $game_map.fog_show
    $game_map.fog_event
  end

  alias original_terminate terminate
  def terminate
    original_terminate
    $game_map.fog_hide
  end
  
end

class Game_Player < Game_Character
  
  alias original_perform_transfer perform_transfer
  def perform_transfer
    original_perform_transfer
    $game_map.setup_events
    $game_map.fog_event
    $game_map.fog_show
  end
  
end

class Game_Event < Game_Character

  def name
    return @event.name
  end
  
  def selfswitch
    key = [@map_id, @event.id, 'A']
    return key
  end
  
end

Ihr könnt z.b denn Fog aus dem RTP des XP's nehmen.
Müsst ihn nur demenstprechend umbennen.

Quelle:
http://www.rpgrevolution.com/forums/?showtopic=8337 (http://www.rpgrevolution.com/forums/?showtopic=8337)

So muss euer Event aussehen damit es klappt!
(http://b1u3ray.kilu2.de/imgupp/thumbs/900424frgn.jpg) (http://b1u3ray.kilu2.de/imgupp/viewer.php?id=900424frgn.jpg)

Edit von ERZENGEL:
Bessere Alternative ohne Bugs!:
Eine weitere Alternative für Fogs: [url]http://www.rpgrevolution.com/forums/?showtopic=9385[/url] ([url]http://www.rpgrevolution.com/forums/?showtopic=9385[/url])
Ich verlinke nur mal, da woratana nicht möchte, dass es außerhalb von RRR gepostet wird, ich hoffe ihr könnt soweit englisch. Ah ja, ich finde alle Lösungen gut, will damit nicht, dass die anderen untergehen, nur kann man sich bei der Auswahl vielleicht besser entscheiden, was das beste für einen persönlich ist.
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 27, 2008, 20:28:56
Sehe schon, du hast schon die Version genommen, in der $game_map.fog_show in der Dokumentation ist, war vorher ja noch nen kleiner Fehler. Allerdings funktioniert das ganze trotz Ersetzen bei mir immer noch nicht, mal sehen was DeadlyDan sagt. Hast dus probiert, Snake?
btw. Wär vielleicht gut, wenn du immer zu nem original-Thread verlinkst für Leute, die damit Probleme haben oder sich bedanken wollen.
Titel: Map_Fog_Script
Beitrag von: Baur am Januar 27, 2008, 20:42:42
Könnte man schon einsetzen, aber im Moment ist's mir noch zu umständlich, da ja jede Map ein Par-Event braucht, auch die, wo man keinen Fog haben will.

Wär besser, wenn er was mit Comment-Abfrage oder Mapnamen-Endung mache würde.
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 27, 2008, 20:47:17
Hm, Rabu hast du schon getestet ob das Skript funktioniert? Irgendwie will das bei mir einfach nicht, kommt leider Gottes jetzt auch keine Fehlermeldung mit dem neuen Code den Deadly oben verwechselt hatte. kommt aber auch kein Fog, wär schön, wenn das mal jemand testen kann, damit ich weiß, wo der Fehler liegt.
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 20:50:16
Zitat von: Dainreth
Sehe schon, du hast schon die Version genommen, in der $game_map.fog_show in der Dokumentation ist, war vorher ja noch nen kleiner Fehler. Allerdings funktioniert das ganze trotz Ersetzen bei mir immer noch nicht, mal sehen was DeadlyDan sagt. Hast dus probiert, Snake?
btw. Wär vielleicht gut, wenn du immer zu nem original-Thread verlinkst für Leute, die damit Probleme haben oder sich bedanken wollen.



So Quelle hinzugefügt.
Ja ich habs probiert^^
Hab DeadlyDan sogar in MSN geaddet weil er
nen fehler machte... Deswegen hab ich jetzt auch das neue schon drin.
falls es bei dir ned funzt... Dein Event muss EXAKT so aussehen:
(http://b1u3ray.kilu2.de/imgupp/thumbs/900424frgn.jpg) (http://b1u3ray.kilu2.de/imgupp/viewer.php?id=900424frgn.jpg)
Titel: Map_Fog_Script
Beitrag von: Baur am Januar 27, 2008, 20:53:34
Dainreth, weiss nur das dieses Fog-Event den Namen haben "FOG" haben muss. Wie's Snake im Screenshot hat.

Nicht selbst getestet. mir ist's noch zu umständlich.
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 27, 2008, 21:07:11
Jop, habs auch so, habs auch grad im anderen Forum gepostet und der Screen sieht so aus, weiß nicht, was noch falsch sein könnte. Trotzdem danke an euch beide.
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 21:23:30
Zitat von: Dainreth
Jop, habs auch so, habs auch grad im anderen Forum gepostet und der Screen sieht so aus, weiß nicht, was noch falsch sein könnte. Trotzdem danke an euch beide.

fast du vielleicht die fog datei ned im Pictures Ordner?
Oder irgendwas falsch benannt?
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 27, 2008, 21:25:25
fog ist der, den Deadly gepostet hat importiert in den Picture Ordner, umbenannt habe ich nichts, das ist das komische, was könnte noch falsch benannt sein?
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 21:41:50
Zitat von: Dainreth
fog ist der, den Deadly gepostet hat importiert in den Picture Ordner, umbenannt habe ich nichts, das ist das komische, was könnte noch falsch benannt sein?

Hmm...
Kannst du ma bitte n Screen von deinem Event machen?
Evtl. haste doch was falsch gemacht^^
Oder du hast was falsches in deiner Scriptbox...
Versuch ma das:
$game_temp.fog_name = "fog"
$game_temp.fog_zoom = 300                
$game_temp.fog_sx = 1              
$game_temp.fog_sy = 1                        
$game_temp.fog_target_opacity = 80    
$game_map.fog_show
Titel: Map_Fog_Script
Beitrag von: Talyana Meriweather Rahl am Januar 27, 2008, 21:49:23
Was ist denn ein Fog?? |D
Titel: Map_Fog_Script
Beitrag von: Goldenboss am Januar 27, 2008, 21:51:32
Fog = Mist = Nebel ;)
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 21:52:00
Zitat von: Talyana Meriweather Rahl
Was ist denn ein Fog?? |D

Fog = Nebel
Siehst du ja an denn beiden Screen ganz oben.
Damit kannst du eben z.b Nebel rufen.

EDIT:
zu langsam... Ich sollte aufhören das immernoch zu
umschreiben xDD
Titel: Map_Fog_Script
Beitrag von: Talyana Meriweather Rahl am Januar 27, 2008, 23:07:34
Ich finde der untere Screen sieht garnicht wie ein Nebel aus sondern mehr wie so Schatten von Bäume die den Himmel vedecken deswegen war ich etwas irritiert sorry|D
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 27, 2008, 23:22:26
Zitat von: Talyana Meriweather Rahl
Ich finde der untere Screen sieht garnicht wie ein Nebel aus sondern mehr wie so Schatten von Bäume die den Himmel vedecken deswegen war ich etwas irritiert sorry|D


Ja klar das soll das auich darstellen^^
Aber im XP gabs das ja auch schon... Lief auch unter Fogs.
Im grunde genommen kannst du damit alles anzeigen lassen was du willst.
Sogar wolken!
(http://b1u3ray.kilu2.de/imgupp/thumbs/659911Wolken^^.jpg) (http://b1u3ray.kilu2.de/imgupp/viewer.php?id=659911Wolken^^.jpg)

Du musst nur die passenden Fogs importieren und
das Script dementsprechend umbennen (also das Call Event)
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 28, 2008, 15:25:55
Damn, habe jetzt dank Deadly meinen Fehler raus, hatte statt dem _temp immer _map stehen. Na ja, Problem gelöst und es funktioniert, danke an euch!
Titel: Map_Fog_Script
Beitrag von: Snake am Januar 28, 2008, 16:02:32
Hua^^
Bitte das Script nochma neu in euer Game einfügen.
Durch einen Fehler haben sie sämtliche NPC's nicht mehr bewegt.
Das wurde jetzt gefixxt^^
Titel: Map_Fog_Script
Beitrag von: Yatzumo am Januar 28, 2008, 16:14:05
Lol. ^^
Da hatte der Deadly doch die selbe Idee wie ich. xD Einfach zum größten Teil das alte Fog-Script aus dem XP zu kopieren und einfach kompatibel für den VX zu machen. Witzig daran ist, dass wirs fast gleich umgesetzt haben.. xD

Ich bevorzuge aber, ein Fog mit dem Namen der Map anzeigen zu lassen.
Doof daran nur, dass man dann keine größe, zoom, opacity etc. angeben kann. Aber ich denke, dass man da immer die Standard-Einstellungen nehmen kann..

Zur Not kann man ja auch nen kleines Call Script am Anfang der Map aufrufen, was die Standard-Einstellungen verändert. ^^

MFG Yatzumo
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 28, 2008, 16:28:14
Du hast dafür auch ein Skript entworfen?
Wenn ich das jetzt richtig verstanden habe, müsste man bei deiner Variante nicht auf jeder Map ein Parallels Event legen, oder? Aber man kann, muss aber nicht die Eigenschaften verändern?
Titel: Map_Fog_Script
Beitrag von: Baur am Januar 28, 2008, 16:35:01
Keiner mag meinen Comment-Lösungs-Vorschlag, gab's doch früher öfters, denk nur mal an das Shadow und Mirror und Sun-Script.

Scheint mir iwie am einfachsten. Die Lösung von DeadlyDan ist auf jedenfalls nicht mein Ding, auf jeder Map ein Par-Event, auch wenn ich gar keinen Fog da haben will. (nur um den Fog abzuschalten)
Titel: Map_Fog_Script
Beitrag von: Dainreth am Januar 28, 2008, 16:39:31
Genau das gefällt mir auch nicht so sonderlich, ich hasse unnötige Events, sowas per Comment-Event wär sicher auch klasse und einfacher. Wenn man dann für eine Map extra Einstellungen vornehmen möchte wärs halt gut, wenn man das noch mit nem kleinen Call Script machen kann.
Titel: Map_Fog_Script
Beitrag von: Baur am Januar 28, 2008, 16:43:35
Natürlich gibt's auch die Möglichkeit, das über Anhängsel von Mapnamen zu machen, aber dann gibt's wieder Probs mit irgendwelchen Location-Scripts.

Von Par-CE's halt ich jetzt wieder nicht zu viel, die sollten für Event-Coding reserviert sein. Bei dem KS werden die CE's wohl wieder über die Maßen beansprucht. (AKS)
Titel: Map_Fog_Script
Beitrag von: Yatzumo am Januar 29, 2008, 17:21:58
@Dainreth
Ja, hast es richtig verstanden. ^^

Wenn ich Zeit habe, setz ich mich mal ran, dass ich das weiter mache. ^^

MFG Yatzumo
Titel: Map_Fog_Script
Beitrag von: Dainreth am Februar 11, 2008, 14:51:11
Jetzt muss ich leider wieder 'nen älteren Thread ausgraben..
Ihr habt das Skript ja ausprobiert und es funktioniert. Dennoch hätte ich mal eine Bitte an jemanden, der Zeit dazu findet. Testet mal das Skript und speichert dann ab..habe rausgefunden, dass bei mir ein Fehler zustande kommt, bin mal gespannt, ob das nur bei mir der Fall ist.
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Februar 11, 2008, 15:22:15
@Dainreth: Ist bei mir dasselbe ;)Aber ich kenne mich mit der Marshal-Klasse nicht so aus. Kann auch im Skript (auf die schnelle) nix entdecken und die Plane-Klasse ist ja hauptsächlich für Fogs und Panoramas zuständig, deswegen müsste es laufen. Bin gespannt was der Fehler war oder die Lösung ist ^^
Titel: Map_Fog_Script
Beitrag von: Onkel Hell am Februar 11, 2008, 16:11:08
was fürn fehler taucht denn auf?
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Februar 11, 2008, 19:06:19
(http://imagesload.net/daten_no/1202753133_Zwischenablage01.png)
Joa.. kenn mich wie gesagt mit der Marshal-Klasse net aus..
Titel: Map_Fog_Script
Beitrag von: Yatzumo am Februar 11, 2008, 21:37:56
Ich würde mal sagen, dass man da noch was für das laden von Games schreiben müsste. Son Initialisieren oder so, was dann nochmal extra kommt, wenn mans läd. Da man das ganze ja über nen Event aufruft, was nach betreten der Map gestartet wird, kann es sein, dass nach dem Speichern alles was damit zu tun hat weg ist. Ich hab kA wie genau mans machen kann, hatte aber mal genau das Selbe Problem, was die Lightmaps angeht.

MFG Yatzumo
Titel: Map_Fog_Script
Beitrag von: Dark Angel am Februar 22, 2008, 14:30:03
Nun die Marshal-Klasse ist ja für das Speichern und das laden verantwortlich.
Da aber Plane eine Klasse mit einer "dynamischen" Bitmap ist kann die Klasse
Plane nicht gespeichert werden. Man müsste vorher die Plane disposen,
dann dumpen und dann wieder laden.
Ich versuche zwar da eine geeignete Möglichkeit zu finden aber zur Zeit ist es so, dass
der Fog dann nich da is und dann einen erschlägt indem er auftaucht.
Ich arbeite an einem eigenen Fogscript welches einige Elemente übernimmt von
diesem Script übernimmt. Habe auch schon gute Fortschritte erzielt.
Wenn es fertig ist kann ich es ja uploaden.

MfG

euer neuer Dark Angel :)
Titel: Map_Fog_Script
Beitrag von: Dimidimadmitri am Februar 22, 2008, 14:51:09
hört sich ja gut an  rolleyes.gif\" style=\"vertical-align:middle\" emoid=\":rolleyes:\" border=\"0\" alt=\"rolleyes.gif\" /]
Titel: Map_Fog_Script
Beitrag von: Dainreth am Februar 23, 2008, 11:01:44
DeadlyDan wollte das Problem auch fixen, allerdings hat er momentan Probleme mit seinem Rechner, ich sag bescheid, wenn er was verändert hat.

@Dark Angel
Willkommen im Forum. Hört sich gut an, ich bin gespannt.
Titel: Map_Fog_Script
Beitrag von: Dark Angel am Februar 27, 2008, 12:48:15
So Leutz. :)
Das Fogscript hat nur noch wenige Bugs und ich denke das ich es bald hochladen kann.
Es enthält die RPGXP-Fogs und darüber hinaus habe ich einen 2. FOG-Typ eingebaut.
Ihr kennt ja alle den Auto-Battlebackground. Nun es ist mir gelungen einen FOG-Typ zu schreiben,
der z.B. Hitze darstellt. Dann ist es kein Plane was eine andauernde Grafik ist sondern ein Sprite,
welches wie beim Battleback sich "wellt" aber nicht ineinander gedreht ist.
Kann aber leider noch keinen Fertigstellungstermin nennen, da ich nebenbei für Abi lernen muss.
Wenn es wieder was neues gibt geb ich euch bescheid.

@Dainreth

dankeschön ^^
Titel: Map_Fog_Script
Beitrag von: Dark Angel am Februar 27, 2008, 17:23:14
Mein Script ist fertig und funktioniert einwandfrei.^^

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']=begin

    Fog Scriptsystem VX 1.0 Release
                by Dark Angel

Deutsch/German:        
  Dieses Script wurde auf eigener Basis
  entwickelt und hat nur die scroll-Funktionen
  von DeadlyDan

Englisch/English
  This Script was developped at own base.
  It only uses the scroll-functions from the script
  by DeadlyDan
 
=end
##########################################################
##########################################################
##########################################################
# Konstanten/Constants
$FOG_FIX = 8
$FOG_DELAY = 3
$FT1DIST = 0
$FT2DIST = 8.0
$i = 0 # Zählvariable für delay / countvar for delay
##########################################################
##########################################################
##########################################################
# Andere benötigte Funktionen / other used functions
def  var_in(a,v)
  i = 0
  r = 0
  for i in a
    if v == i
      r=1
      break
    end
  end
  return r
end
##########################################################
##########################################################
##########################################################
# Andere Klassen wegen Aussehen ändern / Change other classes because of the style
class Scene_Skill
  def start
    super
    create_menu_background
    @actor = $game_party.members[@actor_index]
    @viewport = Viewport.new(0, 0, 544, 416)
    @viewport.z = 110 # NEW
    @help_window = Window_Help.new
    @help_window.viewport = @viewport
    @status_window = Window_SkillStatus.new(0, 56, @actor)
    @status_window.viewport = @viewport
    @skill_window = Window_Skill.new(0, 112, 544, 304, @actor)
    @skill_window.viewport = @viewport
    @skill_window.help_window = @help_window
    @target_window = Window_MenuStatus.new(0, 0)
    hide_target_window
  end
end
##########################################################
##########################################################
##########################################################
class Scene_Item
  def start
    super
    create_menu_background
    @viewport = Viewport.new(0, 0, 544, 416)
    @viewport.z = 110 # NEW
    @help_window = Window_Help.new
    @help_window.viewport = @viewport
    @item_window = Window_Item.new(0, 56, 544, 360)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.active = false
    @target_window = Window_MenuStatus.new(0, 0)
    hide_target_window
  end
end
##########################################################
##########################################################
##########################################################
class Game_Fog
  # Fogsprite
  attr_accessor :fog
  # Fog aktiv? / Fog active?
  attr_reader :fog_enabled
  # Fogdaten / Fogdata
  attr_reader :speed_x
  attr_reader :speed_y
  attr_reader :start_x
  attr_reader :start_y
  attr_reader :opacity
  attr_reader :zoom
  attr_reader :file
  attr_reader :running
  # Typ / Type
  attr_reader :fog_type
 
  # init
  def initialize(file, typ, opacity=200, sx=1, sy=1, spx=0, spy=0, zoom=100)
    @fog = nil
    @fog_enabled = false
    @speed_x = spy
    @speed_y = spx
    @fog_type = typ
    @start_x = sx
    @start_y = sy
    @opacity = opacity
    @zoom = zoom/100
    @file = file
  end
  # Fog-Typ 1 (um Hitze darzustellen) / Fog Type 1 (to simulate Hot air)
  def start_fog_type_1
    @fog.dispose if @fog != nil
    source = @file
    bitmap = Bitmap.new(640, 480)
    bitmap.stretch_blt(bitmap.rect, source, source.rect)
#    bitmap.radial_blur(90, 12)
    @fog = Sprite.new()
    @fog.bitmap = bitmap
    @fog.opacity = @opacity
    @fog.ox = 320
    @fog.oy = 240
    @fog.x = 272
    @fog.y = 176
    @fog.zoom_x = @fog.zoom_y = @zoom
    @fog.wave_amp = 8
    @fog.wave_length = 240
    @fog.wave_speed = 520
    @fog_enabled=true
  end
  # Fog-Typ 2 (Wolken, Sandsturm, etc) / Fog Type 2 (Sky, Sandstorm, etc)
  def start_fog_type_2
    @fog.dispose if @fog != nil
    @fog = Plane.new()
    @fog.bitmap = @file
    @fog.opacity = @opacity
    @fog.ox = @start_x
    @fog.oy = @start_y
    @fog_enabled = true
    @fog.zoom_x = @fog.zoom_y = @zoom
  end
  # update
  def update
    if @fog_type == 1 and @fog_enabled
      @fog.update
    end
    if @fog_type == 2 and @fog_enabled and @speed_x != 0 and @speed_y != 0
      if $i == $FOG_DELAY
        @fog.ox += @speed_x
        @fog.oy += @speed_y
        $i = 0
      else
        $i += 1
      end
    end
  end
  # dispose
  def dispose
    @fog.dispose if @fog != nil
    @fog = nil
    @fog_enabled=false
  end
  # start fog
  def start_fog
    if @fog_type == 1
      start_fog_type_1
    end
    if @fog_type == 2
      start_fog_type_2
    end
  end
end
##########################################################
##########################################################
##########################################################
class Scene_Base
  # alias
  alias sm_up update
  # update
  def update
    sm_up
    if $game_fog != nil
      $game_fog.update
    end
  end
end
##########################################################
##########################################################
##########################################################
module Fog
  def self.Data(mid,opacity=180,ox=1,oy=1,spx=1,spy=1,zoom=100)
  end
end
##########################################################
##########################################################
##########################################################
class Spriteset_Map
  alias st initialize
  def initialize
    st
    Fog::Data($game_map.map_id)
  end
end
##########################################################
##########################################################
##########################################################
class Scene_Map
  def perform_battle_transition
    Graphics.transition(80, "Graphics/System/BattleStart", 80)
    Graphics.freeze
    $game_fog.dispose
    $game_fog = nil
  end
end
class Scene_Title
  alias st start
  def start
    if $game_fog != nil
      $game_fog.dispose
      $game_fog = nil
    end
    st
  end
end
##########################################################
##########################################################
##########################################################
class Game_Map
  def scroll_up ( distance )
    if $game_fog != nil
      if ( loop_vertical? )
        @display_y += @map.height * 256 - distance
        @display_y %= @map.height * 256
        @parallax_y -= distance
        $game_fog.fog.oy -= $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.oy -= distance / $FT2DIST if $game_fog.fog_type == 2
      else
        last_y = @display_y
        @display_y = [@display_y - distance, 0].max
        @parallax_y += @display_y - last_y
        $game_fog.fog.oy += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.oy += ( @display_y - last_y ) / $FT2DIST  if $game_fog.fog_type == 2
      end
    else
      if ( loop_vertical? )
        @display_y += @map.height * 256 - distance
        @display_y %= @map.height * 256
        @parallax_y -= distance
      else
        last_y = @display_y
        @display_y = [@display_y - distance, 0].max
        @parallax_y += @display_y - last_y
      end
    end
  end
  ##########################################################
  def scroll_down ( distance )
    if $game_fog != nil
      if ( loop_vertical? )
        @display_y += distance
        @display_y %= @map.height * 256
        @parallax_y += distance
        $game_fog.fog.oy += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.oy += distance / $FT2DIST if $game_fog.fog_type == 2
      else
        last_y = @display_y
        @display_y = [@display_y + distance, (height - 13) * 256].min
        @parallax_y += @display_y - last_y
        $game_fog.fog.oy += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.oy += ( @display_y - last_y ) / $FT2DIST if $game_fog.fog_type == 2
      end
    else
      if ( loop_vertical? )
        @display_y += distance
        @display_y %= @map.height * 256
        @parallax_y += distance
      else
        last_y = @display_y
        @display_y = [@display_y + distance, (height - 13) * 256].min
        @parallax_y += @display_y - last_y
      end
    end
  end
  ##########################################################
  def scroll_left ( distance )
    if $game_fog != nil
      if ( loop_horizontal? )
        @display_x += @map.width * 256 - distance
        @display_x %= @map.width * 256
        @parallax_x -= distance
        $game_fog.fog.ox -= $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.ox -= distance / $FT2DIST if $game_fog.fog_type == 2
      else
        last_x = @display_x
        @display_x = [@display_x - distance, 0].max
        @parallax_x += @display_x - last_x
        $game_fog.fog.ox += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.ox += ( @display_x - last_x ) / $FT2DIST if $game_fog.fog_type == 2
      end
    else
      if ( loop_horizontal? )
        @display_x += @map.width * 256 - distance
        @display_x %= @map.width * 256
        @parallax_x -= distance
      else
        last_x = @display_x
        @display_x = [@display_x - distance, 0].max
        @parallax_x += @display_x - last_x
      end
    end
  end
  ##########################################################
  def scroll_right ( distance )
    if $game_fog != nil
      if ( loop_horizontal? )
        @display_x += distance
        @display_x %= @map.width * 256
        @parallax_x += distance
        $game_fog.fog.ox += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.ox += distance / $FT2DIST if $game_fog.fog_type == 2
      else
        last_x = @display_x
        @display_x = [@display_x + distance, (width - 17) * 256].min
        @parallax_x += @display_x - last_x
        $game_fog.fog.ox += $FT1DIST if $game_fog.fog_type == 1
        $game_fog.fog.ox += ( @display_x - last_x ) / $FT2DIST if $game_fog.fog_type == 2
      end
    else
      if ( loop_horizontal? )
        @display_x += distance
        @display_x %= @map.width * 256
        @parallax_x += distance
      else
        last_x = @display_x
        @display_x = [@display_x + distance, (width - 17) * 256].min
        @parallax_x += @display_x - last_x
      end
    end
  end
end


####################################################################
module Fog
  def self.Data(mid,opacity=180,ox=1,oy=1,spx=1,spy=1,zoom=100)
    if $game_fog != nil
      $game_fog.dispose
    end
    ###############################################################################
    ###############################################################################
    ###############################################################################
    # Benutzung:
    # mid ist die Mapid des Fogs.
    # Alle Daten werden hier spezifisch eingetragen.
    # Usage:
    # mid is the MAPID of the Fog
    # All data must be inserted here
    ###############################################################################
    ###############################################################################
    ###############################################################################
    if mid == 0 # Dummy
      $game_fog = Game_Fog.new(Cache::picture("Dummy.png"),1,opacity)
    end
    ###############################################################################
    if var_in([4,9,19],mid) # Himmel / Sky
      $game_fog = Game_Fog.new(Cache::picture("Wolken.png"),2,opacity,ox,oy,spx,spy,zoom)
    end
    ###############################################################################
    if mid == 2 # Wüste / Dessert
      $game_fog = Game_Fog.new(Cache::picture("Sandstorm.png"),2,opacity,ox,oy,spy,spy,zoom)
    end
    ###############################################################################
    if mid == 3 # Hitze / Hot area
      $game_fog = Game_Fog.new(Cache::picture("Hitze.png"),1,opacity)
    end
    ###############################################################################
    if mid == 4 # Dungeon
      $game_fog = Game_Fog.new(Cache::picture("Dungeon.png"),2,opacity,ox,oy,spy,spy,zoom)
    end
    ###############################################################################
    if mid == 5 # Wald / Forest
      $game_fog = Game_Fog.new(Cache::picture("Wald1.png"),2,opacity,ox,oy,spy,spy,zoom)
    end
    ###############################################################################
    $game_fog.start_fog() if $game_fog != nil
    ###############################################################################
  end
end

Jetzt werden die meisten sagen das sie die Dateien nicht haben.
Ich habe hier die Fogs vom RMXP verwendet.
Für Fragen stehe ich gern zur Verfügung.
Titel: Map_Fog_Script
Beitrag von: Yatzumo am Februar 27, 2008, 18:05:31
Wenn du jetzt noch die Datein hochladest, ist alles perfekt. =)

Frage:
Wie stellt man denn ein, welches Fog man verwenden will?

MFG Yatzumo
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Februar 27, 2008, 18:24:30
@Yatzumo: Am Ende des Skriptes ist eine Anleitung plus Einstellungsmöglichkeiten.

@DarkAngel: Gute Arbeit, obwohl ich finde, dass es sehr umständlich einzustellen ist für Anfänger. Aber mal gucken wie es sich gegen woratanas oder deadlyDans Skript durchsetzen wird.

P.S.: Ist $FT2DIST doche eine globale Variable (hab noch nie vor ner Konstante nen $ gesehen und würde auch nie eines machen)!? Oder doch ne Konstante (deren erster Buchstabe groß geschrieben wird)??
Titel: Map_Fog_Script
Beitrag von: Goldenboss am Februar 27, 2008, 18:31:55
Hi,

würde mich auch interessieren. Habe das Script eingebaut, aber will ja nicht ständig Wolken sehen. Vorallemdingen nicht in Höhlen.
Wie kann ich die anderen Fogs machen, bzw. die Fogs ausstellen?

MFG Markus

Edit:@Erzengel: Stimmt zwar, aber daraus werde ich nicht schlau. ^^
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Februar 27, 2008, 18:41:15
Also man hat z.B. diese Zeilen:
if mid == 5 # Wald / Forest
$game_fog = Game_Fog.new(Cache::picture("Wald1.png"),2,opacity,ox,oy,spy,spy,zoom)
end
Die 5 ist die ID der Map. Wald1 (das png kann man weglassen) ist der Name des Fogs, der im Ordner Pictures liegt.
Wenn man jetzt einen neueun Fog hinzufügen will muss man die Zeilen ändern oder kopieren und darunter einfügen. Dann die 5 in z.B. 6 ändern und je nach Karte den Fog von Wald1 in z.B. Stadt2.

@DarkAngel: Mach ma bitte nen neuen Thread auf + Beispielprojekt + ausführliche Anleitung, sonst kommt es hier noch zu Verwirrung ^^
Titel: Map_Fog_Script
Beitrag von: Goldenboss am Februar 27, 2008, 18:55:15
Jo und wie kann ich nun z.B. nen normalen Fog machen? Bei mir kommen immer diese Wölkchen.
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Februar 27, 2008, 19:03:28
Bist du auf der Map mit ID 1 ^^ ? Müsstest halt das Wolken.png ersetzen durch Nebel. Darüber steht ja: if $mid == 1, das ja bedeutet das bei der Map mit ID 1 die Wolken.png angezeigt wird ;)

P.S.: Das meinte ich mit Einstellungsschwierigkeiten...
Titel: Map_Fog_Script
Beitrag von: Goldenboss am Februar 27, 2008, 20:23:45
Hi,
die Mapid ist 15...

MFG Markus
Titel: Map_Fog_Script
Beitrag von: Dark Angel am Februar 28, 2008, 13:22:34
Also...ich sehe ich hab das wichtigste vergessen.
habe ich etwas weiter "geforscht".

Einfach diese Funktion über dem Script einfügen:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']def var_in(a,v)
 i = 0
 for i in 0..a.size
  if v == a
   return true
  end
  next i
 end
 return false
end

Dann wird im modul FOG wie folgt definiert:

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']if var_in([1,2,3],mid)
 $game_fog = Game_Fog.new(Cache::picture("Wolken.png"),2,opacity,oy,oy,spx,spy,zoom)
end

Dieser Code erzeugt auf den Maps mit den ID's 1, 2 und 3 Wolken.
Die Mapids werden als array übergeben und danach wird mid übergeben.
Ich denke so dürften eure Probleme gelöst sein.

PS.: wo lad ich die FOG-Demo hoch? bzw. wie?*schäm*
EDIT: habs gerad gefunden.
Titel: Map_Fog_Script
Beitrag von: Goldenboss am Februar 29, 2008, 10:55:41
Hi... Bei mir zeigt er immer noch auf jeder Map den Fog an.

MFG Markus
Titel: Map_Fog_Script
Beitrag von: Dainreth am Februar 29, 2008, 13:29:52
Eine weitere Alternative für Fogs: http://www.rpgrevolution.com/forums/?showtopic=9385 (http://www.rpgrevolution.com/forums/?showtopic=9385)
Ich verlinke nur mal, da woratana nicht möchte, dass es außerhalb von RRR gepostet wird, ich hoffe ihr könnt soweit englisch. Ah ja, ich finde alle Lösungen gut, will damit nicht, dass die anderen untergehen, nur kann man sich bei der Auswahl vielleicht besser entscheiden, was das beste für einen persönlich ist.
Titel: Map_Fog_Script
Beitrag von: Dark Angel am Februar 29, 2008, 13:48:28
@Goldenboss
Um den MapFog auf einer Map zu deaktivieren muss die MapId
in den Dummyfog.
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']if var_in([4],mid)
$game_fog = Game_Fog.new(Cache::picture("Dummy.png"),2,0,oy,oy,spx,spy,zoom)
end
Hier gehen wir davon aus das die Map mit ID 4 ein Haus ist un darin gibts bekanntlich keine Wolken ;)
Der Dummy is extra für diese Situation angefertigt worden.
Dummy kann eine beliebige leere Grafik sein.
Titel: Map_Fog_Script
Beitrag von: Goldenboss am März 01, 2008, 12:50:51
Hi,

so geht es auch nicht. Fog wird trotzdem angezeigt. Wird immer der zuletzt genannte Fog angezeigt.

Kannst du das ganze nicht vielleicht so ändern, dass man mit einem Event den Fog anzeigen lassen kann?

MFG Markus
Titel: Map_Fog_Script
Beitrag von: woratana am März 02, 2008, 11:38:35
Thanks to post it here :)Dainreth

It's okay to post screenshots/script's description outside RRR, but not original script and demo :P
Titel: Map_Fog_Script
Beitrag von: Dark Angel am März 03, 2008, 11:21:23
Ich habe eine neue Version :)
Und zwar den Dummy Fog ohne Abfrage als erstes laden.
Also:
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']$game_fog = Game_Fog.new(Cache::picture("Dummy.png"),2,0,oy,oy,spx,spy,zoom)
Danach alle anderen Fogs so laden wie bisher.
Danke für den Hinweis ;)
Habs dann auch gemerkt ;)
Titel: Map_Fog_Script
Beitrag von: Dainreth am März 03, 2008, 11:31:21
@woratana
ok, I will meorize that. Ah, I like your script really good work as you always do :)Thanks.

@Dark Angel
Kannst du vielleicht 'nen eigenen Thread aufmachen, damit's etwas übersichtlicher ist und
nochmal alles schön beschreiben, so ist's mir etwas zu unüberschaubar das ganze. Wäre nett.
Titel: Map_Fog_Script
Beitrag von: Goldenboss am März 03, 2008, 16:34:45
Jap. Sehe ich auch so. Ich weiß jetzt gar nicht mehr, wo was hin gehört. ^^
Titel: Map_Fog_Script
Beitrag von: Claine am Mai 23, 2008, 17:15:58
Sorry, das ich so einen alten Theard auskrame, aber ich hab Probleme mit dem Script ^^'. Bei mir wird kein Fog angezeigt... es kommt auch keine Fehlermeldung. Hab als Dateinamen "fog_nebel" gewählt, hoffe, das ist richtig...

MFG
Claine
Titel: Map_Fog_Script
Beitrag von: ERZENGEL am Mai 23, 2008, 18:48:21
Das Skript hat sowieso einen anderen Fehler.. nimm am besten woratanas Multi-Fog-Sript auf www.rpgrevolution.com

CLOSED!

=>Alternative:
Eine weitere Alternative für Fogs: [url]http://www.rpgrevolution.com/forums/?showtopic=9385[/url] ([url]http://www.rpgrevolution.com/forums/?showtopic=9385[/url])
Ich verlinke nur mal, da woratana nicht möchte, dass es außerhalb von RRR gepostet wird, ich hoffe ihr könnt soweit englisch. Ah ja, ich finde alle Lösungen gut, will damit nicht, dass die anderen untergehen, nur kann man sich bei der Auswahl vielleicht besser entscheiden, was das beste für einen persönlich ist.
SimplePortal 2.3.3 © 2008-2010, SimplePortal