UltimaForum

Skrypty [VX] - Skrypt Dawania prezentów

Teyan - Sro 16 Gru, 2009 12:25
Temat postu: Skrypt Dawania prezentów
Teraz następny skrypt, długo go tłumaczyłem ale udało mi się. Na szczęście ktoś mi pomógł.
PS: Dzięki Cyklop!!!!!!!!!!!!!!!! :-)

Dzięki niemu będziemy mogli dawać prezenty innym NPC. Możemy też wymyśleć inne zastosowania. Najlepiej najpierw przetestować działanie tego skryptu.

INSTRUKCJA:
wszystko w skrypcie.

DEMO i SCREENY:
niepotrzebne.

Spoiler:

Kod:
#====================================================
#  Tytuł: Okno Prezentów
#  Oryginalny tytuł: Evidence Locker
#  Wersja: 1.0
#  Autor: modern algebra (rmrk.net)
#  Data: 2 Sierpień 2008
#  Tłumaczenie: Marcin (www.ultimateam.pl)
#  Data tłumaczenia: 16 Grudnia 2009r.

#
#                                                          ~~PODIĘKOWANIA~~
#       Chce podziekować Cyklopowi (www.ultimateam.pl) za pomoc w zrozumieniu tego skryptu.
#       Wielkie Dzięki!!!!!!!!
#
#  PS: Wiem, że podziękowania umieszcza się na końcu, ale wtedy nigdy byście tego nie przeczytali.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  INSTRUKCJA:
#                    ~~WSTĘP~~
#      Autor tego skryptu stworzył go z myślą o śledztwach, "Evidence Locker" oznacza z angielskiego mniej
#      więcej "'coś tam' dowody". ja natomiast używam go do dawania prezentów innym NPC podczas gry.
#      Jeżeli chcecie mieć więcej takich okienek np: jedno do dawania prezentów, drugie do tworzenia mikstur z
#      możliwością eksperymentowania jak w Wiedźminie, to przekopiujcie ten skrypt, wklejcie kopie nad "Main" i
#      zamieńcie wszystkie słowa "evidence" na np: Alchemia
#
#                     ~~NOTE/NOTATKI~~
#    By ten skrypt działał trzeba napisać w notatkach (note) danego przedmiotu to:
#    \evidence
#    Wg autora mamy w notatniku dodatkowo wpisać jedną lub kilka z
#    poniższych linijek, ja tego nie robiłem i zawsze uzyskałem ten efekt, który chciałem:
#    $game_temp.evidence_w      zamiast "w" należy wpisać nazwę przedmiotu.
#    $game_temp.evidence_x    zamiast x należy wpisać liczbę przedmiotów.
#    $game_temp.evidence_type   zamiast type wpisujemy numer od 0 do 2 (0 = Item, 1 = Weapon, 2 = Armor)
#    $game_temp.evidence_id        zamiast "id" wpisujemy id ikonki
#
#                    ~~ZDARZENIE~~
#  By wywołać menu dawania prezentów wywołaj skrypt:
#    $scene = Scene_Evidence.new
#  Potem wstaw polecenie czekaj/wait 1 frame
#  Teraz wpisz polecenie: "conditional branch/ustaw warunek" używając jednego z tych skryptów.
#    $game_temp.evidence_name == "nazwa przedmiotu"
#    $game_temp.evidence_amount == liczba przedmiotu
#    $game_temp.evidence_type == typ od 0 do 2,
#    $game_temp.evidence_id == id ikonki
#   
#                  ~~ZAKOŃCZENIE~~
#   Jeżeli chcemy ustawić warunek np: musimy podarować komuś "X" przedmiotów o nazwie "Y"
#   Wpisujemy w Conditional Branch to:
#    $game_temp.evidence_amount == X && $game_temp.evidence_name == "Y"
#   Jeżeli bohater nie ma przedmiotu w plecaku, to ten przedmiot nie wyświetli się w Oknie Prezentów.
#
#       WIELKOŚĆ LITER MA ZNACZENIE!!!!!!!!!!!!!!!!!
#=========================================================
#=========================================================
# ** RPG::BaseItem
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Summary of Changes:
#    new method - evidence?
#=========================================================

class RPG::BaseItem
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Evidence?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def evidence?
    return true if self.note[/\\evidence/i] != nil
    return false
  end
end

