Jump to content
Rpg²S Forum

Abilità d'Arme


Recommended Posts

Uno script semplice creato sotto effetto di pelo di gatto.

http://i.imgur.com/9e4XhVw.png

 

Questo script assegna a ciascun personaggio giocabile dei livelli di "abilità d'arme" con ciascun tipo di arma che è capace di equipaggiare.

Questi livelli possono essere impiegati nelle meccaniche di gioco per vari scopi:

  • Rendere certe armi equipaggiabili solo se si possiede un determinato livello di abilità con quel tipo di arma (Scrivendo "-levreq:xx" nelle note)
  • Far apprendere skill agli eroi aumentando il livello di un'abilità d'arme anzichè il livello dell'eroe vero e proprio. Basta andare nel database delle classi e scrivere "-Weaponskill" nelle note, e quell'abilità sarà resa disponibile solo se l'eroe ha raggiunto il livello indicato in una delle armi richieste per usare la skill
  • Influenzare le formule del danno. Basta aggiungere a.wskill(x) per rendere il livello dell'abilità d'arme un fattore nel calcolo del danno. wskill(0) restituisce il livello dell'arma equipaggiata.
  • Creare ostacoli che possono essere superati solo con certe abilità d'arme ad un livello alto: basta un semplice script call nel ramo condizionale.
  • Creare oggetti che donano esperienza in un'arma a un eroe, o aggiungerla manualmente con script call.

Le abilità acquisiranno esperienza lentamente usando attacchi normali, e più velocemente a discrezione usando le skill o aumentandola manualmente con oggetti o script call. Aggiungendo "-exp:xx" alle notetag di una skill, chi la usa guadagnerà altrettanta esperienza nell'arma che sta usando.

 

Lo script include un'opzione per personalizzare la curva dell'esperienza delle abilità d'arme, e una "AutoMode" che setterà tutte le skill automaticamente.

 

Codice (Pastebin)

Download Demo+Istruzioni

 

 

 

 

 

 

 

 

 

 

Codice nudo e crudo

 

Non vi piacciono quei link? Uffi.

 

	
module Gallade
  module SkillSystem
  #############################################
  # ISTRUZIONI
  #############################################
  #Scrivete "-exp:xx" nelle notetag di una skill per far guadagnare xx esperienza
  #nell'arma equipaggiata.
  #Nella tab Classi, scrivete "-Weaponskill" come nota in una skill da apprendere
  #in modo che venga appresa aumentando il livello dell'abilità con l'arma
  #anzichè il livello del personaggio.
  #Nelle formule del danno, usate "a.wskill(x)" per usare il livello di abilità
  #con un tipo di arma nella formula.
  #Scrivete "-levreq:xx" nelle note di un'arma per rendere necessario un certo
  #livello di abilità per equipaggiarla.
  ###########################################
  #CONFIGURAZIONE
  ###########################################
  #Formula dell'esperienza. Scrivete "Linear" per far aumentare il livello
  #delle abilità in maniera lineare (10 exp, poi 20,30,40 e così via).
  #Scrivete "Quad" per farlo aumentare in maniera quadratica
  #(Prima 10, poi 40,90,160)
  #Scrivete un'altra formula se la volete personalizzare: il livello
  #dell'abilità è "sklv".
  ExpFormula = "Linear"  
  # Attivate o disattivate la modalità Auto, che calibrerà il sistema
  # automaticamente in questo modo:
  # Le abilità verranno apprese automaticamente e daranno esperienza in base
  # alle armi necessarie per utilizzarle
  # Inoltre, le abilità verranno apprese in base ai livelli di competenza
  # dell'arma anche se non specificato, se serve un'arma particolare per
  # utilizzarle.
  # Inoltre, usare una skill darà esperienza con l'arma pari al suo costo
  # in MP+TP (gli attacchi normali ne daranno 1)
  AutoMode = false
  end
end
################################################
#END OF CONFIG
################################################

class Game_Actor < Game_Battler
 
attr_accessor :sklvl
attr_accessor :skexp

