Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Pytania i Odpowiedzi
Autor Wiadomość
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
  Wysłany: Pią 14 Paź, 2011 10:47
Pytania i Odpowiedzi
Na wniosek z tego tematu zakładam takowy wątek. Jeśli się przyjmie, może i wydzieli się poddział :->

Ten temat przeznaczony jest do zadawania pytań odnośnie tworzenia skryptów. Jeśli w twoim skrypcie nie działa jakaś klasa, wywala błąd, lub nie wiesz, jak zabrać się za jakąś jego część, w tym temacie możesz zadać pytanie, a my postaramy się udzielić ci odpowiedzi.

Zasady:
- Nie piszemy odnośnie skryptów z forum - one mają swoje tematy
- Nie piszemy o cudzych skryptach, jedynie o problemach w tworzeniu własnych
- Zasada n°2 nie dotyczy gruntownego przerobienia/scalenia skryptów
- Nie jest to temat od gotowców - ma pomóc i naprowadzić, nie podać rozwiązanie na tacy.

No, to chyba tyle. Zaczynamy! :ahoy:
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Pon 17 Paź, 2011 12:22
Ja mam takie pytanka (oczywiście wszystko w skrypcie):

1. Czy da się zrobić tak, że obrazek, który ustawimy na mapie (w scene map), powtarza się w nieskończoność we wszystkich kierunkach :?: Coś w stylu panoramy tylko na wierzchu i przewijany również w pionie.

2. Jak ustawić warunek "jeśli bohater znajduje się na mapie x" (jak się robi warunki wiem).

3. Warunek "jeśli bohater znajduje się na obszarze x mapy y".

Jeśli ktoś wie, to proszę o odpowiedź ;-)



Do Angiusa: Ten jeden temat chyba na razie wystarczy. Tylko nie kasuj go proszę, bo w różnych odstępach czasu będę chętnie z niego korzystać i być może inni też zaczną ;-)
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Finwe 




Preferowany:
RPG Maker VXAce

Pomógł: 34 razy
Dołączył: 30 Lip 2011
Posty: 322
Skąd: Rzeszów
Wysłany: Pon 17 Paź, 2011 13:18
Avara:
1. Nie wiem.
2. Ustalasz zmienną np. ID mapy na id na: inne, id mapy. Wstaw to przed warunkiem.
3. Możesz zrobić na zasadzie "pasów" ustawiasz zmienną na współrzędna X , lub Y. UWAGA: Musisz dać to po warunku z ID mapy.
Jak pomogłem do daj pomógł.
 
 
 
Angius 

Nie wkurzać



Preferowany:
RPG Maker VX

Pomógł: 104 razy
Dołączył: 30 Paź 2010
Posty: 1276
Skąd: wROCK
Wysłany: Pon 17 Paź, 2011 14:30
1. Da się na pewno - musisz wytyczyć ścieżkę obrazka i zapętlić go, przykład masz choćby w skrypcie na animowane title obrazkowe, czy na scene_story dla VX, możesz na tym bazować.
2. Musisz wyciągnąć i sprawdzić ID mapy, czyli z grubsza to, co napisał Finwe
3. Tak samo, ale musisz wyciągnąć współrzędne.

PS. Kasować tematu nie zamierzam, ani stąd, ani z XP, ani z VX :-)
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."


 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Pon 17 Paź, 2011 16:16
Finwe "pomógł" nie dam, bo po pierwsze nie mam jak (to nie ja tworzyłam temat), a po drugie innych odpowiedzi oczekiwałam. Ten sposób jest mi znany. Chciałam to zrobić bez jakichkolwiek zdarzeń i wiem, że się tak da, tylko nie wiem do końca, jak to zakodować.
Co do obrazka, to poszukam i popróbuję. Dzięki Angius :-)

//Edit 18.10. 12:26:
Na 2. i 3. pytanie odpowiedź sama w końcu znalazłam. Z tym Title obrazkowym mam problem. Znalazłam jeden skrypt, ale link z demo wygasł, przez co trudniej jest go ogarnąć, ale jeszcze spróbuję.

//Edit 18.10 13:02:
W końcu udało mi się zrobić powtarzający i przesuwający się obrazek. Jeszcze raz dzięki Angius za podpowiedź ;-)




//Edit 19.10 po 23:00:
Umieszczę tutaj odpowiedzi do swoich poprzednich pytań.

1. Czy da się zrobić tak, że obrazek, który ustawimy na mapie (w scene map), powtarza się w nieskończoność we wszystkich kierunkach :?: Coś w stylu panoramy tylko na wierzchu i przewijany również w pionie.
Spoiler:

