DonDante Posted June 20, 2013 Share Posted June 20, 2013 (edited) Tag Manager DescrizionePermette di creare categorie e restrizioni personalizzate tramite notetagTali restrizioni possono essere applicate su:EroiClassiAbilitàOggettiArmiArmatureNemiciStatiMappe AutoreTsukihime Allegati--- Istruzioni per l'usoAll'interno dello script Script =begin #============================================================================== ** Tag Manager Author: Tsukihime Date: Mar 6, 2013 ------------------------------------------------------------------------------ ** Change log 1.3 Mar 6, 2013 - added tags to Maps - integrated several plugins with this script 1.2 Nov 3, 2012 - made more compatible with th_core scripts and other managers 1.1 Nov 1, 2012 - fixed bug where multiple tags were not being parsed 1.0 Oct 26, 2012 - Initial Release ------------------------------------------------------------------------------ ** Terms of Use * Free to use in commercial/non-commercial projects * No real support. The script is provided as-is * Will do bug fixes, but no compatibility patches * Features may be requested but no guarantees, especially if it is non-trivial * Credits to Tsukihime in your project * Preserve this header ------------------------------------------------------------------------------ This script allows you to assign "database object tags", or basically "tags", to various database objects. These are simple strings that are stored with the object and can be referenced if needed. There are two types of tags: 1. Object tags. - These are tags that will be stored with your objects. 2. Condition tags. - These are special tags that can be used to filter objects by tags. For example, you can use them to prevent an actor from equipping something To add an object tag, notetag the database object with <tag: string1 string2 string3> Where each string is an arbitrary non-whitespace terminated sequence of characters (eg: male, female, dwarf, elf, blah, carrot) You may have multiple object tags for a single object. To add a condition tag, notetag the database object with <tag_cond: tag1 tag2 ... > For special map conditions, you can use the notetag <map_cond: tag1 tag2 ... > Tag conditions are specified as logical expressions. Conditions of the form <tag_cond: tag1 tag2 tag3 ... > Mean that tag1 AND tag2 AND tag3 AND ... must all be satisfied. Conditions of the form <tag_cond: tag1> <tag_cond: tag2> Mean that the requirements are satisfied if tag1 OR tag2 are present. You also have the NOT operator, which can be specified using the ! sign, as shown: <tag_cond: !tag1> Which means the condition is satisfied only if tag1 does NOT exist. You can mix all three of the above operators to create all kinds of logical expressions. For example <tag_cond: male soldier !human> <tag_cond: female monk elf> This translates to (male AND soldier AND NOT human) OR (female AND monk AND elf) This script does not handle parentheses, so you are unable to say things like !(a or b). Instead, you should expand it to !a and !b and then apply the logic there. #============================================================================== =end $imported = {} if $imported.nil? $imported["Tsuki_TagManager"] = 1.3 #------------------------------------------------------------------------------- # Configuration #------------------------------------------------------------------------------- module TagManager # delimiter to use to separate tags in a single line. Tag_Delimiter = " " #------------------------------------------------------------------------------- # Rest of Script #------------------------------------------------------------------------------- Tag_Regex = /<tag:\s*(.*)>/i Tag_Cond_Regex = /<tag_cond:\s*(.*)>/i Map_Cond_Regex = /<map_cond:\s*(.*)>/i def object_tags return @tags unless @tags.nil? load_notetag_object_tags return @tags end def condition_tags return @cond_tags unless @cond_tags.nil? load_notetag_condition_tags return @cond_tags end def map_condition_tags return @map_cond_tags unless @map_cond_tags.nil? load_notetag_map_condition_tags return @map_cond_tags end def load_notetag_object_tags @tags = [] res = self.note.scan(Tag_Regex).flatten @tags = res ? res.map{|tag| tag.downcase.split(Tag_Delimiter)}.flatten : [] end def load_notetag_condition_tags @cond_tags = [] res = self.note.scan(Tag_Cond_Regex) res.each {|group| @cond_tags.push(parse_condition_tags(group[0].downcase.split(Tag_Delimiter))) } end def load_notetag_map_condition_tags @map_cond_tags = [] res = self.note.scan(Map_Cond_Regex) res.each {|group| @map_cond_tags.push(parse_condition_tags(group[0].downcase.split(Tag_Delimiter))) } end # Use two lists to keep track of NOT conditions. The first list # holds all tags that must exist, and the second list holds # all tags that must not exist. def parse_condition_tags(conds) lists = [[],[]] conds.each {|cond| cond[0] == "!" ? lists[1] << cond[1..-1] : lists[0] << cond } return lists end alias :cond_tags :condition_tags alias :tags :object_tags alias :map_cond_tags :map_condition_tags end module RPG class BaseItem include TagManager end class Map include TagManager end end class Game_BattlerBase # Returns an array of tags that the battler has def tags tag_objects.inject([]) {|r, obj| r + obj.object_tags } end def tag_objects states end def map_tag_conditions_met?(item) return true if item.map_cond_tags.empty? return item.map_cond_tags.any? {|group| (group[0] - $game_map.tags).empty? && (group[1] & $game_map.tags).empty? } end # Returns true if there are no tag conditions, or all tag conditions # are met, which means all required tags must be present and actor does not # have any restricted tags def item_tag_conditions_met?(item) return true if item.cond_tags.empty? return false unless item.cond_tags.any? {|group| (group[0] - tags).empty? && (group[1] & tags).empty? } return true end def equippable?(item) return false unless item.is_a?(RPG::EquipItem) return false if equip_type_sealed?(item.etype_id) return false if item.is_a?(RPG::Weapon) && !equip_weapon_ok?(item) return false if item.is_a?(RPG::Armor) && !equip_armor_ok?(item) return true end def equip_weapon_ok?(item) return false if !map_tag_conditions_met?(item) return false if !item_tag_conditions_met?(item) return true end def equip_armor_ok?(item) return false if !map_tag_conditions_met?(item) return false if !item_tag_conditions_met?(item) return true end end class Game_Battler < Game_BattlerBase alias :th_tag_manager_item_test :item_test def item_test(user, item) # Effects only valid if tag conditions met return false unless item_tag_conditions_met?(item) return false unless map_tag_conditions_met?(item) return th_tag_manager_item_test(user, item) end end class Game_Enemy < Game_Battler #----------------------------------------------------------------------------- # #----------------------------------------------------------------------------- def tag_objects super + [enemy] end end class Game_Actor < Game_Battler #----------------------------------------------------------------------------- # #----------------------------------------------------------------------------- def tag_objects super + [actor] + [self.class] + equips.compact end end class Game_Map #----------------------------------------------------------------------------- # Tags on the map #----------------------------------------------------------------------------- def tags @map.tags end end Bugs e Conflitti NotiIn teoria nessuno. In caso contrario segnalateloAltri dettagliUsare questo script da moltissima libertà, ma va un attimino "capito" Con la notetag <tag: X> daremo un qualsiasi valore ad un qualsiasi elemento, sia esso una mappa, un oggetto, un eroe, una classe o via discorrendo.Ad esempio, se vogliamo che un attore sia riconosciuto dal sistema come "donna" useremo <tag: donna>Una volta fatto questo avremo creato un gruppo "donna"Se volessimo quinidi creare un oggetto solo per donne useremo il tag <tag_cond: X> sostituendo il valore di X con "donna"Tutti gli oggetti taggati con <tag_cond: donna> saranno quindi limitati alle donne. I tag funzionano anche sulle mappe, con un piccolo accorgimento.Se, ad esempio vogliamo che un oggetto funzioni solo mella mappa del mondo,taggheremo la mappa del mondo con <tag: mondo> mentre l'oggetto avrà una condizione <map_cond: mondo> e non <tag_cond: mondo> Ultimo punto dobbiamo capire, per gestire al meglio i tag, le funzioniOR, AND e NOT Con queste funzioni porremo una condizione del tipo <tag_cond: X OR Y> la condizione include tutti gli elementi con tag X oppure Y <tag_cond: X AND Y> la condizione include tutti gli elementi che sono sia X che Y <tag_cond: NOT Y> la condizione include tutti gli elementi che non sono Y Con un po di fantasia, si può, attraverso questo sistema, fare quasi qualunque cosa... Enjoy! Edited June 20, 2013 by DonDante Progetti in Corso: ... Link to comment Share on other sites More sharing options...
Guardian of Irael Posted June 20, 2013 Share Posted June 20, 2013 Ah ottimo script! Soprattutto perchè agisce su quasi tutte le categorie! :3^ ^ (\_/)(^ ^) <----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) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"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:3Ricorda...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.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: 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 interneLevaitanSpada a due mani elsa lungaGuanti 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)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
DonDante Posted June 20, 2013 Author Share Posted June 20, 2013 Ti dirò:Con questo script ho già creato un sacco di eventi, e di abilità, che in caso contrario avrebbero richiesto un lavoro di eventi comuni gargantuesca! E dico gargantuesca perchè sono colto. U_U Progetti in Corso: ... Link to comment Share on other sites More sharing options...
Kenshin Posted July 21, 2013 Share Posted July 21, 2013 Mmm per come ho creato il mio gioco mi servirebbe di aggiungere una tag DOPO l'inizio del gioco a seconda di una scelta, è possibile aggiungere una nota al pg tramite evento? "Giochiamo a: schiettezza o grande impresa eroica!" Personaggio PBF: LyrielPN: 12/20PV: 2/2PA: 4 (5 col mantello d'acero)Equipaggiamento:Spada comunePugnale comuneArco elfico (magico, ignifugo. Permette di colpire da lunghe distanze. Se distrutto si auto-restaura a fine battaglia. Le frecce scoccate con questo arco ottengono l'effetto dell'incantesimo Folata di vento permettendo di spazzare via piccoli oggetti e creature.)Faretra con 20 frecceCappuccioArmatura delle ombre borchiata (punti armatura 4, ignifuga, di notte +1 a furtività)2 anelli di valoreBorsa comune (10 slot)CordaPenna e calamaioLibro vuotoForma di formaggioMappaCannocchialeTagliola di ferroCampanellino di MaiaMantello d'Acero (+1PA): un mantello pesante di colore rossiccio che presenta dei motivi fiochi, dello stesso colore, a forma di foglie d'acero. E' dotato di un ampio cappuccio e può coprire completamente chi lo indossa. Se si resta fermi in un'area boschiva o tra un gruppo di alberi il mantello è in grado di celare completamente la presenza del possessore dando un grado di furtività pari a gr.5. Nel caso di bestie ed animali dalla visuale meno acuta, se il giocatore è già stato notato od ha notificato in qualche modo la sua presenza può gettarsi a terra tra un gruppo di foglie o tra i cespugli per scomparire completamente dalla visuale di tali nemici.181 monete d'oroCintura porta coltelli (6 slot)Coltello da lancio intarsiatoColtello da lancio in metalloColtello da lancio in metallo Campanellino di MaiaSe Lyriel, e solo lui, suona tre volte il campanellino può richiamare una creatura magica che combatterà al suo fianco al prezzo di 3 PN.L'animale ha l'aspetto di un leopardo delle nevi, i suoi occhi sono viola e così gli artigli, i denti e la punta della coda. Questa è lunga e larga, molto folta e corposa. Il manto a differenza dei leopardi è tutto bianco, inoltre ha una folta criniera circolare intorno al collo a mo' di sciarpa e che si unisce con la sommità della fronte creando un cresta non molto alta pettinata all'indietro.La creatura combatte indipendentemente dal possessore (il giocatore potrà descriverne il comportamento in battaglia e fuori, ma il master potrà riservarsi il diritto di far compiere alla creatura delle azioni per conto proprio).La creatura non deve per forza stare vicino all'utilizzatore, ma può essere mandata lontano e tornare da lui su comando.Lyriel e l'animale hanno un contatto mentale e possono comunicare anche a distanza.Non vi è limite alla permanenza della creatura una volta evocata, però se i suoi PV raggiungono lo zero dovrà essere risvegliata magicamente da un mago od un curatore esperto. Lyriel può richiamare all'interno del campanellino la creatura quando essa non è impegnata in combattimento od in altre prove senza sforzi, ma dovrà spendere di nuovo 3 PN per richiamarla. Può continuare a combattere se Lyriel viene sconfitto.L'animale vede bene anche di notte e se c'è nebbia.Caratteristiche della creatura:PV 2PA 2Atletica Gr.4Furtività Gr.1Attacco (tipo descritto dal giocatore nei limiti fisici di artigli e morso) di massimo Gr.5 può dichiarare DIRETTO su armature di cuoio o cuoio borchiato e MAGICO con tutti gli attacchi. Può dichiarare SONNO se artigli e denti viola entrano in contatto diretto con il sangue l'avversario. DIRETTO e SONNO sono due effetti, quindi come da regolamento solo uno può essere scelto. MAGICO può esser combinato con entrambi.Malus: il campanellino deve tintinnare, quindi Lyriel suonandolo tradirà la sua presenza.Il campanellino tutte le volte che viene suonato fa venire in mente Maia a Lyriel, quindi il giocatore dovrà scrivere una frase di almeno 3 parole per ricordare la bambina, ogni volta diversa, altrimenti l'evocazione non avrà esito. Personaggio PBF: WrenPN: 20/20PV:2/2PA:0Borsa Comune3 filoni di pane4 meleprosciuttoformaggiocoltello da cucina Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now