alias GKsetup setup
 
   def setup(actor_id)
    GKsetup(actor_id)
    @sklvl = []
    @skexp = []
    sklvl[0] = 0
     for i in 1...99
      @sklvl[i] = 1
      @skexp[i] = 0
     end
   end
   
   def wskill(id)
     return sklvl[weapons[0].wtype_id] if id == 0
     return sklvl[id]
     end

    def tonextlevel(sklv)
      case Gallade::SkillSystem::ExpFormula
      when "Linear"
         sklv *10
      when "Quad"
        (sklv * 10) ** 2
      else
        Gallade::SkillSystem::ExpFormula
      end
    end
 
  def added_weapon_types
    features_set(FEATURE_EQUIP_WTYPE)
  end

  def check_level_up(wtype)
    while skexp[wtype] >= tonextlevel(sklvl[wtype])
      skexp[wtype] -= tonextlevel(sklvl[wtype])
      sklvl[wtype] += 1
    end
    check_learnable_skills
  end
 
    def learning_is_weaponskill(learning)
      (Gallade::SkillSystem::AutoMode or learning.note.slice(/-Weaponskill/i) !=nil) and ($data_skills[learning.skill_id].required_wtype_id1 + $data_skills[learning.skill_id].required_wtype_id2) > 0
    end

      
    def check_learnable_skills
     self.class.learnings.each do |learning|
      if learning_is_weaponskill(learning)
       if [sklvl[$data_skills[learning.skill_id].required_wtype_id1],sklvl[$data_skills[learning.skill_id].required_wtype_id2]].max >= learning.level
       learn_skill(learning.skill_id)
     end
     end
    end
  end
 
  def add_weapon_exp(wtype, exp)
    skexp[wtype] += exp
    check_level_up(wtype)
  end
 
  def level_up
    @level += 1
    self.class.learnings.each do |learning|
      learn_skill(learning.skill_id) if learning.level == @level and !learning_is_weaponskill(learning)
    end
  end

    def init_equips(equips)
    @equips = Array.new(equip_slots.size) { Game_BaseItem.new }
    equips.each_with_index do |item_id, i|
      etype_id = index_to_etype_id(i)
      slot_id = empty_slot(etype_id)
      @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
    end
  end
 
  alias oldeguipgal? equippable?
  def equippable?(item)
    if item.is_a?(RPG::Weapon) and item.note.slice(/-LEVREQ:[0-9]+$/i) !=nil
    levreq = item.note.slice(/-LEVREQ:[0-9]+$/i).slice(/[0-9]+$/).to_i
    p levreq
    else
    levreq = 0
    end
    return false if item.is_a?(RPG::Weapon) and levreq > @sklvl[item.wtype_id]
    return oldeguipgal?(item)
  end
 
end


class Window_Status < Window_Selectable
 
    def draw_block3(y)
      draw_parameters(32, y)
      draw_skillevels(228, y)
    end

    
    def tonextlevel(sklv)
      case Gallade::SkillSystem::ExpFormula
      when "Linear"
         sklv *10
      when "Quad"
        (sklv * 10) ** 2
      else
        Gallade::SkillSystem::ExpFormula
      end
    end
 
     def draw_skillevels(x,y)
      change_color(system_color)
      draw_text(x+20, y, width, line_height, "Abilità")
      draw_text(x+130, y, width, line_height, "Liv.")
      draw_text(x+180, y, width, line_height, "Esp.")
      reset_font_settings
      i = 1
      @actor.added_weapon_types.each do |item|
      name = $data_system.weapon_types[item]
      draw_text_ex(x, y + 24 * i, name)
      draw_text_ex(x+130, y + 24 * i, @actor.sklvl[item])
      draw_text_ex(x+180, y + 24 * i, @actor.skexp[item].to_i.to_s + "/" + tonextlevel(@actor.sklvl[item]).to_i.to_s)
      i +=1
    end
    end
  end
 
class Game_Battler < Game_BattlerBase

  alias allthatstuff make_damage_value
 
  def make_damage_value(user, item)
   allthatstuff(user,item)
   return unless $data_skills[item.id] == item
       if user.actor? then
         return if user.weapons[0] == nil
         if item.required_wtype_id1 + item.required_wtype_id2 > 0 then
           if user.weapons[0].wtype_id == item.required_wtype_id1 or user.weapons[0].wtype_id == item.required_wtype_id2
            user.add_weapon_exp(user.weapons[0].wtype_id, weapon_exp(item))
           else
            user.add_weapon_exp(user.weapons[1].wtype_id, weapon_exp(item))
          end
        else
           user.add_weapon_exp(user.weapons[0].wtype_id, weapon_exp(item))
           if user.weapons[1] != nil
           user.add_weapon_exp(user.weapons[1].wtype_id, weapon_exp(item))
           end
        end
      end
  end  

 
end

class Game_BattlerBase
     def weapon_exp(skill)
      return 1 if skill.id == attack_skill_id
      return exr * (skill.mp_cost + skill.tp_cost) if Gallade::SkillSystem::AutoMode
      return exr * skill.note.slice(/-EXP:[0-9]+$/i).slice(/[0-9]+$/).to_i if skill.note.slice(/-EXP:[0-9]+$/i) !=nil
      return 0
    end
