[XP] Pomoc ze skryptem - Wersja do druku
Ultima Forum
[XP] Pomoc ze skryptem - Wersja do druku

+- Ultima Forum (https://forum.ultimateam.pl)
+-- Dział: RPG Maker (/Forum-RPG-Maker)
+--- Dział: Wsparcie (/Forum-Wsparcie)
+--- Wątek: [XP] Pomoc ze skryptem (/Thread-XP-Pomoc-ze-skryptem)



Pomoc ze skryptem - Chyziu - 18-07-15 21:54

Witam, posiadam skrypt na paski zdrowia oraz many nad postacią. Prezentuje się on tak:

#-------------------------------------------------------------#
#--------------------Paski HP i MP---------------------#
#--------------------by Nazgul king--------------------#
#-------------------------------------------------------------#
class Spriteset_Map
alias nk92_pasek_initialize initialize
alias nk92_pasek_update update
alias nk92_dispose dispose
def initialize
@pasek = Sprite.new
@pasek.bitmap = Bitmap.new(32,9)
@pasek.x = $game_player.screen_x - 16
@pasek.y = $game_player.screen_y - 64
@pasek.z = $game_player.screen_z + 1
rysuj_pasek
nk92_pasek_initialize
end
def update
nk92_pasek_update
@pasek.x = $game_player.screen_x - 16
@pasek.y = $game_player.screen_y - 64
@pasek.z = $game_player.screen_z + 1
rysuj_pasek
end
def dispose
nk92_dispose
@pasek.bitmap.dispose
@pasek.dispose
end
def rysuj_pasek
@pasek.bitmap.clear
@pasek.bitmap.fill_rect(0,0,32,9, Color.new(255,255,255))
@pasek.bitmap.fill_rect(1,1,30,3, Color.new(5,5,5))
@pasek.bitmap.fill_rect(1,5,30,3, Color.new(5,5,5))
zycie = 30 * $game_party.actors[0].hp / $game_party.actors[0].maxhp
@pasek.bitmap.fill_rect(1,1,zycie,3, Color.new(255,64,64))
magia = 30 * $game_party.actors[0].sp / $game_party.actors[0].maxsp
@pasek.bitmap.fill_rect(1,5,magia,3, Color.new(64,64,255))
end
end

Czy ktoś wie jak zrobić, aby wywołać ten skrypt za pomocą komendy w zdarzeniu? Byłbym wdzięczny za pomoc. :)


RE: Pomoc ze skryptem - Venesard - 19-07-15 09:58

Z tego co widzę to się nie da, skrypt bazuje na zmiennych lokalnych do których nie można się odnieść z poziomu "Wywołaj skrypt".


RE: Pomoc ze skryptem - Mateusz SSJ8 - 20-07-15 06:17

Ależ można się do nich odnieść, Venesard. Wystarczy w "Scene_Map" w definicji klasy umieścić "attr_reader :spriteset"

Swoją drogą to trochę bez sensu, bo paski powinny pojawić się automatycznie przy inicjalizowaniu klasy. Sprecyzujswój problem bardziej, Chyziu.


RE: Pomoc ze skryptem - Venesard - 20-07-15 08:12

Tak, w ten sposób można. Ale nie można tego zrobić bez ingerencji w kolejne skrypty tak jak o to zapytał Chyziu :)


RE: Pomoc ze skryptem - Adrapnikram - 20-07-15 10:37

A można po prostu zamienić zmienne lokalne na globalne?
Czy jest zakaz?


RE: Pomoc ze skryptem - Chyziu - 20-07-15 12:13

(20-07-15 06:17)Mateusz SSJ8 napisał(a):  Ależ można się do nich odnieść, Venesard. Wystarczy w "Scene_Map" w definicji klasy umieścić "attr_reader :spriteset"

Swoją drogą to trochę bez sensu, bo paski powinny pojawić się automatycznie przy inicjalizowaniu klasy. Sprecyzujswój problem bardziej, Chyziu.

Problem jest w tym, że mam zrobione krótkie intro w którym przez jakiś czas występuje czarny ekran. Bohatera i elementów tilesetu nie widać tylko te nieszczęsne paski są na widoku. I chciałbym zrobić tak, żeby wywołać ten skrypt po zakończeniu intra.


RE: Pomoc ze skryptem - Mateusz SSJ8 - 20-07-15 14:51

Czyli trafiłem z nadaniem "@spriteset" w klasie "Scene_Map" atrybutu "read". Teraz pozostaje tylko w "Spriteset_Map" dopisać gdzieś poza funkcją "attr_reader :pasek" i możesz już wywołać zmianę ustawień pasków. Po prostu walnij w "wykonaj skrypt"
Kod:
scene_variable.spriteset.pasek.visible = true/false
Miej jednak na uwadze, że po zmianie ekranu na np. "Scene_Menu", a następnie przywrócenie go z powrotem na "Scene_Map" (w wyniku działań zdarzenia) konieczne będzie walnąć tę komendę jeszcze raz.