#=========================================================
# ** Game_Temp
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Summary of Changes:
#    new public instance variables - evidence_name, evidence_type, evidence_id
#=========================================================

class Game_Temp
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  attr_accessor :evidence_type   # 0 => Item, 1 => Weapon, 2 => Armor
  attr_accessor :evidence_id     # Item ID
  attr_accessor :evidence_name   # The name of the evidence
  attr_accessor :evidence_amount # The amount of that evidence in possession
end

#=========================================================
# ** Window_Item
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Summary of Changes:
#    aliased methods - include?, enable?
#=========================================================

class Window_Item
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Include?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modalg_dragon9_request_evince_selct_incl_8b4s include?
  def include?(item)
    return (item == nil ? false : item.evidence?) if $scene.is_a? (Scene_Evidence)
    modalg_dragon9_request_evince_selct_incl_8b4s (item)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Enable?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modalg_drgdd9_req_evidnc_954n  enable?
  def enable? (item)
    return true if $scene.is_a? (Scene_Evidence)
    return modalg_drgdd9_req_evidnc_954n (item)
  end
end

#=========================================================
# ** Scene_Evidence
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  This class is a subclass of Scene_Item. Instead of using a selected item,
#  this script reserves it in a variable to be used in an event.
#=========================================================

class Scene_Evidence < Scene_Item
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Return Scene
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def return_scene
    $scene = Scene_Map.new
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Item Selection
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def update_item_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      # Clear evidence variables
      $game_temp.evidence_type = nil
      $game_temp.evidence_id = nil
      $game_temp.evidence_name = nil
      $game_temp.evidence_amount = nil
      return_scene
    elsif Input.trigger?(Input::C)
      @item = @item_window.item
      if @item == nil
        Sound.play_buzzer
      else
        # Set evidence variables to the item chosen
        $game_temp.evidence_type = @item.is_a? (RPG::Item) ? 0 : @item.is_a? (RPG::Weapon) ? 1 : 2
        $game_temp.evidence_id = @item.id
        $game_temp.evidence_name = @item.name
        $game_temp.evidence_amount = $game_party.item_number (@item)
        return_scene
      end
    end
  end
end


Ayene - Wto 22 Gru, 2009 01:56

Całkiem przydatny skrypcik, choć wolałabym osobiście użyć go właśnie do celu "Evidence Locker". Wpadłam na pomysł wykorzystania go w swoim projekcie :-> Dobra robota ;-)
kugron - Czw 10 Cze, 2010 12:55

Przecież to można zrobić jako zdarzenie.
CreeperCrisis - Pią 11 Cze, 2010 15:19

Właśnie to sprawdzałem. Wszystko działa lecz nie wiem do czego to użyć?
kugron - Sob 12 Cze, 2010 11:18

Można to wykorzystać do robienia misji naprzykład jeżeli damy gostkowi talon na balon on nam powie gdzie jest przedmiot do misji.
Ulvran - Wto 06 Lip, 2010 07:26

Ew. można zastosować cos takiego jak hm... lubienie nas przez kluczowe postacie(?).
Nie będę się tu rozpisywał jak to zrobić, bo nie od tego jest ten temat :P
Może powiem, że coś jak Dragon Age :D

A skrypcik naprawdę fajny... może go wykorzystam

Agumon - Sro 07 Lip, 2010 12:26

Ale nie rozumie tego. Czyli tan przedmiot który mamy dać NPC to nam się będzie wyświetlał w eq czy nie??
Drawestien - Czw 20 Sty, 2011 17:30

Nawet nawet.
Kiedyś się przyda.

CrasheR - Sob 26 Mar, 2011 16:33

Jak to dodać?? Zrobiłem wszystko, ale nie odejmuje mi itemka :-(
Theron - Pon 31 Paź, 2011 19:16

mam podobny problem jak CrasheR tyle, że mi to ani itemu nie odejmuje ani nie mam jak wybrać komu chcę ten cholerny prezent dać. niby wywołuję to :
$scene = Scene_Evidence.new
pod przedmiotem też mam komendę
/evidence
ale jak kliknę na przedmiot to pokazuje mi się okno postaci i po kilku klatkach (nie cała sekunda) mi się zamyka a przedmiot jak był tak jest... Czy w przedmoiocie trza dodatkowo coś ustawić ?


Powered by phpBB modified by Przemo © 2003 phpBB Group