Jump to content
Rpg²S Forum
  • 0

Script per condizioni utilizzo skill


Lerry
 Share

Question

Ciao a tutti, sto cercando di creare delle skill che si possano attivare sotto determinate condizioni, per rendere l'idea vi espongo cosa vorrei creare

La prima skill, vorrei che si attivasse solo quando il nemico sia sotto il 35% di vita(single target), e che in caso non rispetti i parametri, vorrei non fosse possibile utilizzarla.

La seconda invece vorrei che si attivasse solo quando il nemico fosse afflitto da un determinato stato (sorpreso) oppure quando il personaggio attaccante fosse sotto un'altro stato (furtività).

Sto cercando infatti uno script che mi riesca a bloccare queste skill, rendendole inutilizzabili (senza che il pg perda il turno) quando non rispettino queste condizioni.

Grazie in anticipo.

 

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Alcune di quelle cose potresti ricrearle ad eventi tramite eventi di battaglia.

Per esempio potresti scambiare una skill usabile in battaglia con una non usabile quando, tramite condizioni di battaglia, un nemico ha meno del 35% di vita. Puoi fare la condizione su tutti i nemici ed attivarla solo quando almeno un nemico ha così pochi hp.

La stessa cosa per lo status sorpreso. Puoi usare le condizioni.

Per quanto riguarda furtività è più semplice, basta la sola condizione sull'eroe che può avere quello status.

^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

  • 0

Dovresti specificare quando dovrebbe avvenire il controllo (dal menù di selezione delle skill c'è un primo controllo? Oppure direttamente da quello di selezione del nemico?), comunque difficilmente troverai uno script che faccia cose così specifiche. In ogni caso ho fatto un piccolo scriptino che riproduce le 2 abilità che mi hai detto sopra, ossia che se il nemico (o il giocatore come nella seconda abilità) non rispetta determinati requisiti, quando si dovrà scegliere il nemico da attaccare ci sarà impedito e verrà riprodotto un suono di errore.

class Scene_Battle < Scene_Base
  alias sk_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    if @skill!=nil
     if (@skill.id==80 && (@enemy_window.enemy.hp>@enemy_window.enemy.mhp/100*35))#  or (@skill.id==3 && (@enemy_window.enemy.state?(1)==false or BattleManager.actor.state?(2)==false))
       Sound.play_buzzer
       @enemy_window.activate
     else
       sk_on_enemy_ok
     end
   else
     sk_on_enemy_ok
   end
  end
end
      

Naturalmente saranno da modificare i vari ID delle abilità e degli status con gli ID che effettivamente ti servono.

Se ti serve una mano a comprendere la logica dello script chiedi pure!

 

P.s. In ogni caso, come ti ha detto Guardian, non sono così difficili da creare ad eventi come abilità, se non sei molto avvezzo con gli script ti sconsiglierei di usare il codice che ho scritto, impareresti ben poco

Link to comment
Share on other sites

  • 0

Grazie inanzitutto ad entrambi, mi avete dato delle soluzioni utilissime, però quello che cercavo in particolare era uno script come quello di Sora, mi ha semplificato decisamente il lavoro, visto che stavo pensando a molte skill con effetti simili.

Avevo provato anche lo script di yanfly (skill restriction) ma non conoscendo il linguaggio, avevo difficoltà a inserire la formula con il target.

Però mi è sorta un'altra domanda spontanea riguardo la soluzione proposta da guardian che mi piacerebbe approfondire:

Riguardo agli eventi battaglia ( da quello che ho capito gli eventi attivabili dal menù truppe nel database) dovrei però copiarli e incollarli in ogni singolo incontro in questo caso, o no?

E un altro dubbio riguardo allo script, potrei aggiungere quante skill voglio seguendo lo schema proposto dalle precedenti due?

Grazie veramente a tutti per questo aiuto :biggrin:

Edited by Lerry
Link to comment
Share on other sites

  • 0

Se ne vuoi aggiungere altre basta che metti un "or" alla fine e la programmi in modo non dissimile da quelle che ho scritto prima, in ogni caso dovresti avere un po' di praticità con gli operatori logici. Se hai bisogno di una mano chiedi pure!

Link to comment
Share on other sites

  • 0

Ho provato ad aggiungere una skill che richiede un determinato tipo di oggetto per essere attivata, e va bene quella skill funziona, ma la skill con gli stati si blocca, e ogni tanto anche il comando di attacco.

Devo aver sbagliato qualcosa

class Scene_Battle < Scene_Base
  alias sk_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    if @skill!=nil
     if (@skill.id==148 && (@enemy_window.enemy.hp>@enemy_window.enemy.mhp/100*35))  or (@skill.id==145 && (@enemy_window.enemy.state?(29)==false or BattleManager.actor.state?(30)==false)) or (@skill.id==151 && ($game_party.item_number($data_items[21])<1))
       Sound.play_buzzer
       @enemy_window.activate
     else
       if (@skill.id==151 && ($game_party.item_number($data_items[21])>=1))
         $game_party.lose_item(($data_items[21]),1)
         sk_on_enemy_ok
       else
         sk_on_enemy_ok
       end
     end
   else
     sk_on_enemy_ok
   end
  end
end

EDIT

Il comando attacco si blocca subito dopo che mi blocca l'utilizzo di una skill (es. uso la skill con id 145, ma non rispetta le condizioni, quindi decido di utilizzare il comando attacco, ma anche questo risulta bloccato)

Edited by Lerry
Link to comment
Share on other sites

  • 0
Link to comment
Share on other sites

  • 0

Ok ho risolto cosi', dovrebbe filare liscio

EDIT

adesso funziona ma c'è il problema che se seleziono due volte la skill parte in maniera automatica (es sempre la fantomatica skill 145 appena premuta quando non soddisfa le condizioni, rilascia il suono e il conseguente arresto, mentre se la premo una seconda volta parte la skill in automatico.

class Scene_Battle < Scene_Base
  alias sk_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    if @skill!=nil
     if (@skill.id==148 && (@enemy_window.enemy.hp>@enemy_window.enemy.mhp/100*35))  or (@skill.id==145 && (@enemy_window.enemy.state?(29)==false or BattleManager.actor.state?(30)==false)) or (@skill.id==151 && ($game_party.item_number($data_items[21])<1))
       if (@skill.id==145 &&  (@enemy_window.enemy.state?(29)==true && BattleManager.actor.state?(30)==false))
         sk_on_enemy_ok
       else
         if (@skill.id==145 &&  (@enemy_window.enemy.state?(29)==false && BattleManager.actor.state?(30)==true))
           sk_on enemy_ok
           else
          Sound.play_buzzer
          @skill=nil
          @enemy_window.activate
          
        end
      end
     else
       if (@skill.id==151 && ($game_party.item_number($data_items[21])>=1))
         $game_party.lose_item(($data_items[21]),1)
         sk_on_enemy_ok
       else
         sk_on_enemy_ok
       end
     end
   else
     sk_on_enemy_ok
   end
  end
end
Edited by Lerry
Link to comment
Share on other sites

  • 0

Ma sei sicuro che ti funziona? Sinceramente non comprendo tutte queste funzioni di controllo xD

 

Mettiamo caso che la skill ha id 148 (la prima skill che hai messo lì) e che il nemico selezionato ha meno del 35% di vita, in questo caso la prima struttura di controllo ritorna "true", quindi passa alla seconda struttura di controllo, ma in questo caso visto che l'id della skill è 148 e non 145, ritornerebbe "false", passando quindi all'else e visto che, di nuovo, l'id della skill è 148 e non 145 ritorna false e quindi riprodurrebbe il suono di errore e non permetterebbe che la skill di avviarsi, nonostate le condizioni iniziali siano rispettate!

 

Comunque ho risistemato la cosa, ora lo script dovrebbe funzionare in tutti i casi

class Scene_Battle < Scene_Base
  alias sk_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    if @skill!=nil
     if (@skill.id==80 && (@enemy_window.enemy.hp>@enemy_window.enemy.mhp/100*35))#  or (@skill.id==3 && (@enemy_window.enemy.state?(1)==false or BattleManager.actor.state?(2)==false))
       Sound.play_buzzer
       @enemy_window.activate
     else
       sk_on_enemy_ok
     end
   else
     sk_on_enemy_ok
   end
 end
 
  alias sk_on_enemy_cancel on_enemy_cancel
  def on_enemy_cancel
    @skill=nil
    sk_on_enemy_cancel
  end
   
end

P.s. Se vuoi mettere un "else" con una struttura di controllo puoi usare "elsif"

Edited by Sora Keyblade
Link to comment
Share on other sites

  • 0

(Sì, per quanto riguarda gli eventi di battaglia vanno ripetuti in tutte le truppe nemiche. Lavoro noioso e lungo, ma piano piano ci si arriva. Se non si è sicuri di qualcosa conviene anche richiamare da lì degli eventi comuni, così se si è sbagliato si modifica una volta per tutte l'evento comune e via! ^ ^)

 

Se son tante skill e tante truppe con lo script è sicuramente più comodo, soprattutto se fatto a semplici righe come questo! ^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

  • 0

Inanzitutto grazie, mi hai aiutato tantissimo, e sei stato sopratutto disponibilissimo.

Mi sono impappinato un po' (un po' tanto) con il linguaggio di Ruby, non avendo punta esperienza con quest'ultimo :fear: (anche se mi avevi praticamente fatto tutto)

Le condizioni è perchè non mi sono accorto di poter risolvere semplicemente impostando un "&&" invece di un "or" nella fantomatica skill 145 :uhmm: :fiufiu: (che scemo XD)

Invece una condizione era per rimuovere l'oggetto 21 se utilizzata la skill 151.

Quindi, grazie, funziona tutto alla grande.

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