Teyan - Sob 26 Gru, 2009 13:39 Temat postu: Dodatkowa waluta
~ Dodatkowa waluta ~
Krótki opis
Dzieki temu skryptowi możemy mieć w grze dwie waluty i uzywać ich na zmianę (przełączając jeden switch).
Widziałem w necie menu z dwiema walutami, ale samego skryptu nie mogłem znaleźć, więc go napisałem.
Umieściłem w nim inny skrypt "Ikonka złotej monety w menu", musiałem dodać drugą ikonkę (bez tego ani rusz). Mam nadzieję, że Ayene się nie obrazi.
Autor skryptu
Marcin (www.ultimateam.pl)
Kompatybilność
Tylko VX.
Spoiler:
Skrypt
Kod:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/Nazwa: Dodatkowa waluta......._/
#_/Autor: Marcin (www.ultimateam.pl)._/
#_/Data: 26 grudnia 2009r................_/
#_/Wersja: 1.0..............................._/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#instrukcja
#switch/przełącznik, który odpowiada za zmiane waluty
GOLD = 20 #możemy go oczywiście zmienić.
#gdy jest off to używaną walutą jest nowa waluta
#gdy jest on to używaną walują jest stara waluta
#~~~~~~~~~~~~~~~~~~SKRYPT
class Window_Gold < Window_Base
def initialize(x, y)
super(x, y, 160, WLH * 2 + 32)
refresh
end
def refresh
self.contents.clear
draw_currency_value($game_party.gold, 4, 0, 120)
draw_currency_value($game_party.gold2, 4, 24, 120)
end
end
class Game_Party < Game_Unit
attr_reader :gold2
def initialize
super
@gold = 0
@gold2 = 0
@steps = 0
@last_item_id = 0
@last_actor_index = 0
@last_target_index = 0
@actors = [] # Party member (actor ID)
@items = {} # Inventory item hash (item ID)
@weapons = {} # Inventory item hash (weapon ID)
@armors = {} # Inventory item hash (armor ID)
end
def gain_gold(n)
if $game_switches[GOLD]
@gold = [[@gold + n, 0].max, 9999999].min
else
@gold2 = [[@gold2 + n, 0].max, 9999999].min
end
end
def lose_gold(n)
gain_gold(-n)
end
end
class Scene_Menu < Scene_Base
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 336)
@status_window = Window_MenuStatus.new(161, 0)
end
end
class Scene_Shop < Scene_Base
def start
super
create_menu_background
create_command_window
@help_window = Window_Help.new
@gold_window = Window_Gold.new(384, 56)
@dummy_window = Window_Base.new(0, 136, 544, 280)
@buy_window = Window_ShopBuy.new(0, 136)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
@sell_window = Window_ShopSell.new(0, 136, 544, 280)
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
@number_window = Window_ShopNumber.new(0, 136)
@number_window.active = false
@number_window.visible = false
@status_window = Window_ShopStatus.new(304, 136)
@status_window.visible = false
end
end
class Window_ShopBuy < Window_Selectable
def initialize(x, y)
super(x, y, 304, 280)
@shop_goods = $game_temp.shop_goods
refresh
self.index = 0
end
end
class Window_ShopNumber < Window_Base
def initialize(x, y)
super(x, y, 304, 280)
@item = nil
@max = 1
@price = 0
@number = 1
end
end
#~~~~~~~~~~~~~~~~~~KONIEC MOJEGO SKRYPTU~~~~~~~~~~~~~~~~~~
#musiałem dostosować także skrypt ikonki złotej monety w menu
# ==========================================================
# ~ Ikona złotej monety w Menu ~
# Data publikacji: 17.07.2009
# Autor: MikauSchekzen
# Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
# Zapraszam na stronę Ultima Forum - http://www.ultimateam.pl
# Dostosowanie do drugiej waluty: Marcin (www.ultimateam.pl)
# ==========================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# ==========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# --------------------------- POCZĄTEK SKRYPTU ---------------------------------
module GoldIcon
# ---------------------------- POCZĄTEK EDYCJI ---------------------------------
# poniższa liczba przyporządkowana jest ikonce złota w standardowym pakiecie
# ikonek.
GoldIconIndex = 205
GoldIconIndex2 = 200 #to zostało dopisane przez: Marcin
# ----------------------------- KONIEC EDYCJI ----------------------------------
end
# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^--------------------
class Window_Base < Window
alias customgoldicon draw_currency_value
alias added_gold_icon draw_currency_value
def draw_currency_value(value, x, y, width)
customgoldicon(value , x, y, width)
draw_icon(GoldIcon::GoldIconIndex , 4 , 0)
draw_icon(GoldIcon::GoldIconIndex2 , 4 , 24) #to zostało dopisane przez: Marcin
end
end
# --------------------------- KONIEC SKRYPTU ----------------------------------
Demo
niepotrzebne
Screenshot Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Życze miłej zabawy.
[ Dodano: Sob 26 Gru, 2009 14:09 ]
Zapomniałbym o skrypcie "Nazwa Lokacji w menu", jeżeli go używacie to zamieńcie starą wersję na tą wersję:
Spoiler:
Kod:
# ==============================================================================
# ~ Nazwa lokacji w Menu ~
# Data publikacji: 20.07.2009
# Autor: TagTeam
# Poprawki: Ayene [yurika@o2.pl]
# Zapraszamy na stronę Ultima Forum - http://www.ultimateam.pl
#dostosowanie do drugiej waluty: Marcin (www.ultimateam.pl)
# ==============================================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# ==============================================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Skrypt pozwala na dodanie w Menu okienka z nazwą lokacji (nazwą mapy).
# --------------------------- POCZĄTEK SKRYPTU ---------------------------------
module TagTeam
# ---------------------------- POCZĄTEK EDYCJI ---------------------------------
# poniższa liczba przyporządkowana jest ikonce mapy w standardowym pakiecie
# ikonek.
IkonkaMapy = 153
# wyrównanie nazwy lokacji (0 - do lewej; 1 - do środka; 2 - do prawej)
WyrównanieNazwyLok = 2
NazwaOkna = "Lokacja:"
# ----------------------------- KONIEC EDYCJI ----------------------------------
end
# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^--------------------
#-------------------------------------------------------------------------------
# + Odwołanie do klasy Game_Map
#-------------------------------------------------------------------------------
class Game_Map
attr_reader :map_id
def mpname
$mpname = load_data("Data/MapInfos.rvdata")
$mpname[@map_id].name
end
end
#-------------------------------------------------------------------------------
# + Odwołanie do klasy Window_Base
#-------------------------------------------------------------------------------
class Window_NazwaMapy < Window_Base
def initialize(x, y)
super(x, y, 160, WLH + 64)
refresh
end
#-------------------------------------------------------------------------------
# + Odwołanie do klasy Scene_Menu
#-------------------------------------------------------------------------------
class Scene_Menu < Scene_Base
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 336)
@mapname_window = Window_NazwaMapy.new(0, 246)
@status_window = Window_MenuStatus.new(161, 0)
end
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@mapname_window.dispose
@status_window.dispose
end
end
# --------------------------- KONIEC SKRYPTU -----------------------------------
A gdybyście chcieli trzecią walutę, to jest to do zrobienia, jakby coś to mogę pomóc!KillYou - Pon 04 Sty, 2010 19:10 Skrypt napewno przyda się do questów :DKable - Wto 05 Sty, 2010 04:54 Pewnie że się przyda dzięki temu można zrobić to co w niektórych grach RPG :) czyli Srebrniki i np. Złoto ;D świetna robota ;]t84un - Sro 06 Sty, 2010 16:15 Przyda się... nie myślałem co prawda o 2 walucie ale jak przeczytałem to muszę wo rpakować do mojego projektu ! Dzięki :PKillYou - Nie 10 Sty, 2010 20:55 :( zeb1002 masz pecha. Do XP-ka jest bardzo mało skryptów ( na tym forum)Ayene - Nie 10 Sty, 2010 22:38 Chcecie wersję na XP? Zamieszczam wersję powyższego skryptu, która jest przerobiona tak, aby działała pod XP. Celowo nie zamieszczam tego skryptu w nowym temacie, gdyż skrypt jest wybrakowany. Posiadanie drugiej waluty w rzeczywistości w niczym nam się nie przydaje - i tak nic za nią nie kupimy w sklepie. Skrypt należałoby przerobić.
Ale dla chętnych oto wersja XP-kowska skryptu by Teyan/Marcin:
Spoiler:
Kod:
#instrukcja
DRUGA_WALUTA = "Euro"
#switch/przełącznik, który odpowiada za zmiane waluty
GOLD = 20 #możemy go oczywiście zmienić.
#gdy jest off to używaną walutą jest nowa waluta
#gdy jest on to używaną walują jest stara waluta
Posiadanie drugiej waluty w rzeczywistości w niczym nam się nie przydaje - i tak nic za nią nie kupimy w sklepie.
Jak to nie możemy nic kupić?
Przecież można obu walut używać na przemian. Drugiej waluty można używać w sklepie tak samo jak pierwszej. A nawet dzięki temu skryptowi możemy zmienić ceny np: za Krótki Miecz zapłacimy 100 sztuk złota lub 30 kryształów.Ayene - Sro 13 Sty, 2010 16:00 No ja drugiej waluty nie mogę używać w sklepie bez skryptu drugiego. Z resztą wystarczy spojrzeć na skrypt, zmienisz w nim jedynie okienka, a nie procedurę.Teyan - Sro 13 Sty, 2010 21:43 Ayene, ja w grze mam sześć państw (znaczy sie na razie tylko dwa, ale planuje mieć sześć) i gdy testuje projekt to gdy jestem na terenie jednego państwa i handluje z kupcami to wszystkie transakcje obejmują pierwszą walutę (u mnie złoto), a gdy jestem na terenie drugiego to czy zmieniam ilość kasy bohatera za pomocą polecenia w evencie (jako nagrodę za zadanie) czy handluje z kupcem to używam drugiej waluty (u mnie kryształy) i wszystko jest cacy, a poza tym... jakiego "skryptu drugiego"?Ayene - Sro 13 Sty, 2010 22:09 Skryptu drugiego, do którego podałeś wcześniej link, jako że dzięki niemu możemy 'zmienić ceny np: za Krótki Miecz zapłacimy 100 sztuk złota lub 30 kryształów'.
Co do drugiej waluty... to w jaki sposób mam coś za nią kupić? Zmieniam przełącznik 20, dodaje mi się druga waluta, ale i tak nie mogę nic kupić u sprzedawcy.Ozzma - Czw 14 Sty, 2010 14:01 Mi też nie działa Już wcześniej próbowałam wykorzystać ten skrypt, ale myślałam że sama coś źle robię, dlatego nie pisałam tutaj. Ale jak widać nie tylko mi skrypt nie działa Malian - Pon 18 Sty, 2010 13:58 No wszystko gites w tym skrypcie do XP ale czy się nie gryzie z Nazwą mapy i Ring menu? Wszystkie skrypty oczywiście do XP.
PS. Nie robiłem nowego tematu ponieważ wy też nie zrobiliście. Cyklop - Wto 16 Lut, 2010 23:10 Według mnie ten skrypt nie powinien być w dziale Skrypty, bo przecież nie działa, te pieniądze czy też kryształy to są tylko na pokaz. Szkoda bo mogło być całkiem przydatne.Teyan - Sro 28 Kwi, 2010 09:41 Dobra, to ja już nie wiem o co kaman. Przed chwilą sprawdzałem ten skrypt u mnie, na czystym (czyt. bez innych dodatkowych skryptów) RPG Makerze i u mnie chodzi, klne się na wszystko, że to prawda. Myślałem, że błąd wynika z tego, iż pisałem ten skrypt na zaśmieconym (czyt. pełnym własnych, nierzadko durnych i całkowicie nieprzydatnych skryptów) RPG Makerze, ale nic jak chodzi - tak chodzi.
[ Dodano: Sro 28 Kwi, 2010 09:44 ]
I nie mam "skryptu drugiego" o którym pisała Ayene.Ayene - Sro 28 Kwi, 2010 10:03 Teyan, w takim razie dobrze by było abyś zamieścił demko... może wtedy rozjaśni się Użytkownikom Teyan - Sro 28 Kwi, 2010 11:20 Może rzeczywiście coś w mojej instrukcji jest nie tak.
Oto instrukcja (dokładnie w ten sposób sprawdzałem, czy z moim skryptem rzeczywiście jest coś nie tak):
INSTRUKCJA
Krok I:
Napisz zdarzenie otwierające grę i daj w nim takie polecenia:
--pieniądze + 100
--switch o id takim jak w moim skrypcie (domyślnie 20) na on
--pieniądze + 200
PODSUMOWANIE: W ten sposób nasza postać dostanie 200 szt starej waluty i 100 szt nowej.
Krok II:
Teraz tworzymy sklep (tj. NPC-ta kupca)
--Pokaż wybór (1: chce płacić w starej walucie, 2: chce płacić w starej walucie, 3: wróć)
---gdy 1:
---switch o id takim jak w moim skrypcie (domyślnie 20) na off
---i ustawiamy towary
---gdy 2:
---switch o id takim jak w moim skrypcie (domyślnie 20) na on
---i ustawiamy towary
---gdy 3: [zostaw puste]
PODSUMOWANIE: dzięki temu możemy wybrać w jakiej walucie płacimy (oczywiście to jest tylko na potrzeby testu - to w jakiej walucie płacimy zależy od państwa na terenie którego się znajdujemy i każdy kupiec narzuca graczowi swoją walutę).
UWAGA: NIE MA TAK że jakiś przedmiot możemy kupić/sprzedać tylko w jednej walucie!!!Ayene - Sro 28 Kwi, 2010 13:55 Teyan, w porządku... a próbowałeś coś kupić? Mając 100 drugiej waluty spróbuj kupić kilka przedmiotów... i tak kupuj dopóki zejdzie do zera. I co? Dalej można kupować.
Aha i dodaj tylko walutę drugą, pozostawiając pierwszą na 0... Spróbuj coś kupić?!
Ponadto nigdy nie jest tak, aby przedmioty kosztowały tyle samo w dwóch różnych walutach... to na co ona? No chyba że stworzy się dwa te same przedmioty - jeden z ceną 5G, a drugi 2K.Teyan - Sro 28 Kwi, 2010 15:07 Dobra, jeden błąd już poprawiłem. Nowa wersja "Dodatkowej waluty" będzie jutro.Czeliosss - Sro 28 Kwi, 2010 15:10 Wiesz co, jakbym znał się na Ruby to bym zrobił dodawanie rubinów za pomocą wywołania skryptu. Ale to moja sugestia.
Pzdr.
Ps. Skrypt bardzo użyteczny.Teyan - Sro 28 Kwi, 2010 15:21 Bez obaw, do jutra naprawie wszystkie bugi (i spróbuje dodać coś extra). Nara.Agumon - Sro 28 Kwi, 2010 15:40 A dało by się trzy waluty zrobić???Teyan - Sro 28 Kwi, 2010 16:50
Agumon napisał/a:
A dało by się trzy waluty zrobić???
No tak, ale na mnie nie patrz. Ja już mam tego skryptu po dziurki w nosie!!!!!!!!!!!!!!!
Na szczęście kończę poprawianie bugów, właściwie poprawiłem wszystkie (włącznie z tym, że Window_Command gdzie były te opcje: kup, sprzedaj, wróć; zostało powiększone i teraz nie ma pustej luki), możemy także dać skrót od nazwy naszym walutom, no i oczywiście pojawił się jakiś kurs walut (ale i tak bez cudów).Agumon - Sro 28 Kwi, 2010 17:53
Teyan napisał/a:
No tak, ale na mnie nie patrz. Ja już mam tego skryptu po dziurki w nosie!!!!!!!!!!!!!!!
Nie no ok spoko. Ja tak tylko pytałem. Może ja coś spróbuje zrobić.Teyan - Sro 28 Kwi, 2010 23:25 Ok skończyłem.
Oto co poprawiłem:
1. Wszystkie bugi o których pisała Ayene!
2. Kilka innych bugów (np: luka pod Window_Command).
Co nowego?
1. Inflacja! Możemy ją zmieniać podczas gry! Oczywiście nie sam gracz!!!!!
2. Kilka ustawień: skróty nazw walut, kurs walut.
3. Możliwość wymiany waluty u odpowiednich NPC-tów.
UWAGI:
1. Skrypt jest bardzo długi!!!!
2. Przetestujcie go ktoś!!!!!!!!!!!!!!!!!!!!
3. I jak coś będzie nie tak to piszcie od razu...
4. ...ale tym razem wszystko będzie cacy!
Oto to:
#instrukcja
#switch/przełącznik, który odpowiada za zmiane waluty
GOLD = 20 #możemy go oczywiście zmienić.
#gdy jest off to używaną walutą jest nowa waluta
#gdy jest on to używaną walutą jest stara waluta
#wywołując skrypt:
# $scene = Scene_Kantor.new
#otworzy się nam okno z możliwością kupna/sprzedaży waluty
#jak w banku można wymieniać pieniądze na inną walutę
#najlepiej wywołać ten skrypt w poleceniu jakiegoś NPC-ta
#takim NPC-tem może być np: "Królewski Skarbnik" (chyba wiecie o co chodzi?)
#facet będzie nam wymieniał pieniądze: kryształy na złoto i odwrotnie
module Teyan
Kurs = 200# w % (oznacza, że 2. Waluta = 200% pierwszej waluty) [domyślnie: 1 kryształ = 2 sztuki złota]
Icon1 = 205# ikonka pierwszej waluty
Icon2 = 200# ikonka drugiej waluty
Nazwa1 = ' G'#skrócona nazwa pierwszej waluty
Nazwa2 = ' K'#skrócona nazwa drugiej waluty
Kup = 100 # % ceny kupna (normalnie jest to 100)
Sprzedaj = 50 # % ceny sprzedania (normalnie jest to 50)
# wywołując skrypt:
# Teyan::Sprzedaj = x (gdzie X musi być liczbą dodatnią i całkowitą)
# sprawimy, że nasz bohater będzie sprzedawał przedmioty po X% ich ceny
#
# możemy wywołać skrypt:
# Teyan::Kup = x (gdzie X musi być liczbą dodatnią i całkowitą)
# sprawimy, że nasz bohater będzie kupował przedmioty po X% ich ceny
# jeżeli wywołamy ten skrypt:
# Teyan::Sprzedaj = 105 (nastąpi inflacja o 5% - ceny wzrosną)
end
#~~~~~~~~~~~~~~~~~~SKRYPT
class Window_Gold < Window_Base
def initialize(x, y)
super(x, y, 160, WLH * 2 + 32)
refresh
end
def refresh
self.contents.clear
draw_icon(Teyan::Icon1 , 4 , 0)
draw_icon(Teyan::Icon2 , 4 , 24)
self.contents.draw_text(0, 0, 120, 24, [$game_party.gold, Teyan::Nazwa1], 2)
self.contents.draw_text(0, 24, 120, 24, [$game_party.gold2, Teyan::Nazwa2], 2)
end
end
class Game_Party < Game_Unit
attr_reader :gold2
def initialize
super
@gold = 0
@gold2 = 0
@steps = 0
@last_item_id = 0
@last_actor_index = 0
@last_target_index = 0
@actors = [] # Party member (actor ID)
@items = {} # Inventory item hash (item ID)
@weapons = {} # Inventory item hash (weapon ID)
@armors = {} # Inventory item hash (armor ID)
end
def gain_gold(n)
if $game_switches[GOLD]
@gold = [[@gold + n, 0].max, 9999999].min
else
@gold2 = [[@gold2 + n, 0].max, 9999999].min
end
end
def lose_gold(n)
gain_gold(-n)
end
end
class Scene_Menu < Scene_Base
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 336)
@status_window = Window_MenuStatus.new(161, 0)
end
end
class Scene_Shop < Scene_Base
def start
super
create_menu_background
create_command_window
@help_window = Window_Help.new
@gold_window = Window_Gold.new(384, 56)
@dummy_window = Window_Base.new(0, 136, 544, 280)
@buy_window = Window_ShopBuy.new(0, 136)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
@sell_window = Window_ShopSell.new(0, 136, 544, 280)
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
@number_window = Window_ShopNumber.new(0, 136)
@number_window.active = false
@number_window.visible = false
@status_window = Window_ShopStatus.new(304, 136)
@status_window.visible = false
end
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 $game_switches[GOLD]
if @item == nil or (@item.price * Teyan::Kup / 100) > $game_party.gold or number == 99
Sound.play_buzzer
else
Sound.play_decision
max = @item.price == 0 ? 99 : $game_party.gold / (@item.price * Teyan::Kup / 100)
max = [max, 99 - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.price * Teyan::Kup / 100)
@number_window.active = true
@number_window.visible = true
end
else
if @item == nil or (@item.price * Teyan::Kup * 100 / Teyan::Kurs / 100) > $game_party.gold2 or number == 99
Sound.play_buzzer
else
Sound.play_decision
max = @item.price == 0 ? 99 : $game_party.gold2 / (@item.price * Teyan::Kup * 100 / Teyan::Kurs / 100)
max = [max, 99 - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.price * Teyan::Kup * 100 / Teyan::Kurs / 100)
@number_window.active = true
@number_window.visible = true
end
end
end
end
def create_command_window
s1 = Vocab::ShopBuy
s2 = Vocab::ShopSell
s3 = Vocab::ShopCancel
@command_window = Window_Command.new(384, [s1, s2, s3], 3)
@command_window.y = 56
@command_window.height = 80
if $game_temp.shop_purchase_only
@command_window.draw_item(1, false)
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
if $game_switches[GOLD]
@number_window.set(@item, max, @item.price * Teyan::Sprzedaj / 100)
else
@number_window.set(@item, max, @item.price * Teyan::Sprzedaj * 100 / Teyan::Kurs / 100)
end
@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
if $game_switches[GOLD]
$game_party.lose_gold(@number_window.number * @item.price * Teyan::Kup / 100)
else
$game_party.lose_gold(@number_window.number * @item.price * Teyan::Kup * 100 / Teyan::Kurs / 100)
end
$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
if $game_switches[GOLD]
$game_party.gain_gold(@number_window.number * (@item.price * Teyan::Sprzedaj / 100))
else
$game_party.gain_gold(@number_window.number * (@item.price * Teyan::Sprzedaj * 100 / Teyan::Kurs / 100))
end
$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 initialize(x, y)
super(x, y, 304, 280)
@shop_goods = $game_temp.shop_goods
refresh
self.index = 0
end
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
if $game_switches[GOLD]
enabled = (item.price * Teyan::Kup / 100 <= $game_party.gold and number < 99)
else
enabled = (item.price * Teyan::Kup * 100 / Teyan::Kurs / 100 <= $game_party.gold2 and number < 99)
end
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_item_name(item, rect.x, rect.y, enabled)
rect.width -= 4
if $game_switches[GOLD]
self.contents.draw_text(rect, item.price * Teyan::Kup / 100, 2)
else
self.contents.draw_text(rect, item.price * Teyan::Kup * 100 / Teyan::Kurs / 100, 2)
end
end
end
class Window_ShopNumber < Window_Base
def initialize(x, y)
super(x, y, 304, 280)
@item = nil
@max = 1
@price = 0
@number = 1
end
end
class Window_Base < Window
def draw_currency_value(value, x, y, width)
if $game_switches[GOLD]
cx = contents.text_size(Teyan::Nazwa1).width
else
cx = contents.text_size(Teyan::Nazwa2).width
end
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width-cx-2, WLH, value, 2)
self.contents.font.color = system_color
if $game_switches[GOLD]
self.contents.draw_text(x, y, width, WLH, Teyan::Nazwa1, 2)
else
self.contents.draw_text(x, y, width, WLH, Teyan::Nazwa2, 2)
end
end
end
####################################
#KANTOR!!!!!!!!!!!!!!!!!!!!!!!!
####################################
class Game_Party < Game_Unit
def gain_gold1(n)
@gold = [[@gold + n, 0].max, 9999999].min
end
def lose_gold1(n)
gain_gold1(-n)
end
def gain_gold2(n)
@gold2 = [[@gold2 + n, 0].max, 9999999].min
end
def lose_gold2(n)
gain_gold2(-n)
end
end
class Scene_Kantor < Scene_Base
def start
create_menu_background
create_command_window
create_command_window1
create_command_window2
@gold_window = Window_Gold.new(0, 0)
@gold_window.visible = false
@help_window = Okno_Pomocy.new
@help_window.visible = false
end
def terminate
super
dispose_menu_background
@gold_window.dispose
@help_window.dispose
@command_window.dispose
@command_window1.dispose
@command_window2.dispose
end
def update
super
update_menu_background
@gold_window.update
@help_window.update
@command_window.update
@command_window1.update
@command_window2.update
if @command_window.active
update_command_selection
elsif @command_window1.active
update_command_selection1
elsif @command_window2.active
update_command_selection2
end
end
def update_command_selection1
if Input.trigger?(Input::C)
case @command_window1.index
when 0
if $game_party.gold < 10
Sound.play_buzzer
else
Sound.play_decision
kasa = 10 * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 1
if $game_party.gold < 20
Sound.play_buzzer
else
Sound.play_decision
kasa = 20 * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 2
if $game_party.gold < 50
Sound.play_buzzer
else
Sound.play_decision
kasa = 50 * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 3
if $game_party.gold < 100
Sound.play_buzzer
else
Sound.play_decision
kasa = 100 * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 4
if $game_party.gold < 200
Sound.play_buzzer
else
Sound.play_decision
kasa = 200 * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 5
if $game_party.gold == 0
Sound.play_buzzer
else
Sound.play_decision
kasa = $game_party.gold * 100 / Teyan::Kurs
$game_party.lose_gold1(kasa * Teyan::Kurs / 100)
$game_party.gain_gold2(kasa)
@gold_window.refresh
sprawdzanie
end
when 6
Sound.play_decision
@command_window.active = true
@command_window.visible = true
@gold_window.visible = false
@command_window1.active = false
@command_window1.visible = false
@help_window.visible = false
when 7
Sound.play_decision
$scene = Scene_Map.new
end
end
end
def update_command_selection2
if Input.trigger?(Input::C)
case @command_window2.index
when 0
if $game_party.gold2 < 10
Sound.play_buzzer
else
Sound.play_decision
kasa = 10
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 1
if $game_party.gold2 < 20
Sound.play_buzzer
else
Sound.play_decision
kasa = 20
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 2
if $game_party.gold2 < 50
Sound.play_buzzer
else
Sound.play_decision
kasa = 50
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 3
if $game_party.gold2 < 100
Sound.play_buzzer
else
Sound.play_decision
kasa = 100
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 4
if $game_party.gold2 < 200
Sound.play_buzzer
else
Sound.play_decision
kasa = 200
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 5
if $game_party.gold2 == 0
Sound.play_buzzer
else
Sound.play_decision
kasa = $game_party.gold2
$game_party.lose_gold2(kasa)
$game_party.gain_gold1(kasa * Teyan::Kurs / 100)
@gold_window.refresh
sprawdzanie
end
when 6
Sound.play_decision
@command_window.active = true
@command_window.visible = true
@gold_window.visible = false
@command_window2.active = false
@command_window2.visible = false
@help_window.visible = false
when 7
Sound.play_decision
$scene = Scene_Map.new
end
end
end
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_decision
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
case @command_window.index
when 0
if $game_party.gold == 0
Sound.play_buzzer
else
Sound.play_decision
@command_window.active = false
@command_window.visible = false
@gold_window.visible = true
@command_window1.active = true
@command_window1.visible = true
@help_window.visible = true
@help_window.wstaw_ikonki(Teyan::Icon1, Teyan::Icon2)
end
when 1
if $game_party.gold2 == 0
Sound.play_buzzer
else
Sound.play_decision
@command_window.active = false
@command_window.visible = false
@gold_window.visible = true
@command_window2.active = true
@command_window2.visible = true
@help_window.visible = true
@help_window.wstaw_ikonki(Teyan::Icon2, Teyan::Icon1)
end
end
end
end
def create_command_window
s1 = 'Wymień złoto na kryształy.'
s2 = 'Wymień kryształy na złoto.'
@command_window = Window_Command.new(544, [s1, s2], 1)
@command_window.y = 288
@command_window.z = 400
@command_window.height = 128
@command_window.active = true
@command_window.visible = true
if $game_party.gold < 1
@command_window.draw_item(0, false)
end
if $game_party.gold2 < 1
@command_window.draw_item(1, false)
end
end
def create_command_window1
s1 = 'Wymień 10szt.'
s2 = 'Wymień 20szt.'
s3 = 'Wymień 50szt.'
s4 = 'Wymień 100szt.'
s5 = 'Wymień 200szt.'
s6 = 'Wymień wszystko.'
s7 = 'Wróć.'
s8 = 'Koniec.'
@command_window1 = Window_Command.new(544, [s1, s2, s3, s4, s5, s6, s7, s8], 2)
@command_window1.y = 288
@command_window1.z = 400
@command_window1.height = 128
@command_window1.active = false
@command_window1.visible = false
if $game_party.gold < 200
@command_window1.draw_item(4, false)
if $game_party.gold < 100
@command_window1.draw_item(3, false)
if $game_party.gold < 50
@command_window1.draw_item(2, false)
if $game_party.gold < 20
@command_window1.draw_item(1, false)
if $game_party.gold < 10
@command_window1.draw_item(0, false)
if $game_party.gold < 1
@command_window1.draw_item(5, false)
end
end
end
end
end
end
end
def create_command_window2
s1 = 'Wymień 10szt.'
s2 = 'Wymień 20szt.'
s3 = 'Wymień 50szt.'
s4 = 'Wymień 100szt.'
s5 = 'Wymień 200szt.'
s6 = 'Wymień wszystko.'
s7 = 'Wróć.'
s8 = 'Koniec.'
@command_window2 = Window_Command.new(544, [s1, s2, s3, s4, s5, s6, s7, s8], 2)
@command_window2.y = 288
@command_window2.z = 400
@command_window2.height = 128
@command_window2.active = false
@command_window2.visible = false
if $game_party.gold2 < 200
@command_window2.draw_item(4, false)
if $game_party.gold2 < 100
@command_window2.draw_item(3, false)
if $game_party.gold2 < 50
@command_window2.draw_item(2, false)
if $game_party.gold2 < 20
@command_window2.draw_item(1, false)
if $game_party.gold2 < 10
@command_window2.draw_item(0, false)
if $game_party.gold2 < 1
@command_window2.draw_item(5, false)
end
end
end
end
end
end
end
def sprawdzanie
if $game_party.gold < 1
@command_window.draw_item(0, false)
else
@command_window.draw_item(0, true)
end
if $game_party.gold2 < 1
@command_window.draw_item(1, false)
else
@command_window.draw_item(1, true)
end
if $game_party.gold < 200
@command_window1.draw_item(4, false)
else
@command_window1.draw_item(4, true)
end
if $game_party.gold < 100
@command_window1.draw_item(3, false)
else
@command_window1.draw_item(3, true)
end
if $game_party.gold < 50
@command_window1.draw_item(2, false)
else
@command_window1.draw_item(2, true)
end
if $game_party.gold < 20
@command_window1.draw_item(1, false)
else
@command_window1.draw_item(1, true)
end
if $game_party.gold < 10
@command_window1.draw_item(0, false)
else
@command_window1.draw_item(0, true)
end
if $game_party.gold < 1
@command_window1.draw_item(5, false)
else
@command_window1.draw_item(5, true)
end
if $game_party.gold2 < 200
@command_window2.draw_item(4, false)
else
@command_window2.draw_item(4, true)
end
if $game_party.gold2 < 100
@command_window2.draw_item(3, false)
else
@command_window2.draw_item(3, true)
end
if $game_party.gold2 < 50
@command_window2.draw_item(2, false)
else
@command_window2.draw_item(2, true)
end
if $game_party.gold2 < 20
@command_window2.draw_item(1, false)
else
@command_window2.draw_item(1, true)
end
if $game_party.gold2 < 10
@command_window2.draw_item(0, false)
else
@command_window2.draw_item(0, true)
end
if $game_party.gold2 < 1
@command_window2.draw_item(5, false)
else
@command_window2.draw_item(5, true)
end
end
end
class Okno_Pomocy < Window_Base
def initialize
super(216, 232, 116, 56)
end
def wstaw_ikonki(icon1 = 205, icon2 = 200)
self.contents.clear
draw_icon(icon1, 0, 0)
self.contents.draw_text(24, 0, 32, 24, '=>', 1)
draw_icon(icon2, 56, 0)
end
end
A teraz idę spać!!!Ayene - Czw 29 Kwi, 2010 10:36 Cóż... przetestowałam i błędów - wspominanych wcześniej przeze mnie - już nie ma.
Skrypt faktycznie dość długi, ale widać, ile pracy w niego włożyłeś.
Zastanowiłam się, czy nie byłoby lepiej, gdybyś założył nowy temat i umieścił w nim poprawną wersję. Wówczas ten temat bym zamknęła i przeniosła do innego działu.Teyan - Czw 29 Kwi, 2010 11:43 Ayene, jak chcesz to możesz sama założyć nowy temat, a ten najlepiej usuń (nie chce, żeby przypominał mi o moich bugach). Mam nadzieję, że nowa wersja się wszystkim podoba, siedziałem wczoraj nad nim chyba sześć godzin (z małymi przerwami na papu ), ciekawi mnie co sądzicie o możliwości wymiany waluty, a konkretniej o jej wizualnej oprawie, bo mi ten "kantor" nie bardzo się podoba, wizualnie chciałbym go jeszcze poprawić, ale nie mam żadnych pomysłów. CreeperCrisis - Sob 01 Maj, 2010 18:26 Temat postu: SUPER SKRYPTAkurat wymyśliłem pomysł na grę. Gra będzie opowiadała o magach, a waluty w tamtym świecie będą się nazywały: LIFE COINS - do kupywania przedmiotów i różdżek i MANA COINS - do kupywania magi i umiejętności. Bardzo tem skrypt mi się przydał i myślę, że jesteś bardzo dobrym tworzycielem skryptów. Killerczyc - Pon 02 Sie, 2010 22:27 Prosiłeś o pomysły, mógłbyś tak zrobić by waluty się same zmieniały bo mam zamiast złota
Złote, a zamiast kryształów mam Grosze np. po zebraniu np. 125 Groszy dawało razem
1 Złote i 25 Groszy mam pewien projekt a te rozwiązanie mi odpowiada....
Pleeeeease! :P
Pzdr.cj2 - Pon 02 Sie, 2010 23:56 nie licz na cud pewnie prędzej Teyan porzuci skrypt, niż to dostanieszKillerczyc - Wto 03 Sie, 2010 09:32 Ta, możliwe ale sprubować można.... :P
[ Dodano: Czw 05 Sie, 2010 12:28 ]
Proszę o pomoc potrzebne jest mi to do aktualnego projektuPaKiTos - Pią 06 Sie, 2010 08:46 Przecież to na zdarzeniach można...Killerczyc - Pią 06 Sie, 2010 09:37 Hej, to wytłumaczysz ?!
Bo ze mnie parówa...
[ Dodano: Pią 06 Sie, 2010 11:41 ]
Chwile to przemyślałem i chyba wiem jak....
Trzeba wywołać skrypt dodające klejnoty (u mnie złote)
Czy tak ?!FireBlade - Sro 11 Sie, 2010 17:14 Ja zrobiłam cuś takiego :
- dodaj 150 golda
- swich 20 on
- dodaj 150 złota
i nadal mi dodaje 300 1 waluty
wie ktoś o co chodzi ? ;pPaKiTos - Czw 12 Sie, 2010 07:10 Błagam....
Przełącznik kasy = ON
Jeśli kasa równa/większa 100 to:
Zabierz 100 kasy
Przełącznik kasy = OFF
Dodaj 1 tej większej waluty
Co, może jeszcze demo?Killerczyc - Czw 12 Sie, 2010 08:54 To daj demko :PAgumon - Sob 19 Lut, 2011 13:33 Ej a da się tak zrobić żeby ta waluta była odejmowana ze zmiennej?? Z góry dzięki za odpowiedź.Kako - Wto 22 Lut, 2011 18:20 Dobry skrypt,przyda mi się do projektu ;DStasiu96 - Czw 14 Lip, 2011 23:36 Pomocy. Ten skrypt gryzie mi się z innymi, nie wiem co robić. Gdy klikam nowa gra, to wyskakują błędy, ale jak wczytam grę, to wszystko działa. A jak usunę jeden scrypt który wyskakuje z błędem, to błąd ma kolejny. Gdy usunę ten z monetami to wszystko chodzi. Co robić?marsonek - Sro 21 Mar, 2012 23:22 Siemka ;p a dali byście skrypt w którym tak jak tu mógł bym mieć w menu pokazaną tą walutę jak jest tylko że jej ilość zależała by od zmiennej którą mogę w grze zmieniać kiedy chcę.
np. podchodzę do skrzyni zmieniam zmienną "diamenty" + 3 i w menu pojawia się że mam 3
lub USTAW WARUNEK Jeśli masz 5 diamentów możesz przejść.
i jeszcze żeby skrypt żeby ta zmienna w ilości wypadała z potwora i był procent szansy.