end
 


 

 

 

Edited by Zoro the Gallade

Mensola dei trofei:

 

http://www.rpg2s.net/forum/uploads/monthly_08_2014/post-6-0-59989200-1408714052.gifhttp://i.imgur.com/7GriqYm.png

 

 

Creazioni varie:

 

 

hnR4pt.png

Link to comment
Share on other sites

Davvero molto utile, anche perché possono essere legati a nuove skill e armi.

Aggiungerei anche la possibilità di un bonus danni con il tipo d'arma a seconda del livello.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

Davvero molto utile, anche perché possono essere legati a nuove skill e armi.

Aggiungerei anche la possibilità di un bonus danni con il tipo d'arma a seconda del livello.

 

Quello puoi farlo direttamente nella formula dei danni.

 

Mi sono scordato di dire che con a.wskill(0) indichi il livello dell'arma attualmente equipaggiata. Quindi aggiungi quello alla formula dell'attacco normale ed è fatta.

Edited by Zoro the Gallade

Mensola dei trofei:

 

http://www.rpg2s.net/forum/uploads/monthly_08_2014/post-6-0-59989200-1408714052.gifhttp://i.imgur.com/7GriqYm.png

 

 

Creazioni varie:

 

 

hnR4pt.png

Link to comment
Share on other sites

Good Job, mi piace, è uno script molto interessante che potrei utilizzare in GHU.

Dallo screen vedo che cambia la scena dello Status, eliminando l'equip (cosa che avrei dovuto fare comunque per lo YEA Equip, che con i suoi nuovi equip mi sforava nella descrizione del pg).

CYNDA BYTES


http://i1220.photobucket.com/albums/dd458/Cyndaquil_Bytes/Cyndabytes.png


Creiamo mondi, storie e giochi che possano emozionare.
DEV BLOG <-- Ultime notizie e approfondimenti so quello che stiamo facendo.
SOCIAL Non dimenticarti di seguirmi! :beard:
FACEBOOK TWITTER YOUTUBE GOOGLE PLUS DEVIANTART

An Another Life Uan-Ciù The WEBCOMIC
Fumetto online demenziale gratuito che parodizza i manga giapponesi e i giochi di ruolo:
arti marziali, J-Rpg, magia, shonen, combattimenti, ignoranza, tette e tante botte! Leggilo qui sul forum!
Puoi seguirci su Facebook, Twitter o Deviantart. Se il fumetto ti piace, per sostenerci e spronarci ad andare avanti metti un like <3 sui social,
oppure votaci su shockdom! Puoi leggere quest webcomic anche sul nostro blog ufficiale.

GIOCHI COMPLETI
Scarica, gioca e commenta i miei giochi per sostenere il making italiano. :cool:

Bloody Repression (in Inglese, versione ITA disponibile nel topic) -> Topic Ufficiale\ Trailer starring Martis \ Video Gameplay ITA \ Short Gameplay Video ENG

http://www.freankexpo.net/signature/1026.png

LOVE & WAR NEVER CHANGE -> Topic Ufficiale \ Let's Play By Martis

Un gioco breve dalla storia toccante. 2° Posto all Short RTP Game Contest.

http://www.freankexpo.net/signature/666.png

Se non vuoi perderti tutto il mondo della Cynda Bytes (trofei, regali, webcomics, contest...), apri lo spoiler. Lo so che lo vuoi. :sisi:

GIOCHI IN SVILUPPO

GODS HATE US
Topic Ufficiale
AASTROR WAR

Topic Ufficiale

 