W wybranej "scene" (np. Scene_Map) wrzucamy (np. w def "start") coś takiego:
Kod:
    @pano = Plane.new
    @pano.bitmap = Cache.system("NAZWA_OBRAZKA")
    @pano.z = 1
    @pano.opacity = 100
Obrazek będzie się powtarzał w każdym kierunku. Oczywiście przezroczystość nie jest obowiązkowa ;-)
Później w def "update":
Kod:
    @pano.ox += 1
    @pano.oy += 1
Przy takich ustawieniach Obrazek będzie się przesuwał na skos w górę i w lewo z prędkością (w każdą stronę osobno) 1 kratki na sekundę. Jeśli chcemy, by obrazek poruszał się w przeciwnym kierunku musimy dodać przed liczbą myślnik i spację.

Oczywiście nie musi się to nazywać "@pano". Ten pomysł wzięłam ze skryptu "Story Scene" XP V1.0 autorstwa Moghunter. Skrypt ten został przerobiony na VX przez MrBoomGood. Tam było "@pano" i tak już zostało ;-)


2. Jak ustawić warunek "jeśli bohater znajduje się na mapie x".
W moim wypadku wystarczyło:
Spoiler:

Kod:
if $game_map.map_id == 1

end


3. Warunek "jeśli bohater znajduje się na obszarze x mapy y".
Spoiler:

Robiny nowe okno lub klasę. Uruchamiamy je/ją w Scene_Map i tam, gdzie potrzebujemy, dajemy warunek:
Kod:
if $game_player.current_area_name == "NAZWA_OBSZARU"
Oczywiście jako NAZWA_OBSZARU wpisujemy najwygodniejszą dla nas nazwę. Wówczas wszystkie obszary z wypisaną nazwą będą ustosunkowane do naszego warunku.

W skrypcie musimy umieścić jeszcze coś takiego:
Kod:
class Game_Character

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor   :reflect_offset              # Character Reflection Offset 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias tds_sprite_reflection_initialize initialize
  def initialize
    tds_sprite_reflection_initialize   
    @reflect_offset = 0
  end
 
  #--------------------------------------------------------------------------
  # * Determine if in Area
  #     area : Area data (RPG::Area)
  #--------------------------------------------------------------------------
  def in_area?(area)
    return false if area == nil
    return false if $game_map.map_id != area.map_id
    return false if @x < area.rect.x
    return false if @y < area.rect.y
    return false if @x >= area.rect.x + area.rect.width
    return false if @y >= area.rect.y + area.rect.height
    return true
  end 
  #--------------------------------------------------------------------------
  # * Current Area Name
  #--------------------------------------------------------------------------
  def current_area_name
    # Checks the areas in the maps
    for area in $data_areas.values
      # If the character is currently on an area
      if in_area?(area) == true
        # Give the value of the name of the area to the return variable
        return_area_name = area.name
        # Break loop
        break
      end   
    end   
    return return_area_name
  end
end
Jest to fragment kodu autorstwa Sephirothtds "Lustrzane powierzchnie" ("TDS Sprite Reflect" Version: 1.7).


Wszystkie wykorzystane przeze mnie skrypty można znaleźć na Ultimie.
Miało być jeszcze nowe pytanie, ale nie mogę go sobie przypomnieć. Później się zapytam :-D ;-)
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Nie 23 Paź, 2011 12:24
Ciągle łączę ze sobą posty, by nie było, że spamuję, ale nic nie poradzę, skoro po kilku dniach nie dostaję żadnych odpowiedzi (nie mam pretensji, tylko też jej do mnie nie miejcie ^^).

Oto ostatni mój post z pytaniem, po którym nie było odpowiedzi:
Spoiler:

Wysłany: Pią 21 Paź, 2011 14:53


By nie tworzyć kilku postów, połączyłam dwa ostatnie w jeden. Mam pytanko:

Czy da się wyświetlić pomniejszony obrazek :?: NIE FRAGMENT tylko CAŁY POMNIEJSZONY :?: Wydaje mi się, że tak, bo w "Game_Picture" znalazłam coś takiego, jak "zoom_x" i "zoom_y", których domyślna wartość to 100.0 . Próbowałam to zapisać na kilka różnych sposobów, np.:
Spoiler:

Kod:
self.contents.blt(103, 12, Cache.picture("Obrazek.png"), Rect.new(0, 0, img.width, img.height), 50, 50, 255)
Kod:
self.contents.blt(103, 12, Cache.picture("Obrazek.png"), Rect.new(0, 0, img.width, img.height), zoom_x = 50, zoom_y = 50, 255)

Ale żaden z nich nie działa. Ma ktoś pomysł, jak to zrobić, by działało :?:


A to moje dzisiejsze pytanie:
Trwa bitwa. Jest zaznaczony bohater z naszej drużyny. Jak przypisać zmiennej (skryptem oczywiście) id zaznaczonego bohatera (id "actor", nie "party_member") :?:
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Finwe 




Preferowany:
RPG Maker VXAce

Pomógł: 34 razy
Dołączył: 30 Lip 2011
Posty: 322
Skąd: Rzeszów
Wysłany: Sob 05 Lis, 2011 19:12
Nie wiem czy to mądre pytanie... Ale zadam je. Czy da się zrobić tak, że w skrypcie aktywuje się Typowe zdarzenie, lu jak kto woli, common event?
 
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Sob 05 Lis, 2011 20:20
Finwe:
Kod:
$game_temp.common_event_id = ID
________________________
MelvinClass:
Spoiler:

 
 
PaayJer 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 08 Paź 2011
Posty: 86
Wysłany: Sro 09 Lis, 2011 19:42
jak byk jest napisane, że coś takiego się da zrobić a ja pomysłu nie mam:
skrypt, który pozwala ustalenie paru ścieżek, które ma pokonać jakieś zdarzenie

np. ustawiam jakiś (wymyślam) komentarz: script = new_road [numer_ścieżki], event [ID_zdarzenia]
________________________
Tutki od PJ!!!
[Kurs 1] Kliknij tutaj!
[Kurs 2] Kliknij tutaj!
[Kurs 3] Kliknij tutaj!
[Kurs 4] Kliknij tutaj!
 
 
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Sro 09 Lis, 2011 20:43
PaayJer, "PathFinding script".
________________________
MelvinClass:
Spoiler:

 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Wto 15 Lis, 2011 11:45
Głowię się i głowię i nie mogę wymyślić. Chciałabym skryptem wyświetlić fragment obrazka w kształcie koła. Do tej pory wymyśliłam coś takiego:
Spoiler:

Możemy podzielić obrazek poziomo na pół (najpierw nam się rozszerza, a później zwęża, więc tak będzie na początku wygodniej. Załóżmy, że obrazek ma wymiary 100x100 Zaczęłam od górnej połówki:
Kod:
img = Cache.pictures("obrazek.png")
    for a in 1..50
      g = ???????
      self.contents.blt(X + 50 - g, Y + a, img, Rect.new(img.width + 50 - g, img.height + a, 2 * g, 1), 255)
    end
Zrobiłam "for a in 1..50", żeby uniknąć zera przy niektórych działaniach. X i Y wiadomo.

Ma może ktoś pomysł jakie działanie powinno być dla g :?: albo jakiś inny pomysł, jak pokazać fragment obrazka w kształcie koła :?:
W razie czego liczba pi to w Ruby:
Kod:
Math::PI
Mam tu też fragment skryptu "Menu Bars" BY Syvkal V 4.1 o tworzeniu pasków zmiennych w kształcie okręgu:
Spoiler:

Kod:
class Bitmap

  def cogwheel_fill_ring(x, y, gw, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false)
    # Kolory obramówki paska
    color1 = Color.new(0, 0, 0, 192)              # Zewnętrzne
    color2 = Color.new(0, 0, 0, 192)   # Wewnętrzne
  # Wypełnienie pustego paska
    color3 = Color.new(0, 0, 0, 255)           # Połowa ceinowania
    color4 = Color.new(64, 0, 0, 255)
    fill_ring(x-2, y-2, radius, height+4, color1, amount, start, reverse)
    fill_ring(x-1, y-1, radius, height+2, color2, amount, start, reverse)
    if amount >= 220
      gradient_fill_ring(x, y, radius, height, color3, color4, [amount/2, 180].min, start, reverse)
      gradient_fill_ring(x, y, radius, height, color4, color3, [amount/2, 180].min, start+(amount/2), reverse)
    else
      gradient_fill_ring(x, y, radius, height, color3, color4, [amount, 360].min, start, reverse)
    end
    if gw >= 220
      gw1 = amount/2; gw2 = gw / 2
      gradient_fill_ring(x, y, radius, height, gc1, gc2, gw1, start, reverse)
      gradient_fill_ring(x, y, radius, height, gc2, gc1, gw2, start +(amount/2), reverse)
    else
      gradient_fill_ring(x, y, radius, height, gc1, gc2, gw, start, reverse)
    end
  end
 
  def fill_ring(ox, oy, radius, height, gc1, amount = 360, start = 0, reverse = false)
    d = 2.0 * Math::PI / 360
    for i in 1..[amount, 360].min
      s = i + start
      if reverse
        x = ox + ( radius * Math.sin( d * s ) ).to_i
        y = oy - ( radius * Math.cos( d * s ) ).to_i
      else
        x = ox - ( radius * Math.cos( d * s ) ).to_i
        y = oy + ( radius * Math.sin( d * s ) ).to_i
      end
      fill_rect(x, y, height, height, gc1)
    end
  end
 
  def gradient_fill_ring(ox, oy, radius, height, gc1, gc2, amount = 360, start = 0, reverse = false)
    d = 2.0 * Math::PI / 360
    for i in 1..amount
      s = i + start
      if reverse
        x = ox + ( radius * Math.sin( d * s ) ).to_i
        y = oy - ( radius * Math.cos( d * s ) ).to_i
      else
        x = ox - ( radius * Math.cos( d * s ) ).to_i
        y = oy + ( radius * Math.sin( d * s ) ).to_i
      end
      color = get_gradient_pixel(gc1, gc2, amount, i)
      fill_rect(x, y, height, height, color)
    end
  end
 
  def get_gradient_pixel(gc1, gc2, amount, i)
    red = gc1.red * (amount - i) / amount + gc2.red * i / amount
    green = gc1.green * (amount - i) / amount + gc2.green * i / amount
    blue = gc1.blue * (amount - i) / amount + gc2.blue * i / amount
    alpha = gc1.alpha * (amount - i) / amount + gc2.alpha * i / amount
    return Color.new(red, green, blue, alpha)
  end
end


class Game_Actor < Game_Battler

  def now_exp
    return @exp - @exp_list[@level]
  end

  def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
end

Spoiler:

Prawdopodobnie jak zwykle zadałam zbyt trudne pytanie ;-(

________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Pią 18 Lis, 2011 21:34
Dobra... Już nie będę zadawać tak trudnych pytań, jak do tej pory ;-)

W jaki sposób mogę wstawić obrazek tak, by móc po nim chodzić (wiecie o co mi chodzi ;-) ).
Na dodatek chciałabym, by nie przesuwał się wraz z przewijaniem mapy (gdy dochodzimy do brzegu ekranu).
Za dużo zdarzeń, za dużo stron w tym zdarzeniu i za dużo grafik musiałabym zrobić, by uzyskać wymagany przeze mnie efekt.
Proszę o pomoc.

