Jump to content
Rpg²S Forum
  • 0

Script danno minimo con oggetti e abilità in battaglia


Mungò
 Share

Question

Ho bisogno di uno script che faccia in modo che il danno causato da oggetti e abilità sia uguale al danno stesso se il danno è > 20, e che sia uguale a 20 se il danno è < 20. Mi spiego meglio.

Se per esempio un'abilità di un personaggio (nemico o alleato) toglie 100, allora il danno complessivo sarà 100.

Ma se il danno è 15, o -100, o comunque < 20, il danno complessivo sarà 20.

Ho provato a modificare questo script, utilizzando una switch che quando è su off attiva il primo caso, con il danno > 20, quando è su on attiva l'altro, ovvero il danno = 20. Purtroppo non sono un bravo scripter (si dice così, giusto? :tongue: ), ed è tutto il giorno che lavoro su questo script, ma l'unico risultato che ho ottenuto è questo:

class Game_Battler
def skills
 for i in @skill.keys.sort
       result.push($data_skill[i]) if @skill[i] > 0
   skill = $data_skill[@skill_id]
   unless skill.note.include?("*NODANNO")
     if damage < 20
       $game_switches[29] = true
     else
       $game_switches[29] = false
     end
   end
 end
end
 def make_obj_damage_value(user, obj)
   damage = obj.base_damage                        # get base damage
   if damage > 0                                   # a positive number?
     damage += user.atk * 4 * obj.atk_f / 1      # Attack F of the user
     damage += user.spi * 2 * obj.spi_f / 1      # Spirit F of the user
     unless obj.ignore_defense                     # Except for ignore defense
       damage -= self.def * 2 * obj.atk_f / 1    # Attack F of the target
       damage -= self.spi * 1 * obj.spi_f / 1    # Spirit F of the target
     end
     damage = 0 if damage < 0                      # If negative, make 0
   elsif damage < 0                                # a negative number?
     damage -= user.atk * 4 * obj.atk_f / 1      # Attack F of the user
     damage -= user.spi * 2 * obj.spi_f / 1      # Spirit F of the user
     damage = 0
   end
   damage *= elements_max_rate(obj.element_set)    # elemental adjustment
   damage /= 100
   damage = apply_variance(damage, obj.variance)   # variance
   damage = apply_guard(damage)                             # guard adjustment
   if $game_switches[29] = true
      damage = 0
     end
   if obj.damage_to_mp  
     @mp_damage = damage                           # damage MP
   else
     @hp_damage = damage                           # damage HP
   end
 end
 end

Ciò che viene fuori è una battaglia in cui le abilità e gli oggetti dei personaggi non tolgono niente, anche se causano comunque danni quali veleno, sonno, ecc. Cosa ho sbagliato? :sad:

 

Un'altra cosa: è possibile creare abilità che infliggono sempre stati alterati e altre che le infliggono solo alcune volte?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

In teoria basta che vai in Game_Battler,

in def make_obj_damage_value(user, obj)

 

e aggiungi come ultima cosa:

 

if @hp_damage < 20

@hp_damage = 20

end

 

prima dell ultimo end che si trova prima del commento verde...

poi vai in def make_obj_absorb_effect(user, obj)

e prima di

if @hp_damage > 0 or @mp_damage > 0

metti

 

if @hp_damage < 20

@hp_damage = 20

end

 

 

 

Adesso non sono sicurissimo, ma prova cosi...

 

Invece per gli status basta che nel database metti il ticco su non resistance, e lo status colpisce sempre... se il problema è al variare dell 'abilità basta che crei due status uguali solo uno con non resistance e uno senza ;)

Link to comment
Share on other sites

  • 0

Ok, così funziona, però in questo modo tutte le abilità tolgono 20 se il danno è < 20.

È possibile invece fare in modo che alcune abilità non tolgano niente e altre che tolgono almeno 20? Pensavo che si potesse fare per esempio anche attraverso una nota sull'abilità, ma non saprei come...

Link to comment
Share on other sites

  • 0

Bon basta che nello stesso posto dove hai gia modificato lo script aggiungi la condizione

se l'abilita ha l'elemento "togli 20" e metti l'elemento cosi scelto alle abilita.... Per i comandi dovrebbero essere sulla sezione help di rpg maker... Se non riesci dimmi.

 

Comunque non capisco il perchè far togliere almeno 20 a certe abilità e ad altre no XD è comunque una piccola cifra...

Link to comment
Share on other sites

  • 0

Il problema è che non sono capace di scriverlo! XD

L'unico linguaggio informatico che conosco è il pascal, e cerco di orientarmi usando quello. Mi piacerebbe però imparare il linguaggio di questi script, solo non riesco a trovare su internet una guida completa :sad:

 

Comunque tornando al nostro script la condizione che vorrei inserire è "se l'abilità usata non ha questa nota, il danno inflitto da abilità e oggetti, se è minore di 20, è uguale a 20". Il numero 20 è provvisorio, magari aumenterò la soglia del danno minimo qualora dovessi accorgermi che effettivamente è troppo piccola. Mi serve a evitare che le abilità più deboli che infliggono danni, o a causa della forza dell'abilità o a causa del livello del giocatore, non tolgano zero, ma che tolgano almeno un po', per evitare uno spreco di punti magia inutile. Le altre abilità che non necessitano di questa nota infliggono più semplicemente degli stati alterati. È a questo che mi serve questo codice. :tongue:

Link to comment
Share on other sites

  • 0

Ok non sono sicuro che funzioni ma prova... Sostituisci al pezzo che hai aggiunto che ti ho dato (quello @hp_damage < 20 ecc...) con

 

 

if user.action.skill_id != nil
if not $data_skills[user.action.skill_id].element_set.include?(17)
if @hp_damage < 20
  @hp_damage = 20
end
end
  end

if user.action.item_id != nil
if not $data_item[user.action.item_id].element_set.include?(17)
if @hp_damage < 20
  @hp_damage = 20
end
end
  end

 

 

Ora le abilità o gli oggetti che non hanno l'elemento 17 se tolgono meno di 20 danneggiano 20 XD

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