AN ANOTHER LIFE Da dove tutto è cominciato, un gioco lollo (non nel senso che l'ha fatto Lollo, eh), arcaico e noob dell'anno 2003 (più di una decade!).
Richiede
RTP Inglesi e forse manca qualche altro file.

Piacizzate su Facebook per leggere direttamente lì, oppure sul topic ufficiale.

 

 

CONTEST

RPG2S CHARA BATTLE ROYAL TOURNAMENT 2012

SHORT RTP GAME CONTEST 2013
http://s8.postimg.org/yntv9nxld/Banner.png

INDIE GAME MAKING CONTEST 2015 con GODS HATE US - BLOODY REPRESSION

REGALI

http://www.rpg2s.net/dax_games/r2s_regali5s.png

TROFEI

http://rpg2s.net/gif/SCContest2Oct.gif http://www.rpg2s.net/forum/uploads/monthly_12_2013/post-6-0-84168400-1388406007.png
"I'm a Dream Maker, Bitch!"

Link to comment
Share on other sites

Bellissimo script **

Ho due domande :

 

1. Funziona con Falcao Pearl ABS liquid V3 ?

 

2 Si può usare questo metodo del arma solo su uno dei membri e gli altri salgono normalmente di livello ?

http://i1366.photobucket.com/albums/r770/mistintheforest/cooltext1371376180_zpsnym4lhzp.png Segui su facebook per aggiornamenti

http://i1366.photobucket.com/albums/r770/mistintheforest/Immagine22_zpskginjwe7.pnghttp://www.speedtest.net/result/4428575686.png

Link to comment
Share on other sites

Bellissimo script **

Ho due domande :

 

1. Funziona con Falcao Pearl ABS liquid V3 ?

 

2 Si può usare questo metodo del arma solo su uno dei membri e gli altri salgono normalmente di livello ?

 

1-Agisce soltanto sugli actors, sull'apprendimento delle skill e sull'equipaggiamento, quindi dovrebbe essere compatibile al 100% con la maggior parte degli ABS.

 

2-Ecco per te una patch che permette di usare questo sistema solo con determinati actor, incollacela sotto:

 

 

module Gallade
  module SkillSystem
    #Inserire in questo array gli ID degli attori che usano il sistema di skill
  ACTORS_WITH_SKILLS = [1]
  end
end

class Game_Actor < Game_Battler
   
  def skillable?
    return Gallade::SkillSystem::ACTORS_WITH_SKILLS.include?(id)
  end
  
   def wskill(id)
     return 0 unless skillable?
     return sklvl[weapons[0].wtype_id] if id == 0
     return 0 unless equip_wtype_ok?(id)
     return sklvl[id]
   end
   
   def add_weapon_exp(wtype, exp)
    skexp[wtype] += exp if equip_wtype_ok?(wtype) and skillable?
    check_level_up(wtype)
  end
end

class Window_Status < Window_Selectable
  
    def draw_block3(y)
      draw_parameters(32, y)
      draw_skillevels(228, y) if @actor.skillable?
    end
end

 

 

Edited by Zoro the Gallade

Mensola dei trofei:

 

http://www.rpg2s.net/forum/uploads/monthly_08_2014/post-6-0-59989200-1408714052.gifhttp://i.imgur.com/7GriqYm.png

 

 

Creazioni varie:

 

 

hnR4pt.png

Link to comment
Share on other sites

 

1-Agisce soltanto sugli actors, sull'apprendimento delle skill e sull'equipaggiamento, quindi dovrebbe essere compatibile al 100% con la maggior parte degli ABS.

 

2-Ecco per te una patch che permette di usare questo sistema solo con determinati actor, incollacela sotto:

 

 

module Gallade
  module SkillSystem
    #Inserire in questo array gli ID degli attori che usano il sistema di skill
  ACTORS_WITH_SKILLS = [1]
  end
end

class Game_Actor < Game_Battler
   
  def skillable?
    return Gallade::SkillSystem::ACTORS_WITH_SKILLS.include?(id)
  end
  
   def wskill(id)
     return 0 unless skillable?
     return sklvl[weapons[0].wtype_id] if id == 0
     return 0 unless equip_wtype_ok?(id)
     return sklvl[id]
   end
   
   def add_weapon_exp(wtype, exp)
    skexp[wtype] += exp if equip_wtype_ok?(wtype) and skillable?
    check_level_up(wtype)
  end
end

class Window_Status < Window_Selectable
  
    def draw_block3(y)
      draw_parameters(32, y)
      draw_skillevels(228, y) if @actor.skillable?
    end
end

 

 

 

Rachida.png

 

(Nel mio progetto c'è un pg che guida un robot e per questo volevo sto metodo :3 )

http://i1366.photobucket.com/albums/r770/mistintheforest/cooltext1371376180_zpsnym4lhzp.png Segui su facebook per aggiornamenti

http://i1366.photobucket.com/albums/r770/mistintheforest/Immagine22_zpskginjwe7.pnghttp://www.speedtest.net/result/4428575686.png

Link to comment
Share on other sites

Ottimo script non tanto per la funzione di livello per le armi, quanto per tutte le configurazioni e diverse possibilità che ci hai ficcato dentro per supportarlo! D: Cioè tipo ci vengono 4 giochi con meccaniche diverse! XD

^ ^

(\_/)
(^ ^) <----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

Mi era sfuggito questo scritp! :)

MOOOOOOOOOOOOOOLTO interessante! :D

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...