Posiadam LockpickMinigame i chciałbym użyć go w projekcie. Ale nie w zwykłej formie, tylko że trzeba posiadać item by móc rozpocząć minigre (np wytrych). To jako tako opanowałem, gorzej jest z tym że chce zrobić, że gdy próbujemy otworzyć zamek zbyt długo (przykładowo - 2 minuty) to wytrych nam się łamie i jak mamy kolejny to dalej możemy próbować otworzyć, a jak nie mamy to kończymy minigre. Ktoś wie jak mógłbym to zrobić?
Dołączam się do prośby.
W skrócie:
Załóżmy, że masz 4 wytrychy. Chcesz otworzyć skrzynie. Zaczynasz grać w minigrę. Mijają 2minuty (więcej/mniej) i wytrych się łamie. Zostają 3. Po kolejnym czasie znowu... Jak zostanie 1 i się złamie. Minigra się wyłącza.
Ach i zapomniałem dodać, a nie da się edytować - czy da się zrobić, aby background był przeźroczysty? Gdy dałem takowy i podmieniłem - http://screenshooter.net/5423142/tpxhcbq
Dobra, ale żeby nie spamować to dam Ci kilka rad jak możesz to zrobić. Net mi na PC siadł, więc jestem na razie na lapie i mogę napisać tyle:
Uruchom w tej klasie Sprite_Timer i daj warunek, że jeśli timer == 0 to restartuje minigre i odejmuje zmienną kluczy o 1. Daj też przy wywoływaniu lockpicka, że jeśli zmienna kluczy == 0, nie włącza się.
Kapisz?
Kurde, wytrych to jeden z rodzai klucza, nie zaprzeczam, ale z tą nierównością chodziło mi że to nie jest taki klucz zwykły (bo zrozumiałem że o taki Ci właśnie chodzi). Jeśli nie o to Ci chodzi - nie zrozumieliśmy się.
Co do sposobu - zaraz przetestuje i edit, albo Feniks napisze...
Teoretycznie - mniej więcej kapisz, praktycznie - gorzej. Nie wiem jak to zrobić to po pierwsze, a też z innych źródeł dostałem info, że gdy takie coś ustawie, nie bd się np dało kupić wytrycha w sklepie ("Tylko, że wtedy w sklepie jak kupisz wytrych, to ci zmiennej nie doda"). Nie wiem jak to wygląda, ktoś obeznany w temacie może się wypowiedzieć?
#=========================================================================
# === SCRIPT ADD-ON ===
#-------------------------------------------------------------------------
# Name: Lockpick Minigame - Add-on "PickLock"
# Author: Melvin
# Version: 1.0
#=========================================================================
# INSTRUKCJA
#=========================================================================
# Wklejić pod skryptem "Lockpick Minigame", nad main.
# Aby wyświetlić ile pozostało czasu do wyłączenia, należy nacisnąć
# "Shift"(A). Działa tylko w trybie testowym.
#-------------------------------------------------------------------------
# W zdarzeniu umieścić warunek, "Jeśli wytrych jest w ekwipunku":
# Wtedy uruchomi się Lockpick.
#=========================================================================
# KONFIGURACJA
#=========================================================================
module Melvin
# ID wytrycha:
PickLockID = 33
# Ograniczony czas otwierania: (po upływie nastąpi powrót do mapy)
Time = true # false
# Utrata wytrycha po wyjściu z minigry:
LoseEsc = false # true
# Utrata wytrycha po skończeniu się czasu:
LoseTime = true # false
#-------------------------------------
# Zaawansowane
#-------------------------------------
# Przedział losowania czasu:
Rand = 3750 # nil - do opcji niżej
# 0 + 3750 = 3750, 3750 + 3750 = 7500
# Zakres = 3750 - 7500
# 5000 = ~2 min
#-------------------------------------
# Jeśli "Rand = nil":
#-------------------------------------
# Główny zakres:
Rand1 = 3750
# Dodaje do obu stron liczbę:
Rand2 = 3750
#-------------------------------------
end
#=========================================================================
class Game_System
attr_accessor :timer_lock
alias gs_ini_mel initialize
def initialize
gs_ini_mel
@timer_lock = 0
end
alias gs_up_mel update
def update
gs_up_mel
if Melvin::Time == true and @timer_lock > 0
@timer_lock -= 1
end
end
end
class Scene_LockpickMinigame < SDK::Scene_Base
alias lm_mv_mel main_variable
def main_variable
lm_mv_mel
if Melvin::Time == true
if Melvin::Rand != nil
@rand = Melvin::Rand
@random_time = rand(@rand)+@rand
else
@random_time = rand(Melvin::Rand1)+Melvin::Rand2
end
$game_system.timer_lock = @random_time
end
end
alias lm_up_mel update
def update
if Input.trigger?(Input::B)
if Melvin::LoseEsc == true
$game_party.lose_item(Melvin::PickLockID, 1)
end
$scene = Scene_Map.new
end
lm_up_mel
if Melvin::Time == true
$game_system.update
if $game_system.timer_lock == 0
if Melvin::LoseTime == true
$game_party.lose_item(Melvin::PickLockID, 1)
end
$scene = Scene_Map.new
end
if $DEBUG and Input.press?(Input::A)
print "Time: #{$game_system.timer_lock}"
end
end
end
end
Po około 2-3 minutach minigra się wyłącza i zależnie od konfiguracji tracisz wytrych.
Masz wszystko w instrukcji, w skrypcie.
Omg... Po co usuwasz wytrych w zdarzeniu? Już jest w skrypcie. Czytałeś wgl instrukcję?
Co do 2, zaraz coś zrobię. Dawaj "Pomógł" za moje nerwy i czas xD
Już to zmieniłem, po dodaniu posta...Wcześniej jak zmieniłem w skrypcie na true to i tak mi nie zabrało wytrycha, dlatego dałem potem zdarzenie. Potem znów spróbowałem i zadziałało, więc może nie zauważyłem albo coś... Oczywiście zdarzenie już skasowane. Pomógł leci ;D
#=========================================================================
# === SCRIPT ADD-ON ===
#-------------------------------------------------------------------------
# Name: Lockpick Minigame - Add-on "PickLock"
# Author: Melvin
# Version: 1.1
#-----------------
# HISTORIA ZMIAN
#-----------------
# 1.1:
# Dodano okno informacyjne o końcu czasu.
#=========================================================================
# INSTRUKCJA
#=========================================================================
# Wklejić pod skryptem "Lockpick Minigame", nad main.
# Aby wyświetlić ile pozostało czasu do wyłączenia, należy nacisnąć
# "Shift"(A). Działa tylko w trybie testowym.
#-------------------------------------------------------------------------
# W zdarzeniu umieścić warunek, "Jeśli wytrych jest w ekwipunku":
# Wtedy uruchomi się Lockpick.
#=========================================================================
# KONFIGURACJA
#=========================================================================
module Melvin
# ID wytrycha:
PickLockID = 33
# Ograniczony czas otwierania: (po upływie nastąpi powrót do mapy)
Time = true # false
# Utrata wytrycha po wyjściu z minigry:
LoseEsc = false # true
# Utrata wytrycha po skończeniu się czasu:
LoseTime = true # false
# Pokazanie okna informacyjnego:
Info = true # false
# Tekst na oknie informacji:
InfoText = "Wytych został uszkodzony!"
#-------------------------------------
# Zaawansowane
#-------------------------------------
# Przedział losowania czasu:
Rand = 3750 # nil - do opcji niżej
# 0 + 3750 = 3750, 3750 + 3750 = 7500
# Zakres = 3750 - 7500
# 5000 = ~2 min
#-------------------------------------
# Jeśli "Rand = nil":
#-------------------------------------
# Główny zakres:
Rand1 = 3750
# Dodaje do obu stron liczbę:
Rand2 = 3750
#-------------------------------------
# Czas do pokazania okna informacji:
InfoTime = 50
#-------------------------------------
end
#=========================================================================
class Game_System
attr_accessor :timer_lock
alias gs_ini_mel initialize
def initialize
gs_ini_mel
@timer_lock = 0
end
alias gs_up_mel update
def update
gs_up_mel
if Melvin::Time == true and @timer_lock > 0
@timer_lock -= 1
end
end
end
class Scene_LockpickMinigame < SDK::Scene_Base
alias lm_mv_mel main_variable
def main_variable
lm_mv_mel
if Melvin::Time == true
if Melvin::Rand != nil
@rand = Melvin::Rand
@random_time = rand(@rand)+@rand
else
@random_time = rand(Melvin::Rand1)+Melvin::Rand2
end
$game_system.timer_lock = @random_time
end
end
alias lm_mw_mel main_window
def main_window
@info_window = Window_LockInfo.new
@info_window.back_opacity = 160
@info_window.visible = false
lm_mw_mel
end
alias lm_up_mel update
def update
if Input.trigger?(Input::B)
if Melvin::LoseEsc == true
$game_party.lose_item(Melvin::PickLockID, 1)
end
$scene = Scene_Map.new
end
if @info_window.visible == false
if Melvin::Time == true
if Melvin::Info == true and Melvin::LoseTime == true
if $game_system.timer_lock == Melvin::InfoTime
@info_window.visible = true
end
end
end
lm_up_mel
end
if Melvin::Time == true
$game_system.update
if $game_system.timer_lock == 0
if Melvin::LoseTime == true
$game_party.lose_item(Melvin::PickLockID, 1)
end
$scene = Scene_Map.new
end
if $DEBUG and Input.press?(Input::A)
print "Time: #{$game_system.timer_lock}"
end
end
end
end
class Window_LockInfo < Window_Base
def initialize
super(140, 240, 380, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, 380, 32, Melvin::InfoText)
end
end
Okno włączy się, kiedy licznik będzie wynosił 50(domyślnie).
Tak swoją drogą to wydaje mi się, że lepszym rozwiązaniem było by losowanie liczby na początku i np 10% szansy, że wytrych złamie się przy wkładaniu go do zamka - bardziej prawdopodobne, niż łamanie po jakimś czasie. Później pomyślę nad taką opcją.
Tak swoją drogą to wydaje mi się, że lepszym rozwiązaniem było by losowanie liczby na początku
Chodzi o losowanie i zmienianie tej liczby 3750? Tylko wtedy gdyby dało się ustawić, że nie może być mniej niż 3000 a więcej niż 5000... Bo jak np bd ciężki zamek do otwarcia i bd miał 1000 - nie ma szans na otworzenie...
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