[VX] Punkty umiejętności - Wersja do druku
Ultima Forum
[VX] Punkty umiejętności - Wersja do druku

+- Ultima Forum (https://forum.ultimateam.pl)
+-- Dział: RPG Maker (/Forum-RPG-Maker)
+--- Dział: Wsparcie (/Forum-Wsparcie)
+--- Wątek: [VX] Punkty umiejętności (/Thread-VX-Punkty-umiej%C4%99tno%C5%9Bci)



Punkty umiejętności - Allemov - 28-02-15 01:29

Hej!

Zacznijmy może od tego, że w UW i raczkującym UW2 używam skryptu punktów umiejętności następujących autorów:

# Requiem Upgrade
# Autor: Requiem
# Zamieścił: Karsznickus
# Modyfikacja z samowyskakującym oknem: Ayene
# Modyfikacja z ikoną awansu pobrana od Blizzarda


Z małymi modyfikacjami własnymi tj. wyłączeniem możliwości dodawania punktów do niektórych statystyk.

No i teraz chciałbym od tych samych punktów uzależnić możliwość nabywania UMIEJĘTNOŚCI. Czyli bohater otrzymuje wybór: Nauczyć się umiejętności 'Wędkowanie' czy zwiększyć sobie manę.

Przeczytałem cały skrypt - z resztą nie pierwszy raz, bo robiłem to już kombinując z tym wyłączeniem możliwości dodawania wspomnianym wyżej - i nigdzie nie widzę, czegoś takiego, jak numer zmiennej, w którym przechowywana jest informacja, o ilości punktów.

A co za tym idzie: nie potrafię sprawdzać, ani zmieniać tej liczby w trakcie interakcji z NPC, który miałby nas uczyć umiejętności.

Alternatywą jest zabawa ze zdarzeniami i stworzenie niezależnych punktów do umiejętności, różnych od tych do statystyk. Nie wiem tylko czy to oby na pewno jest dobry pomysł. Raczej trochę ograniczający wybór. Jak sądzicie?

Może ktoś (np. Ayene) wie gdzie przechowywana jest liczba punktów i jak sprawić by była zmienną?


RE: Punkty umiejętności - Ayene - 28-02-15 11:00

Aby odwołać się do punktów, które ma wskazany bohater, wystarczy użyć kodu:
Kod:
$game_actors[ID].points
gdzie ID to id bohatera w bazie danych.
Aby dodać je jednej osobie:
Kod:
$game_actors[ID].points += 5
Znak "+=" jest o tyle ważny, że gdybyś użył samego "=" to przypisałbyś nową wartość, zamiast ją zwiększyć. Adekwatnie jest z odejmowaniem "-=", mnożeniem "*=", itd.

Aby dodać wszystkim bohaterom w drużynie:
Kod:
$game_party.members.each {|a| a.points += 5}

Możesz również wpisać ten kod w nową definicję w "Game_Interpreter", np.
Kod:
def add_points(p)
    $game_party.members.each {|a| a.points += p}
  end
dzięki czemu w poleceniu "Scripts" możesz użyć skróconej formy:
Kod:
add_points(5)

Jeśli chciałbyś dodać osobne punkty za umiejętności (aby nie były współdzielone, a i ich liczba mogłaby się różnić). Wystarczy, że dodasz odpowiednio pod:
Kod:
Points_Gained = 5 # liczba punktów co poziom
Skill_Points_Gained = 3
następnie pod:
Kod:
attr_accessor :points
attr_accessor :spoints
następnie pod:
Kod:
@points = 0
@spoints = 0
następnie pod:
Kod:
@points += Points_Gained
@spoints += Skill_Points_Gained
Wówczas dodajesz punkty umiejętności kodem:
Kod:
$game_actors[ID].spoints += 5