UltimaForum

Skrypty [VX] - Ceny kontrolowane

Teyan - Sro 23 Gru, 2009 23:26
Temat postu: Ceny kontrolowane
:-D Cześć, oto mój drugi skrypt (pierwszy nie miał zastosowania w praktyce).
Sam go napisałem (właściwie to dodałem kilka słów do już istniejących klas), ale zawsze coś!!!
Potraktujcie go jako prezent na święta.
DZIAŁANIE:
Możemy w dowolnym momencie gry zmniejszać/zwiększać ceny kupna/sprzedaży przedmiotów o np: 10% lub 1000%.

INSTRUKCJA:
W skrypcie.

SCREENY:
Niepotrzebne.

Oto to:
Spoiler:

Kod:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/Tytuł: Ceny Kontrolowane.............................._/
#_/Autor: Ja!!! (tj Marcin z www.ultimateam.pl)..._/
#_/Data: 23 grudzień 2009r............................._/
#_/Wersja: 1.0.............................................._/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#~~~~~~~~~~~INSTRUKCJA~~~~~~~~~~~~~~~~~~
#Ten skrypt pozwoli wam zmieniać ceny wszystkich przedmiotów jednocześnie
#Do zmiany cen służą skrypty:

#Aby zmienić cene kupna trzeba wywołać skrypty:
#   Kup::Liczba2 = 1
# a potem:
#   Kup::Liczba1 = x
#mnoży cenę przedmiotu o x (zapłacimy więcej kasy)
#lub
#   Kup::Liczba1 = 1
#a potem:
#   Kup::Liczba2 = x
#dzieli cenę przedmiotu o x (zapłacimy mniej kasy)
#
#Aby zmienić cene sprzedaży trzeba wywołać skrypty:
#   Sprzedaj::Liczba2 = 1
#a potem:
#   Sprzedaj::Liczba1 = x
#mnoży cenę przedmiotu o x (dostaniemy więcej kasy)
#lub:
#   Sprzedaj::Liczba1 = 1
#a potem
#   Sprzedaj::Liczba2 = x
#dzieli cenę przedmiotu o x (dostaniemy mniej kasy)
#~~~~~~~~WAŻNE~~~~~~
#Liczby "x" muszą być całkowite i nieujemne.
#Aby zrobić tak jak było (czyli za sprzedanie przedmiotu dostajemy połowe jego normalnej wartości)
#musimy po kolei wywołać skrypty:
#Sprzedaj::Liczba1 = 1
#Sprzedaj::Liczba2 = 2
#Kup::Liczba1 = 1
#Kup::Liczba2 = 1
#Ten skrypt posiada już te ustawienia!! (napisałem o tym, gdybyście w swojej grze je zmienili i chcieli
#powrócić do starych ustawień).
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~RADY~~~~~~~~~~~~
#jeżeli chcecie, by ceny przedmiotów wzrosły o np: 10%
#to przemnóćcie te ceny przez 11 (Kup::Liczba1 = 11) a potem podzielcie przez 10 (Kup:Liczba2 = 10)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


module Kup
  Liczba1 = 1 #mnoży cenę kupna (zapłacimy więcej)
  Liczba2 = 1 #dzieli cenę kupna (zapłacimy mniej)
end
module Sprzedaj
  Liczba1 = 3 #mnoży cenę sprzedania (dostaniemy więcej)
  Liczba2 = 2 #dzieli cenę sprzedania (dostaniemy mniej)
