Krótki opis:
Dodaje okno reputacji, oraz zmienną przypisaną do Game_Party, więc zapisuję się w momencie zapisywania gry. Reaguje na ustalony w skrypcie klawisz.
Autor:
Melvin | Thieffer
Kompatybilność:
RPG Maker XP
Skrypt:
Spoiler:
Kod:
#==========================================================================
# Name: Reputation Script
# Version: 1.0
# Author: Melvin @ Thieffer - Floating Windows 1.0
#==========================================================================
# INSTRUKCJA
#-----------------------------------------------------------------------
# W zdarzeniu, w poleceniu "Script" wpisać:
# $game_party.reputation = X # Ustawienie reputacji na wartość "X"
# Zamiast "=", można wstawić "+="(dodanie), lub "-="(odjęcie)
# Za "X" odpowiada dowolna liczba.
# Na końcu dodaj "$reprefresh = true".
#==========================================================================
# KONFIGURACJA
#==========================================================================
module Melvin
# Klawisz odpowiadający za pokazywanie okna:
Button = Input::R # W
# Nazwa reputacji:
RepTXT = "Reputacja:"
# Początkowa reputacja:
StartRep = 0
# Pozycja okna reputacji:
Location = 1
# 1 - Prawy, górny róg
# 2 - Prawy, dolny róg
# 3 - Lewy, górny róg
# 4 - Lewy, dolny róg
#--------------------------------
# 5 - własny:
# Współrzędne:
X = 0
Y = 0
# Szybkość:
Speed = 30
# Kierunek wejścia:
# ("up" - góra, "down" - dół, "right" - prawo, "left" - lewo)
From = "left"
#--------------------------------
end
#==========================================================================
class Game_Party
alias gp_ini initialize
attr_accessor :reputation
def initialize
gp_ini
@reputation = Melvin::StartRep
end
end
class Scene_Map
alias sm_mn main
def main
if Melvin::Location == 1
@From = "left"
@LocX = 0
@LocY = 0
elsif Melvin::Location == 2
@From = "left"
@LocX = 0
@LocY = 416
elsif Melvin::Location == 3
@From = "right"
@LocX = 480
@LocY = 0
elsif Melvin::Location == 4
@From = "right"
@LocX = 480
@LocY = 416
elsif Melvin::Location == 5
@From = Melvin::From
@LocX = Melvin::X
@LocY = Melvin::Y
@Speed = Melvin::Speed
end
if Melvin::Location <= 5
@Speed = 20
end
@window_rep = Window_Reputation.new
@window_rep.float_setup(@From,@LocX,@LocY, @Speed)
sm_mn
@window_rep.dispose
end
alias sm_up update
def update
sm_up
@window_rep.press(Melvin::Button)
@window_rep.update
if $reprefresh == true
@window_rep.refresh
$reprefresh = false
end
end
end
class Window_Reputation < Window_Base
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Arial"
self.contents.font.size = 22
self.back_opacity = 150
refresh
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 105, 32, Melvin::RepTXT)
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 125, 32, $game_party.reputation.to_s, 2)
end
end
#==========================================================================
# Name: loating Windows
# Version: 1.0
# Author: Thieffer
#==========================================================================
class Window_Base < Window
alias :old_update :update
alias :old_initialize :initialize
def initialize(x,y,width,height)
old_initialize(x,y,width,height)
@appearing = false
@disappearing = false
end
def float_setup(from,to_x,to_y,speed,speed2=nil)
@from = from
@to_x = to_x
@to_y = to_y
@speed = speed
if speed2 == nil
@speed2 = speed
else
@speed2 = speed2
end
a = 0
loop do
break if a > self.width
a += 100
end
b= 0
loop do
break if b >self.height
b += 100
end
case from
when 'up'
self.x = @to_x
self.y = -self.height - b % self.height
when 'down'
self.x = @to_x
self.y = 480 + self.height + b % self.height
when 'right'
self.x = 640 + self.width + a % self.width
self.y = @to_y
when 'left'
self.x = -self.width - a % self.width
self.y = @to_y
end
@hidden_x = self.x
@hidden_y = self.y
update
end
def update
if @appearing
case @from
when 'up'
if self.y < @to_y
self.y += @speed
else
self.y = @to_y
@appearing = false
end
when 'down'
if self.y > @to_y
self.y -= @speed
else
self.y = @to_y
@appearing = false
end
when 'right'
if self.x > @to_x
self.x -= @speed
else
self.x = @to_x
@appearing = false
end
when 'left'
if self.x < @to_x
self.x += @speed
else
self.x = @to_x
@appearing = false
end
end
end
if @disappearing
case @from
when 'up'
if self.y > @hidden_y
self.y -= @speed2
else
self.y = @hidden_y
@disappearing = false
end
when 'down'
if self.y < @hidden_y
self.y += @speed2
else
self.y = @hidden_y
@disappearing = false
end
when 'right'
if self.x < @hidden_x
self.x += @speed2
else
self.x = @hidden_x
@disappearing = false
end
when 'left'
if self.x > @hidden_x
self.x -= @speed2
else
self.x = @hidden_x
@disappearing = false
end
end
end
old_update
end
def appear
@appearing = true
end
def disappear
@disappearing = true
end
def on_map?
if self.x == @to_x and self.y == @to_y
return true
else
return false
end
end
def beyond_map?
if self.x == @hidden_x and self.y == @hidden_y
return true
else
return false
end
end
def press(key)
if Input.trigger?(key)
if self.beyond_map?
self.appear
elsif self.on_map?
self.disappear
end
end
end
end
Screeny:
Spoiler:
Demo:
Dodatkowe informacje:
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Pomógł: 1 raz Dołączył: 07 Sty 2012 Posty: 46 Skąd: Polska
Wysłany: Wto 17 Sty, 2012 13:06
Cytat:
Nie dociera? POZYSKAJ ORYGINALNEGO MAKERA!
W tym miejscu, Melvin, masz szczęście, że administracja tego forum jest dla ciebie pobłażliwa. W przeciwnym wypadku miałbyś już 2 ostrzeżenia na koncie. I to z następujących powodów:
Cytat:
1. Rozum na poziomie "Kali jeść, Kali pić" (w tym wypadku oznacza to twoją niemożliwość szukania innych rozwiązań)
2. Niewskazanie alternatywy
Zamiast szukać oryginalnego RPG Makera, można spróbować podmienić RGSS100j.dll o oryginalnej nazwie na plik RGSS102E.dll (lub nowszy) o nazwie "RGS100j.dll" i skrypty będą chodzić. Ja tak zrobiłem i do tej pory nie mam przerastających mnie problemów.
________________________ Ryzykując, że zrobisz super gniota, możesz zrobić super hit lub super gniota.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum