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
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
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...
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