Ogłoszenie 

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


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Ayene
Wto 29 Lis, 2011 01:14
Problem ze skryptem
Autor Wiadomość
flang3r 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 11 Lis 2011
Posty: 51
Skąd: Katowice
Wysłany: Nie 27 Lis, 2011 18:53
Problem ze skryptem
Witam po raz kolejny.
Ostatnio natknąłem się na bardzo fajny skrypt w którym można ustawić wymagania wobec skilli. Jest w nim jednak mały szkopuł...
Pozwala ustawiać wymagania w skillach ale nie ma w nim pojęcia "LUB"
Już tłumaczę - przypuśćmy że mamy pewną klasę broni (np miecze) i chcemy ustawić umiejętność dostępną dla tej klasy broni.
Niestety skrypt pozwala na ustawienie wymagań na zasadzie:
- jeśli masz miecz x
- jeśli masz miecz x i y
- jeśli masz miecz x i y i z itd. itd

Znalazłem odpowiedzialną za to linijkę, ale nie za bardzo wiem jak to pozmieniać bo jestem zielony ze skryptów :/
Zmienne raczej nie wchodzą w grę bo musiałbym ustawić bodajże ich kilkaset.
Oto fragment:

if has_tag?(@conditions,'WEAPON')
@tags = get_tag(@conditions,'WEAPON')
for i in 0...@tags.size
return false unless @weapons.include? ($data_weapons[@tags[0].to_i])
end


wiem że będzie to związane z data weapons i ustalaniem tego zbioru. Nieco niżej w tym samym skrypcie znalazłem przy ustalaniu Klasy wyrażenie "or" , które pozwalało ustawić to moje potrzebne "lub" :

if has_tag?(@conditions,'CLASS')
@tags = get_tag(@conditions,'CLASS')
return false unless @class_id == @tags[0].to_i or @tags[1].to_i
end

Moje pytanie do skrypterów, jak to poprzerabiać??
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 27 Lis, 2011 20:07
Nie ma reguły. W tym przypadku należałoby zmienić całą definicję 'skill_condition_can_use?(skill)'. Spróbuj zamienić w niej wszystkie 'false unless' na 'true if' i jedno ostatnie 'true' na 'false'. Całość powinna wyglądać tak:
Spoiler:

Kod:
  def skill_condition_can_use?(skill)
   if has_tag?(skill.note, '<skill>')
     @conditions = get_tag_area(skill.note, '<skill>')
     if has_tag?(@conditions,'STATE')
      @tags = get_tag(@conditions,'STATE')
      for i in 0...@tags.size
        return true if state?(@tags[i].to_i)
      end
     end
     if has_tag?(@conditions,'WEAPON')
      @tags = get_tag(@conditions,'WEAPON')
      for i in 0...@tags.size
        return true if weapons.include?($data_weapons[@tags[i].to_i])
      end
     end
     if has_tag?(@conditions,'ARMOUR')
      @tags = get_tag(@conditions,'ARMOUR')
      for i in 0...@tags.size
        return true if armors.include?($data_armors[@tags[i].to_i])
      end
     end
     if has_tag?(@conditions,'ITEM')
      @tags = get_multiple_tag(@conditions,'ITEM','USE')
      for i in 0...@tags.size
        if @tags[i].is_a?(Array)
         return true if $game_party.item_number($data_items[@tags[i][0].to_i]) >= @tags[i][1].to_i
        else
         return true if $game_party.item_number($data_items[@tags[i].to_i]) >= 1
        end
      end
     end
     if has_tag?(@conditions,'ITEM','USE')
      @tags = get_multiple_tag(@conditions,'ITEM','USE')
      for i in 0...@tags.size
        if @tags[i].is_a?(Array)
         return true if $game_party.item_number($data_items[@tags[i][0].to_i]) >= @tags[i][1].to_i
        else
         return true if $game_party.item_number($data_items[@tags[i].to_i]) >= 1
        end
      end
     end
     if has_tag?(@conditions,'HP','LESS')
      @tags = get_tag(@conditions,'HP','LESS')
      return true if hp <= maxhp / (100 / @tags[0].to_i)
     end
     if has_tag?(@conditions,'HP','MORE')
      @tags = get_tag(@conditions,'HP','MORE')
      return true if hp >= maxhp / (100 / @tags[0].to_i)
     end
     if has_tag?(@conditions,'LEVEL','LESS')
      @tags = get_tag(@conditions,'LEVEL','LESS')
      return true if @level < @tags[0].to_i
     end
     if has_tag?(@conditions,'LEVEL','MORE')
      @tags = get_tag(@conditions,'LEVEL','MORE')
      return true if @level > @tags[0].to_i
     end
     if has_tag?(@conditions,'CLASS')
      @tags = get_tag(@conditions,'CLASS')
      return true if @class_id == @tags[0].to_i or @tags[1].to_i
     end
     if has_tag?(@conditions,'GOLD')
      @tags = get_multiple_tag(@conditions,'GOLD','USE')
      return true if $game_party.gold >= @tags[0].to_i
     end
     if has_tag?(@conditions,'GOLD','USE')
      @tags = get_multiple_tag(@conditions,'GOLD','USE')
      return true if $game_party.gold >= @tags[0].to_i
     end
     if has_tag?(@conditions,'PARTY','NUMBER')
      @tags = get_multiple_tag(@conditions,'PARTY','NUMBER')
      return true if $game_party.existing_members.size >= @tags[0].to_i
     end
     if has_tag?(@conditions,'PARTY','MEMBER')
      @tags = get_multiple_tag(@conditions,'PARTY','MEMBER')
      return true if $game_party.existing_members.include?($game_actors[@tags[0].to_i])
     end
     if has_tag?(@conditions,'FREEHAND')
      @tags = get_tag(@conditions,'FREEHAND')
      return true if free_hands >= @tags[0].to_i
     end
   end
   return false
  end


Zalecane dokładne testy ;-) Nie sprawdzałam wszystkich możliwości, bazowałam jedynie na pancerzach :aww:
________________________


 
 
 
flang3r 




Preferowany:
RPG Maker VX

Pomógł: 1 raz
Dołączył: 11 Lis 2011
Posty: 51
Skąd: Katowice
Wysłany: Pon 28 Lis, 2011 20:17
Nie działa dalej. Hmmm nie mam cierpliwości, żeby nad nim siedzieć.
Swoją drogą zauważyłem że ten skrypt w ogóle przestał mi dzisiaj działać :O
Skille miałem w zasadzie tylko i wyłącznie dlatego odblokowane, bo w notatkach użyłem oznaczeń innego skryptu;)
Dodam, że wcześniej nie kolidowały ze sobą ( i teraz też raczej nie kolidują bo nie wywala żaden błąd), ale jakby skrypt przestał widzieć oznaczenia (??).
Kiedy testowałem go na komendzie HPLESS to działał a teraz nagle takie przygody na WEAPON i ARMOUR...

W każdym razie dzięki Ayenne za dobrą wolę:)
Ja jednak poszukam czegoś prostszego...
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
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