Spróbowałam to zrobić w ten sposób:
Spoiler:

Kod:
class Scene_Map < Scene_Base
 
  alias st start
  def start
    st
    @obr = Sprite.new(@viewport1)
    @obr.x = 120
    @obr.y = 150
    @obr.z = 1
    @obr.bitmap = Cache.picture("obrazek.png")
  end
Dalej tylko "dispose" i "update ".

________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 20 Lis, 2011 11:04
Przede wszystkim takie obrazki dodawaj w 'Spriteset_Map'. Jaką wartość ma '@viewport1'? Możesz spróbować ustawić 'zetkę' nie bezpośrednio obrazkowi, ale właśnie zmiennej '@viewport1'.

Co do przesuwania, próbowałaś dodać parametr do 'update':
Kod:
@obr.ox = $game_map.display_x / 8
    @obr.oy = $game_map.display_y / 8
________________________


 
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Wto 22 Lis, 2011 22:25
Dzięki :-) Wszystko działa :-D Napisałam też wcześniej do Sabikku, który odpisał podobnie. "@viewport1" wzięłam z Spriteset_Map, ale jest to zupełnie niepotrzebne. Musiałam chwilę pokombinować jak ustawić obrazek bardziej na środku mapy, ale w końcu do tego doszłam:
Kod:
@obr.x = $game_map.display_x / 8 + 288
    @obr.y = $game_map.display_y / 8 + 64
Trzeba dodać ilość pikseli, licząc od górnego, lewego rogu do miejsca gdzie chcemy mieć obrazek (oczywiście te liczby są przykładowe ;-) ). Przesuwać obrazka nie chcę, dlatego ustawiłam zwykłe x i y, a nie ox i oy ;-)
Obrazki w końcu zrobiłam w Scene_Map tym bardziej, że obrazek będzie zależny od zmiennej. Już nie chciałam kombinować w Spriteset_Map, skoro w Scene_Map wszystko pięknie działa.

Wielkie dzięki za pomoc :-D Dla Ciebie i Sabikku ;-)
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Domilos 




Preferowany:
RPG Maker VXAce

Pomógł: 2 razy
Dołączył: 16 Cze 2011
Posty: 62
Wysłany: Pon 05 Mar, 2012 20:32
Jest komenda, zmienna, czy inne cuś, która sprawdza czy mamy jakąś zapisaną grę, albo ew. ilość zapisanych gier?
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene