Jump to content
Rpg²S Forum
  • 0

Skill legate agli oggetti!


nihil-omen
 Share

Question

Il titolo dice tutto più o meno >_<

Mi servirebbe uno script che permetta di usare delle magie se e solo se si possiede l'oggetto che viene richiesto.

Esempio:

Un pg ha come classe Medico il quale può usare potenti oggetti medicinali (sotto forma di skill) che le altre classi non possono usare...Per esempio la skill "Unguento guaritore" (inventata qui per qui) può essere utilizzata se e solo se il giocatore possiede almeno un unità di "Unguento guaritore" nell'inventario,e l'utilizzo di questa skill fa diminuire il numero di Ungenti guaritori posseduti dal giocatore di 1.

Oppure casi più particolari tipo chessò, una classe Alchimista che necessita 2 frammenti di pietra filosofale e 1 liquido misterioso per poter usare in battaglia la skill "Elisir di lunga vita" (sempre inventato qui per qui)

O ancora chessò un Invocatore che per usare un'invocazione necessita tipo 2 lingue di rana 1 piuma di corvo e così via

Ed ogni utilizzo consuma gli oggetti richiesti (del numero di unità richiesto).

 

Bene o male si potrebbe fare anche tutto via Eventi, il problema è che queste skill sono davvero tante tante e per ognuna dovrei crearne una gemella che però non è mai utilizzabile e mettere in ogni skill un evento comune che: decrementi il numero di oggetti richiesti e faccia un controllo per vedere se ce ne sono ancora, se non ce ne sono leva al pg la skill in questione e gli insegna quella gemella inutile. A sto punto però dovrei fare un evento comune in ogni luovo (e in ogni battaglia visto che anche durante le battaglie si possono trovare oggetti) che faccia si che se un pg conosce la skill inutilizzabile (ma possiede gli oggetti necessari) gli levi la skill inutilizzabile e gli metta quella utilizzabile.

 

Non è difficile ma sarebbe un lavoro enorme con gli eventi mentre credo che con uno script non dovrebbe essere troppo difficile >__<

 

Aiutatemi per piacere >___<

Grazie in anticipo ^^

Edited by nihil-omen

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Evento Comune 1 Processo parallelo.

If Unguento Guaritore è posseduto

Personaggio X Impara Skill Y

Else

Dimentica Skill Y

 

Skill Unguento Guaritore Legata a Evento comune 2

 

Evento comune 2 Chiama Evento.

Togli un Unguento Guaritore.

Link to comment
Share on other sites

  • 0

Eh è proprio quello che ho scritto sopra però prova a farlo per circa 20/30 personaggi con classi variabili (quindi tutti hanno la possibilità di avere quella skill) per qualcosa come una cinquantina (anche più) di skill legate ad oggetti...

Quello che hai scritto tu lo avevo scritto io (dilungandomi di più. lo ammetto) e sarebbe ancor più complesso in verità (visto che bisogna fare un check di TUTTE quelle abilità, di TUTTI quegli oggetti e dopo il controllo degli oggetti dare quelle abilità solo a chi le aveva già imparate quindi toccherebbe switcharle con altre identiche ma non utilizzabili e ripetere il tutto per OGNI pg)

Per questo chiedevo se fosse possibile (o se magari esiste già) uno script che lega le skill agli oggetti >___<

Con gli eventi non ho problemi sono gli script che per me sono arabo XD

 

Grazie comunque dell'interessamento ^^

Edited by nihil-omen

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0

Penso che lo script di SephirothSpawn faccia al caso tuo..

#======================================================================

# ** Skills Use Items

#------------------------------------------------------------------------------

# SephirothSpawn

# Version 1

# 2006-10-15

#------------------------------------------------------------------------------

# * Description :

#

# This script was designed to make skill using consume items.

#------------------------------------------------------------------------------

# * Instructions :

#

# Place The Script Below the SDK and Above Main.

# To customize skill item usage, refer to customization.

#------------------------------------------------------------------------------

# * Customization :

#

# Settings Skills That Use Items

# - Item_Cost = { skill_id => <item_cost>, ... }

#

# Replace <item_cost> with

# - { item_type => { id => n, ... }, ... }

#

# Item Types : 0 - Item, 1 - Weapons, 2 - Armors

#==============================================================================

 

#------------------------------------------------------------------------------

# * SDK Log Script

#------------------------------------------------------------------------------

SDK.log('Skills Use Items', 'SephirothSpawn', 1, '2006-10-15')

 

#------------------------------------------------------------------------------

# * Begin SDK Enable Test

#------------------------------------------------------------------------------

if SDK.state('Skills Use Items')

 

#==============================================================================

# ** RPG::Skill

#==============================================================================

 

class RPG::Skill

#--------------------------------------------------------------------------

# * Skills That Use Items

#

# ~ skill_id => { item_type => { id => n, ... }, ...}

#

# Item_Types = 0 : Items, 1 : Weapons, 2 : Armors

#--------------------------------------------------------------------------

Item_Cost = {

57 => { 0 => { 1 => 2 } }

}

#--------------------------------------------------------------------------

# * Item Cost

#--------------------------------------------------------------------------

def item_cost

return ( Item_Cost.has_key?(@id) ? Item_Cost[@id] : {} )

end

end

 

#==============================================================================

# ** Game_Battler

#==============================================================================

 

class Game_Battler

alias seph_skillsuseitems_gmbtlr_skc? skill_can_use?

alias seph_skillsuseitems_gmbtlr_se skill_effect

#--------------------------------------------------------------------------

# * Determine if Skill can be Used

#--------------------------------------------------------------------------

def skill_can_use?(skill_id)

# If Actor

if self.is_a?(Game_Actor)

# Checks All Skill Requirements

$data_skills[skill_id].item_cost.each do |item_type, ids|

# Items

if item_type == 0

ids.each do |id, n|

return false if $game_party.item_number(id) < n

end

# Weapons

elsif item_type == 1

ids.each do |id, n|

return false if $game_party.weapon_number(id) < n

end

# Armors

elsif item_type == 2

ids.each do |id, n|

return false if $game_party.armor_number(id) < n

end

end

end

end

# Return Original Test

return seph_skillsuseitems_gmbtlr_skc?(skill_id)

end

#--------------------------------------------------------------------------

# * Apply Skill Effects

#--------------------------------------------------------------------------

def skill_effect(user, skill)

# If Original Effect

if self.seph_skillsuseitems_gmbtlr_se(user, skill)

# If User is an Actor

if user.is_a?(Game_Actor)

# Lose Item Cost

skill.item_cost.each do |item_type, ids|

# Items

if item_type == 0

ids.each { |id, n| $game_party.lose_item(id, n) }

# Weapons

elsif item_type == 1

ids.each { |id, n| $game_party.lose_weapon(id, n) }

# Armors

elsif item_type == 2

# Lose All Armors

ids.each { |id, n| $game_party.lose_armor(id, n) }

end

end

end

end

end

end

 

#--------------------------------------------------------------------------

# * End SDK Enable Test

#--------------------------------------------------------------------------

end

 

Edited by Valentino
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...