Jump to content
Rpg²S Forum

*CSGS - Sistema di Avanzamento Stat Personalizzato


Leon
 Share

Recommended Posts

SISTEMA DI AVANZAMENTO STAT PERSONALIZZATO

 

Descrizione

Lo script permette di far salire le stat tramite "eventi" in battaglia (esempio):

  • La STR massima aumenterà in base al numero di volte che si fa un attacco fisico.
  • La DEX aumenterà in base al numero di colpi critici andati a buon fine e al numero di cambiamenti di status evitati.
  • Gli HP massimi aumenterrano quando i nemici toglieranno al personaggio una certa % di HP.
  • COMPLETAMENTE personalizzabile.
  • Eccetera eccetera.

Inoltre lo script blocca l'avanzamento di livello, ma non toglie i punti EXP guadagnati che possono essere usati magari per l'apprendimento di particolare Skill o quello che vi gira per la testa di fare.

 

 

Autore

Blizzard

(Creditate Blizzard, io ho solo modificato alcune cose e tradotto lo script in italiano ^^).

 

Istruzioni per l'uso

Trovate tutto all'interno comodamente scritto in italiano. Non è necessaria alcuna conoscenza di RGSS per modificare e personalizzare lo script.

 

#==============================================================================
# Sistema di Avanzamento Stat Personalizzato (CSGS) by Blizzard
# versione 1.31b
# Data: 20.5.2006
# Data v1.1: 24.5.2006
# Data v1.3b: 26.5.2006
# Data v1.31b: 27.6.2006
# 
# Ringraziamenti speciali
# a Viviatus: per avere richiesto questo script =D
# 
# NOTA IMPORTANTE:
# Questo script disattiverà l'avanzamento di livello. E' consigliato l'uso
# di uno script personalizzato per l'apprendimento delle skill.
# 
# Compatibilità con l'SDK:
# Questp script non è stato testato con l'SDK, ma al 97% dovrebbe funzionare.
# CORROMPERA' i vecchi salvataggi di gioco.
# 
# Descrizione:
# Questo script disattiva l'avanzamento di livello; l'EXP continuerà ad essere
# guadagnato e potrà essere usato per altri scopi. Tramite questo script
# le stats del personaggio cambieranno in un modo diverso.
# 
# Spiegazione:
# - HP massimi aumenteranno se il personaggio perderà un num. di HP, uguale
# ad una specifica (e personalizzabile) percentuale degli HP massimi.
# - SP massimi aumenteranno se il personaggio perderà un num. di SP, uguale
# ad una specifica (e personalizzabile) percentuale degli SP massimi.
# - è anche possibile settare la % di successo di guadagnare HP/SP.
# - STR aumenterà se il personaggio attaccherà spesso.
# - DEX aumenterà se il personaggio effettuerà un colpo critico o riuscirà
# ad evitare un cambio di status.
# - INT aumenterà se il personaggio utilizzerà abilità magiche, ma non se
# utilizzerà abilità basate su STR, DEX o AGI, ma solo sull'INT.
# - AGI aumenterà se il personaggio eviterà attacchi fisici o sarà il primo
# ad attaccare durante un turno.
# 
# Lo script è già preconfigurato ma è configurarlo in base
# alle proprie esigenze. Premi CTRL+F e scrivi CONFIGURATION, per trovare la
# parte che può essere configurata.
# 
# v1.1:
# Corretto un bug dove anche i personaggi morti guadagnavano punti stat.
# 
# v1.3b:
# Aggiunta una finestra addizionale che mostra la stat che è aumentata.
# 
#==============================================================================

#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler

 attr_accessor   :dmghp
 attr_accessor   :usesp
 attr_accessor   :xstr
 attr_accessor   :xdex
 attr_accessor   :xint
 attr_accessor   :xagi
 
 alias setup_csgs_later setup
 def setup(actor_id)