end
class Scene_Shop < Scene_Base
  def update_buy_selection
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      number = $game_party.item_number(@item)
      if @item == nil or (@item.price * Kup::Liczba1 / Kup::Liczba2) > $game_party.gold or number == 99
        Sound.play_buzzer
      else
        Sound.play_decision
        max = @item.price == 0 ? 99 : $game_party.gold / (@item.price * Kup::Liczba1 / Kup::Liczba2)
        max = [max, 99 - number].min
        @buy_window.active = false
        @buy_window.visible = false
        @number_window.set(@item, max, @item.price * Kup::Liczba1 / Kup::Liczba2)
        @number_window.active = true
        @number_window.visible = true
      end
    end
  end
  def update_sell_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
    elsif Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0
        Sound.play_buzzer
      else
        Sound.play_decision
        max = $game_party.item_number(@item)
        @sell_window.active = false
        @sell_window.visible = false
        @number_window.set(@item, max, @item.price * Sprzedaj::Liczba1 / Sprzedaj::Liczba2)
        @number_window.active = true
        @number_window.visible = true
        @status_window.visible = true
      end
    end
  end
  def decide_number_input
    Sound.play_shop
    @number_window.active = false
    @number_window.visible = false
    case @command_window.index
    when 0  # Buy
      $game_party.lose_gold(@number_window.number * @item.price * Kup::Liczba1 / Kup::Liczba2)
      $game_party.gain_item(@item, @number_window.number)
      @gold_window.refresh
      @buy_window.refresh
      @status_window.refresh
      @buy_window.active = true
      @buy_window.visible = true
    when 1  # sell
      $game_party.gain_gold(@number_window.number * (@item.price * Sprzedaj::Liczba1 / Sprzedaj::Liczba2))
      $game_party.lose_item(@item, @number_window.number)
      @gold_window.refresh
      @sell_window.refresh
      @status_window.refresh
      @sell_window.active = true
      @sell_window.visible = true
      @status_window.visible = false
    end
  end
end
class Window_ShopBuy < Window_Selectable
    def draw_item(index)
    item = @data[index]
    number = $game_party.item_number(item)
    enabled = (item.price * Kup::Liczba1 / Kup::Liczba2 <= $game_party.gold and number < 99)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    draw_item_name(item, rect.x, rect.y, enabled)
    rect.width -= 4
    self.contents.draw_text(rect, item.price * Kup::Liczba1 / Kup::Liczba2, 2)
  end
end


Deegi - Sro 23 Gru, 2009 23:29

Czy nie to samo serwowałeś wcześniej?
http://www.ultimateam.pl/viewtopic.php?t=2155

Teyan - Sro 23 Gru, 2009 23:37

Nie, różnice są duże, oto kilka:
1. Ten skrypt sam napisałem (dzisiaj), tamten tylko przetłumaczyłem (jakiś czas temu).
2. Tamten skrypt zmieniał cenę jednego przedmiotu, ten zmienia (dzieli lub mnoży) cenę wszystkich.
3. W tym skrypcie możemy ustawić, że cena sprzedaży przedmiotu będzie równa cenie nabycia, lub nawet wyższa!!!! W tamtym nie!!!
I jeszcze kilka różnic by się znalazło...

Ogólnie, moim zdaniem, ten skrypt jest bardziej praktyczny.

[ Dodano: Czw 24 Gru, 2009 02:25 ]
I bardzo bardzo prosty!!!!
Męczyłem się z nim dwa dni, a teraz, gdy już wiem co i jak, napisanie tego skryptu od nowa zajęło by mi może 10 minut!!!!!!!!!!!!!
Chciałem wam po prostu dać jakiś prezent :mrgreen:

Lord Voldemort - Sro 09 Mar, 2011 20:33

Potrzebuję identycznego, tylko, że do XP, mógłby ktoś przerobić?
MrBoomGood - Wto 03 Maj, 2011 15:30

Działa wszystko! Przyda mi się :)
matiusz - Pią 24 Cze, 2011 15:16

Da się używać zmiennych w tym skrypcie? :?:
Angius - Pią 24 Cze, 2011 15:59

A po co ci zmienne? o.O
matiusz - Pią 24 Cze, 2011 18:51

Próbuję zrobić zmienne ceny np. raz kupujesz coś za 100, raz za 90 a raz za 120
Angius - Pią 24 Cze, 2011 18:54

Ten skrypt zmniejsza/zwiększa cenę o x%. Jeśli chcesz czegoś, co pozwoliłoby ci zmieniać cenę dowolnie, wykorzystaj ten skrypt: http://www.ultimateam.pl/viewtopic.php?t=2155
Kyovu - Sob 03 Lis, 2012 11:00

Można to połączyć z przełącznikami i np jak w assasin creed 2 to jak ulepszysz kowala dostajesz np 5% rabatu.Mi się nie przyda ale daje 3/5 :-|

Powered by phpBB modified by Przemo © 2003 phpBB Group