setup_csgs_later(actor_id)
@dmghp = 0
@usesp = 0
@xstr = 0
@xdex = 0
@xint = 0
@xagi = 0
 end
 
 def exp=(exp) # disabilità l'avanzamento di livello
@exp = [[exp, 9999999].min, 0].max
# Corregge gli HP/SP attuali
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
 end

end

#==============================================================================
# Game_Battler
#==============================================================================

class Game_Battler

 alias attack_effect_csgs_later attack_effect
 def attack_effect(attacker)
# salva l'ultimo numero di HP
last_hp = self.hp
saving = attack_effect_csgs_later(attacker)
# Il personaggio è stato attaccato?
if self.is_a?(Game_Actor)
  # Il personaggio ha subito danni?
  if last_hp > self.hp
	self.dmghp += (last_hp - self.hp)
  end
  if self.damage == "Mancato"
	self.xagi += 1
  end
end
# Sta attaccando il personaggio?
if attacker.is_a?(Game_Actor)
  # Il personaggio ha inflitto danni?
  if last_hp > self.hp
	attacker.xstr += 1
  end
  # I danni sono stati di tipo critico?
  if self.critical == true
	attacker.xdex += 1
  end
end
return saving
 end
 
 alias skill_effect_csgs_later skill_effect
 def skill_effect(user, skill)
# salva l'ultimo numero di HP ed SP
last_hp = self.hp
last_sp = user.sp
saving = skill_effect_csgs_later(user, skill)
if self.is_a?(Game_Actor)
  # Il personaggio ha subito danni?
  if last_hp > self.hp
	self.dmghp += (last_hp - self.hp)
  end
  if @state_changed == false
	self.xdex += 1
  end
end
if user.is_a?(Game_Actor)
  # Il personaggio ha utilizzato gli Punti Abilità?
  if last_sp > user.sp
	user.usesp += (last_sp - user.sp)
  end
  # L'abilità era di tipo magico?
  if skill.int_f != 0
	user.xint += 1
  end
end
return saving
 end
 
 alias slip_damage_effect_csgs_later slip_damage_effect
 def slip_damage_effect
# salva l'ultimo numero di HP
last_hp = self.hp
saving = slip_damage_effect_csgs_later
if self.is_a?(Game_Actor)
  # Il personaggio ha subito danni?
  if last_hp > self.hp
	self.dmghp += (last_hp - self.hp)
  end
end
return saving
 end

end

#==============================================================================
# Window_StatsUp
#==============================================================================

class Window_StatsUp < Window_Base

 attr_accessor  :statups
 
 def initialize(actor, i)
@oldhp = actor.maxhp
@oldsp = actor.maxsp
@oldstr = actor.str
@olddex = actor.dex
@oldint = actor.int
@oldagi = actor.agi
@statups = false
@index = i
super(0, 80, 160, 240)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.x = i * 160
self.visible = false
 end

 def refresh(actor)
self.contents.clear
x = 0
y = 0
self.contents.font.color = system_color
self.contents.draw_text(x, y, 64, 32, $data_system.words.hp)
self.contents.draw_text(x, y + 32, 64, 32, $data_system.words.sp)
self.contents.draw_text(x, y + 64, 96, 32, $data_system.words.str)
self.contents.draw_text(x, y + 96, 96, 32, $data_system.words.dex)
self.contents.draw_text(x, y + 128, 96, 32, $data_system.words.int)
self.contents.draw_text(x, y + 160, 96, 32, $data_system.words.agi)
self.contents.font.color = normal_color
if actor.maxhp != @oldhp
  new = actor.maxhp - @oldhp
  self.contents.draw_text(x, y, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
if actor.maxsp != @oldsp
  new = actor.maxsp - @oldsp
  self.contents.draw_text(x, y + 32, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
if actor.str != @oldstr
  new = actor.str - @oldstr
  self.contents.draw_text(x, y + 64, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
if actor.dex != @olddex
  new = actor.dex - @olddex
  self.contents.draw_text(x, y + 96, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
if actor.int != @oldint
  new = actor.int - @oldint
  self.contents.draw_text(x, y + 128, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
if actor.agi != @oldagi
  new = actor.agi - @oldagi
  self.contents.draw_text(x, y + 160, width - 32, 32, " + " + new.to_s, 2)
  @statups = true
end
 end

end

#==============================================================================
# Window_BattleStatus
#==============================================================================

class Window_BattleStatus < Window_Base
 
 def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
  actor = $game_party.actors[i]
  actor_x = i * 160 + 4
  draw_actor_name(actor, actor_x, 0)
  draw_actor_hp(actor, actor_x, 32, 120)
  draw_actor_sp(actor, actor_x, 64, 120)
  if @level_up_flags[i] and not actor.dead?
	self.contents.font.color = normal_color
	self.contents.draw_text(actor_x, 96, 120, 32, "CARATTERISTICA AUMENTATA"
  else
	draw_actor_state(actor, actor_x, 96)
  end
end
 end
 
end

#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
 
 alias main_csgs_later main
 def main
#---------------------#
# BEGIN CONFIGURATION #
#---------------------#
@hpchance = 50 # % chance di HP aumentati se il 50% degli HP max sono persi
@spchance = 50 # % chance di SP aumentati se il 50% degli SP max sono usati
@hplost = 50 # % di HP che deve essere consumata perchè gli HP max aumentino
@spused = 50 # % di SP che deve essere consumata perchè gli SP max aumentino
@hprate = 100 # quanti HP addizionali
@sprate = 100 # quanti SP addizionali
@strchance = 70 # % chance di aumento STR
@dexchance = 70 # % chance di aumento DEX
@intchance = 70 # % chance di aumento INT
@agichance = 70 # % chance di aumento AGI
@strrate = 7 # quanti punti STR addizionali
@dexrate = 7 # quanti punti DEX addizionali
@intrate = 7 # quanti punti INT addizionali
@agirate = 7 # quanti punti AGI addizionali
@strrate_min = 10 # min xstr necessaria per aumentare STR
@dexrate_min = 10 # min xstr necessaria per aumentare DEX
@intrate_min = 10 # min xstr necessaria per aumentare INT
@agirate_min = 10 # min xstr necessaria per aumentare AGI
# Nelle parte sotto si può attivare/disattivare il "Reset prima della
# Battaglia", che resetterà i contatori che determinano quante volte una
# stat è stata "stimolata". Disattivalo solo se vuoi che il contatore sia
# RESETTATO A ZERO prima di ogni lotta. Questo vorrà dire che le stat
# saliranno più vel.in battaglie LUNGHE che in MOLTE battaglie.
for i in 0...$game_party.actors.size
  actor = $game_party.actors[i]
  actor.dmghp = 0
  actor.usesp = 0
  #actor.xstr = 0 # rimuovi il # all'inizio per attivare il "RPB" per STR
  #actor.xdex = 0 # rimuovi il # all'inizio per attivare il "RPB" per DEX
  #actor.xint = 0 # rimuovi il # all'inizio per attivare il "RPB" per INT
  #actor.xagi = 0 # rimuovi il # all'inizio per attivare il "RPB" per AGI
end
#-------------------#
# END CONFIGURATION #
#-------------------#
main_csgs_later
if @statsup_windows != nil
  for i in @statsup_windows
	i.dispose
  end
end
 end
 
 alias start_phase5_csgs_later start_phase5
 def start_phase5
start_phase5_csgs_later
# Aumento stats
@statsup_windows = []
for i in 0...$game_party.actors.size
  actor = $game_party.actors[i]
  @statsup_windows.push(Window_StatsUp.new(actor, i))
  unless actor.dead?
	# Persi abbastanza HP per l'aumento?
	if actor.dmghp >= actor.maxhp * @hplost / 100
	  if rand(100) <= @hpchance
		actor.maxhp += @hprate
		@status_window.level_up(i)
	  end
	end
	# Persi abbastanza SP per l'aumento?
	if actor.usesp >= actor.maxsp * @spused / 100
	  if rand(100) <= @spchance
		actor.maxsp += @sprate
		@status_window.level_up(i)
	  end
	end
	# Abbastanza xstr guadagnata per aumentare STR?
	if actor.xstr >= @strrate_min
	  if rand(100) <= @strchance
		actor.str += @strrate
		actor.xstr = 0
		@status_window.level_up(i)
	  end
	end
	# Abbastanza xdex guadagnata per aumentare DEX?
	if actor.xdex >= @dexrate_min
	  if rand(100) <= @dexchance
		actor.dex += @dexrate
		actor.xdex = 0
		@status_window.level_up(i)
	  end
	end
	# Abbastanza xint guadagnata per aumentare INT?
	if actor.xint >= @intrate_min
	  if rand(100) <= @intchance
		actor.int += @intrate
		actor.xint = 0
		@status_window.level_up(i)
	  end
	end
	# Abbastanza xagi guadagnata per aumentare AGI?
	if actor.xagi >= @agirate_min
	  if rand(100) <= @agichance
		actor.agi += @agirate
		actor.xagi = 0
		@status_window.level_up(i)
	  end
	end
	@statsup_windows[i].refresh(actor)
  end
end
 end
 
 alias battle_end_csgs_later battle_end
 def battle_end(result)
if result == 0
  flag = true
  for i in @statsup_windows
	if i.statups
	  i.visible = true
	  flag = false
	end
  end
  @result_window.visible = false
  loop do
	Graphics.update
	Input.update
	if flag
	  break
	end
	if Input.trigger?(Input::C)
	  break
	end
  end
end
battle_end_csgs_later(result)
 end
 
 alias make_action_orders_csgs_later make_action_orders
 def make_action_orders
make_action_orders_csgs_later
if @action_battlers[0].is_a?(Game_Actor)
  @action_battlers[0].xagi += 1
end
 end
 
end

 

Conclusioni

Dovrebbe funzionare tutto, fatemi sapere e per qualsiasi problema non esitate a contattarmi o in questo topic o via pm ^^.

Edited by Leon

http://www.naruto-kun.com/images/narutotest/kakashi.jpg

Waiting for Regression Official Site

Melodic/Old School Hardcore from Forlì.

Supportate il violento rumore forlivese!

http://img360.imageshack.us/img360/4893/firma1gp.png

Leon, the Avenger.

Link to comment
Share on other sites

O_O

davvero bravo complimenti! :chirol_buha: :chirol_hello2:

Progetti in corso

Maura 2 Wars - La vendetta di Tefix[Rpg Maker XP]

Demo = 100% Scaricala! Fare "Salva Oggetto con Nome"

Gioco = 40%

GRAFICA

 

-Chara = 25%

-Battelers = 20%

-Battle Baks = 10%

-Title Set = 50

-Title = 100%

SCRIPT

 

-Battle System = 99%

-Altri Script = 100% (Se ne trovo altri ancora meglio)

 

MUSICA

 

-BMG = 80%

-BGS = 100%

-ME = 60%

-SE = 30%

http://www.ff-fan.com/chartest/banners/tifa.jpg

Which Final Fantasy Character Are You?

Final Fantasy 7

Link to comment
Share on other sites

^_^

Io ho solo tradotto e fatto qualche modifica, i complimenti li devi fare a Blizzard. :chirol_iei2:

Comunque grazie lo stesso :chirol_buha:

http://www.naruto-kun.com/images/narutotest/kakashi.jpg

Waiting for Regression Official Site

Melodic/Old School Hardcore from Forlì.

Supportate il violento rumore forlivese!

http://img360.imageshack.us/img360/4893/firma1gp.png

Leon, the Avenger.

Link to comment
Share on other sites

  • 3 weeks later...
Leon nn so come mettere uesto script potresti specificare meglio come faccio a meterlo ?
Dunque:

Se con metterlo intendi dove va inserito, semplicemente crei una classe sopra Main (se hai l'SDK lo metti sotto l'SDK, ma tanto è compatibile) e la chiami come ti pare.

Se con metterlo intendi come farlo funzionare le istruzioni sono all'interno dello script passo a passo e sono davvero chiare e immediate: prova a guardarci ^_^ :chirol_buha:

 

oppure posta una demo cosi si fa prima ^_^

 

Eh già, ma sai com'è, mancava la voglia XD

Comunque se non riesci a farlo funzionare da solo, posto la demo :chirol_iei2:

http://www.naruto-kun.com/images/narutotest/kakashi.jpg

Waiting for Regression Official Site

Melodic/Old School Hardcore from Forlì.

Supportate il violento rumore forlivese!

http://img360.imageshack.us/img360/4893/firma1gp.png

Leon, the Avenger.

Link to comment
Share on other sites

  • 2 weeks later...

fiigo loscript... è lo stesso sistema di evoluzione di ff2 (non 12, 2 quello dell'88)

 

EDIT: manco a me funziona mi dà lo stesso errore di robertx

Edited by A me mi

Altri nickname:

 

FFsaga, YourFF, GameRepublic = Ultima_Weapon

Rmxp.it, Makerando = EteRNaL FrIgHtfuLnEss

 

 

Silver Element: io ho divvicoltà a scrivere "Comunque"...a volte diventa comquenu ed a volte comuwa

A Me Mi: lol

A Me Mi: hai sbajato a scrivere comuqneu

A Me Mi: che è un errore grammaticale lol

Silver Element: divvicoltà! comuqneu ecc.ecc.

Silver Element: quello è dislessico aritscio

A Me Mi: "aritscio"?....

 

Partecipante al Rpg2s.net Game Contest 2007/2008

http://www.rpg2s.net/contest/GameContest0708/userbar_r2sgc.gif

Giochi in Sviluppo:

Slavery: Path to the Light

Kingdom of Frank: Dragon Pupil

Kyrie & Faithness

Link to comment
Share on other sites

Molto probabilmente usate qualche script che non combacia alla funzione di questo (nel senso che non possono essere messi insieme) >_

 

Provate a mettere un "#" (senza virgolette) all'inizio della frase dove si trova l'errore ;)

Link to comment
Share on other sites

ho capito l'errore

 

nella riga 250 la parentesi alla fine della riga non viene chiusa. chiudetela e il gioco partrà

 

comunque io l'ho provato e non sono riusito a far salire le statistiche... anche modificando la configurazione.....

 

edit: quando salgono le aratteristiche fine battaglia mi dà errore alla riga 400 mi pare ""action" notdefinied for nil:NIlclass" o una roba del genere

Edited by A me mi

Altri nickname:

 

FFsaga, YourFF, GameRepublic = Ultima_Weapon

Rmxp.it, Makerando = EteRNaL FrIgHtfuLnEss

 

 

Silver Element: io ho divvicoltà a scrivere "Comunque"...a volte diventa comquenu ed a volte comuwa

A Me Mi: lol

A Me Mi: hai sbajato a scrivere comuqneu

A Me Mi: che è un errore grammaticale lol

Silver Element: divvicoltà! comuqneu ecc.ecc.

Silver Element: quello è dislessico aritscio

A Me Mi: "aritscio"?....

 

Partecipante al Rpg2s.net Game Contest 2007/2008

http://www.rpg2s.net/contest/GameContest0708/userbar_r2sgc.gif

Giochi in Sviluppo:

Slavery: Path to the Light

Kingdom of Frank: Dragon Pupil

Kyrie & Faithness

Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...
  • 1 year later...
  • 5 months later...
mi ricorda tanto final fantasy 2!
TRIBE X: MEMBRO FONDATORE DEL DIGITADREAM PROJECTProgetti in corso:ERTHIA - THE LOST DIMENSIONProgetti in sospeso (Da riprendere al più presto):ARKANA CHRONICLESPS: Cercasi Scripter da includere nel team!
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...